拡張スキャン - Amazon ECR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

拡張スキャン

Amazon ECR 拡張スキャンは、コンテナイメージの脆弱性スキャンを提供する Amazon Inspector との統合です。コンテナイメージは、オペレーティングシステムとプログラミング言語パッケージの両方の脆弱性についてスキャンされます。スキャンの結果は、Amazon ECR と Amazon Inspector の両方で直接表示できます。Amazon Inspector の詳細については、Amazon Inspector ユーザーガイドScanning container images with Amazon Inspector を参照してください。

拡張スキャンでは、自動連続スキャン用に構成するリポジトリと、プッシュ時にスキャンするように構成するリポジトリを選択できます。これは、スキャンフィルターを設定することによって行われます。

拡張スキャンの考慮事項

Amazon ECR 拡張スキャンを有効にするときは、次の事項を考慮する必要があります。

  • この機能を使用するために Amazon ECR に追加料金はかかりませんが、イメージをスキャンするために Amazon Inspector の料金がかかります。詳細については、「Amazon Inspector の料金」を参照してください。

  • 次のリージョンでは、拡張スキャンはサポートされていません。

    • 中東 (アラブ首長国連邦) (me-central-1)

    • アジアパシフィック (ハイデラバード) (ap-south-2)

    • イスラエル (テルアビブ) (il-central-1)

    • アジアパシフィック (メルボルン) (ap-southeast-4)

    • 欧州 (スペイン) (eu-south-2)

  • Amazon Inspector では特定のオペレーティングシステムのスキャンがサポートされます。完全なリストについては、Amazon Inspector ユーザーガイドの「サポートされているオペレーティングシステム - Amazon ECR スキャン」を参照してください。

  • Amazon Inspector は、サービスにリンクされた IAM ロールを使用します。このロールは、リポジトリに対する拡張スキャンを行うのに必要なアクセス許可を提供します。プライベートレジストリで拡張スキャンがオンになっている場合、サービスにリンクされた IAM ロールは Amazon Inspector によって自動的に作成されます。詳細については、「Amazon Inspector ユーザーガイド」の「Amazon Inspector でのサービスにリンクされたロールの使用」を参照してください。

  • プライベートレジストリの拡張スキャンを最初に有効にしたとき、Amazon Inspector は、イメージのプッシュタイムスタンプに基づいて、過去 30 日以内に Amazon ECR にプッシュされたイメージ、または過去 90 日間にプルされたイメージのみを認識します。古い画像は SCAN_ELIGIBILITY_EXPIRED スキャンステータスになります。これらの画像を Amazon Inspector でスキャンしたい場合は、リポジトリに再度プッシュする必要があります。

  • 拡張スキャンをオンにした後に Amazon ECR にプッシュされたすべての画像は、設定された期間、継続してスキャンされます。デフォルトでは、有効期間は [一生] です。この設定は、Amazon Inspector コンソールを使用して設定できます。詳細については、「拡張スキャンの期間を変更する」を参照してください。

  • Amazon ECR プライベートレジストリで拡張スキャンがオンになっている場合、スキャンフィルターに一致するリポジトリは、拡張スキャンのみを使用してスキャンされます。フィルターと一致しないリポジトリのスキャン頻度は Off であり、スキャンされません。拡張スキャンを使用した手動スキャンはサポートされていません。詳細については、「フィルターの使用」を参照してください。

  • 複数のフィルターが同じリポジトリに一致するプッシュ時スキャンと連続スキャンに別々のフィルターを指定すると、Amazon ECR はそのリポジトリのスキャンオンプッシュフィルターに対して連続スキャンフィルターを適用します。

  • 拡張スキャンを有効にすると、Amazon ECR EventBridge はリポジトリのスキャン頻度が変更されたときにイベントを送信します。Amazon Inspector は、 EventBridge 初期スキャンが完了したときと、イメージスキャンの結果が作成、更新、または閉じられたときにイベントを発行します。

