

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Amazon ECR 中掃描映像是否有作業系統和程式設計語言套件漏洞
<a name="image-scanning-enhanced"></a>

Amazon ECR 增強型掃描已與 Amazon Inspector 整合，可為容器映像提供漏洞掃描。系統會掃描容器映像，檢查是否有作業系統和程式設計語言套件漏洞。您可以使用 Amazon ECR 和 Amazon Inspector 直接檢視掃描問題清單。如需有關 Amazon Inspector 的詳細資訊，請參閱《Amazon Inspector 使用者指南》**中的[使用 Amazon Inspector 掃描容器映像](https://docs.aws.amazon.com/inspector/latest/user/enable-disable-scanning-ecr.html)。

透過增強型掃描，您可以選擇要將哪些儲存庫設定為自動連續掃描，以及將哪些儲存庫設定為推送時掃描。設定掃描篩選條件可完成此操作。

## 增強型掃描的注意事項
<a name="image-scanning-enhanced-considerations"></a>

啟用 Amazon ECR 增強型掃描之前，請考慮下列事項。
+ 使用此功能不會從 Amazon ECR 產生任何額外成本，但是，掃描映像檔則會從 Amazon Inspector 產生成本。此功能適用於支援 Amazon Inspector 的區域。如需詳細資訊，請參閱：
  + Amazon Inspector 定價 – [Amazon Inspector 定價](https://aws.amazon.com/inspector/pricing/)。
  + Amazon Inspector 支援的區域 – [區域和端點](https://docs.aws.amazon.com//inspector/latest/user/inspector_regions.html)。
+ Amazon ECR 增強型掃描顯示如何在 Amazon EKS 和 Amazon ECS 上使用映像。您可以查看上次使用映像的時間，並識別有多少叢集使用每個映像。此資訊可協助您排定主動使用映像的漏洞修復優先順序。您可以快速判斷哪些叢集可能受到新發現的漏洞影響。如需如何請求這些資訊和檢視回應的詳細資訊，請參閱 [https://docs.aws.amazon.com//AmazonECR/latest/APIReference/API_DescribeImageScanFindings.html](https://docs.aws.amazon.com//AmazonECR/latest/APIReference/API_DescribeImageScanFindings.html)。
+ Amazon Inspector 支援掃描特定作業系統。如需完整清單，請參閱《Amazon Inspector 使用者指南》**中的[支援的作業系統：Amazon ECR 掃描](https://docs.aws.amazon.com/inspector/latest/user/supported.html#supported-os)。
+ Amazon Inspector 使用服務連結 IAM 角色，該角色提供為儲存庫提供增強型掃描所需的許可。為私有登錄檔開啟增強型掃描時，Amazon Inspector 會自動建立服務連結 IAM 角色。如需詳細資訊，請參閱《Amazon Inspector 使用者指南》**中的[使用 Amazon Inspector 的服務連結角色](https://docs.aws.amazon.com/inspector/latest/user/using-service-linked-roles.html)。
+ 當您最初開啟私有登錄檔的增強型掃描時，Amazon Inspector 只會根據映像推送時間戳記，辨識過去 14 天內推送至 Amazon ECR 的映像。較舊的映像會具有 ` SCAN_ELIGIBILITY_EXPIRED` 掃描狀態。如果您希望 Amazon Inspector 掃描這些映像，則必須將這些映像再次推送到儲存庫中。
+ 為 Amazon ECR 私有登錄檔開啟增強型掃描時，系統只會使用增強型掃描來掃描符合掃描篩選條件的所有儲存庫。不符合篩選條件的儲存庫都會具備 `Off` 掃描頻率，且不會被掃描。不支援使用增強掃描的手動掃描。如需詳細資訊，請參閱[選擇在 Amazon ECR 中掃描哪些儲存庫的篩選條件](image-scanning-filters.md)。
+ 如果您為「依據推送進行掃描」和「連續掃描」分別指定了篩選條件，發生同一儲存庫符合多個篩選條件的情況，則 Amazon ECR 會對該儲存庫強制優先執行「連續掃描」，而非「依據推送篩選條件進行掃描」。
+ 開啟增強型掃描後，如果儲存庫的掃描頻率發生變更，Amazon ECR 會將事件傳送至 EventBridge。初始掃描完成且建立、更新或關閉映像掃描問題清單後，Amazon Inspector 會將事件發送到 EventBridge。

## 變更 Amazon Inspector 中影像的增強型掃描持續時間
<a name="image-scanning-enhanced-duration"></a>

啟用增強型掃描之後，Amazon ECR 會在設定的持續時間內持續掃描新推送的映像。根據預設，Amazon Inspector 會監控您的儲存庫，直到刪除映像或停用增強型掃描為止。您可以在 Amazon Inspector 主控台中設定推送日期持續時間 （最長可達生命週期） 和重新掃描持續時間，以符合環境的需求。當儲存庫的掃描持續時間經過時，掃描狀態會顯示為 `SCAN_ELIGIBILITY_EXPIRED`。如需在 Amazon Inspector 中設定 Amazon ECR 重新掃描持續時間設定的詳細資訊，請參閱[《Amazon Inspector 使用者指南》中的設定 Amazon ECR 重新掃描持續時間](https://docs.aws.amazon.com/inspector/latest/user/enable-disable-scanning-ecr.html#scan-duration-setting)。 *Amazon Inspector *

# 在 Amazon ECR 中增強型掃描所需的 IAM 許可
<a name="image-scanning-enhanced-iam"></a>

Amazon ECR 增強型掃描需要 Amazon Inspector 服務連結 IAM 角色，且啟用和使用增強型掃描的 IAM 委託人有權呼叫掃描所需的 Amazon Inspector API。為私有登錄檔開啟增強型掃描時，Amazon Inspector 會自動建立 Amazon Inspector 服務連結 IAM 角色。如需詳細資訊，請參閱《Amazon Inspector 使用者指南》**中的[使用 Amazon Inspector 的服務連結角色](https://docs.aws.amazon.com/inspector/latest/user/using-service-linked-roles.html)。

下列 IAM 政策授予啟用及使用增強型掃描的必要許可。其中包含 Amazon Inspector 建立服務連結 IAM 角色所需的許可，以及開啟和關閉增強型掃描和擷取掃描問題清單所需的 Amazon Inspector API 許可。

------
#### [ JSON ]

****  

```
{
    "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"
                    ]
                }
            }
        }
    ]
}
```

------

# 在 Amazon ECR 中設定映像的增強型掃描
<a name="image-scanning-enhanced-enabling"></a>

為您的私有登錄檔設定每個區域的增強型掃描。

確認您具有設定增強型掃描的適當 IAM 許可。如需相關資訊，請參閱[在 Amazon ECR 中增強型掃描所需的 IAM 許可](image-scanning-enhanced-iam.md)。

------
#### [ AWS 管理主控台 ]

**開啟私有登錄檔的增強型掃描**

1. 在 [https://console.aws.amazon.com/ecr/repositories](https://console.aws.amazon.com/ecr/repositories) 開啟 Amazon ECR 主控台。

1. 從導覽列選擇要為其設定掃描組態的區域。

1. 在導覽窗格中，選擇**私有登錄**檔，然後選擇**設定** 。

1. 在 **Scanning configuration** (掃描組態) 頁面，針對 **Scan type** (掃描類型) 選擇 **Enhanced scanning** (增強型掃描)。

   根據預設，選取**增強型掃描**時，會持續掃描所有儲存庫。

1. 若要選擇要持續掃描的特定儲存庫，請清除**持續掃描所有儲存庫**方塊，然後定義篩選條件：
**重要**  
沒有萬用字元的篩選條件會比對內含篩選條件的所有儲存庫名稱。具有萬用字元 (`*`) 的篩選條件會比對儲存庫名稱，其中萬用字元會取代儲存庫名稱中零個以上的字元。若要查看篩選條件行為的範例，請參閱 [篩選萬用字元](image-scanning-filters.md#image-scanning-filters-wildcards)。

   1. 根據儲存庫名稱輸入篩選條件，然後選擇**新增篩選條件**。

   1. 決定推送映像時要掃描的儲存庫：
      + 若要在推送時掃描所有儲存庫，請選取**推送時掃描所有儲存庫**。
      + 若要在推送時選擇要掃描的特定儲存庫，請根據儲存庫名稱輸入篩選條件，然後選擇**新增篩選條件**。

1. 選擇**儲存**。

1. 在要開啟增強型掃描的各個區域重複這些步驟。

------
#### [ AWS CLI ]

使用以下 AWS CLI 命令，使用 開啟私有登錄檔的增強型掃描 AWS CLI。您可以使用 ` rules` 物件指定掃描篩選條件。
+ [ put-registry-scanning-configuration](https://docs.aws.amazon.com/cli/latest/reference/ecr/put-registry-scanning-configuration.html) (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 ECR 中傳送用於增強型掃描的 EventBridge 事件
<a name="image-scanning-enhanced-events"></a>

開啟增強型掃描後，如果儲存庫的掃描頻率發生變更，Amazon ECR 會將事件傳送至 EventBridge。當初始掃描完成，以及建立、更新或關閉映像掃描調查結果時，Amazon Inspector 會將事件傳送至 EventBridge。

 **儲存庫掃描頻率變更事件** 

為登錄檔開啟增強型掃描時，Amazon ECR 會在開啟了增強型掃描的資源發生變更時傳送下列事件。這包含正在建立的新儲存庫、正在變更的儲存庫掃描頻率，或是在開啟了增強型掃描的儲存庫中建立或刪除映像時。如需詳細資訊，請參閱[掃描映像是否有 Amazon ECR 中的軟體漏洞](image-scanning.md)。

```
{
	"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` 等級沒有問題清單，則不會傳回任何重要等級數值。如需詳細資訊，請參閱[在 Amazon ECR 中掃描映像是否有作業系統和程式設計語言套件漏洞](image-scanning-enhanced.md)。

事件模式：

```
{
  "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 會在建立、更新或關閉映像掃描問題清單時傳送下列事件。如需詳細資訊，請參閱[在 Amazon ECR 中掃描映像是否有作業系統和程式設計語言套件漏洞](image-scanning-enhanced.md)。

事件模式：

```
{
  "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",
                        "lastInUseAt": "Dec 3, 2021, 6:02:13 PM",
                        "inUseCount": 1,
                        "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"
    }
}
```

# 在 Amazon ECR 中擷取增強型掃描的調查結果
<a name="image-scanning-enhanced-describe-scan-findings"></a>

您可以擷取上次完成增強型映像掃描的掃描問題清單，然後在 Amazon Inspector 中開啟問題清單以查看更多詳細資訊。根據 Common Vulnerabilities and Exposures (CVEs) 資料庫，依嚴重性列出發現的軟體漏洞。

如需在掃描映像時某些常見問題的故障診斷詳細資訊，請參閱 [對 Amazon ECR 中的映像掃描進行故障診斷](image-scanning-troubleshooting.md)。

------
#### [ AWS 管理主控台 ]

使用下列步驟以利用 AWS 管理主控台擷取映像掃描結果。

**擷取映像掃描問題清單**

1. 在 [https://console.aws.amazon.com/ecr/](https://console.aws.amazon.com/ecr/) 開啟 Amazon ECR 主控台。

1. 從導覽列選擇儲存庫所在的區域。

1. 在導覽窗格中，選擇 **Repositories** (儲存庫)。

1. 在 **Repositories (儲存庫)** 頁面上，選擇包含要擷取掃描結果之映像的儲存庫。

1. 在**影像**頁面**的影像標籤**欄下，選取要擷取掃描問題清單的影像標籤。

1. 若要在 Amazon Inspector 主控台中檢視更多詳細資訊，請在名稱欄中選擇漏洞**名稱**。

------
#### [ AWS CLI ]

使用以下 AWS CLI 命令，使用 擷取影像掃描問題清單 AWS CLI。您可以使用 `imageTag` 或 ` imageDigest` 指定映像，兩者皆可利用 [list-images](https://docs.aws.amazon.com/cli/latest/reference/ecr/list-images.html) CLI 命令取得。
+ [ describe-image-scan-findings](https://docs.aws.amazon.com/cli/latest/reference/ecr/describe-image-scan-findings.html) (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
  ```

------