翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon ECR でのプライベートリポジトリポリシーの例
重要
このページのリポジトリポリシーの例は、Amazon ECR プライベートリポジトリに適用するためのものです。Amazon ECR リポジトリをリソースとして指定するように変更しない限り、IAM プリンシパルと直接使用すると正しく動作しません。リポジトリポリシーの設定詳細については、「Amazon ECR でのプライベートリポジトリポリシーステートメントの設定」を参照してください。
Amazon ECR リポジトリポリシーは、個別の Amazon ECR リポジトリへのアクセスを制御することを目的として特に使用される IAM ポリシーのサブセットです。IAM ポリシーは、一般的に Amazon ECR サービス全体にアクセス権限を適用するために使用されますが、特定のリソースへのアクセスを制限するために使用することもできます。詳細については、「レポジトリポリシーと IAM ポリシー」を参照してください。
以下のリポジトリポリシーの例では、Amazon ECR プライベートリポジトリへのアクセスを制御するために使用できる許可ステートメントを示しています。
重要
Amazon ECR では、ユーザーがレジストリへの認証を行って、Amazon ECR リポジトリに対するイメージのプッシュまたはプルを行う前に、IAM ポリシーを介して ecr:GetAuthorizationToken
API への呼び出しを行う許可が必要です。Amazon ECR には、さまざまなレベルでユーザーアクセスを制御するいくつかのマネージド IAM ポリシーが用意されています。詳細については、「Amazon Elastic Container Registry のアイデンティティベースのポリシーの例」を参照してください。
例: 1 名以上の ユーザーを許可する
次のリポジトリポリシーでは、1 名以上の ユーザーがリポジトリに対してイメージをプッシュまたはプルできます。
{ "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" ] } ] }
次のリポジトリポリシーでは、一部のユーザーにイメージのプルが許可されますが (pull-user-1
および pull-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:sourceIp
IPv4 値は標準の 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:
region
:123456789012
:project/project-name
" }, "StringEquals":{ "aws:SourceAccount":"123456789012
" } } } ] }