【GitHub Actions】Secret Scanning が ECR イメージ URI 出力をブロックする問題

【GitHub Actions】Secret Scanning が ECR イメージ URI 出力をブロックする問題

GitHub Actions で ECR イメージ URI をジョブ間で受け渡す際に、Secret Scanning 機能により出力がスキップされる問題と解決方法について。

GitHub Actions #AWS#Github#Github Actions

【GitHub Actions】Secret Scanning が ECR イメージ URI 出力をブロックする問題

サムネイル

GitHub Actions で ECR イメージ URI をジョブ間で受け渡す際に、Secret Scanning 機能により出力がスキップされる問題と解決方法について。

更新日: 8/18/2025

発生した問題

ISSUE - 課題

GitHub Actions ワークフローで ECR へのイメージプッシュ後、後続のデプロイJOBでイメージ URI が取得できない問題が発生。

  • image-uriecr-registry の出力が空になる
  • デプロイジョブで正しいイメージ URI を参照できない
  • ログに Secret Scanning の警告が出力される

根本原因

CAUSE - 原因

GitHub Actions の Secret Scanning 機能が ECR イメージ URI をシークレット情報として検出していました。

ECR イメージ URI には AWS アカウント ID が含まれているため、以下の警告がログに出力されます

##[warning]Skip output 'image-uri' since it may contain secret.
##[warning]Skip output 'ecr-registry' since it may contain secret.

セキュリティ上の理由で、シークレット情報を含む可能性がある出力は自動的にスキップされるようです。

解決策

SOLUTION - 解決策

シークレット情報を含まない値のみをJOB間で受け渡すように変更します。

修正前のコード

build-and-push:
  outputs:
    image-uri: ${{ steps.build-image.outputs.image }}
    ecr-registry: ${{ steps.login-ecr.outputs.registry }}

deploy:
  steps:
    - name: Build Image URI
      run: |
        IMAGE_URI="${{ needs.build-and-push.outputs.ecr-registry }}/app:${{ needs.build-and-push.outputs.image-tag }}"

修正後のコード

build-and-push:
  outputs:
    image-tag: ${{ github.sha }}

deploy:
  steps:
    - name: Login to Amazon ECR
      id: login-ecr
      uses: aws-actions/amazon-ecr-login@v2
    
    - name: Build Image URI
      run: |
        IMAGE_URI="${{ steps.login-ecr.outputs.registry }}/app:${{ needs.build-and-push.outputs.image-tag }}"

修正のポイントはイメージタグのみを受け渡し、デプロイジョブ内で ECR レジストリ情報を再取得することです。

技術的な背景

Secret Scanning の動作

GitHub Actions の Secret Scanning は以下の情報を自動検出します。

検出対象
AWS アカウント ID 123456789012
API キー AKIA…
プライベートキー -----BEGIN RSA PRIVATE KEY-----

ベストプラクティス

シークレット情報の取り扱いで推奨される方法。

推奨 非推奨
各ジョブで個別に認証情報を取得 JOB間でシークレット情報を受け渡し
識別子のみを受け渡し URI を受け渡し
必要最小限の情報のみを出力 すべての認証情報を出力

検索

検索条件に一致する記事が見つかりませんでした