イメージスキャン
Amazon ECR イメージスキャンは、コンテナイメージ内のソフトウェアの脆弱性を識別するのに役立ちます。Amazon ECR は、オープンソースの CoreOS Clair プロジェクトの共通脆弱性およびエクスポージャー (CVE) データベースを使用し、スキャン結果のリストを提供します。デプロイされているコンテナイメージのセキュリティに関する情報については、スキャンの結果を確認できます。CoreOS Clair の詳細については、CoreOS Clair を参照してください。
Amazon ECR に保存されているコンテナイメージを手動でスキャンすることも、リポジトリにイメージをプッシュするときにイメージをスキャンするようにリポジトリを設定することもできます。最後に完了したイメージスキャンの結果は、各イメージに対して取得できます。Amazon ECR は、イメージスキャンの完了時にイベントを Amazon EventBridge (旧称 CloudWatch イベント) に送信します。詳細については、「Amazon ECR イベントと EventBridge」を参照してください。
イメージをスキャンする際の一般的な問題のトラブルシューティングの詳細については、「イメージスキャンの問題のトラブルシューティング」を参照してください。
プッシュ時にスキャンするようにリポジトリを設定する
イメージスキャン設定は、作成時に新しいリポジトリに対しても、既存のリポジトリに対しても設定できます。[scan on push (プッシュ時にスキャン)] が有効な場合、イメージはリポジトリにプッシュされた後にスキャンされます。リポジトリで [scan on push (プッシュ時にスキャン)] が無効になっている場合は、スキャン結果を得るために各イメージスキャンを手動で開始する必要があります。
プッシュ時にスキャンするように新しいリポジトリを作成する
新しいリポジトリが [scan on push (プッシュ時にスキャン)] するように設定されている場合、リポジトリにプッシュされたすべての新しいイメージがスキャンされます。最後に完了したイメージスキャンの結果を取得できます。詳細については、「スキャン結果の取得」を参照してください。
AWS マネジメントコンソール での手順については、「リポジトリの作成」を参照してください。
イメージの [scan on push (プッシュ時にスキャン)] が設定された新しいリポジトリを作成するには、次のコマンドを使用します。
-
create-repository (AWS CLI)
aws ecr create-repository --repository-name
name
--image-scanning-configuration scanOnPush=true
--regionus-east-2
イメージの [scan on push (プッシュ時にスキャン)] が設定された新しいリポジトリを作成するには、次のコマンドを使用します。
-
New-ECRRepository (AWS Tools for Windows PowerShell)
New-ECRRepository -RepositoryName
name
-ImageScanningConfiguration_ScanOnPushtrue
-Regionus-east-2
-Force
プッシュ時にスキャンするよう既存のリポジトリを設定する
既存のリポジトリは、イメージをリポジトリにプッシュするときにスキャンするように設定できます。この設定は、今後のイメージプッシュに適用されます。最後に完了したイメージスキャンの結果を取得できます。詳細については、「スキャン結果の取得」を参照してください。
AWS マネジメントコンソール での手順については、「リポジトリの編集」を参照してください。
既存のリポジトリのイメージスキャン設定を編集するには、次のコマンドを使用します。
-
put-image-scanning-configuration (AWS CLI)
aws ecr put-image-scanning-configuration --repository-name
name
--image-scanning-configuration scanOnPush=true
--regionus-east-2
注記
リポジトリのイメージの [scan on push (プッシュ時にスキャン)] を無効にするには、
scanOnPush=false
を指定します。
既存のリポジトリのイメージスキャン設定を編集するには、次のコマンドを使用します。
-
New-ECRRepository (AWS Tools for Windows PowerShell)
Write-ECRImageScanningConfiguration -RepositoryName
name
-ImageScanningConfiguration_ScanOnPushtrue
-Regionus-east-2
-Force
イメージの手動スキャン
[scan on push (プッシュ時にスキャン)] するように設定されていないリポジトリ内のイメージをスキャンする場合は、イメージスキャンを手動で開始できます。イメージは 1 日に 1 回しかスキャンできません。この制限には、最初の [scan on push (プッシュ時にスキャン)] (有効になっている場合) と手動スキャンが含まれます。
イメージをスキャンする際の一般的な問題のトラブルシューティングの詳細については、「イメージスキャンの問題のトラブルシューティング」を参照してください。
AWS マネジメントコンソール を使用して手動イメージスキャンを開始するには、次の手順を実行します。
-
Amazon ECR コンソール (https://console.aws.amazon.com/ecr/repositories) を開きます。
-
ナビゲーションバーから、リポジトリを作成するリージョンを選択します。
-
ナビゲーションペインで、[Repositories] を選択します。
-
[Repositories (リポジトリ)] ページで、スキャンするイメージを含むリポジトリを選択します。
-
[イメージ] ページで、スキャンするイメージを選択し、[スキャン] を選択します。
イメージの手動スキャンを開始するには、次の AWS CLI コマンドを使用します。imageTag
または imageDigest
を使用してイメージを指定できます。どちらのイメージも list-images CLI コマンドを使用して取得できます。
-
start-image-scan (AWS CLI)
次の例では、イメージタグを使用しています。
aws ecr start-image-scan --repository-name
name
--image-id imageTag=tag_name
--regionus-east-2
次の例では、イメージダイジェストを使用しています。
aws ecr start-image-scan --repository-name
name
--image-id imageDigest=sha256_hash
--regionus-east-2
イメージの手動スキャンを開始するには、次の AWS Tools for Windows PowerShell コマンドを使用します。ImageId_ImageTag
または ImageId_ImageDigest
を使用してイメージを指定できます。どちらのイメージも Get-ECRImage CLI コマンドを使用して取得できます。
-
Get-ECRImageScanFinding (AWS Tools for Windows PowerShell)
次の例では、イメージタグを使用しています。
Start-ECRImageScan -RepositoryName
name
-ImageId_ImageTagtag_name
-Regionus-east-2
-Force次の例では、イメージダイジェストを使用しています。
Start-ECRImageScan -RepositoryName
name
-ImageId_ImageDigestsha256_hash
-Regionus-east-2
-Force
スキャン結果の取得
最後に完了したイメージスキャンのスキャン結果を取得できます。結果には、検出されたソフトウェアの脆弱性が、共通の脆弱性およびエクスポージャー (CVE) データベースに基づく重大度別に一覧表示されます。
イメージをスキャンする際の一般的な問題のトラブルシューティングの詳細については、「イメージスキャンの問題のトラブルシューティング」を参照してください。
AWS マネジメントコンソール を使用してイメージスキャンの結果を取得する手順は、次のとおりです。
-
Amazon ECR コンソール (https://console.aws.amazon.com/ecr/repositories) を開きます。
-
ナビゲーションバーから、リポジトリを作成するリージョンを選択します。
-
ナビゲーションペインで、[Repositories] を選択します。
-
[Repositories (リポジトリ)] ページで、スキャン結果を取得するイメージを含むリポジトリを選択します。
-
[Images (イメージ)] ページの [Vulnerabilities (脆弱性)] 列で、スキャン結果を取得するイメージの [Details (詳細)] を選択します。
イメージの手動スキャンを開始するには、次の AWS CLI コマンドを使用します。imageTag
または imageDigest
を使用してイメージを指定できます。どちらのイメージも list-images CLI コマンドを使用して取得できます。
-
describe-image-scan-findings (AWS CLI)
次の例では、イメージタグを使用しています。
aws ecr describe-image-scan-findings --repository-name
name
--image-id imageTag=tag_name
--regionus-east-2
次の例では、イメージダイジェストを使用しています。
aws ecr describe-image-scan-findings --repository-name
name
--image-id imageDigest=sha256_hash
--regionus-east-2
以下の AWS Tools for Windows PowerShell コマンドを使用して、イメージスキャンの結果を取得します。ImageId_ImageTag
または ImageId_ImageDigest
を使用してイメージを指定できます。どちらのイメージも Get-ECRImage CLI コマンドを使用して取得できます。
-
Get-ECRImageScanFinding (AWS Tools for Windows PowerShell)
次の例では、イメージタグを使用しています。
Get-ECRImageScanFinding -RepositoryName
name
-ImageId_ImageTagtag_name
-Regionus-east-2
次の例では、イメージダイジェストを使用しています。
Get-ECRImageScanFinding -RepositoryName
name
-ImageId_ImageDigestsha256_hash
-Regionus-east-2