

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将上游注册表与 Amazon ECR 私有注册表同步所需的 IAM 权限
<a name="pull-through-cache-iam"></a>

除了对私有注册表进行身份验证以及推送和提取映像时所需的 Amazon ECR API 权限之外，还需要以下其他权限才能有效使用缓存提取规则。
+ `ecr:CreatePullThroughCacheRule` – 授予创建拉取缓存规则的权限。此权限必须通过基于身份的 IAM policy 授予。
+ `ecr:BatchImportUpstreamImage` – 授权检索外部镜像并将其导入到您的私有注册表。可以通过使用私有注册表权限策略、基于身份的 IAM policy 或通过使用基于资源的存储库权限策略授予此权限。有关使用存储库权限的更多信息，请参阅 [Amazon ECR 中的私有存储库策略](repository-policies.md)。
+ `ecr:CreateRepository` – 授予在私有注册表中创建存储库的权限。如果存储缓存图像的存储库不存在，则需要此权限。可以通过基于身份的 IAM policy 或私有注册表权限策略授予此权限。

## 使用注册表权限
<a name="pull-through-cache-registry-permissions"></a>

Amazon ECR 私有注册表权限可用于限定各个 IAM 实体使用缓存提取的权限范围。如果 IAM policy 授予 IAM 实体的权限多于注册表权限策略授予的权限，则 IAM policy 优先。例如，如果用户已授予 `ecr:*` 权限，则无需额外的注册表级别权限。

### 要创建私有注册表的权限策略 (Amazon Web Services 管理控制台)
<a name="pull-through-cache-registry-permissions-console"></a>

1. 打开 Amazon ECR 控制台，网址为[https://console.aws.amazon.com/ecr/](https://console.amazonaws.cn/ecr/)。

1. 从导航栏中，选择您在其中配置私有注册表权限语句的区域。

1. 在导航窗格中，选择 **Private registry**（私有注册表）、**Registry permissions**（注册表权限）。

1. 在 **Registry permissions**（注册表权限）页面上，选择 **Generate statement**（生成语句）。

1. 对于要创建的每个缓存提取权限策略语句，请执行以下操作。

   1. 对于 **Policy type**（策略类型），请选择 **Pull through cache policy**（推送缓存策略）。

   1. 对于 **Statement id**（语句 ID），为推送缓存语句策略提供名称。

   1. 对于 **IAM entities**（IAM 实体），指定要包含在策略中的用户、组或角色。

   1. 对于 **Repository namespace**（存储库命名空间），选择要与策略关联的推送缓存规则。

   1. 对于 **Repository names**（存储库名称），指定要应用规则的存储库基本名称。例如，如果您想在 Amazon ECR Public 上指定 Amazon Linux 存储库，存储库名称将为 `amazonlinux`。

### 要创建私有注册表的权限策略 (Amazon CLI)
<a name="pull-through-cache-registry-permissions-cli"></a>

使用以下 Amazon CLI 命令通过指定私有注册表权限 Amazon CLI。

1. 创建名为 `ptc-registry-policy.json` 的本地文件，其中包含注册表策略的内容。以下示例授予创建存储库并从 Amazon ECR Public 中拉取镜像的 `ecr-pull-through-cache-user` 权限，Amazon ECR Public 是与之前创建的拉取缓存规则相关联的上游源。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "PullThroughCacheFromReadOnlyRole",
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::111122223333:user/ecr-pull-through-cache-user"
         },
         "Action": [
           "ecr:CreateRepository",
           "ecr:BatchImportUpstreamImage"
         ],
         "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/ecr-public/*"
       }
     ]
   }
   ```

------
**重要**  
仅当存储缓存镜像的存储库不存在时才需要 `ecr-CreateRepository` 权限。例如，如果存储库创建操作和镜像拉取操作是由单独的 IAM 主体（例如管理员和开发人员）完成。

1. 使用[put-registry-policy](https://docs.amazonaws.cn/cli/latest/reference/ecr/put-registry-policy.html)命令设置注册表策略。

   ```
   aws ecr put-registry-policy \
        --policy-text file://ptc-registry.policy.json
   ```

## 后续步骤
<a name="pull-through-cache-next-steps"></a>

准备好开始使用缓存提取规则后，请执行以下后续步骤。
+ 创建缓存提取规则。有关更多信息，请参阅 [在 Amazon ECR 中创建缓存提取规则](pull-through-cache-creating-rule.md)。
+ 创建存储库创建模板。有了存储库创建模板，在为 Amazon ECR 在缓存提取操作期间代表您创建的新存储库定义设置时，您能拥有控制权。有关更多信息，请参阅 [用于控制在缓存拉取、推送时创建或复制操作期间创建的存储库的模板](repository-creation-templates.md)。