

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

# Amazon Elastic Container Registry 的安全性
<a name="security"></a>

的雲端安全 AWS 是最高優先順序。身為 AWS 客戶，您可以受益於資料中心和網路架構，這些架構專為滿足最安全敏感組織的需求而建置。

安全性是 AWS 與您之間的共同責任。[‬共同責任模型‭](https://aws.amazon.com/compliance/shared-responsibility-model/)‬ 將此描述為雲端*‬的‭*‬安全和雲端*‬內*‬的安全：
+ **雲端的安全性** – AWS 負責保護在 Cloud AWS 中執行 AWS 服務的基礎設施。 AWS 也為您提供可安全使用的服務。在 [AWS 合規計劃](https://aws.amazon.com/compliance/programs/)中，第三方稽核員會定期測試並驗證我們的安全功效。若要了解適用於 Amazon ECR 的合規計劃，請參閱[合規計劃範圍內的AWS 服務](https://aws.amazon.com/compliance/services-in-scope/)。
+ **雲端的安全性** – 您的責任取決於您使用 AWS 的服務。您也必須對其他因素負責，包括資料的機密性、您公司的要求和適用法律和法規。

本文件有助於您了解如何在使用 Amazon ECR 時套用共同責任模型。下列主題說明如何將 Amazon ECR 設定為符合您的安全與合規目標。您也會了解如何使用其他 AWS 服務來協助您監控和保護 Amazon ECR 資源。

**Topics**
+ [Amazon Elastic Container Registry 的 Identity and Access Management](security-iam.md)
+ [Amazon ECR 中的資料保護](data-protection.md)
+ [Amazon Elastic Container Registry 的合規驗證](ecr-compliance.md)
+ [Amazon Elastic Container Registry 的基礎設施安全性](infrastructure-security.md)
+ [預防跨服務混淆代理人](cross-service-confused-deputy-prevention.md)

# Amazon Elastic Container Registry 的 Identity and Access Management
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) 是 AWS 服務 ，可協助管理員安全地控制對 AWS 資源的存取。IAM 管理員可以控制*驗證* (已登入) 和*授權* (具有許可) 來使用 Amazon ECR 資源。IAM 是您可以免費使用 AWS 服務 的 。

**Topics**
+ [目標對象](#security_iam_audience)
+ [使用身分驗證](#security_iam_authentication)
+ [使用政策管理存取權](#security_iam_access-manage)
+ [Amazon Elastic Container Registry 如何與 IAM 搭配使用](security_iam_service-with-iam.md)
+ [Amazon Elastic Container Registry 身分型政策的範例](security_iam_id-based-policy-examples.md)
+ [使用標籤型存取控制](ecr-supported-iam-actions-tagging.md)
+ [AWS Amazon Elastic Container Registry 的 受管政策](security-iam-awsmanpol.md)
+ [使用 Amazon ECR 的服務連結角色](using-service-linked-roles.md)
+ [針對 Amazon Elastic Container Registry Identity and Access 進行故障診斷](security_iam_troubleshoot.md)

## 目標對象
<a name="security_iam_audience"></a>

使用方式 AWS Identity and Access Management (IAM) 會根據您的角色而有所不同：
+ **服務使用者** — 若無法存取某些功能，請向管理員申請所需許可 (請參閱 [針對 Amazon Elastic Container Registry Identity and Access 進行故障診斷](security_iam_troubleshoot.md))
+ **服務管理員** — 負責設定使用者存取權並提交相關許可請求 (請參閱 [Amazon Elastic Container Registry 如何與 IAM 搭配使用](security_iam_service-with-iam.md))
+ **IAM 管理員** — 撰寫政策以管理存取控制 (請參閱 [Amazon Elastic Container Registry 身分型政策的範例](security_iam_id-based-policy-examples.md))

## 使用身分驗證
<a name="security_iam_authentication"></a>

身分驗證是您 AWS 使用身分憑證登入 的方式。您必須以 AWS 帳戶根使用者、IAM 使用者或擔任 IAM 角色身分進行身分驗證。

您可以使用身分來源的登入資料，例如 AWS IAM Identity Center (IAM Identity Center)、單一登入身分驗證或 Google/Facebook 登入資料，以聯合身分的形式登入。如需有關登入的詳細資訊，請參閱《AWS 登入 使用者指南》**中的[如何登入您的 AWS 帳戶](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html)。

對於程式設計存取， AWS 提供 SDK 和 CLI 以密碼編譯方式簽署請求。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [API 請求的AWS 第 4 版簽署程序](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html)。

### AWS 帳戶 根使用者
<a name="security_iam_authentication-rootuser"></a>

 當您建立 時 AWS 帳戶，您會從一個名為 AWS 帳戶 *theroot 使用者的*登入身分開始，該身分具有對所有 AWS 服務 和 資源的完整存取權。強烈建議不要使用根使用者來執行日常任務。有關需要根使用者憑證的任務，請參閱《IAM 使用者指南》**中的[需要根使用者憑證的任務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)。

### IAM 使用者和群組
<a name="security_iam_authentication-iamuser"></a>

*IAM 使用者*[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)是一種身分具備單人或應用程式的特定許可權。建議以臨時憑證取代具備長期憑證的 IAM 使用者。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[要求人類使用者使用聯合身分提供者來 AWS 使用臨時憑證存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) 。

[IAM 群組](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)**會指定 IAM 使用者集合，使管理大量使用者的許可權更加輕鬆。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 使用者的使用案例](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html)。

### IAM 角色
<a name="security_iam_authentication-iamrole"></a>

*IAM 角色*[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)的身分具有特定許可權，其可以提供臨時憑證。您可以透過[從使用者切換到 IAM 角色 （主控台） ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)或呼叫 AWS CLI 或 AWS API 操作來擔任角色。如需詳細資訊，請參閱《IAM 使用者指南》**中的[擔任角色的方法](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html)。

IAM 角色適用於聯合身分使用者存取、臨時 IAM 使用者許可、跨帳戶存取權與跨服務存取，以及在 Amazon EC2 執行的應用程式。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的快帳戶資源存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

## 使用政策管理存取權
<a name="security_iam_access-manage"></a>

您可以透過建立政策並將其連接到身分或資源 AWS 來控制 AWS 中的存取。政策定義與身分或資源相關聯的許可。當委託人提出請求時 AWS ， 會評估這些政策。大多數政策會以 JSON 文件 AWS 形式存放在 中。如需進一步了解 JSON 政策文件，請參閱《*IAM 使用者指南*》中的 [JSON 政策概觀](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)。

管理員會使用政策，透過定義哪些**主體**可在哪些**條件**下對哪些**資源**執行**動作**，以指定可存取的範圍。

預設情況下，使用者和角色沒有許可。IAM 管理員會建立 IAM 政策並將其新增至角色，供使用者後續擔任。IAM 政策定義動作的許可，無論採用何種方式執行。

### 身分型政策
<a name="security_iam_access-manage-id-based-policies"></a>

身分型政策是附加至身分 (使用者、使用者群組或角色) 的 JSON 許可政策文件。這類政策控制身分可對哪些資源執行哪些動作，以及適用的條件。如需了解如何建立身分型政策，請參閱《*IAM 使用者指南*》中的[透過客戶管理政策定義自訂 IAM 許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

身分型政策可分為*內嵌政策* (直接內嵌於單一身分) 與*受管政策* (可附加至多個身分的獨立政策)。如需了解如何在受管政策及內嵌政策之間做選擇，請參閱《IAM 使用者指南》**中的[在受管政策與內嵌政策之間選擇](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html)。

### 資源型政策
<a name="security_iam_access-manage-resource-based-policies"></a>

資源型政策是附加到資源的 JSON 政策文件。範例包括 IAM *角色信任政策*與 Amazon S3 *儲存貯體政策*。在支援資源型政策的服務中，服務管理員可以使用它們來控制對特定資源的存取權限。您必須在資源型政策中[指定主體](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。

資源型政策是位於該服務中的內嵌政策。您無法在以資源為基礎的政策中使用來自 IAM 的 AWS 受管政策。

### 其他政策類型
<a name="security_iam_access-manage-other-policies"></a>

AWS 支援其他政策類型，可設定更多常見政策類型授予的最大許可：
+ **許可界限** — 設定身分型政策可授與 IAM 實體的最大許可。如需詳細資訊，請參閱《 IAM 使用者指南》**中的 [IAM 實體許可界限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。
+ **服務控制政策 (SCP)** — 為 AWS Organizations中的組織或組織單位指定最大許可。如需詳細資訊，請參閱《AWS Organizations 使用者指南》**中的[服務控制政策](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)。
+ **資源控制政策 (RCP)** — 設定您帳戶中資源可用許可的上限。如需詳細資訊，請參閱《AWS Organizations 使用者指南》**中的[資源控制政策 (RCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)。
+ **工作階段政策** — 在以程式設計方式為角色或聯合身分使用者建立臨時工作階段時，以參數形式傳遞的進階政策。如需詳細資訊，請參《*IAM 使用者指南*》中的[工作階段政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session)。

### 多種政策類型
<a name="security_iam_access-manage-multiple-policies"></a>

當多種類型的政策適用於請求時，產生的許可會更複雜而無法理解。若要了解如何 AWS 在涉及多種政策類型時決定是否允許請求，請參閱《*IAM 使用者指南*》中的[政策評估邏輯](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html)。

# Amazon Elastic Container Registry 如何與 IAM 搭配使用
<a name="security_iam_service-with-iam"></a>

在您使用 IAM 管理對 Amazon ECR 的存取權之前，您應該瞭解哪些 IAM 功能可以與 Amazon ECR 搭配使用。若要全面了解 Amazon ECR 和其他 AWS 服務如何與 IAM 搭配使用，請參閱《IAM *使用者指南*》中的與 IAM [AWS 搭配使用的 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。

**Topics**
+ [Amazon ECR 身分型政策](#security_iam_service-with-iam-id-based-policies)
+ [Amazon ECR 資源型政策](#security_iam_service-with-iam-resource-based-policies)
+ [以 Amazon ECR 標籤為基礎的授權](#security_iam_service-with-iam-tags)
+ [Amazon ECR IAM 角色](#security_iam_service-with-iam-roles)

## Amazon ECR 身分型政策
<a name="security_iam_service-with-iam-id-based-policies"></a>

使用 IAM 身分型政策，您可以指定允許或拒絕的動作和資源，以及在何種條件下允許或拒絕動作。Amazon ECR 支援特定動作、資源和條件索引鍵。若要了解您在 JSON 政策中使用的所有元素，請參閱 *IAM 使用者指南*中的 [JSON 政策元素參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html)。

### 動作
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

JSON 政策的 `Action` 元素描述您可以用來允許或拒絕政策中存取的動作。政策會使用動作來授予執行相關聯動作的許可。

Amazon ECR 中的政策動作會在動作之前使用下列字首：`ecr:`。例如，若要授予某人使用 Amazon ECR `CreateRepository` API 操作建立 Amazon ECR 儲存庫的許可，請在其政策中加入 `ecr:CreateRepository` 動作。政策陳述式必須包含 `Action` 或 `NotAction` 元素。Amazon ECR 會定義自己的一組動作，描述您可以使用此服務執行的任務。

若要在單一陳述式中指定多個動作，請用逗號分隔，如下所示：

```
"Action": [
      "ecr:action1",
      "ecr:action2"
```

您也可以使用萬用字元 (\$1) 來指定多個動作。例如，若要指定開頭是 `Describe` 文字的所有動作，請包含以下動作：

```
"Action": "ecr:Describe*"
```



若要查看 Amazon ECR 動作的清單，請參閱《IAM 使用者指南》**中的 [Amazon Elastic Container Registry 的動作、資源與條件索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonelasticcontainerregistry.html)。

### Resources
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

`Resource` JSON 政策元素可指定要套用動作的物件。最佳實務是使用其 [Amazon Resource Name (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 來指定資源。若動作不支援資源層級許可，使用萬用字元 (\$1) 表示該陳述式適用於所有資源。

```
"Resource": "*"
```



Amazon ECR 儲存庫資源有以下 ARN：

```
arn:${Partition}:ecr:${Region}:${Account}:repository/${Repository-name}
```

如需 ARNs 格式的詳細資訊，請參閱 [Amazon Resource Name (ARNs AWS 和服務命名空間](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)。

例如，若要在陳述式中指定 `us-east-1` 區域的 `my-repo` 儲存庫，請使用下列 ARN：

```
"Resource": "arn:aws:ecr:us-east-1:123456789012:repository/my-repo"
```

若要指定屬於特定帳戶的所有儲存庫，請使用萬用字元 (\$1)：

```
"Resource": "arn:aws:ecr:us-east-1:123456789012:repository/*"
```

若要在單一陳述式中指定多項資源，請使用逗號分隔 ARN。

```
"Resource": [
      "resource1",
      "resource2"
```

若要查看 Amazon ECR 資源類型及其 ARN 的清單，請參閱《IAM 使用者指南》**中的 [Amazon Elastic Container Registry 定義的資源](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonelasticcontainerregistry.html#amazonelasticcontainerregistry-resources-for-iam-policies)。若要了解您可以使用哪些動作指定每個資源的 ARN，請參閱 [Amazon Elastic Container Registry 定義的動作](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonelasticcontainerregistry.html#amazonelasticcontainerregistry-actions-as-permissions)。

### 條件索引鍵
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

管理員可以使用 AWS JSON 政策來指定誰可以存取內容。也就是說，哪個**主體**在什麼**條件**下可以對什麼**資源**執行哪些**動作**。

`Condition` 元素會根據定義的條件，指定陳述式的執行時機。您可以建立使用[條件運算子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)的條件運算式 (例如等於或小於)，來比對政策中的條件和請求中的值。若要查看所有 AWS 全域條件索引鍵，請參閱《*IAM 使用者指南*》中的[AWS 全域條件內容索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。

Amazon ECR 會定義自己的一組條件索引鍵，也支援使用一些全域條件索引鍵。若要查看所有 AWS 全域條件金鑰，請參閱《*IAM 使用者指南*》中的[AWS 全域條件內容金鑰](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)。



大部分 Amazon ECR 動作均支援 `aws:ResourceTag` 和 `ecr:ResourceTag` 條件索引鍵。如需詳細資訊，請參閱[使用標籤型存取控制](ecr-supported-iam-actions-tagging.md)。

若要查看 Amazon ECR 條件索引鍵的清單，請參閱《IAM 使用者指南》**中的 [Amazon Elastic Container Registry 定義的條件索引鍵](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonelasticcontainerregistry.html#amazonelasticcontainerregistry-policy-keys)。若要了解您可以搭配哪些動作和資源使用條件索引鍵，請參閱 [Amazon Elastic Container Registry 定義的動作](https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonelasticcontainerregistry.html#amazonelasticcontainerregistry-actions-as-permissions)。

### 範例
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



若要檢視 Amazon ECR 身分型政策的範例，請參閱 [Amazon Elastic Container Registry 身分型政策的範例](security_iam_id-based-policy-examples.md)。

## Amazon ECR 資源型政策
<a name="security_iam_service-with-iam-resource-based-policies"></a>

資源型政策是 JSON 政策文件，這些文件會指定指定的委託人可對 Amazon ECR 資源以及在怎樣的條件下執行哪些動作。Amazon ECR 支援 Amazon ECR 存放庫的資源型許可政策。資源型政策可讓您依資源將使用許可授予至其他帳戶。您也可以使用資源型政策來允許 AWS 服務存取 Amazon ECR 儲存庫。

若要啟用跨帳戶存取，您可以指定在其他帳戶內的所有帳戶或 IAM 實體，作為[資源型政策的委託人](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html)。新增跨帳戶主體至資源型政策，只是建立信任關係的一半。當委託人和資源位於不同的 AWS 帳戶中時，您還必須授予委託人實體存取資源的許可。透過將身分型政策連接到實體來授予許可。不過，如果資源型政策授予相同帳戶中的委託人存取權，則不需要身分型政策中的其他 Amazon ECR 儲存庫許可。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 角色與資源型政策有何差異](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_compare-resource-policies.html)。

Amazon ECR 服務僅支援一種稱為*儲存庫政策*之資源型政策，且已連接到*儲存庫*。此政策會定義哪些委託人實體 (帳戶、使用者、角色和聯合身分使用者) 可在該儲存庫上執行動作。若要了解如何將資源型政策連接到儲存庫，請參閱 [Amazon ECR 中的私有儲存庫政策](repository-policies.md)。

**注意**  
在 Amazon ECR 儲存器政策中，政策元素 `Sid` 支援 IAM 政策中不支援的附加字元和間距。

### 範例
<a name="security_iam_service-with-iam-resource-based-policies-examples"></a>



若要檢視 Amazon ECR 資源型政策的範例，請參閱 [Amazon ECR 中的私有儲存庫政策範例](repository-policy-examples.md)。

## 以 Amazon ECR 標籤為基礎的授權
<a name="security_iam_service-with-iam-tags"></a>

您可以將標籤連接至 Amazon ECR 資源，或是在請求中將標籤傳遞至 Amazon ECR。若要根據標籤控制存取，請使用 `ecr:ResourceTag/key-name`、`aws:RequestTag/key-name` 或 `aws:TagKeys` 條件索引鍵，在政策的[條件元素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)中，提供標籤資訊。如需標記 Amazon ECR 資源的詳細資訊，請參閱 [在 Amazon ECR 中標記私有儲存庫](ecr-using-tags.md)。

若要檢視身分型政策範例，以根據該資源上的標籤來限制存取資源，請參閱 [使用標籤型存取控制](ecr-supported-iam-actions-tagging.md)。

## Amazon ECR IAM 角色
<a name="security_iam_service-with-iam-roles"></a>

[IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)是您 AWS 帳戶中具有特定許可的實體。

### 搭配使用臨時憑證與 Amazon ECR
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

您可以搭配聯合使用暫時憑證、擔任 IAM 角色，或是擔任跨帳戶角色。您可以透過呼叫 [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) 或 [GetFederationToken](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetFederationToken.html) 等 AWS STS API 操作來取得臨時安全登入資料。

Amazon ECR 支援使用臨時憑證。

### 服務連結角色
<a name="security_iam_service-with-iam-roles-service-linked"></a>

[服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)可讓 AWS 服務存取其他服務中的資源，以代表您完成 動作。服務連結角色會顯示在您的 IAM 帳戶中，並由該服務所擁有。IAM 管理員可以檢視，但不能編輯服務連結角色的許可。

Amazon ECR 支援服務連結角色。如需詳細資訊，請參閱[使用 Amazon ECR 的服務連結角色](using-service-linked-roles.md)。

# Amazon Elastic Container Registry 身分型政策的範例
<a name="security_iam_id-based-policy-examples"></a>

根據預設，使用者和角色不具備建立或修改 Amazon ECR 資源的許可。若要授予使用者對其所需資源執行動作的許可，IAM 管理員可以建立 IAM 政策。

如需了解如何使用這些範例 JSON 政策文件建立 IAM 身分型政策，請參閱《*IAM 使用者指南*》中的[建立 IAM 政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)。

如需 Amazon ECR 所定義之動作和資源類型的詳細資訊，包括每種資源類型的 ARN 格式，請參閱*《服務授權參考》*中的 [Amazon Elastic Container Registry 的動作、資源和條件索引鍵](https://docs.aws.amazon.com/service-authorization/latest/reference/ecr.html)。

若要了解如何使用這些範例 JSON 政策文件建立 IAM 身分型政策，請參閱 *IAM 使用者指南*中的[在 JSON 索引標籤上建立政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-json-editor)。

**Topics**
+ [政策最佳實務](#security_iam_service-with-iam-policy-best-practices)
+ [使用 Amazon ECR 主控台](#security_iam_id-based-policy-examples-console)
+ [允許使用者檢視自己的許可](#security_iam_id-based-policy-examples-view-own-permissions)
+ [存取一個 Amazon ECR 儲存庫](#security_iam_id-based-policy-examples-access-one-bucket)

## 政策最佳實務
<a name="security_iam_service-with-iam-policy-best-practices"></a>

身分型政策會判斷您帳戶中的某個人員是否可以建立、存取或刪除 Amazon ECR 資源。這些動作可能會讓您的 AWS 帳戶產生費用。當您建立或編輯身分型政策時，請遵循下列準則及建議事項：
+ **開始使用 AWS 受管政策並邁向最低權限許可** – 若要開始將許可授予您的使用者和工作負載，請使用將許可授予許多常見使用案例的 *AWS 受管政策*。它們可在您的 中使用 AWS 帳戶。我們建議您定義特定於使用案例 AWS 的客戶受管政策，以進一步減少許可。如需更多資訊，請參閱《*IAM 使用者指南*》中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)或[任務職能的AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)。
+ **套用最低權限許可** – 設定 IAM 政策的許可時，請僅授予執行任務所需的許可。為實現此目的，您可以定義在特定條件下可以對特定資源採取的動作，這也稱為*最低權限許可*。如需使用 IAM 套用許可的更多相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 中的政策和許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。
+ **使用 IAM 政策中的條件進一步限制存取權** – 您可以將條件新增至政策，以限制動作和資源的存取。例如，您可以撰寫政策條件，指定必須使用 SSL 傳送所有請求。如果透過特定 例如 使用服務動作 AWS 服務，您也可以使用條件來授予其存取權 CloudFormation。如需詳細資訊，請參閱《*IAM 使用者指南*》中的 [IAM JSON 政策元素：條件](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)。
+ **使用 IAM Access Analyzer 驗證 IAM 政策，確保許可安全且可正常運作** – IAM Access Analyzer 驗證新政策和現有政策，確保這些政策遵從 IAM 政策語言 (JSON) 和 IAM 最佳實務。IAM Access Analyzer 提供 100 多項政策檢查及切實可行的建議，可協助您撰寫安全且實用的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[使用 IAM Access Analyzer 驗證政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html)。
+ **需要多重要素驗證 (MFA)** – 如果您的案例需要 IAM 使用者或 中的根使用者 AWS 帳戶，請開啟 MFA 以提高安全性。如需在呼叫 API 操作時請求 MFA，請將 MFA 條件新增至您的政策。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[透過 MFA 的安全 API 存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)。

如需 IAM 中最佳實務的相關資訊，請參閱《*IAM 使用者指南*》中的 [IAM 安全最佳實務](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。

## 使用 Amazon ECR 主控台
<a name="security_iam_id-based-policy-examples-console"></a>

若要存取 Amazon Elastic Container Registry 主控台，您必須擁有最基本的一組許可。這些許可必須允許您列出和檢視 AWS 帳戶中 Amazon ECR 資源的詳細資訊。如果您建立比最基本必要許可更嚴格的身分型政策，則對於具有該政策的實體 (使用者或角色) 而言，主控台就無法如預期運作。

為了確保這些實體仍然可以使用 Amazon ECR 主控台，請將 `AmazonEC2ContainerRegistryReadOnly` AWS 受管政策新增至實體。如需詳細資訊，請參閱《IAM 使用者指南》**中的[新增許可到使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console)。

若要檢視此政策的許可，請參閱《 *AWS 受管政策參考*》中的 [AmazonElasticContainerRegistryPublicReadOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonElasticContainerRegistryPublicReadOnly.html)。

對於僅呼叫 AWS CLI 或 AWS API 的使用者，您不需要允許最低主控台許可。反之，只需允許存取符合您嘗試執行之 API 操作的動作就可以了。

## 允許使用者檢視自己的許可
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

此範例會示範如何建立政策，允許 IAM 使用者檢視附加到他們使用者身分的內嵌及受管政策。此政策包含在主控台或使用 或 AWS CLI AWS API 以程式設計方式完成此動作的許可。

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

## 存取一個 Amazon ECR 儲存庫
<a name="security_iam_id-based-policy-examples-access-one-bucket"></a>

在此範例中，您想要授予 AWS 帳戶中的使用者存取其中一個 Amazon ECR 儲存庫 `my-repo`。您也希望允許使用者推送、提取及列出映像。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"GetAuthorizationToken",
         "Effect":"Allow",
         "Action":[
            "ecr:GetAuthorizationToken"
         ],
         "Resource":"*"
      },
      {
         "Sid":"ManageRepositoryContents",
         "Effect":"Allow",
         "Action":[
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:GetRepositoryPolicy",
                "ecr:DescribeRepositories",
                "ecr:ListImages",
                "ecr:DescribeImages",
                "ecr:BatchGetImage",
                "ecr:InitiateLayerUpload",
                "ecr:UploadLayerPart",
                "ecr:CompleteLayerUpload",
                "ecr:PutImage"
         ],
         "Resource":"arn:aws:ecr:us-east-1:123456789012:repository/my-repo"
      }
   ]
}
```

------

# 使用標籤型存取控制
<a name="ecr-supported-iam-actions-tagging"></a>

Amazon ECR `CreateRepository` API 動作可讓您在建立儲存庫時指定標籤。如需詳細資訊，請參閱[在 Amazon ECR 中標記私有儲存庫](ecr-using-tags.md)。

若要讓使用者在建立時標記儲存庫，他們必須具備建立資源之動作 (如 `ecr:CreateRepository`) 的使用許可。若標籤於資源建立動作指定，Amazon 會針對 `ecr:CreateRepository` 動作執行其他授權，以確認使用者具備建立標籤的許可。

您可以透過 IAM 政策來使用標籤型存取控制，範例如下。

以下政策只允許使用者將儲存庫建立或標記為 `key=environment,value=dev`。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCreateTaggedRepository",
            "Effect": "Allow",
            "Action": [
                "ecr:CreateRepository"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/environment": "dev"
                }
            }
        },
        {
            "Sid": "AllowTagRepository",
            "Effect": "Allow",
            "Action": [
                "ecr:TagResource"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/environment": "dev"
                }
            }
        }
    ]
}
```

------

下列政策允許使用者從所有儲存庫提取映像，除非它們標記為 `key=environment,value=prod`。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
            "Effect": "Allow",
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Deny",
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "ecr:ResourceTag/environment": "prod"
                }
            }
        }
    ]
}
```

------

# AWS Amazon Elastic Container Registry 的 受管政策
<a name="security-iam-awsmanpol"></a>

 AWS 受管政策是由 AWS AWS 受管政策建立和管理的獨立政策旨在為許多常用案例提供許可，以便您可以開始將許可指派給使用者、群組和角色。

請記住， AWS 受管政策可能不會授予特定使用案例的最低權限許可，因為這些許可可供所有 AWS 客戶使用。我們建議您定義特定於使用案例的[客戶管理政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies)，以便進一步減少許可。

您無法變更 AWS 受管政策中定義的許可。如果 AWS 更新受 AWS 管政策中定義的許可，則更新會影響政策連接的所有委託人身分 （使用者、群組和角色）。 AWS 服務 當新的 啟動或新的 API 操作可用於現有服務時， AWS 最有可能更新 AWS 受管政策。

如需詳細資訊，請參閱 *IAM 使用者指南*中的 [AWS 受管政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)。

Amazon ECR 提供數個受管政策，您可以連接到 IAM 身分或 Amazon EC2 執行個體。這些受管政策允許對 Amazon ECR 資源和 API 操作的存取進行不同層級的控制。如需這些政策中所提及之各 API 操作的詳細資訊，請參閱 *Amazon Elastic Container Registry API 參考*中的 [Actions](https://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_Operations.html) (動作)。

**Topics**
+ [AmazonEC2ContainerRegistryFullAccess](#security-iam-awsmanpol-AmazonEC2ContainerRegistryFullAccess)
+ [AmazonEC2ContainerRegistryPowerUser](#security-iam-awsmanpol-AmazonEC2ContainerRegistryPowerUser)
+ [AmazonEC2ContainerRegistryPullOnly](#security-iam-awsmanpol-AmazonEC2ContainerRegistryPullOnly)
+ [AmazonEC2ContainerRegistryReadOnly](#security-iam-awsmanpol-AmazonEC2ContainerRegistryReadOnly)
+ [`AWSECRPullThroughCache_ServiceRolePolicy`](#security-iam-awsmanpol-AWSECRPullThroughCache_ServiceRolePolicy)
+ [`ECRReplicationServiceRolePolicy`](#security-iam-awsmanpol-ECRReplicationServiceRolePolicy)
+ [`ECRTemplateServiceRolePolicy`](#security-iam-awsmanpol-ECRTemplateServiceRolePolicy)
+ [AWS 受管政策的 Amazon ECR 更新](#security-iam-awsmanpol-updates)

## AmazonEC2ContainerRegistryFullAccess
<a name="security-iam-awsmanpol-AmazonEC2ContainerRegistryFullAccess"></a>

您可將 `AmazonEC2ContainerRegistryFullAccess` 政策連接到 IAM 身分。此政策會授予 Amazon ECR 資源的管理存取權，並授予 IAM 身分 （例如使用者、群組或角色） 存取權給與 Amazon ECR 整合 AWS 的服務，以使用所有 Amazon ECR 功能。使用此政策允許存取 中提供的所有 Amazon ECR 功能 AWS 管理主控台。

若要檢視此政策的許可，請參閱《 *AWS 受管政策參考*》中的 [AmazonEC2ContainerRegistryFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryFullAccess.html)。

## AmazonEC2ContainerRegistryPowerUser
<a name="security-iam-awsmanpol-AmazonEC2ContainerRegistryPowerUser"></a>

您可將 `AmazonEC2ContainerRegistryPowerUser` 政策連接到 IAM 身分。此政策授予管理許可，允許 IAM 使用者讀取和寫入儲存庫，但不允許他們刪除儲存庫或變更套用於他們的政策文件。

若要檢視此政策的許可，請參閱《 *AWS 受管政策參考*》中的 [AmazonEC2ContainerRegistryPowerUser](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryPowerUser.html)。

## AmazonEC2ContainerRegistryPullOnly
<a name="security-iam-awsmanpol-AmazonEC2ContainerRegistryPullOnly"></a>

您可將 `AmazonEC2ContainerRegistryPullOnly` 政策連接到 IAM 身分。此政策授予從 Amazon ECR 提取容器映像的許可。如果登錄檔已啟用提取快取，它也會允許提取從上游登錄檔匯入映像。

若要檢視此政策的許可，請參閱《 *AWS 受管政策參考*》中的 [AmazonEC2ContainerRegistryPullOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryPullOnly.html)。

## AmazonEC2ContainerRegistryReadOnly
<a name="security-iam-awsmanpol-AmazonEC2ContainerRegistryReadOnly"></a>

您可將 `AmazonEC2ContainerRegistryReadOnly` 政策連接到 IAM 身分。此政策向 Amazon ECR 授予唯讀許可。這包括在儲存庫中列出儲存庫和映像的功能。它還包括使用 Docker CLI 從 Amazon ECR 提取映像的能力。

若要檢視此政策的許可，請參閱《 *AWS 受管政策參考*》中的 [AmazonEC2ContainerRegistryReadOnly](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryReadOnly.html)。

## `AWSECRPullThroughCache_ServiceRolePolicy`
<a name="security-iam-awsmanpol-AWSECRPullThroughCache_ServiceRolePolicy"></a>

您無法將 `AWSECRPullThroughCache_ServiceRolePolicy` 受管 IAM 政策連接至 IAM 實體。此政策會連接至服務連結角色，可讓 Amazon ECR 透過提取快取工作流程將映像推送到儲存庫。如需詳細資訊，請參閱[用於提取快取的 Amazon ECR 服務連結角色](slr-pullthroughcache.md)。

## `ECRReplicationServiceRolePolicy`
<a name="security-iam-awsmanpol-ECRReplicationServiceRolePolicy"></a>

您無法將 `ECRReplicationServiceRolePolicy` 受管 IAM 政策連接至 IAM 實體。此政策會連接到服務連結角色，而此角色可讓 Amazon ECR 代表您執行動作。如需詳細資訊，請參閱[使用 Amazon ECR 的服務連結角色](using-service-linked-roles.md)。

## `ECRTemplateServiceRolePolicy`
<a name="security-iam-awsmanpol-ECRTemplateServiceRolePolicy"></a>

您無法將 `ECRTemplateServiceRolePolicy` 受管 IAM 政策連接至 IAM 實體。此政策會連接到服務連結角色，而此角色可讓 Amazon ECR 代表您執行動作。如需詳細資訊，請參閱[使用 Amazon ECR 的服務連結角色](using-service-linked-roles.md)。

## AWS 受管政策的 Amazon ECR 更新
<a name="security-iam-awsmanpol-updates"></a>

檢視自此服務開始追蹤 Amazon ECR AWS 受管政策更新以來的詳細資訊。如需有關此頁面變更的自動提醒，請訂閱 Amazon ECR 文件歷史記錄頁面上的 RSS 摘要。

 


| 變更 | 描述 | Date | 
| --- | --- | --- | 
|  [用於提取快取的 Amazon ECR 服務連結角色](slr-pullthroughcache.md) – 更新現有政策  |  Amazon ECR 將新的許可新增到 `AWSECRPullThroughCache_ServiceRolePolicy` 政策。這些許可允許 Amazon ECR 從 ECR 私有登錄檔提取映像。使用提取快取規則從另一個 Amazon ECR 私有登錄檔快取映像時，這是必要的。  | 2025 年 3 月 12 日 | 
|  [AmazonEC2ContainerRegistryPullOnly](#security-iam-awsmanpol-AmazonEC2ContainerRegistryPullOnly) – 新政策  |  Amazon ECR 新增了一項新政策，將僅提取許可授予 Amazon ECR。  | 2024 年 10 月 10 日 | 
|  [ECRTemplateServiceRolePolicy](slr-rct.md) – 新政策  |  Amazon ECR 已新增新政策。此政策與儲存庫建立範本功能`ECRTemplateServiceRolePolicy`的服務連結角色相關聯。  | 2024 年 6 月 20 日 | 
|  [AWSECRPullThroughCache\$1ServiceRolePolicy](slr-pullthroughcache.md) – 更新至現有政策  |  Amazon ECR 將新的許可新增到 `AWSECRPullThroughCache_ServiceRolePolicy` 政策。這些許可允許 Amazon ECR 擷取 Secrets Manager 秘密的加密內容。這在使用提取快取規則從需要驗證的上游登錄檔快取映像時是必要的。  | 2023 年 11 月 15 日 | 
|  [AWSECRPullThroughCache\$1ServiceRolePolicy](#security-iam-awsmanpol-AWSECRPullThroughCache_ServiceRolePolicy)：全新政策  |  Amazon ECR 已新增新政策。此政策與提取快取功能的 `AWSServiceRoleForECRPullThroughCache` 服務連結角色相關聯。  | 2021 年 11 月 29 日 | 
|  [ECRReplicationServiceRolePolicy](#security-iam-awsmanpol-ECRReplicationServiceRolePolicy)：全新政策  |  Amazon ECR 已新增新政策。此政策與複寫功能的 `AWSServiceRoleForECRReplication` 服務連結角色相關聯。  | 2020 年 12 月 4 日 | 
|  [AmazonEC2ContainerRegistryFullAccess](#security-iam-awsmanpol-AmazonEC2ContainerRegistryFullAccess) – 更新現有政策  |  Amazon ECR 將新的許可新增到 `AmazonEC2ContainerRegistryFullAccess` 政策。這些許可允許委託人建立 Amazon ECR 服務連結角色。  | 2020 年 12 月 4 日 | 
|  [AmazonEC2ContainerRegistryReadOnly](#security-iam-awsmanpol-AmazonEC2ContainerRegistryReadOnly) – 更新現有政策  |  Amazon ECR 將新的許可新增到 `AmazonEC2ContainerRegistryReadOnly` 政策，允許委託人讀取生命週期政策、列出標籤，以及描述映像的掃描問題清單。  | 2019 年 12 月 10 日 | 
|  [AmazonEC2ContainerRegistryPowerUser](#security-iam-awsmanpol-AmazonEC2ContainerRegistryPowerUser) – 更新現有政策  |  Amazon ECR 將新的許可新增到 `AmazonEC2ContainerRegistryPowerUser` 政策。它們允許委託人讀取生命週期政策、列出標籤，以及描述映像的掃描問題清單。  | 2019 年 12 月 10 日 | 
|  [AmazonEC2ContainerRegistryFullAccess](#security-iam-awsmanpol-AmazonEC2ContainerRegistryFullAccess) – 更新現有政策  |  Amazon ECR 將新的許可新增到 `AmazonEC2ContainerRegistryFullAccess` 政策。它們允許主體查詢 CloudTrail 擷取的管理事件或 AWS CloudTrail Insights 事件。  | 2017 年 11 月 10 日 | 
|  [AmazonEC2ContainerRegistryReadOnly](#security-iam-awsmanpol-AmazonEC2ContainerRegistryReadOnly) – 更新現有政策  |  Amazon ECR 將新的許可新增到 `AmazonEC2ContainerRegistryReadOnly` 政策。他們允許委託人描述 Amazon ECR 映像。  | 2016 年 10 月 11 日 | 
|  [AmazonEC2ContainerRegistryPowerUser](#security-iam-awsmanpol-AmazonEC2ContainerRegistryPowerUser) – 更新現有政策  |  Amazon ECR 將新的許可新增到 `AmazonEC2ContainerRegistryPowerUser` 政策。他們允許委託人描述 Amazon ECR 映像。  | 2016 年 10 月 11 日 | 
|  [AmazonEC2ContainerRegistryReadOnly](#security-iam-awsmanpol-AmazonEC2ContainerRegistryReadOnly) – 新政策  |  Amazon ECR 新增了將唯讀許可授予 Amazon ECR 的新政策。這些許可包括在儲存庫中列出儲存庫和映像的功能。它們還包括使用 Docker CLI 從 Amazon ECR 提取映像的能力。  | 2015 年 12 月 21 日 | 
|  [AmazonEC2ContainerRegistryPowerUser](#security-iam-awsmanpol-AmazonEC2ContainerRegistryPowerUser) – 新政策  |  Amazon ECR 新增了新的政策，授予管理許可，允許使用者讀取和寫入儲存庫，但不允許他們刪除儲存庫或變更套用的政策文件。  | 2015 年 12 月 21 日 | 
|  [AmazonEC2ContainerRegistryFullAccess](#security-iam-awsmanpol-AmazonEC2ContainerRegistryFullAccess) – 新政策  |  Amazon ECR 已新增新政策。此政策授予 Amazon ECR 的完整存取權限。  | 2015 年 12 月 21 日 | 
|  Amazon ECR 開始追蹤變更  |  Amazon ECR 開始追蹤 AWS 受管政策的變更。  | 2021 年 6 月 24 日 | 

# 使用 Amazon ECR 的服務連結角色
<a name="using-service-linked-roles"></a>

Amazon Elastic Container Registry (Amazon ECR) 使用 AWS Identity and Access Management (IAM)[ 服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)，提供使用複寫和提取快取功能所需的許可。服務連結角色是直接連結至 Amazon ECR 的一種特殊 IAM 角色類型。服務連結的角色是由 Amazon ECR 預先定義。其中包含了該服務需要的所有許可，可支援私有登錄檔的複寫和提取快取功能。設定登錄檔的複寫或提取快取之後，系統將代表您自動建立服務連結角色。如需詳細資訊，請參閱[Amazon ECR 中的私有登錄檔設定](registry-settings.md)。

服務連結角色可讓使用 Amazon ECR 設定複寫和提取快取的過程更為輕鬆。這是因為使用它，您不必手動新增所有必要的許可。Amazon ECR 定義其服務連結角色的許可，除非另有定義，否則僅有 Amazon ECR 可以擔任其角色。已定義的許可包括信任政策和許可政策。許可政策無法附加到其他任何 IAM 實體。

您只能在登錄檔停用複寫或提取快取後，才能刪除對應的服務連結角色。這可確保您不會意外移除 Amazon ECR 針對這些功能所要求的許可。

關於支援服務連結角色的其他服務，如需相關資訊，請參閱[與 IAM 搭配運作的AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html)。在此連結至頁面上，在 **Service-linked role** (服務連結角色) 欄位中尋找具有 **Yes** (是) 的服務。選擇具有連結的 **Yes** (是)，以檢視該服務的相關服務連結角色文件。

**Topics**
+ [Amazon ECR 服務連結角色的支援區域](#slr-regions)
+ [用於複寫的 Amazon ECR 服務連結角色](slr-replication.md)
+ [用於提取快取的 Amazon ECR 服務連結角色](slr-pullthroughcache.md)
+ [適用於儲存庫建立範本的 Amazon ECR 服務連結角色](slr-rct.md)

## Amazon ECR 服務連結角色的支援區域
<a name="slr-regions"></a>

Amazon ECR 在所有提供 Amazon ECR 服務的區域中支援使用服務連結的角色。如需 Amazon ECR 區域可用性的詳細資訊，請參閱《[AWS 區域與端點](https://docs.aws.amazon.com/general/latest/gr/rande.html)》。

# 用於複寫的 Amazon ECR 服務連結角色
<a name="slr-replication"></a>

Amazon ECR 使用名為 **AWSServiceRoleForECRReplication** 的服務連結角色，可讓 Amazon ECR 跨多個帳戶複寫映像。

## Amazon ECR 的服務連結角色許可
<a name="slr-permissions"></a>

AWSServiceRoleForECRReplication 服務連結角色信任下列服務可擔任該角色：
+ `replication.ecr.amazonaws.com`

以下 `ECRReplicationServiceRolePolicy` 角色許可政策允許 Amazon ECR 對資源使用以下動作：

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:CreateRepository",
                "ecr:ReplicateImage"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**注意**  
`ReplicateImage` 是 Amazon ECR 用於複寫的內部 API，無法直接呼叫。

您必須設定許可，IAM 實體 (例如，使用者、群組或角色) 才可建立、編輯或刪除服務連結角色。如需詳細資訊，請參閱《IAM 使用者指南》**中的[服務連結角色許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## 建立 Amazon ECR 的服務連結角色
<a name="create-slr"></a>

您不需要手動建立 Amazon ECR 服務連結角色。當您在 AWS 管理主控台、 AWS CLI或 AWS API 中設定登錄檔的複寫設定時，Amazon ECR 會為您建立服務連結角色。

若您刪除此服務連結角色，之後需要再次建立，您可以在帳戶中使用相同程序重新建立角色。當您設定登錄檔的複寫設定時，Amazon ECR 會再次為您建立服務連結角色。

## 編輯 Amazon ECR 的服務連結角色
<a name="edit-slr"></a>

Amazon ECR 不允許手動編輯 AWSServiceRoleForECRReplication 服務連結角色。因為可能有各種實體會參考服務連結角色，所以您無法在建立角色之後變更其名稱。然而，您可使用 IAM 來編輯角色描述。如需詳細資訊，請參閱《IAM 使用者指南》**中的[編輯服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

## 刪除 Amazon ECR 的服務連結角色
<a name="delete-slr"></a>

若您不再使用需要服務連結角色的功能或服務，我們建議您刪除該角色。如此一來，您就沒有未主動監控或維護的未使用實體。不過，您必須在每個區域中先移除您登錄檔的複寫組態，才能手動刪除服務連結角色。

**注意**  
如果您嘗試在 Amazon ECR 服務仍在使用角色時刪除資源，則刪除動作可能會失敗。若此情況發生，請等待數分鐘後並再次嘗試。

**刪除 AWSServiceRoleForECRReplication 所使用的 Amazon ECR 資源**

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

1. 從導覽列，選擇您複寫組態所設定的區域。

1. 在導覽窗格中，選擇 **Private registry** (私有登錄檔)。

1. 在**私有登錄檔**頁面上，於**複寫組態**區段中，選擇**編輯**。

1. 若要刪除所有複寫規則，請選擇**全部刪除**。此步驟需要確認。

**使用 IAM 手動刪除服務連結角色**

使用 IAM 主控台 AWS CLI、 或 AWS API 來刪除 **AWSServiceRoleForECRReplication** 服務連結角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[刪除服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。

# 用於提取快取的 Amazon ECR 服務連結角色
<a name="slr-pullthroughcache"></a>

Amazon ECR 使用名為 **AWSServiceRoleForECRPullThroughCache** 的服務連結角色，其允許 Amazon ECR 代表您執行動作，以完成提取快取動作。如需提取快取的詳細資訊，請參閱「[用於控制提取快取、推送時建立或複寫動作期間建立的儲存庫的範本](repository-creation-templates.md)」。

## Amazon ECR 的服務連結角色許可
<a name="slr-pullthroughcache-permissions"></a>

**AWSServiceRoleForECRPullThroughCache** 服務連結角色信任下列服務來擔任此角色。
+ `pullthroughcache.ecr.amazonaws.com`

**許可詳細資訊**

此 `AWSECRPullThroughCache_ServiceRolePolicy` 許可政策連接至服務連結角色。此受管政策授予 Amazon ECR 執行下列動作的許可。如需詳細資訊，請參閱[`AWSECRPullThroughCache_ServiceRolePolicy`](security-iam-awsmanpol.md#security-iam-awsmanpol-AWSECRPullThroughCache_ServiceRolePolicy)。
+ `ecr` – 允許 Amazon ECR 服務將映像提取並推送至私有儲存庫。
+ `secretsmanager:GetSecretValue` – 允許 Amazon ECR 服務擷取 AWS Secrets Manager 秘密的加密內容。使用提取快取規則從需要在私有登錄檔中進行身分驗證的上游登錄檔快取映像時，需要此選項。該許可僅適用於具有 `ecr-pullthroughcache/` 名稱字首的秘密。

該 `AWSECRPullThroughCache_ServiceRolePolicy` 政策包含下列 JSON。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ECR",
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken",
                "ecr:BatchCheckLayerAvailability",
                "ecr:InitiateLayerUpload",
                "ecr:UploadLayerPart",
                "ecr:CompleteLayerUpload",
                "ecr:PutImage",
                "ecr:BatchGetImage",
                "ecr:BatchImportUpstreamImage",
                "ecr:GetDownloadUrlForLayer",
                "ecr:GetImageCopyStatus"
            ],
            "Resource": "*"
        },
        {
            "Sid": "SecretsManager",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue"
            ],
            "Resource": "arn:aws:secretsmanager:*:*:secret:ecr-pullthroughcache/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        }
    ]
}
```

------

您必須設定許可，IAM 實體 (例如，使用者、群組或角色) 才可建立、編輯或刪除服務連結角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[服務連結角色許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## 建立 Amazon ECR 的服務連結角色
<a name="slr-pullthroughcache-create"></a>

您不需要為提取快取手動建立 Amazon ECR 服務連結角色。當您在 AWS 管理主控台、 AWS CLI或 AWS API 中為私有登錄檔建立提取快取規則時，Amazon ECR 會為您建立服務連結角色。

若您刪除此服務連結角色，之後需要再次建立，您可以在帳戶中使用相同程序重新建立角色。當您為私有登錄檔建立提取快取規則時，Amazon ECR 會再次為您建立服務連結角色 (如果尚不存在)。

## 編輯 Amazon ECR 的服務連結角色
<a name="slr-pullthroughcache-edit"></a>

Amazon ECR 不允許手動編輯 **AWSServiceRoleForECRPullThroughCache** 服務連結角色。因為可能有各種實體會參考服務連結角色，所以您無法在建立角色之後變更其名稱。然而，您可使用 IAM 來編輯角色描述。如需詳細資訊，請參閱《IAM 使用者指南》**中的[編輯服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

## 刪除 Amazon ECR 的服務連結角色
<a name="slr-pullthroughcache-delete"></a>

若您不再使用需要服務連結角色的功能或服務，我們建議您刪除該角色。如此一來，您就沒有未主動監控或維護的未使用實體。不過，您必須在每個區域中先刪除登錄檔的提取快取規則，才能手動刪除服務連結角色。

**注意**  
如果您嘗試在 Amazon ECR 服務仍在使用角色時刪除資源，則刪除動作可能會失敗。若此情況發生，請等待數分鐘後並再次嘗試。

**若要刪除 **AWSServiceRoleForECRPullThroughCache** 服務連結角色所使用的 Amazon ECR 資源**

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

1. 從導覽列選擇您建立提取快取規則的區域。

1. 在導覽窗格中，選擇 **Private registry** (私有登錄檔)。

1. 在**私有登錄檔**頁面上，於**提取快取組態**區段中，選擇**編輯**。

1. 針對您建立的每個提取快取規則，請選取規則，然後選擇**刪除規則**。

**使用 IAM 手動刪除服務連結角色**

使用 IAM 主控台 AWS CLI、 或 AWS API 來刪除 **AWSServiceRoleForECRPullThroughCache** 服務連結角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[刪除服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。

# 適用於儲存庫建立範本的 Amazon ECR 服務連結角色
<a name="slr-rct"></a>

Amazon ECR 使用名為 **AWSServiceRoleForECRTemplate** 的服務連結角色，授予 Amazon ECR 代表您執行動作以完成儲存庫建立範本動作的許可。

## Amazon ECR 的服務連結角色許可
<a name="slr-rct-permissions"></a>

**AWSServiceRoleForECRTemplate** 服務連結角色信任下列服務擔任該角色。
+ `ecr.amazonaws.com`

**許可詳細資訊**

此 ``ECRTemplateServiceRolePolicy`` 許可政策連接至服務連結角色。此受管政策授予 Amazon ECR 代表您執行儲存庫建立動作的許可。

該 `ECRTemplateServiceRolePolicy` 政策包含下列 JSON。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
	    "Sid": "CreateRepositoryWithTemplate",
            "Effect": "Allow",
            "Action": [
                "ecr:CreateRepository"
            ],
            "Resource": "*"
        }
    ]
}
```

------

您必須設定許可，IAM 實體 (例如，使用者、群組或角色) 才可建立、編輯或刪除服務連結角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[服務連結角色許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。

## 建立 Amazon ECR 的服務連結角色
<a name="slr-rct-create"></a>

您不需要為儲存庫建立範本手動建立 Amazon ECR 服務連結角色。當您在 AWS 管理主控台、 AWS CLI或 AWS API 中為私有登錄檔建立儲存庫建立範本規則時，Amazon ECR 會為您建立服務連結角色。

若您刪除此服務連結角色，之後需要再次建立，您可以在帳戶中使用相同程序重新建立角色。當您為私有登錄檔建立儲存庫建立規則時，如果服務連結角色不存在，Amazon ECR 會再次為您建立該角色。

## 編輯 Amazon ECR 的服務連結角色
<a name="slr-rct-edit"></a>

Amazon ECR 不允許手動編輯 **AWSServiceRoleForECRTemplate** 服務連結角色。因為可能有各種實體會參考服務連結角色，所以您無法在建立角色之後變更其名稱。然而，您可使用 IAM 來編輯角色描述。如需詳細資訊，請參閱《IAM 使用者指南》**中的[編輯服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#edit-service-linked-role)。

## 刪除 Amazon ECR 的服務連結角色
<a name="slr-rct-delete"></a>

若您不再使用需要服務連結角色的功能或服務，我們建議您刪除該角色。如此一來，您就沒有未主動監控或維護的未使用實體。不過，您必須先刪除每個區域中登錄檔的儲存庫建立規則，才能手動刪除服務連結角色。

**注意**  
如果您嘗試在 Amazon ECR 服務仍在使用角色時刪除資源，則刪除動作可能會失敗。若此情況發生，請等待數分鐘後並再次嘗試。

**刪除 **AWSServiceRoleForECRTemplate** 服務連結角色所使用的 Amazon ECR 資源**

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

1. 從導覽列中，選擇建立儲存庫建立規則的區域。

1. 在導覽窗格中，選擇 **Private registry** (私有登錄檔)。

1. 在**私有登錄**檔頁面的**儲存庫建立範本**區段中，選擇**編輯**。

1. 針對您建立的每個儲存庫建立規則，選取規則，然後選擇**刪除規則**。

**使用 IAM 手動刪除服務連結角色**

使用 IAM 主控台 AWS CLI、 或 AWS API 來刪除 **AWSServiceRoleForECRTemplate** 服務連結角色。如需詳細資訊，請參閱《*IAM 使用者指南*》中的[刪除服務連結角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#delete-service-linked-role)。

# 針對 Amazon Elastic Container Registry Identity and Access 進行故障診斷
<a name="security_iam_troubleshoot"></a>

請使用以下資訊來協助您診斷和修正使用 Amazon ECR 和 IAM 時可能遇到的常見問題。

**Topics**
+ [我未獲授權，不得在 Amazon ECR 中執行動作](#security_iam_troubleshoot-no-permissions)
+ [我未獲得執行 iam：PassRole 的授權](#security_iam_troubleshoot-passrole)
+ [我想要允許 以外的人員 AWS 帳戶 存取我的 Amazon ECR 資源](#security_iam_troubleshoot-cross-account-access)

## 我未獲授權，不得在 Amazon ECR 中執行動作
<a name="security_iam_troubleshoot-no-permissions"></a>

如果您收到錯誤，告知您未獲授權執行動作，您的政策必須更新，允許您執行動作。

下列範例錯誤會在`mateojackson` IAM 使用者嘗試使用主控台檢視一個虛構 `my-example-widget` 資源的詳細資訊，但卻無虛構 `ecr:GetWidget` 許可時發生。

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: ecr:GetWidget on resource: my-example-widget
```

在此情況下，必須更新 `mateojackson` 使用者的政策，允許使用 `ecr:GetWidget` 動作存取 `my-example-widget` 資源。

如果您需要協助，請聯絡您的 AWS 管理員。您的管理員提供您的簽署憑證。

## 我未獲得執行 iam：PassRole 的授權
<a name="security_iam_troubleshoot-passrole"></a>

如果您收到錯誤，告知您無權執行 `iam:PassRole` 動作，您的政策必須更新，允許您將角色傳遞給 Amazon ECR。

有些 AWS 服務 可讓您將現有角色傳遞給該服務，而不是建立新的服務角色或服務連結角色。如需執行此作業，您必須擁有將角色傳遞至該服務的許可。

當名為 `marymajor` 的 IAM 使用者嘗試使用主控台在 Amazon ECR 中執行動作時，發生下列範例錯誤。但是，動作請求服務具備服務角色授予的許可。Mary 沒有將角色傳遞給服務的許可。

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

在這種情況下，Mary 的政策必須更新，允許她執行 `iam:PassRole` 動作。

如果您需要協助，請聯絡您的 AWS 管理員。您的管理員提供您的簽署憑證。

## 我想要允許 以外的人員 AWS 帳戶 存取我的 Amazon ECR 資源
<a name="security_iam_troubleshoot-cross-account-access"></a>

您可以建立一個角色，讓其他帳戶中的使用者或您組織外部的人員存取您的資源。您可以指定要允許哪些信任物件取得該角色。針對支援基於資源的政策或存取控制清單 (ACL) 的服務，您可以使用那些政策來授予人員存取您的資源的許可。

如需進一步了解，請參閱以下內容：
+ 若要了解 Amazon ECR 是否支援這些功能，請參閱 [Amazon Elastic Container Registry 如何與 IAM 搭配使用](security_iam_service-with-iam.md)。
+ 若要了解如何 AWS 帳戶 在您擁有的 資源之間提供存取權，請參閱《[IAM 使用者指南》中的在您擁有 AWS 帳戶 的另一個 IAM 使用者中提供存取權](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html)。 **
+ 若要了解如何將資源的存取權提供給第三方 AWS 帳戶，請參閱《*IAM 使用者指南*》中的[將存取權提供給第三方 AWS 帳戶 擁有](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)。
+ 如需了解如何透過聯合身分提供存取權，請參閱《*IAM 使用者指南*》中的[將存取權提供給在外部進行身分驗證的使用者 (聯合身分)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html)。
+ 如需了解使用角色和資源型政策進行跨帳戶存取之間的差異，請參閱《*IAM 使用者指南*》中的 [IAM 中的跨帳戶資源存取](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)。

# Amazon ECR 中的資料保護
<a name="data-protection"></a>

 AWS [共同責任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)適用於 Amazon Elastic Container Service 中的資料保護。如此模型所述， AWS 負責保護執行所有 的全域基礎設施 AWS 雲端。您負責維護在此基礎設施上託管內容的控制權。您也同時負責所使用 AWS 服務 的安全組態和管理任務。如需資料隱私權的詳細資訊，請參閱[資料隱私權常見問答集](https://aws.amazon.com/compliance/data-privacy-faq/)。如需有關歐洲資料保護的相關資訊，請參閱*AWS 安全性部落格*上的[AWS 共同責任模型和 GDPR](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) 部落格文章。

基於資料保護目的，我們建議您保護 AWS 帳戶 登入資料，並使用 AWS IAM Identity Center 或 AWS Identity and Access Management (IAM) 設定個別使用者。如此一來，每個使用者都只會獲得授與完成其任務所必須的許可。我們也建議您採用下列方式保護資料：
+ 每個帳戶均要使用多重要素驗證 (MFA)。
+ 使用 SSL/TLS 與 AWS 資源通訊。我們需要 TLS 1.2 並建議使用 TLS 1.3。
+ 使用 設定 API 和使用者活動記錄 AWS CloudTrail。如需有關使用 CloudTrail 追蹤擷取 AWS 活動的資訊，請參閱*AWS CloudTrail 《 使用者指南*》中的[使用 CloudTrail 追蹤](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html)。
+ 使用 AWS 加密解決方案，以及其中的所有預設安全控制 AWS 服務。
+ 使用進階的受管安全服務 (例如 Amazon Macie)，協助探索和保護儲存在 Amazon S3 的敏感資料。
+ 如果您在 AWS 透過命令列界面或 API 存取 時需要 FIPS 140-3 驗證的密碼編譯模組，請使用 FIPS 端點。如需有關 FIPS 和 FIPS 端點的更多相關資訊，請參閱[聯邦資訊處理標準 (FIPS) 140-3](https://aws.amazon.com/compliance/fips/)。

我們強烈建議您絕對不要將客戶的電子郵件地址等機密或敏感資訊，放在標籤或自由格式的文字欄位中，例如**名稱**欄位。這包括當您使用 Amazon ECS 或使用主控台、API AWS CLI或 AWS SDKs的其他 AWS 服務 時。您在標籤或自由格式文字欄位中輸入的任何資料都可能用於計費或診斷日誌。如果您提供外部伺服器的 URL，我們強烈建議請勿在驗證您對該伺服器請求的 URL 中包含憑證資訊。

**Topics**
+ [靜態加密](encryption-at-rest.md)

# 靜態加密
<a name="encryption-at-rest"></a>

**重要**  
 使用 AWS KMS (DSSE-KMS) 的雙層伺服器端加密僅適用於 AWS GovCloud (US) 區域。

Amazon ECR 將映像存放在 Amazon ECR 管理的 Amazon S3 儲存貯體中。根據預設，Amazon ECR 會使用伺服器端加密與 Amazon S3 受管加密金鑰，該加密金鑰使用 AES-256 加密演算法對靜止資料進行加密。這不需要您採取任何動作，並且免費提供。如需詳細資訊，請參閱《Amazon Simple Storage Service 使用者指南》**中的[透過 Amazon S3 受管加密金鑰 (SSE-S3) 使用伺服器端加密來保護資料](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html)。

若要進一步控制 Amazon ECR 儲存庫的加密，您可以使用伺服器端加密搭配存放在 AWS Key Management Service () 中的 KMS 金鑰AWS KMS。當您使用 AWS KMS 加密資料時，您可以使用由 Amazon ECR AWS 受管金鑰管理的預設值，或指定您自己的 KMS 金鑰 （稱為客戶受管金鑰）。如需詳細資訊，請參閱《*Amazon Simple Storage Service 使用者指南*》中的[使用伺服器端加密搭配存放在 AWS KMS (SSE-KMS) 中的 KMS 金鑰來保護資料](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html)。

 您可以選擇使用雙層伺服器端加密搭配 AWS KMS (DSSE-KMS)，將兩層加密套用至 Amazon ECR 映像。 DSSE-KMS選項類似於 SSE-KMS，但會套用兩層個別加密，而不是一層加密。如需詳細資訊，請參閱[使用雙層伺服器端加密搭配 AWS KMS 金鑰 (DSSE-KMS)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingDSSEncryption.html)。

每個 Amazon ECR 儲存庫都有一個加密組態，這是在建立儲存庫時所設定。您可以在每個儲存庫上使用不同的加密組態。如需詳細資訊，請參閱[建立 Amazon ECR 私有儲存庫以存放映像](repository-create.md)。

在啟用 AWS KMS 加密的情況下建立儲存庫時，會使用 KMS 金鑰來加密儲存庫的內容。此外，Amazon ECR 會將 AWS KMS 授予新增至 KMS 金鑰，並將 Amazon ECR 儲存庫做為承授者委託人。

以下提供了對 Amazon ECR 如何與 AWS KMS 整合以加密和解密您的儲存庫的高等程度的了解：

1. 建立儲存庫時，Amazon ECR 會向 傳送 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 呼叫 AWS KMS ，以驗證和擷取加密組態中指定的 KMS 金鑰的 Amazon Resource Name (ARN)。

1. Amazon ECR 會將兩個 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 請求傳送至 AWS KMS ，以在 KMS 金鑰上建立授予，以允許 Amazon ECR 使用資料金鑰加密和解密資料。

1. 推送映像時，會向 發出 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html) 請求 AWS KMS ，指定用於加密映像層和資訊清單的 KMS 金鑰。

1. AWS KMS 會產生新的資料金鑰、在指定的 KMS 金鑰下進行加密，並傳送加密的資料金鑰，以與映像層中繼資料和映像資訊清單一起存放。

1. 提取映像時，會對 發出 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 請求 AWS KMS，並指定加密的資料金鑰。

1. AWS KMS 解密加密的資料金鑰，並將解密的資料金鑰傳送至 Amazon S3。

1. 使用資料金鑰在提取映像層之前解密映像層。

1. 刪除儲存庫時，Amazon ECR 會將兩個 [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html) 請求傳送至 AWS KMS ，以淘汰為儲存庫建立的授予。

## 考量事項
<a name="encryption-at-rest-considerations"></a>

搭配 Amazon ECR 使用 AWS KMS 型加密 (SSE-KMS 或 DSSE-KMS) 時，應考慮下列幾點。
+ 如果您使用 KMS 加密建立 Amazon ECR 儲存庫，但未指定 KMS 金鑰，Amazon ECR `aws/ecr` 預設會使用 AWS 受管金鑰 具有別名的 。當您第一次建立啟用 KMS 加密的儲存庫時，就會在您的帳戶中建立此 KMS 金鑰。
+  儲存庫加密組態無法在建立儲存庫之後變更。
+ 當您使用 KMS 加密搭配您自己的 KMS 金鑰時，金鑰必須與您的儲存庫位於相同的區域。
+ 不應撤銷 Amazon ECR 代表您建立的授予。如果您撤銷授予 Amazon ECR 許可以使用帳戶中的 AWS KMS 金鑰的授予，Amazon ECR 無法存取此資料、加密推送到儲存庫的新映像，或在提取時解密這些映像。當您撤銷 Amazon ECR 的授予時，則會立即進行變更。若要撤銷存取權，請刪除儲存庫，而不是撤銷授權。刪除儲存庫後，Amazon ECR 會代表您淘汰授予。
+ 使用 AWS KMS 金鑰會產生相關費用。如需詳細資訊，請參閱 [AWS Key Management Service 定價](https://aws.amazon.com/kms/pricing/)。
+ 使用雙層伺服器端加密會產生相關費用。如需詳細資訊，請參閱 [Amazon ECR 定價](https://aws.amazon.com/ecr/pricing/)

## 所需的 IAM 許可
<a name="encryption-at-rest-iam"></a>

使用 AWS KMS伺服器端加密建立或刪除 Amazon ECR 儲存庫時，所需的許可取決於您使用的特定 KMS 金鑰。

### 使用 AWS 受管金鑰 for Amazon ECR 時所需的 IAM 許可
<a name="encryption-aws-managed-key"></a>

根據預設，當 Amazon ECR 儲存庫啟用 AWS KMS 加密，但未指定 KMS 金鑰時，會使用 AWS 受管金鑰 適用於 Amazon ECR 的 。當 Amazon ECR 的 AWS受管 KMS 金鑰用於加密儲存庫時，具有建立儲存庫許可的任何委託人也可以在儲存庫上啟用 AWS KMS 加密。但是，刪除儲存庫的 IAM 委託人必須具有 `kms:RetireGrant` 許可。這可讓您淘汰在建立儲存庫時新增至 AWS KMS 金鑰的授予。

下列範例 IAM 政策可以作為內嵌政策新增至使用者，以確保使用者具有刪除啟用加密的儲存庫所需的最低許可。使用資源參數可指定用於加密儲存庫的 KMS 金鑰。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "ecr-kms-permissions",
    "Statement": [
        {
            "Sid": "AllowAccessToRetireTheGrantsAssociatedWithTheKey",
            "Effect": "Allow",
            "Action": [
                "kms:RetireGrant"
            ],
            "Resource": "arn:aws:kms:us-west-2:111122223333:key/b8d9ae76-080c-4043-92EXAMPLE"
        }
    ]
}
```

------

### 使用客戶受管金鑰時所需的 IAM 許可
<a name="encryption-customer-managed-key"></a>

使用客戶受管金鑰建立已啟用 AWS KMS 加密的儲存庫時，建立儲存庫的使用者或角色需要 KMS 金鑰政策和 IAM 政策的許可。

建立您自己的 KMS 金鑰時，您可以使用預設金鑰政策 AWS KMS 建立，或者您可以自行指定。為了確保客戶受管金鑰仍可由帳戶擁有者管理，KMS 金鑰的金鑰政策應允許帳戶根使用者的所有 AWS KMS 動作。其他範圍的權限可能會新增至金鑰政策，但至少應該授予根使用者管理 KMS 金鑰的許可。若要允許 KMS 金鑰僅用於源自 Amazon ECR 的請求，您可以使用 [kms:ViaService 條件索引鍵](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service)搭配 `ecr.<region>.amazonaws.com` 值。

下列範例金鑰政策可讓擁有 KMS 金鑰 AWS 的帳戶 （根使用者） 完整存取 KMS 金鑰。如需此範例金鑰政策的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的[允許存取 AWS 帳戶並啟用 IAM 政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html#key-policy-default-allow-root-enable-iam)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "ecr-key-policy",
    "Statement": [
        {
            "Sid": "EnableIAMUserPermissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        }
    ]
}
```

------

除了必要的 Amazon ECR `kms:DescribeKey`許可之外，建立儲存庫的 IAM 使用者`kms:RetireGrant`、IAM 角色或 AWS 帳戶還必須具有 `kms:CreateGrant`、 和 許可。

**注意**  
必須將 `kms:RetireGrant` 許可新增到建立儲存庫的使用者或角色的 IAM 政策中。可以將 `kms:CreateGrant` 和 `kms:DescribeKey` 許可新增到 KMS 金鑰的金鑰政策或建立儲存庫的使用者或角色的 IAM 政策。如需 AWS KMS 許可運作方式的詳細資訊，請參閱《 *AWS Key Management Service 開發人員指南*》中的 [AWS KMS API 許可：動作和資源參考](https://docs.aws.amazon.com/kms/latest/developerguide/kms-api-permissions-reference.html)。

下列範例 IAM 政策可以作為內嵌政策新增至使用者，以確保使用者具有建立啟用加密的儲存庫所需的最低許可，並在使用完儲存庫後刪除該儲存庫。使用資源參數可指定用於加密儲存庫的 AWS KMS key 。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "ecr-kms-permissions",
    "Statement": [
        {
            "Sid": "AllowAccessToCreateAndRetireTheGrantsAssociatedWithTheKeyAsWellAsDescribeTheKey",
            "Effect": "Allow",
            "Action": [
                "kms:CreateGrant",
                "kms:RetireGrant",
                "kms:DescribeKey"
            ],
            "Resource": "arn:aws:kms:us-west-2:111122223333:key/b8d9ae76-080c-4043-92EXAMPLE"
        }
    ]
}
```

------

### 允許使用者在建立儲存庫時在主控台中列出 KMS 金鑰
<a name="encryption-at-rest-iam-example"></a>

使用 Amazon ECR 主控台建立儲存庫時，您可以授予許可以允許使用者在為儲存庫啟用加密時列出區域中的客戶受管 KMS 金鑰。下列 IAM 政策範例顯示使用主控台時列出 KMS 金鑰和別名所需的許可。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:ListKeys",
      "kms:ListAliases",
      "kms:DescribeKey"
    ],
    "Resource": "*"
  }
}
```

------

## 監控 Amazon ECR 與 的互動 AWS KMS
<a name="encryption-at-rest-monitoring"></a>

您可以使用 AWS CloudTrail 來追蹤 Amazon ECR 代表您傳送給 AWS KMS 的請求。CloudTrail 日誌中的日誌項目包含加密內容索引鍵，可讓它們更容易識別。

### Amazon ECR 加密內容
<a name="ecr-encryption-context"></a>

*加密內容*是一組鍵/值組，其中包含任意非私密資料。當您在加密資料的請求中包含加密內容時， AWS KMS 會以加密方式將加密內容繫結至加密的資料。若要解密資料，您必須傳遞相同的加密內容。

在其 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 和 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 請求中 AWS KMS，Amazon ECR 會使用兩個名稱/值對的加密內容，以識別正在使用的儲存庫和 Amazon S3 儲存貯體。如以下範例所示。名稱不會改變，但組合的加密內容值對於每個值都是不同的。

```
"encryptionContext": {
    "aws:s3:arn": "arn:aws:s3:::us-west-2-starport-manifest-bucket/EXAMPLE1-90ab-cdef-fedc-ba987BUCKET1/sha256:a7766145a775d39e53a713c75b6fd6d318740e70327aaa3ed5d09e0ef33fc3df",
    "aws:ecr:arn": "arn:aws:ecr:us-west-2:111122223333:repository/repository-name"
}
```

您可以使用加密內容來識別稽核紀錄和日誌 (例如 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 和 Amazon CloudWatch Logs) 中的這些密碼編譯操作，以及在政策和授權中作為授權的條件。

Amazon ECR 加密內容包含兩個名稱值組。
+ **aws:s3:arn** – 第一個名稱-值配對會識別儲存貯體。金鑰為 `aws:s3:arn`。值為 Amazon S3 儲存貯體 Amazon Resource Name (ARN)。

  ```
  "aws:s3:arn": "ARN of an Amazon S3 bucket"
  ```

  例如，如果儲存貯體的 ARN 是 `arn:aws:s3:::us-west-2-starport-manifest-bucket/EXAMPLE1-90ab-cdef-fedc-ba987BUCKET1/sha256:a7766145a775d39e53a713c75b6fd6d318740e70327aaa3ed5d09e0ef33fc3df`，加密內容會包含下列對組。

  ```
  "arn:aws:s3:::us-west-2-starport-manifest-bucket/EXAMPLE1-90ab-cdef-fedc-ba987BUCKET1/sha256:a7766145a775d39e53a713c75b6fd6d318740e70327aaa3ed5d09e0ef33fc3df"
  ```
+ **aws:ecr:arn** – 第二個名稱-值對會識別儲存庫的 Amazon Resource Name (ARN)。金鑰為 `aws:ecr:arn`。值為儲存庫的 ARN。

  ```
  "aws:ecr:arn": "ARN of an Amazon ECR repository"
  ```

  例如，如果儲存庫的 ARN 是 `arn:aws:ecr:us-west-2:111122223333:repository/repository-name`，加密內容會包含下列對組。

  ```
  "aws:ecr:arn": "arn:aws:ecr:us-west-2:111122223333:repository/repository-name"
  ```

## 疑難排解
<a name="encryption-at-rest-troubleshooting"></a>

使用主控台刪除 Amazon ECR 儲存庫時，如果儲存庫已成功刪除，但 Amazon ECR 無法淘汰新增至您儲存庫的 KMS 金鑰的授予，則會收到以下錯誤訊息。

```
The repository [{repository-name}] has been deleted successfully but the grants created by the kmsKey [{kms_key}] failed to be retired
```

發生這種情況時，您可以自行淘汰儲存庫的 AWS KMS 授予。

**手動淘汰儲存庫的 AWS KMS 授予**

1. 列出用於儲存庫之 AWS KMS 金鑰的授予。此 `key-id` 值會包含在您從主控台收到的錯誤中。您也可以使用 `list-keys`命令來列出帳戶中特定區域中的 AWS 受管金鑰 和客戶受管 KMS 金鑰。

   ```
   aws kms list-grants \
        --key-id b8d9ae76-080c-4043-9237-c815bfc21dfc 
        --region us-west-2
   ```

   輸出包含 `EncryptionContextSubset`，其中包含儲存庫的 Amazon Resource Name (ARN)。這可用於確定新增到金鑰的哪個授予是您要淘汰的授予。`GrantId` 值會在下一個步驟中淘汰授予時使用。

1. 淘汰為儲存庫新增之 AWS KMS 金鑰的每個授予。將 *GrantId* 的值替換為上一步輸出的授予 ID。

   ```
   aws kms retire-grant \
        --key-id b8d9ae76-080c-4043-9237-c815bfc21dfc \
        --grant-id GrantId \
        --region us-west-2
   ```

# Amazon Elastic Container Registry 的合規驗證
<a name="ecr-compliance"></a>

若要了解 是否 AWS 服務 在特定合規計劃範圍內，請參閱[AWS 服務 合規計劃範圍內](https://aws.amazon.com/compliance/services-in-scope/)然後選擇您感興趣的合規計劃。如需一般資訊，請參閱[AWS 合規計劃](https://aws.amazon.com/compliance/programs/)。

您可以使用 下載第三方稽核報告 AWS Artifact。如需詳細資訊，請參閱[在 中下載報告 AWS Artifact](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html)。

您使用 時的合規責任 AWS 服務 取決於資料的機密性、您公司的合規目標，以及適用的法律和法規。如需使用 時合規責任的詳細資訊 AWS 服務，請參閱 [AWS 安全文件](https://docs.aws.amazon.com/security/)。

# Amazon Elastic Container Registry 的基礎設施安全性
<a name="infrastructure-security"></a>

Amazon Elastic Container Registry 是受管服務，受到 AWS 全球網路安全的保護。如需 AWS 安全服務以及如何 AWS 保護基礎設施的資訊，請參閱[AWS 雲端安全](https://aws.amazon.com/security/)。若要使用基礎設施安全的最佳實務設計您的 AWS 環境，請參閱*安全支柱 AWS Well-Architected Framework* 中的[基礎設施保護](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html)。

您可以使用 AWS 發佈的 API 呼叫，透過網路存取 Amazon ECR。使用者端必須支援下列專案：
+ Transport Layer Security (TLS)。我們需要 TLS 1.2 並建議使用 TLS 1.3。
+ 具備完美轉送私密(PFS)的密碼套件，例如 DHE (Ephemeral Diffie-Hellman)或 ECDHE (Elliptic Curve Ephemeral Diffie-Hellman)。現代系統(如 Java 7 和更新版本)大多會支援這些模式。

您可從任何網路位置呼叫這些 API 操作，而 Amazon ECR 確實可支援基於資源的存取政策，以納入依據來源 IP 地址的限制。您也可以使用 Amazon ECR 政策，以便從特定 Amazon Virtual Private Cloud (Amazon VPC) 端點或特定 VPC 中控制存取權。實際上，這只會隔離網路中特定 VPC 對指定 Amazon ECR 資源 AWS 的網路存取。如需詳細資訊，請參閱[Amazon ECR 介面 VPC 端點 (AWS PrivateLink)](vpc-endpoints.md)。

# Amazon ECR 介面 VPC 端點 (AWS PrivateLink)
<a name="vpc-endpoints"></a>

您可以將 Amazon ECR 設定為使用介面 VPC 端點，進而提升 VPC 的安全狀態。VPC 端點採用 AWS PrivateLink，這項技術可讓您透過私有 IP 地址 (IPv4 和 IPv6) 私密存取 Amazon ECR APIs。 AWS PrivateLink 會將 VPC 和 Amazon ECR 之間的所有網路流量限制在 Amazon 網路。您不需要網際網路閘道、NAT 裝置或虛擬私有閘道。

如需 AWS PrivateLink 和 VPC 端點的詳細資訊，請參閱《*Amazon* [VPC 使用者指南》中的 VPC 端點](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)。

## Amazon ECR VPC 端點的考量事項
<a name="ecr-vpc-endpoint-considerations"></a>

在您設定 Amazon ECR 的 VPC 端點之前，請注意以下幾點考量。
+ 若要允許 Amazon EC2 執行個體上託管的 Amazon ECS 任務從 Amazon ECR 提取私有映像，請建立 Amazon ECS 的介面 VPC 端點。如需詳細資訊，請參閱《Amazon Elastic Container Service 開發人員指南》** 中的[介面 VPC 端點 (AWS PrivateLink)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/vpc-endpoints.html)。
+ Fargate 上託管的從 Amazon ECR 提取容器映像的 Amazon ECS 任務可以透過向任務的任務執行 IAM 角色新增條件索引鍵來限制對其任務使用的特定 VPC 和服務使用的 VPC 端點的存取。如需詳細資訊，請參閱《Amazon Elastic Container Service 開發人員指南》**中的[透過介面端點提取 Amazon ECR 映像的 Fargate 任務的可選 IAM 許可](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html)。
+ 連接到 VPC 端點的安全群組，必須允許從 VPC 的私有子網路，透過 443 埠傳入的連線。
+ Amazon ECR VPC 端點支援雙堆疊 (IPv4 和 IPv6) 連線。當您建立雙堆疊 VPC 端點時，它可以處理透過 IPv4 和 IPv6 私有 IP 地址的流量。
+ VPC 端點透過美國東部 （維吉尼亞北部） 的 AWS API SDK 端點支援 Amazon ECR Public 儲存庫。
+ VPC 端點僅支援透過 Amazon Route 53 AWS 提供的 DNS。如果您想要使用自己的 DNS，您可以使用條件式 DNS 轉送。如需詳細資訊，請參閱《Amazon VPC 使用者指南》**中的 [DHCP 選項集](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html)。
+ 如果您的容器有現有的 Amazon S3 連線，則在您新增 Amazon S3 閘道端點時，其連線可能會短暫中斷。如果您想避免發生中斷情況，請建立採用 Amazon S3 閘道端點的​新 VPC，然後將 Amazon ECS 叢集及其容器遷移至新的 VPC​。
+ 第一次使用提取快取規則提取映像時，如果您已使用 AWS PrivateLink 將 Amazon ECR 設定為使用介面 VPC 端點，那麼您需要在同一個 VPC 中使用 NAT 閘道建立公有子網路，然後將所有傳出流量從其私有子網路路由到 NAT 閘道，以便提取至工作。隨後的映像提取不需要這樣做。如需詳細資訊，請參閱《Amazon Virtual Private Cloud 使用者指南》**中的[案例：從私有子網路存取網際網路](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html#public-nat-internet-access)。
+ 對於需要 FIPS 140-3 驗證密碼編譯模組的工作負載，Amazon ECR 支援 VPC 端點的 FIPS 端點。

### Windows 映像的考量
<a name="ecr-vpc-endpoint-windows-considerations"></a>

基於 Windows 作業系統的映像包括受授權限制無法分配的成品。預設情況下，當您將 Windows 映像推送到 Amazon ECR 儲存庫時，不推送包含這些成品的層，因為它們被視為*外來層*。當成品由 Microsoft 提供時，外部層將從 Microsoft Azure 基礎設施中擷取。因此，為了讓您的容器能夠從 Azure 中提取這些外部層，除了建立 VPC 端點之外，還需要其他步驟。

當使用 Docker 常駐程式中的 `--allow-nondistributable-artifacts` 標誌將 Windows 映像推送到 Amazon ECR 時，可以覆寫此行為。啟用後，此標誌將把授權層推送到 Amazon ECR，這樣就可以透過 VPC 端點從 Amazon ECR 中提取這些映像，而無需額外存取 Azure。

**重要**  
使用 `--allow-nondistributable-artifacts` 標誌並不排除您遵守 Windows 容器基礎映像授權條款的義務；您不能發佈 Windows 內容以進行公有或第三方重新分佈。允許在您自己的環境中使用。

若要在 Docker 安裝中啟用此標誌，您必須修改 Docker 常駐程式組態檔案，其根據 Docker 的安裝情況，通常可以在 **Docker Engine** (Docker 引擎) 區段下的設定或偏好設定選單中設定，也可以直接編輯 `C:\ProgramData\docker\config\daemon.json` 檔案。

以下為所需組態的範例。將該值替換為要將映像推送到的儲存庫 URI。

```
{
    "allow-nondistributable-artifacts": [
        "111122223333.dkr.ecr.us-west-2.amazonaws.com"
    ]
}
```

修改 Docker 常駐程式組態檔案後，在嘗試推送映像之前，必須重新啟動 Docker 常駐程式。透過驗證基本層是否已推送到儲存庫來確認推送是否有效。

**注意**  
Windows 映像的基本圖很大。層大小將導致較長的推送時間以及 Amazon ECR 中這些映像的額外存放成本。基於這些原因，我們建議僅在嚴格要求減少建置時間和持續儲存成本時使用此選項。例如，`mcr.microsoft.com/windows/servercore` 映像在 Amazon ECR 中壓縮時大約為 1.7 GiB。

## 為 Amazon ECR 建立 VPC 端點
<a name="ecr-setting-up-vpc-create"></a>

若要為 Amazon ECR 服務建立 VPC 端點，請使用《Amazon VPC 使用者指南》**中的 [Creating an Interface Endpoint](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint) (建立介面端點) 程序。

Amazon ECR VPC 端點支援雙堆疊 (IPv4 和 IPv6) 連線。當您建立雙堆疊 VPC 端點時，它會自動處理透過 IPv4 和 IPv6 私有 IP 地址的流量。端點會根據用戶端的網路組態和端點的功能，使用適當的 IP 版本路由流量。

如果您有現有的IPv4-only VPC 端點，並想要遷移到雙堆疊端點，您可以修改現有的端點以支援雙堆疊連線，或建立新的雙堆疊端點。建立或修改端點時，請確定您的 VPC 和子網路支援您要使用的 IP 版本。建立雙堆疊端點之後，端點將同時支援 IPv4 和 IPv6。

在 Amazon EC2 執行個體上託管的 Amazon ECS 任務需要 Amazon ECR 端點和 Amazon S3 閘道端點。

使用平台版本 `1.4.0` 或更高版本在 Fargate 上託管的 Amazon ECS 任務需要 Amazon ECR VPC 終端節點和 Amazon S3 閘道端點。

使用平台版本 `1.3.0` 或更早版本的 Fargate 上託管的 Amazon ECS 任務只需要 **com.amazonaws.*region*.ecr.dkr** Amazon ECR VPC 端點和 Amazon S3 閘道端點。

**注意**  
建立端點的順序並不重要。

**com.amazonaws.*region*.ecr.dkr**  
此端點用於 Docker 登錄檔 API。Docker 用戶端命令 (例如 `push` 和 `pull`) 會使用此端點。  
當您建立此端點時，需確實啟用私有 DNS 主機名稱。若要執行此操作，請務必在建立 VPC 端點時，選取 Amazon VPC 主控台中的 **Enable Private DNS Name** (啟用私有 DNS 名稱) 選項。  
對於符合 FIPS 140-3 的連線，請使用 FIPS 端點名稱 **com.amazonaws.*region*.ecr-fips.dkr**

**com.amazonaws.*region*.ecr.api**  
指定的*區域*代表 Amazon ECR 支援之 AWS 區域的區域識別符，例如`us-east-2`美國東部 （俄亥俄） 區域。
對於符合 FIPS 140-3 的連線，請使用 FIPS 端點名稱：**com.amazonaws.*region*.ecr-fips.dkr** 和 **com.amazonaws.*region*.ecr-fips.api**。  
此端點用於呼叫 Amazon ECR API。`DescribeImages` 和 `CreateRepository` 等 API 動作會移至此端點。  
建立此端點時，您可以選擇啟用私有 DNS 主機名稱。當您建立 VPC 端點時，在 VPC 主控台中選取 **Enable Private DNS Name (啟用私有 DNS 名稱)** 來啟用此設計。如果您為 VPC 端點啟用私有 DNS 主機名稱，請將 SDK 或 更新 AWS CLI 為最新版本，以便在使用 SDK 或 AWS CLI 時不需要指定端點 URL。  
對於符合 FIPS 140-3 的連線，請使用 FIPS 端點名稱 **com.amazonaws.*region*.ecr-fips.api**。  
如果您啟用私有 DNS 主機名稱，並使用 2019 年 1 月 24 日之前發行的 SDK 或 AWS CLI 版本，您必須使用 `--endpoint-url` 參數來指定介面端點。以下範例會顯示端點 URL 的格式。  

```
aws ecr create-repository --repository-name name --endpoint-url https://api.ecr.region.amazonaws.com
```
如果您不啟用 VPC 端點的私有 DNS 主機名稱，就必須透過 `--endpoint-url` 參數來指定介面端點的 VPC 端點 ID​。​ 以下範例會顯示端點 URL 的格式。  

```
aws ecr create-repository --repository-name name --endpoint-url https://VPC_endpoint_ID.api.ecr.region.vpce.amazonaws.com
```
對於 FIPS 140-3 相容連線，請使用 FIPS 端點 URL：  

```
aws ecr create-repository --repository-name name --endpoint-url https://api.ecr-fips.region.amazonaws.com
```

## 建立 Amazon S3 閘道端點
<a name="ecr-setting-up-s3-gateway"></a>

若要讓您的 Amazon ECS 任務從 Amazon ECR 提取私有映像，您必須為所有 Amazon S3 建立閘道端點。閘道端點是必要的，因為 Amazon ECR 使用 Amazon S3 來存放映像分層。容器從 Amazon ECR 下載映像時，必須存取 Amazon ECR 以取得​映像資訊清單，並透過 Amazon S3 下載實際映像層。以下是 Amazon S3 ​儲存貯體的 Amazon Resource Name (ARN)，該儲存貯體包含每個 Docker 映像的分層。

```
arn:aws:s3:::prod-region-starport-layer-bucket/*
```

**注意**  
如果為 Amazon ECR 建立雙堆疊 VPC 端點，則您也需要建立雙堆疊 Amazon S3 Gateway 或介面端點。如需詳細資訊，請參閱 [S3 文件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#privatelink-ip-address-types)。

使用《Amazon VPC 使用者指南》**中的 [Creating a gateway endpoint](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-gateway.html#create-gateway-endpoint) (建立閘道端點) 操作程序為 Amazon ECR 建立以下 Amazon S3 閘道端點。建立端點時，請務必為您的 VPC 選取路由表。

**com.amazonaws.*region*.s3**  
Amazon S3 閘道端點會使用 IAM 政策文件來限制服務的存取權限。您可以使用 **Full Access** (完整存取) 政策，​因為系統會以此政策為基礎，繼續套用您對任務 IAM 角色或其他 IAM 使用者政策的限制。如果您想將 ​Amazon S3 儲存貯體存取權限限制為使用 Amazon ECR 所需的​最低許可，請參閱 [Amazon ECR 的最低 Amazon S3 儲存貯體許可](#ecr-minimum-s3-perms)。

### Amazon ECR 的最低 Amazon S3 儲存貯體許可
<a name="ecr-minimum-s3-perms"></a>

Amazon S3 閘道端點會使用 IAM 政策文件來限制服務的存取權限。若要僅允許 Amazon ECR 的最低 Amazon S3 儲存貯體許可，請限制對 Amazon ECR 在為端點建立 IAM 政策文件時使用的 Amazon S3 儲存貯體的存取。

下表會說明 Amazon ECR 所需的​ Amazon S3 儲存貯體政策許可。


| 權限 | Description | 
| --- | --- | 
|  `arn:aws:s3:::prod-region-starport-layer-bucket/*`  |  提供對包含每個 Docker 映像分層之 Amazon S3 儲存貯體的存取權限。表示 Amazon ECR 支援的 AWS 區域的區域識別符，例如美國東部 (俄亥俄) 區域的 `us-east-2`。  | 

#### 範例
<a name="ecr-minimum-s3-perms-example"></a>

下方範例會說明如何提供 Amazon ECR 操作所需的 Amazon S3 ​儲存貯體存取權限。

```
{
  "Statement": [
    {
      "Sid": "Access-to-specific-bucket-only",
      "Principal": "*",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": ["arn:aws:s3:::prod-region-starport-layer-bucket/*"]
    }
  ]
}
```

## 建立 CloudWatch Logs 端點
<a name="ecr-setting-up-cloudwatch-logs"></a>

使用 Fargate 啟動類型的 Amazon ECS 任務 (使用 VPC 而不使用網際網路閘道，也使用 `awslogs` 記錄驅動程序向 CloudWatch Logs 傳送記錄資訊) 需要為 CloudWatch Logs 建立 **com.amazonaws.*region*.logs** 介面 VPC 端點。如需詳細資訊，請參閱《Amazon CloudWatch Logs 使用者指南》**中的 [CloudWatch Logs 搭配介面 VPC 端點一起使用](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch-logs-and-interface-VPC.html)。

## 為您的 Amazon ECR VPC 端點建立端點政策
<a name="ecr-vpc-endpoint-policy"></a>

當您建立或修改端點時，VPC 端點政策是您連接至端點的 IAM 資源政策。如果您在建立端點時未連接政策， 會為您 AWS 連接允許完整存取服務的預設政策。端點政策不會覆寫或取代使用者政策或服務特定的政策。這個另行區分的政策會控制從端點到所指定之服務的存取。端點政策必須以 JSON 格式撰寫。如需詳細資訊，請參閱《Amazon VPC 使用者指南》**中的[使用 VPC 端點控制服務的存取](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html)。

我們建議建立單一 IAM 資源政策，並將其連接到兩個 Amazon ECR VPC 端點。

以下是 Amazon ECR 端點政策的範例。此政策可讓特定 IAM 角色從 Amazon ECR 提取映像。

```
{
	"Statement": [{
		"Sid": "AllowPull",
		"Principal": {
			"AWS": "arn:aws:iam::1234567890:role/role_name"
		},
		"Action": [
			"ecr:BatchGetImage",
			"ecr:GetDownloadUrlForLayer",
                    "ecr:GetAuthorizationToken"
		],
		"Effect": "Allow",
		"Resource": "*"
	}]
}
```

下列端點政策範例可防止指定的儲存庫遭到刪除。

```
{
	"Statement": [{
			"Sid": "AllowAll",
			"Principal": "*",
			"Action": "*",
			"Effect": "Allow",
			"Resource": "*"
		},
		{
			"Sid": "PreventDelete",
			"Principal": "*",
			"Action": "ecr:DeleteRepository",
			"Effect": "Deny",
			"Resource": "arn:aws:ecr:region:1234567890:repository/repository_name"
		}
	]
}
```

下列端點政策範例會將前兩個範例結合成單一政策。

```
{
	"Statement": [{
			"Sid": "AllowAll",
			"Effect": "Allow",
			"Principal": "*",
			"Action": "*",
			"Resource": "*"
		},
		{
			"Sid": "PreventDelete",
			"Effect": "Deny",
			"Principal": "*",
			"Action": "ecr:DeleteRepository",
			"Resource": "arn:aws:ecr:region:1234567890:repository/repository_name"
		},
		{
			"Sid": "AllowPull",
			"Effect": "Allow",
			"Principal": {
				"AWS": "arn:aws:iam::1234567890:role/role_name"
			},
			"Action": [
				"ecr:BatchGetImage",
				"ecr:GetDownloadUrlForLayer",
                          "ecr:GetAuthorizationToken"
			],
			"Resource": "*"
		}
	]
}
```

**修改 Amazon ECR 的 VPC 端點政策**

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

1. 在導覽窗格中選擇 **Endpoints (端點)**。

1. 如果您尚未建立 Amazon ECR 的 VPC 端點，請參閱 [為 Amazon ECR 建立 VPC 端點](#ecr-setting-up-vpc-create)。

1. 選取要新增政策的 Amazon ECR VPC 端點，然後選擇畫面下半部的 **Policy** (政策) 索引標籤。

1. 選擇 **Edit Policy (編輯政策)**，並對政策做出變更。

1. 選擇 **Save (儲存)** 以儲存政策。

## 共用子網路
<a name="ecr-vpc-endpoint-shared-subnets"></a>

無法在與您共用的子網路中建立、描述、修改或刪除 VPC 端點。不過，可以在與您共用的子網路中使用 VPC 端點。

# 預防跨服務混淆代理人
<a name="cross-service-confused-deputy-prevention"></a>

混淆代理人問題屬於安全性問題，其中沒有執行動作許可的實體可以強制具有更多許可的實體執行該動作。在 中 AWS，跨服務模擬可能會導致混淆代理人問題。在某個服務 (*呼叫服務*) 呼叫另一個服務 (*被呼叫服務*) 時，可能會發生跨服務模擬。可以操縱呼叫服務來使用其許可，以其不應有存取許可的方式對其他客戶的資源採取動作。為了預防這種情況， AWS 提供的工具可協助您保護所有服務的資料，而這些服務主體已獲得您帳戶中資源的存取權。

我們建議在資源政策中使用 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) 或 [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) 全域條件內容索引鍵，來限制 Amazon ECR 給予另一項服務對資源的許可。如果您想要僅允許一個資源與跨服務存取相關聯，則請使用 `aws:SourceArn`。如果您想要允許該帳戶中的任何資源與跨服務使用相關聯，請使用 `aws:SourceAccount`。

防範混淆代理人問題的最有效方法是使用 `aws:SourceArn` 全域條件內容索引鍵，以及資源的完整 ARN。如果不知道資源的完整 ARN，或者如果您指定了多個資源，請使用 `aws:SourceArn` 全域內容條件索引鍵搭配萬用字元 (`*`) 來表示 ARN 的未知部分。例如 `arn:aws:servicename:region:123456789012:*`。

如果 `aws:SourceArn` 值不包含帳戶 ID (例如 Amazon S3 儲存貯體 ARN)，您必須使用這兩個全域條件內容索引鍵來限制許可。

`aws:SourceArn` 的值必須是 ResourceDescription。

下列範例顯示如何在 Amazon ECR 儲存庫政策中使用 `aws:SourceArn`和 `aws:SourceAccount`全域條件內容金鑰，以允許 AWS CodeBuild 存取與該服務整合所需的 Amazon ECR API 動作，同時防止混淆代理人問題。

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"CodeBuildAccess",
         "Effect":"Allow",
         "Principal":{
            "Service":"codebuild.amazonaws.com"
         },
         "Action":[
            "ecr:BatchGetImage",
            "ecr:GetDownloadUrlForLayer"
         ],
         "Resource": "*",
         "Condition":{
            "ArnLike":{
               "aws:SourceArn":"arn:aws:codebuild:us-east-1:123456789012:project/project-name"
            },
            "StringEquals":{
               "aws:SourceAccount":"123456789012"
            }
         }
      }
   ]
}
```

------