📗
owasp-devsecops-verification-standard-ja
  • OWASP DevSecOps Verification Standard (DSOVS) ja
  • OWASP DevSecOps 検証標準 日本語版
    • OWASP DevSecOps 検証標準
    • リーダー
  • 組織 (Organisation) フェーズ
    • ORG-001 リスク評価 (Risk Assessment)
    • ORG-002 セキュリティトレーニング (Security Training)
    • ORG-003 セキュリティ担当者 (Security Champion)
    • ORG-004 セキュリティレポート (Security Reporting)
  • 要件 (Requirements) フェーズ
    • REQ-001 セキュリティポリシーと規制遵守 (Security Policy and Regulatory Compliance)
    • REQ-002 セキュリティ要件と標準 (Security Requirements and Standards)
    • REQ-003 セキュリティユーザーストーリーと受け入れ基準 (Security User Stories and Acceptance Criterias)
    • REQ-004 セキュリティ課題の追跡 (Security Issues Tracking)
  • 設計 (Design) フェーズ
    • DES-001 セキュリティアーキテクチャ設計レビュー (Security Architecture Design Reviews)
    • DES-002 脅威モデリング (Threat Modelling)
  • コード/ビルド (Code/Build) フェーズ
    • CODE-001 セキュア開発環境 (Secure Development Environment)
    • CODE-002 ハードコードされたシークレットの検出 (Hardcoded Secrets Detection)
    • CODE-003 手動セキュアコードレビュー (Manual Secure Code Review)
    • CODE-004 静的アプリケーションセキュリティテスト (Static Application Security Testing, SAST)
    • CODE-005 ソフトウェアコンポジション解析 (Software Composition Analysis, SCA)
    • CODE-006 ソフトウェアライセンスコンプライアンス (Software License Compliance)
    • CODE-007 インライン IDE セキュアコード解析 (Inline IDE Secure Code Analysis)
    • CODE-008 コンテナセキュリティスキャン (Container Security Scanning)
    • CODE-009 セキュア依存関係管理 (Secure Dependency Management)
  • テスト (Test) フェーズ
    • TEST-001 セキュリティテスト管理 (Security Test Management)
    • TEST-002 動的アプリケーションセキュリティテスト (Dynamic Application Security Testing, DAST)
    • TEST-003 インタラクティブアプリケーションセキュリティテスト (Interactive Application Security Testing, IAST)
    • TEST-004 ペネトレーションテスト (Penetration Testing)
    • TEST-005 セキュリティテストカバレッジ (Security Test Coverage)
  • リリース/デプロイ (Release/Deploy) フェーズ
    • REL-001 成果物署名 (Artifact Signing)
    • REL-002 セキュア成果物管理 (Secure Artifact Management)
    • REL-003 シークレット管理 (Secret Management)
    • REL-004 セキュアコンフィグレーション (Secure Configuration)
    • REL-005 セキュリティポリシーの実施 (Security Policy Enforcement)
    • REL-006 Infrastructure-as-Code (IaC) セキュアデプロイメント (Infrastructure-as-Code (IaC) Secure Deployment)
    • REL-007 コンプライアンススキャン (Compliance Scanning)
    • REL-008 セキュアリリース管理 (Secure Release Management)
  • 運用/監視 (Operate/Monitor) フェーズ
    • OPR-001 環境の堅牢化 (Environment Hardening)
    • OPR-002 アプリケーションの堅牢化 (Application Hardening)
    • OPR-003 環境セキュリティログ記録 (Environment Security Logging)
    • OPR-004 アプリケーションセキュリティログ記録 (Application Security Logging)
    • OPR-005 脆弱性の開示 (Vulnerability Disclosure)
    • OPR-006 証明書管理 (Certificate Management)
    • OPR-007 攻撃対象領域管理 (Attack Surface Management)