必要な IAM 許可

Amazon ECR 拡張スキャンには、Amazon Inspector サービスにリンクされた IAM ロールが必要です。また、拡張スキャンを有効化および使用する IAM プリンシパルには、スキャンで必要な Amazon Inspector API を呼び出すアクセス許可が必要です。プライベートレジストリで拡張スキャンがオンになっている場合、Amazon Inspector サービスにリンクされた IAM ロールは Amazon Inspector によって自動的に作成されます。詳細については、Amazon Inspector ユーザーガイドAmazon Inspector でのサービスにリンクされたロールの使用 を参照してください。

次の IAM ポリシーは、拡張スキャンの有効化と使用に必要なアクセス許可を付与します。これには、Amazon Inspector がサービスにリンクされた IAM ロールを作成するために必要なアクセス許可、および拡張スキャンをオンまたはオフにして、およびスキャン結果の取得に必要な Amazon Inspector API のアクセス許可が含まれます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "inspector2:Enable", "inspector2:Disable", "inspector2:ListFindings", "inspector2:ListAccountPermissions", "inspector2:ListCoverage" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "iam:AWSServiceName": [ "inspector2.amazonaws.com" ] } } } ] }

拡張スキャンの使用

AWS Management Console
プライベートレジストリの拡張スキャンをオンにするには (AWS Management Console)

スキャン設定は、プライベートレジストリレベルでリージョンごとに定義されます。

  1. https://console.aws.amazon.com/ecr/repositories で Amazon ECR コンソールを開きます。

  2. ナビゲーションバーから、スキャン設定を設定するリージョンを選択します。

  3. ナビゲーションペインで、[Private registry] (プライベートレジストリ)、[Scanning] (スキャン) の順に選択します。

  4. [Scanning configuration] (スキャン設定) ページの [Scan type] (スキャンタイプ) で、[Enhanced scanning] (拡張スキャン) を選択します。

  5. (オプション) デフォルトでは、[Enhanced scanning] (拡張スキャン) が選択されている場合、すべてのリポジトリが [Continuous scanning] (継続スキャン) に設定されています。デフォルトのスキャンの設定を変更するには、[Continuously scan all repositories] (すべてのリポジトリを継続的にスキャンする) ボックスを選択解除します。その後、すべてのリポジトリをプッシュ時にスキャンするように設定するか、プッシュ時に継続スキャン用に個別のスキャンフィルターを指定できます。スキャンフィルターが設定されている場合、[Preview repository matches] (リポジトリの一致をプレビューする) を選択して、レジストリ内のどのリポジトリが定義済みフィルターと一致しているかを確認します。

    重要

    ワイルドカードを含まないフィルターは、そのフィルターを含むすべてのリポジトリ名と一致します。ワイルドカード (*) を含むフィルターは、リポジトリ名のゼロ文字以上の文字がワイルドカードで置き換えられるリポジトリ名と一致します。

  6. [保存] を選択します。

  7. 拡張スキャンをオンにするリージョンごとに、これらの手順を繰り返します。

AWS CLI

AWS CLI 次のコマンドを使用して、を使用してプライベートレジストリの拡張スキャンを有効にします。 AWS CLIスキャンフィルターは、rules オブジェクトを使用して指定します。

  • put-registry-scanning-configuration (AWS CLI)

    次の例では、プライベートレジストリの拡張スキャンをオンにします。デフォルトでは、rules が指定されていない場合、Amazon ECR はすべてのリポジトリのスキャン設定を継続スキャンに設定します。

    aws ecr put-registry-scanning-configuration \ --scan-type ENHANCED \ --region us-east-2

    次の例では、プライベートレジストリの拡張スキャンオンにして、スキャンフィルターを指定します。この例のスキャンフィルターは、名前に prod が含まれるすべてのリポジトリの継続スキャンをオンにします。

    aws ecr put-registry-scanning-configuration \ --scan-type ENHANCED \ --rules '[{"repositoryFilters" : [{"filter":"prod","filterType" : "WILDCARD"}],"scanFrequency" : "CONTINUOUS_SCAN"}]' \ --region us-east-2

    次の例では、プライベートレジストリの拡張スキャンをオンにして、複数のスキャンフィルターを指定します。この例のスキャンフィルターは、名前に prod が含まれるすべてのリポジトリの継続スキャンをオンにして、他のすべてのリポジトリに対してはプッシュ時のみスキャンをオンにします。

    aws ecr put-registry-scanning-configuration \ --scan-type ENHANCED \ --rules '[{"repositoryFilters" : [{"filter":"prod","filterType" : "WILDCARD"}],"scanFrequency" : "CONTINUOUS_SCAN"},{"repositoryFilters" : [{"filter":"*","filterType" : "WILDCARD"}],"scanFrequency" : "SCAN_ON_PUSH"}]' \ --region us-west-2

