

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

# Amazon ECR でのプライベートリポジトリポリシーの例
<a name="repository-policy-examples"></a>

**重要**  
このページのリポジトリポリシーの例は、Amazon ECR プライベートリポジトリに適用するためのものです。Amazon ECR リポジトリをリソースとして指定するように変更しない限り、IAM プリンシパルと直接使用すると正しく動作しません。リポジトリポリシーの設定詳細については、「[Amazon ECR でのプライベートリポジトリポリシーステートメントの設定](set-repository-policy.md)」を参照してください。

Amazon ECR リポジトリポリシーは、個別の Amazon ECR リポジトリへのアクセスを制御することを目的として特に使用される IAM ポリシーのサブセットです。IAM ポリシーは、一般的に Amazon ECR サービス全体にアクセス権限を適用するために使用されますが、特定のリソースへのアクセスを制限するために使用することもできます。詳細については、「[レポジトリポリシーと IAM ポリシー](repository-policies.md#repository-policy-vs-iam-policy)」を参照してください。

以下のリポジトリポリシーの例では、Amazon ECR プライベートリポジトリへのアクセスを制御するために使用できる許可ステートメントを示しています。

**重要**  
Amazon ECR では、ユーザーがレジストリへの認証を行って、Amazon ECR リポジトリに対するイメージのプッシュまたはプルを行う前に、IAM ポリシーを介して `ecr:GetAuthorizationToken` API への呼び出しを行う許可が必要です。Amazon ECR には、さまざまなレベルでユーザーアクセスを制御するための複数の IAM マネージドポリシーが用意されています。詳細については、「[Amazon Elastic Container Registry のアイデンティティベースのポリシーの例](security_iam_id-based-policy-examples.md)」を参照してください。

## 例: 1 名以上の ユーザーを許可する
<a name="IAM_within_account"></a>

次のリポジトリポリシーでは、1 名以上の ユーザーがリポジトリに対してイメージをプッシュまたはプルできます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPushPull",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/push-pull-user-1",
                    "arn:aws:iam::111122223333:user/push-pull-user-2"
                ]
            },
            "Action": [
                "ecr:BatchGetImage",
                "ecr:BatchCheckLayerAvailability",
                "ecr:CompleteLayerUpload",
                "ecr:GetDownloadUrlForLayer",
                "ecr:InitiateLayerUpload",
                "ecr:PutImage",
                "ecr:UploadLayerPart"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 例: 別のアカウントを許可する
<a name="IAM_allow_other_accounts"></a>

次のリポジトリポリシーでは、特定のアカウントにイメージのプッシュが許可されます。

**重要**  
アクセス権限を付与するアカウントには、リポジトリポリシーを作成するリージョンが有効になっている必要があります。有効でない場合、エラーが発生します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCrossAccountPush",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "ecr:BatchCheckLayerAvailability",
                "ecr:CompleteLayerUpload",
                "ecr:InitiateLayerUpload",
                "ecr:PutImage",
                "ecr:UploadLayerPart"
            ],
            "Resource": "*"
        }
    ]
}
```

------

次のリポジトリポリシーでは、一部のユーザーにイメージのプルが許可されますが (*pull-user-1* および *pull-user-2*)、別のユーザーにはフルアクセスが許可されます (*admin-user*)。

**注記**  
で現在サポートされていないより複雑なリポジトリポリシーについては AWS マネジメントコンソール、 [https://docs.aws.amazon.com/cli/latest/reference/ecr/set-repository-policy.html](https://docs.aws.amazon.com/cli/latest/reference/ecr/set-repository-policy.html) AWS CLI コマンドを使用してポリシーを適用できます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowPull",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::111122223333:user/pull-user-1",
                    "arn:aws:iam::111122223333:user/pull-user-2"
                ]
            },
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowAll",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:user/admin-user"
            },
            "Action": [
                "ecr:*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 例: すべて拒否する
<a name="IAM_deny_all"></a>

次のリポジトリポリシーでは、すべてのアカウントのすべてのユーザーに対してイメージのプルが拒否されます。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DenyPull",
            "Effect": "Deny",
            "Principal": "*",
            "Action": [
                "ecr:BatchGetImage",
                "ecr:GetDownloadUrlForLayer"
            ],
            "Resource": "*"
        }
    ]
}
```

------

## 例: アクセスを特定の IP アドレスに制限する
<a name="IAM_restrict_ip"></a>

次の例では、特定のアドレス範囲からリポジトリに適用された場合に、Amazon ECR オペレーションを実行するアクセス許可をすべてのユーザーに対して拒否します。

このステートメントの条件では、許可されたインターネットプロトコルバージョン 4 (IPv4) IP アドレスの `54.240.143.*` 範囲を識別します。

`Condition` ブロックは、 `NotIpAddress` 条件と `aws:SourceIp`条件キーを使用します。これは、 AWS全体の条件キーです。これらの条件キーの詳細については、「[AWS グローバル条件コンテキストキー](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html)」を参照してください。`aws:sourceIp`IPv4 値は標準の CIDR 表記を使用します。詳細については、[IAM ユーザーガイド](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_IPAddress)の *IP アドレス条件演算子* を参照してください。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "ECRPolicyId1",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "ecr:*",
            "Resource": "*",
            "Condition": {
                "NotIpAddress": {
                    "aws:SourceIp": "54.240.143.0/24"
                }
            }
        }
    ]
}
```

------

## 例: AWS サービスを許可する
<a name="IAM_service_linked"></a>

次のリポジトリポリシーは、そのサービスとの統合に必要な Amazon ECR API アクション AWS CodeBuild へのアクセスを許可します。次の例を使用する場合、`aws:SourceArn` 条件キーと `aws:SourceAccount` 条件キーを使用して、これらのアクセス許可を引き受けることができるリソースの範囲を指定する必要があります。詳細については、*AWS CodeBuild ユーザーガイド*の「[CodeBuild の Amazon ECR サンプル](https://docs.aws.amazon.com/codebuild/latest/userguide/sample-ecr.html)」を参照してください。

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

------