Powered by GitBook
On this page
  • ハードコードされたシークレットの検出 (Hardcoded Secrets Detection)
  • 概要
  • レベル 0 - ハードコードされたシークレットのスキャンを実施するためのツールがない
  • レベル 1 - オンデマンドスキャンを実行するツールを使用し、ソースコード内にハードコードされたシークレットを特定している
  • レベル 2 - ビルドパイプラインにハードコードされたシークレットのスキャンツールを実装し、自動スキャンを実行し、ビルドのステータスをレポートしている
  • レベル 3 - 発見された内容が自動的に一元管理された課題追跡システムに記録されており、ツールの有効性を定期的にレビューしている
  • 注目すべきツール
  • Gitleaks
  • 🙏 クレジット
  1. コード/ビルド (Code/Build) フェーズ

CODE-002 ハードコードされたシークレットの検出 (Hardcoded Secrets Detection)

ハードコードされたシークレットの検出 (Hardcoded Secrets Detection)

ID

DSOVS-CODE-002

概要

ハードコードされたシークレットのスキャンは DevSecOps で使用されるセキュリティプロセスであり、ハードコードされたパスワード、トークン、その他の識別情報のコードなどをスキャンします。

ハードコードされたシークレットのスキャンの目的は、セキュアではなく保存されているクレデンシャルやシークレットを特定して置き換えることです。これらは悪意のあるアクターによって悪用される可能性があります。

このプロセスでは一般的にソースコード、構成ファイル、その他の関連するアーティファクトをスキャンしてシークレットを探し出し、適切なレベルのアクセスコントロールであることをチェックします。

セキュアではないと判断されたシークレットは関係者に報告され、よりセキュアな代替手段で置き換えます。

レベル 0 - ハードコードされたシークレットのスキャンを実施するためのツールがない

このレベルでのセキュリティ成熟度では、シークレットスキャンを実行できるツールはありません。

レベル 1 - オンデマンドスキャンを実行するツールを使用し、ソースコード内にハードコードされたシークレットを特定している

このステージでは、シークレット検出ツールが存在しますが、スキャンはケースバイケースで実行されます。自動化されておらず、結果は報告や記録されない場合があります。

レベル 2 - ビルドパイプラインにハードコードされたシークレットのスキャンツールを実装し、自動スキャンを実行し、ビルドのステータスをレポートしている

ここでは、ソフトウェアビルドパイプラインにシークレットスキャンが実装されています。つまり、ビルドが実行されるたびに、自動シークレットスキャンがトリガーされ、結果が報告されます。

レベル 3 - 発見された内容が自動的に一元管理された課題追跡システムに記録されており、ツールの有効性を定期的にレビューしている

シークレットスキャンのレベル 3 はレベル 2 と同じですが、特定されたすべてのセキュリティ脆弱性が一元管理された課題追跡システムに記録され、シークレット検出ツールの有効性を評価するために定期的にレビューされることが追加されています。つまり、同じタイプの自動スキャンが実行されていますが、将来の使用と改善のために結果が収集、追跡、分析されているのです。

注目すべきツール

⚠️ 免責事項

OWASP の公式プロジェクトは別として、このセクションのツールはその実績のある機能のみに基づいて選択されており、DSOVS プロジェクトリーダーとそれらを保守する作成者やベンダーとの間には他の関係はありません。

Gitleaks は git リポジトリ内のパスワード、API キー、トークンなどのハードコードされたシークレットを検出および防止するための SAST ツールです。Gitleaks は過去や現在のコード内のシークレットを検出するための使いやすいオールインワンのソリューションです。

name: '2.0$(rev:.r)'