拡張スキャンの期間を変更する

Amazon Inspector では、プライベートリポジトリを継続的に監視する期間を設定できます。デフォルトでは、Amazon ECR プライベートレジストリで拡張スキャンがオンになっている場合、Amazon Inspector サービスは、イメージが削除されるか、拡張スキャンが無効になるまで、リポジトリを継続的に監視します。Amazon Inspector がイメージをスキャンする期間は、Amazon Inspector の設定を使用して変更できます。利用可能なスキャン期間は、[Lifetime (デフォルト)] (有効期間)、[180 day] (180 日間)、および [30 day] (30 日間) です。リポジトリのスキャン期間が経過すると、スキャンの脆弱性を一覧表示するときに SCAN_ELIGIBILITY_EXPIRED のスキャンステータスが表示されます。詳細については、Amazon Inspector ユーザーガイドの「Changing the Amazon ECR automated re-scan duration」(Amazon ECR の自動化された再スキャン期間の変更) を参照してください。

拡張スキャン時間の設定を変更するには
  1. https://console.aws.amazon.com/inspector/v2/home で Amazon Inspector コンソールを開きます。

  2. 左側のナビゲーションで [設定] を展開して [全般] を選択します。

  3. [設定] ページの [ECR re-scan duration] (ECR 再スキャン期間) [保存] を選択します。

EventBridge イベント

拡張スキャンを有効にすると、Amazon ECR EventBridge はリポジトリのスキャン頻度が変更されたときにイベントを送信します。Amazon Inspector は、 EventBridge 初期スキャンが完了したときと、イメージスキャンの結果が作成、更新、または閉じられたときにイベントを発行します。

リポジトリのスキャン頻度の変更に関するイベント

レジストリで拡張スキャンがオンになっている場合、拡張スキャンがオンになっているリソースで変更すると、Amazon ECR から次のイベントが送信されます。これには、新しいリポジトリの作成、リポジトリのスキャン頻度の変更、または拡張スキャンがオンになっているリポジトリでのイメージの作成または削除が含まれます。詳細については、「イメージスキャン」を参照してください。

{ "version": "0", "id": "0c18352a-a4d4-6853-ef53-0abEXAMPLE", "detail-type": "ECR Scan Resource Change", "source": "aws.ecr", "account": "123456789012", "time": "2021-10-14T20:53:46Z", "region": "us-east-1", "resources": [], "detail": { "action-type": "SCAN_FREQUENCY_CHANGE", "repositories": [{ "repository-name": "repository-1", "repository-arn": "arn:aws:ecr:us-east-1:123456789012:repository/repository-1", "scan-frequency": "SCAN_ON_PUSH", "previous-scan-frequency": "MANUAL" }, { "repository-name": "repository-2", "repository-arn": "arn:aws:ecr:us-east-1:123456789012:repository/repository-2", "scan-frequency": "CONTINUOUS_SCAN", "previous-scan-frequency": "SCAN_ON_PUSH" }, { "repository-name": "repository-3", "repository-arn": "arn:aws:ecr:us-east-1:123456789012:repository/repository-3", "scan-frequency": "CONTINUOUS_SCAN", "previous-scan-frequency": "SCAN_ON_PUSH" } ], "resource-type": "REPOSITORY", "scan-type": "ENHANCED" } }

