プライベートリポジトリポリシーの例 - Amazon ECR

プライベートリポジトリポリシーの例

以下の例では、Amazon ECR リポジトリに対して認証済みユーザーが所有するアクセス権限を制御するために使用できるポリシーステートメントを示しています。

重要

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

例: 1 人以上の IAM ユーザーを許可する

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

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

例: 別のアカウントを許可する

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

重要

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

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

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

注記

AWS Management Console で現在サポートされていない複雑なリポジトリポリシーは、set-repository-policy AWS CLI コマンドを使用して適用できます。

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

例: すべて拒否する

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

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

例: アクセスを特定の IP アドレスに制限する

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

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

Condition ブロックでは、NotIpAddress 条件と aws:SourceIp 条件キー (AWS 全体を対象とする条件キー) を使用します。これらの条件キーの詳細については、「AWS グローバル条件コンテキストキー」を参照してください。aws:sourceIpIPv4 値は標準の CIDR 表記を使用します。詳細については、IAM ユーザーガイドIP アドレス条件演算子 を参照してください。

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

例: AWS のサービスを許可する

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

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