trigger:
- main
- feature/*
- features/*
- bugfix/*

pool:
  vmImage: 'ubuntu-latest'

stages:
- stage: 'Build'
  displayName: 'Build'
  jobs:
  - job: 
    steps:
    - task: NodeTool@0
      inputs:
        versionSpec: '16.x'
      displayName: 'Install Node.js'
    
    - template: build-and-test.yml
      parameters:
        path: task/v2
        name: Gitleaks V2
  
    - task: TfxInstaller@3
      displayName: 'Use Node CLI for Azure DevOps'
      inputs:
        version: '0.9.x'
        checkLatest: true

    - task: PackageAzureDevOpsExtension@3
      displayName: 'Package Extension: $(Build.SourcesDirectory)'
      name: 'packageStep'
      inputs:
        rootFolder: '$(Build.SourcesDirectory)'
        outputPath: '$(Build.ArtifactStagingDirectory)/foxholenl-gitleaks.vsix'
        publisherId: 'foxholenl'
        extensionId: 'Gitleaks'
        extensionName: 'Gitleaks'
        extensionTag: '-build'
        extensionVersion: '$(Build.BuildNumber)'
        extensionVisibility: private

    - task: PublishPipelineArtifact@1
      displayName: 'Publish vsix'
      inputs:
        publishLocation: pipeline
        targetPath: '$(packageStep.Extension.OutputPath)'
        artifact: 'vsix'
      condition: succeededOrFailed()

- stage: Test
  displayName: 'Publish to Marketplace (private)'
  condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
  dependsOn: 'Build'
  jobs:
    - deployment: 
      environment: Test
      strategy: 
        runOnce:
         deploy:
          steps:

          - task: TfxInstaller@3
            displayName: 'Use Node CLI for Azure DevOps'
            inputs:
              version: '0.9.x'
              checkLatest: true

          - task: PublishAzureDevOpsExtension@3
            name: 'PublishTest'
            inputs:
              connectTo: 'VsTeam'
              connectedServiceName: 'Marketplace'
              fileType: 'vsix'
              vsixFile: '$(Pipeline.Workspace)/vsix/foxholenl-gitleaks.vsix'
              publisherId: 'foxholenl'
              extensionId: 'Gitleaks'
              extensionTag: '-dev'
              updateTasksVersion: false
              extensionVisibility: 'privatepreview'
              shareWith: 'foxholenl'
              noWaitValidation: true

- stage: Production
  displayName: 'Publish to Marketplace (Public)'
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/main'))
  dependsOn: 'Test'
  jobs:
    - deployment: 
      environment: Production
      strategy: 
        runOnce:
          deploy:
            steps:
            - task: TfxInstaller@3
              displayName: 'Use Node CLI for Azure DevOps'
              inputs:
                version: '0.9.x'
                checkLatest: true

            - task: PublishAzureDevOpsExtension@3
              name: 'PublishProd'
              inputs:
                connectTo: 'VsTeam'
                connectedServiceName: 'Marketplace'
                fileType: 'vsix'
                vsixFile: '$(Pipeline.Workspace)/vsix/foxholenl-gitleaks.vsix'
                publisherId: 'foxholenl'
                extensionId: 'Gitleaks'
                updateTasksVersion: false
                extensionVisibility: 'public'
                noWaitValidation:  true

🙏 クレジット

コミュニティへの素晴らしい貢献なしにはこれを実現できませんでした。使用された外部からのインスピレーションに感謝の意を表します。

PreviousCODE-001 セキュア開発環境 (Secure Development Environment)NextCODE-003 手動セキュアコードレビュー (Manual Secure Code Review)

Last updated 2 years ago

注目すべきツールの提案がある場合には してください。

💡 ツールを提案
Gitleaks
name: gitleakson: pull_request: push: workflow_dispatch: schedule: - cron: "0 4 * * *" # run once a day at 4 AMjobs: scan: name: gitleaks runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - uses: gitleaks/gitleaks-action@v2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE}} # Only requir
stages: - secrets-detectiongitleaks: stage: secrets-detection image: name: "zricethezav/gitleaks" entrypoint: [""] script: gitleaks -v --pretty --repo-path . --commit-from=$CI_COMMIT_SHA --commit-to=$CI_COMMIT_BEFORE_SHA --branch=$CI_COMMIT_BRANCH
Joost Voskuil
Chandrapal Badshah
GitHub Actions
GitLab CI
Azure DevOps