初期イメージスキャンのイベント (拡張スキャン)

レジストリで拡張スキャンがオンになっている場合、初期イメージスキャンが完了すると、Amazon Inspector によって以下のイベントが送信されます。finding-severity-counts パラメータは、重要度レベルが存在する場合にのみ、その値を返します。たとえば、イメージに CRITICAL レベルの結果が含まれていない場合、重要度のカウントは返されません。詳細については、「拡張スキャン」を参照してください。

イベントパターン:

{ "source": ["aws.inspector2"], "detail-type": ["Inspector2 Scan"] }

出力例:

{ "version": "0", "id": "739c0d3c-4f02-85c7-5a88-94a9EXAMPLE", "detail-type": "Inspector2 Scan", "source": "aws.inspector2", "account": "123456789012", "time": "2021-12-03T18:03:16Z", "region": "us-east-2", "resources": [ "arn:aws:ecr:us-east-2:123456789012:repository/amazon/amazon-ecs-sample" ], "detail": { "scan-status": "INITIAL_SCAN_COMPLETE", "repository-name": "arn:aws:ecr:us-east-2:123456789012:repository/amazon/amazon-ecs-sample", "finding-severity-counts": { "CRITICAL": 7, "HIGH": 61, "MEDIUM": 62, "TOTAL": 158 }, "image-digest": "sha256:36c7b282abd0186e01419f2e58743e1bf635808231049bbc9d77e5EXAMPLE", "image-tags": [ "latest" ] } }

イメージスキャン結果の更新のイベント (拡張スキャン)

レジストリで拡張スキャンがオンになっている場合、イメージスキャン結果が作成、更新、または閉じられると、Amazon Inspector によって以下のイベントが送信されます。詳細については、「拡張スキャン」を参照してください。

イベントパターン:

{ "source": ["aws.inspector2"], "detail-type": ["Inspector2 Finding"] }

出力例:

