ドメインポリシー - CodeArtifact

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

ドメインポリシー

CodeArtifact は、リソースベースのアクセス許可を使用してアクセスを制御できます。リソースベースの権限により、リソースにだれがアクセスでき、そこでどのようなアクションを実行できるかを指定できます。デフォルトでは、ドメインを所有するAWSアカウントのみがドメイン内のリポジトリを作成してアクセスできます。ポリシードキュメントをドメインに適用して、他のIAMプリンシパルがアクセスできるようにします。

詳細については、[ポリシーと権限] そして [アイデンティティベースおよびリソースベースのポリシー] を参照してください。

ドメインへのクロスアカウントアクセスを有効にする

リソースポリシーは JSON形式のテキストファイルです。このファイルには、プリンシパル (アクター) とひとつ以上のアクションとエフェクト (AllowまたはDeny) を指定する必要があります。別のアカウントが所有するドメインにリポジトリを作成するには、プリンシパルに対して [ドメイン] リソースへの CreateRepository 権限を付与する必要があります。

例えば、次のリソースポリシーでは、ドメイン内にリポジトリを作成する 123456789012 権限をアカウントに付与しています。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:CreateRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Resource": "*" } ] }

タグ付きのリポジトリの作成を許可するには、codeartifact:TagResource 権限を含める必要があります。これにより、ドメインとその中のすべてのリポジトリにタグを追加するためのアカウントアクセスも付与されます。

ドメインポリシーは、ドメインとドメイン内のすべてのリソースに対するすべてのオペレーションについて評価されます。つまり、ドメインポリシーを使用して、ドメイン内のリポジトリとパッケージにアクセス許可を適用できます。Resource 要素が に設定されている場合*、 ステートメントはドメイン内のすべてのリソースに適用されます。例えば、上記のポリシーが許可されたIAMアクションcodeartifact:DescribeRepositoryのリストにも含まれている場合、ポリシーはドメイン内のすべてのリポジトリDescribeRepositoryの呼び出しを許可します。ドメインポリシーを使用して、 Resource要素で特定のリソースを使用して、ドメインARNs内の特定のリソースにアクセス許可を適用できます。

注記

アクセス許可の設定には、ドメインポリシーとリポジトリポリシーの両方を使用できます。両方のポリシーが存在する場合、両方のポリシーが評価され、いずれかのポリシーで許可されている場合はアクションが許可されます。詳細については、「リポジトリポリシーとドメインポリシー間のインタラクション」を参照してください。

別のアカウントが所有するドメイン内のパッケージにアクセスするには、[ドメインリソース] における GetAuthorizationToken 権限をプリンシパルに付与する必要があります。これにより、ドメイン所有者は、ドメイン内のリポジトリのコンテンツを読み取ることができるアカウントをコントロールできます。

例えば、次のリソースポリシーでは、ドメイン内の任意のリポジトリの認証トークンを取得する123456789012許可をアカウントに付与しています。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:GetAuthorizationToken" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Resource": "*" } ] }
注記

リポジトリエンドポイントからパッケージを取得するプリンシパルには、ドメインに対する GetAuthorizationToken 権限に加えてリポジトリリソースに対する ReadFromRepository 権限が付与される必要があります。同様に、リポジトリエンドポイントにパッケージを公開するプリンシパルには、GetAuthorizationTokenに加えてPublishPackageVersionへの権限が必要となります。

ReadFromRepositoryPublishPackageVersion への権限の詳細については、[レポジトリーポリシー] を参照してください。

ドメインポリシーの例

複数のアカウントがドメインを使用している場合、ドメインを完全に使用できるようにするには、そのアカウントに基本的な権限セットを付与する必要があります。次のリソースポリシーは、ドメインの完全な使用を許可する一連の権限を一覧表示します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "BasicDomainPolicy", "Action": [ "codeartifact:GetDomainPermissionsPolicy", "codeartifact:ListRepositoriesInDomain", "codeartifact:GetAuthorizationToken", "codeartifact:DescribeDomain", "codeartifact:CreateRepository" ], "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::123456789012:root" } } ] }
注記

ドメインとそのリポジトリすべてが単一のアカウントによって所有され、そのアカウントからのみ使用する必要がある場合は、ドメインポリシーを作成する必要はありません。

を使用したドメインポリシーの例 AWS Organizations

aws:PrincipalOrgID 条件キーを使用して、次のように、組織内のすべてのアカウントから CodeArtifact ドメインへのアクセスを許可できます。

{ "Version": "2012-10-17", "Statement": { "Sid": "DomainPolicyForOrganization", "Effect": "Allow", "Principal": "*", "Action": [ "codeartifact:GetDomainPermissionsPolicy", "codeartifact:ListRepositoriesInDomain", "codeartifact:GetAuthorizationToken", "codeartifact:DescribeDomain", "codeartifact:CreateRepository" ], "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID":["o-xxxxxxxxxxx"]} } } }

aws:PrincipalOrgID 条件キーの使用の詳細については、 IAM ユーザーガイドAWS「グローバル条件コンテキストキー」を参照してください。

ドメインポリシーを設定する

put-domain-permissions-policyコマンドを使用して、ドメインにポリシーをアタッチすることできます。

aws codeartifact put-domain-permissions-policy --domain my_domain --domain-owner 111122223333 \ --policy-document file://</PATH/TO/policy.json>

put-domains-permissions-policyを呼び出すとき、権限を評価する場合は、ドメインのリソースポリシーは無視されます。これにより、ドメインの所有者がドメインから自分自身をロックアウトできなくなり、リソースポリシーを更新できなくなることを防ぎます。

注記

を呼び出すとリソースポリシーは無視されるため、リソースポリシーを使用してドメインのリソースポリシーを更新するアクセス許可を別の AWS アカウントに付与することはできません put-domain-permissions-policy。

サンプル出力:

{ "policy": { "resourceArn": "arn:aws:codeartifact:region-id:111122223333:domain/my_domain", "document": "{ ...policy document content...}", "revision": "MQlyyTQRASRU3HB58gBtSDHXG7Q3hvxxxxxxx=" } }

コマンドの出力には、ドメインリソースの Amazon リソースネーム (ARN)、ポリシードキュメントの全内容、およびリビジョン識別子が含まれます。リビジョン識別子は--policy-revisionオプションを使用してput-domain-permissions-policyにパスできます。これにより、別のライターが設定した新しいバージョンではなく、既知のリビジョンのドキュメントが確実に上書きされます。

ドメインポリシーを読み取る

ポリシードキュメントの既存のバージョンを読み取るには、get-domain-permissions-policyコマンドを使用します。読みやすいように出力をフォーマットするには、--outputおよび--query policy.documentを Python json.toolモジュールと共に、次の通りに使用してください。

aws codeartifact get-domain-permissions-policy --domain my_domain --domain-owner 111122223333 \ --output text --query policy.document | python -m json.tool

サンプル出力:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "BasicDomainPolicy", "Action": [ "codeartifact:GetDomainPermissionsPolicy", "codeartifact:ListRepositoriesInDomain", "codeartifact:GetAuthorizationToken", "codeartifact:CreateRepository" ], "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::111122223333:root" } } ] }

ドメインポリシーを削除する

delete-domain-permissions-policyコマンドを使用して、ドメインからポリシーを削除します。

aws codeartifact delete-domain-permissions-policy --domain my_domain --domain-owner 111122223333

出力の形式は、get-domain-permissions-policyおよびdelete-domain-permissions-policyコマンドの形式と同様になります。