{ "version": "0", "id": "42dbea55-45ad-b2b4-87a8-afaEXAMPLE", "detail-type": "Inspector2 Finding", "source": "aws.inspector2", "account": "123456789012", "time": "2021-12-03T18:02:30Z", "region": "us-east-2", "resources": [ "arn:aws:ecr:us-east-2:123456789012:repository/amazon/amazon-ecs-sample/sha256:36c7b282abd0186e01419f2e58743e1bf635808231049bbc9d77eEXAMPLE" ], "detail": { "awsAccountId": "123456789012", "description": "In libssh2 v1.9.0 and earlier versions, the SSH_MSG_DISCONNECT logic in packet.c has an integer overflow in a bounds check, enabling an attacker to specify an arbitrary (out-of-bounds) offset for a subsequent memory read. A crafted SSH server may be able to disclose sensitive information or cause a denial of service condition on the client system when a user connects to the server.", "findingArn": "arn:aws:inspector2:us-east-2:123456789012:finding/be674aaddd0f75ac632055EXAMPLE", "firstObservedAt": "Dec 3, 2021, 6:02:30 PM", "inspectorScore": 6.5, "inspectorScoreDetails": { "adjustedCvss": { "adjustments": [], "cvssSource": "REDHAT_CVE", "score": 6.5, "scoreSource": "REDHAT_CVE", "scoringVector": "CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N", "version": "3.0" } }, "lastObservedAt": "Dec 3, 2021, 6:02:30 PM", "packageVulnerabilityDetails": { "cvss": [ { "baseScore": 6.5, "scoringVector": "CVSS:3.0/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N", "source": "REDHAT_CVE", "version": "3.0" }, { "baseScore": 5.8, "scoringVector": "AV:N/AC:M/Au:N/C:P/I:N/A:P", "source": "NVD", "version": "2.0" }, { "baseScore": 8.1, "scoringVector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:H", "source": "NVD", "version": "3.1" } ], "referenceUrls": [ "https://access.redhat.com/errata/RHSA-2020:3915" ], "source": "REDHAT_CVE", "sourceUrl": "https://access.redhat.com/security/cve/CVE-2019-17498", "vendorCreatedAt": "Oct 16, 2019, 12:00:00 AM", "vendorSeverity": "Moderate", "vulnerabilityId": "CVE-2019-17498", "vulnerablePackages": [ { "arch": "X86_64", "epoch": 0, "name": "libssh2", "packageManager": "OS", "release": "12.amzn2.2", "sourceLayerHash": "sha256:72d97abdfae3b3c933ff41e39779cc72853d7bd9dc1e4800c5294dEXAMPLE", "version": "1.4.3" } ] }, "remediation": { "recommendation": { "text": "Update all packages in the vulnerable packages section to their latest versions." } }, "resources": [ { "details": { "awsEcrContainerImage": { "architecture": "amd64", "imageHash": "sha256:36c7b282abd0186e01419f2e58743e1bf635808231049bbc9d77e5EXAMPLE", "imageTags": [ "latest" ], "platform": "AMAZON_LINUX_2", "pushedAt": "Dec 3, 2021, 6:02:13 PM", "registry": "123456789012", "repositoryName": "amazon/amazon-ecs-sample" } }, "id": "arn:aws:ecr:us-east-2:123456789012:repository/amazon/amazon-ecs-sample/sha256:36c7b282abd0186e01419f2e58743e1bf635808231049bbc9d77EXAMPLE", "partition": "N/A", "region": "N/A", "type": "AWS_ECR_CONTAINER_IMAGE" } ], "severity": "MEDIUM", "status": "ACTIVE", "title": "CVE-2019-17498 - libssh2", "type": "PACKAGE_VULNERABILITY", "updatedAt": "Dec 3, 2021, 6:02:30 PM" } }

イメージスキャン結果の取得

最後に完了したイメージスキャンのスキャン結果を取得できます。結果には、検出されたソフトウェアの脆弱性が、共通の脆弱性およびエクスポージャー (CVE) データベースに基づく重大度別に一覧表示されます。

イメージをスキャンする際の一般的な問題のトラブルシューティングの詳細については、「イメージスキャニングの問題のトラブルシューティング」を参照してください。

イメージスキャンの結果を取得するには (AWS Management Console)

AWS Management Console

AWS Management Consoleを使用してイメージスキャンの結果を取得する手順は、次のとおりです。

  1. https://console.aws.amazon.com/ecr/repositories で Amazon ECR コンソールを開きます。

  2. ナビゲーションバーから、リポジトリがあるリージョンを選択します。

  3. ナビゲーションペインで、[Repositories] を選択します。

  4. リポジトリページで、スキャン結果を取得するイメージを含むリポジトリを選択します。

  5. [イメージ] ページの [Vulnerabilities] (脆弱性) 列で、スキャン結果を取得するイメージの [See findings] (結果の表示) を選択します。

  6. [Findings] (結果) を表示する場合、[Name] (名前) 列の脆弱性名は、詳細を表示できる Amazon Inspector コンソールへのリンクです。

AWS CLI

AWS CLI 次のコマンドを使用して、イメージスキャンの結果を取得します。 AWS CLIimageTag または imageDigest を使用してイメージを指定できます。どちらのイメージも list-images CLI コマンドを使用して取得できます。

  • describe-image-scan-findings (AWS CLI)

    次の例では、イメージタグを使用しています。

    aws ecr describe-image-scan-findings \ --repository-name name \ --image-id imageTag=tag_name \ --region us-east-2

    次の例では、イメージダイジェストを使用しています。

    aws ecr describe-image-scan-findings \ --repository-name name \ --image-id imageDigest=sha256_hash \ --region us-east-2