翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ドメインポリシー
CodeArtifact は、リソースベースの権限の使用とアクセスのコントロールをサポートしています。リソースベースの権限により、リソースにだれがアクセスでき、そこでどのようなアクションを実行できるかを指定できます。デフォルトでは、ドメインを所有する AWS アカウントのみがドメイン内のリポジトリを作成してアクセスすることができます。ドメインにポリシードキュメントを適用して、他の IAM プリンシパルがそこにアクセスできるように許可を与えることができます。
詳細については、[ポリシーと権限] そして [アイデンティティベースおよびリソースベースのポリシー] を参照してください。
トピック
ドメインへのクロスアカウントアクセスを有効にする
リソースポリシーは、JSON 形式のテキストファイルです。このファイルには、プリンシパル (アクター) とひとつ以上のアクションとエフェクト (AllowまたはDeny) を指定する必要があります。別のアカウントが所有するドメインにリポジトリを作成するには、プリンシパルに対して [ドメイン] リソースへの CreateRepository 権限を付与する必要があります。
例えば、次のリソースポリシーでは、ドメイン内にリポジトリを作成する 123456789012 権限をアカウントに付与しています。
タグ付きのリポジトリの作成を許可するには、codeartifact:TagResource 権限を含める必要があります。これにより、ドメインとその中のすべてのリポジトリにタグを追加するためのアカウントアクセスも付与されます。
ドメインポリシーは、ドメインとドメイン内のすべてのリソースに対するすべてのオペレーションについて評価されます。つまり、ドメインポリシーを使用して、ドメイン内のリポジトリとパッケージにアクセス許可を適用できます。Resource 要素が に設定されている場合*、 ステートメントはドメイン内のすべてのリソースに適用されます。たとえば、上記のポリシーが許可された IAM アクションcodeartifact:DescribeRepositoryのリストにも含まれている場合、ポリシーはドメイン内のすべてのリポジトリDescribeRepositoryで の呼び出しを許可します。ドメインポリシーを使用して、 Resource要素で特定のリソース ARNs を使用して、ドメイン内の特定のリソースにアクセス許可を適用できます。
注記
アクセス許可の設定には、ドメインポリシーとリポジトリポリシーの両方を使用できます。両方のポリシーが存在する場合、両方のポリシーが評価され、いずれかのポリシーで許可されている場合はアクションが許可されます。詳細については、「リポジトリポリシーとドメインポリシー間のやり取り」を参照してください。
別のアカウントが所有するドメイン内のパッケージにアクセスするには、[ドメインリソース] における GetAuthorizationToken 権限をプリンシパルに付与する必要があります。これにより、ドメイン所有者は、ドメイン内のリポジトリのコンテンツを読み取ることができるアカウントをコントロールできます。
例えば、次のリソースポリシーでは、ドメイン内の任意のリポジトリの認証トークンを取得する123456789012許可をアカウントに付与しています。
注記
リポジトリエンドポイントからパッケージを取得するプリンシパルには、ドメインに対する GetAuthorizationToken 権限に加えてリポジトリリソースに対する ReadFromRepository 権限が付与される必要があります。同様に、リポジトリエンドポイントにパッケージを公開するプリンシパルには、GetAuthorizationTokenに加えてPublishPackageVersionへの権限が必要となります。
ReadFromRepository と PublishPackageVersion への権限の詳細については、[レポジトリーポリシー] を参照してください。
ドメインポリシーの例
複数のアカウントがドメインを使用している場合、ドメインを完全に使用できるようにするには、そのアカウントに基本的な権限セットを付与する必要があります。次のリソースポリシーは、ドメインの完全な使用を許可する一連の権限を一覧表示します。
注記
ドメインとそのリポジトリすべてが単一のアカウントによって所有され、そのアカウントからのみ使用する必要がある場合は、ドメインポリシーを作成する必要はありません。
を使用したドメインポリシーの例 AWS Organizations
aws:PrincipalOrgID条件キーを使って、以下のように、組織内のすべてのアカウントから CodeArtifact ドメインへアクセスする許可を付与することができます。
aws:PrincipalOrgID 条件キーの使用についての詳細は、[IAM ユーザーガイド] の [AWS グローバル条件コンテキストキー] を参照してください。
ドメインポリシーを設定する
put-domain-permissions-policyコマンドを使用して、ドメインにポリシーをアタッチすることできます。
aws codeartifact put-domain-permissions-policy --domainmy_domain--domain-owner111122223333\ --policy-documentfile://</PATH/TO/policy.json>
put-domains-permissions-policyを呼び出すとき、権限を評価する場合は、ドメインのリソースポリシーは無視されます。これにより、ドメインの所有者がドメインから自分自身をロックアウトできなくなり、リソースポリシーを更新できなくなることを防ぎます。
注記
put-domain-permissions-policy を呼び出すときにリソースポリシーが無視されるため、リソースポリシーを使用してドメインのリソースポリシーを更新するアクセス許可を別の AWS アカウントに付与することはできません。
サンプル出力:
{ "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 --domainmy_domain--domain-owner111122223333\ --output text --query policy.document | python -mjson.tool
サンプル出力:
ドメインポリシーを削除する
delete-domain-permissions-policyコマンドを使用して、ドメインからポリシーを削除します。
aws codeartifact delete-domain-permissions-policy --domainmy_domain--domain-owner111122223333
出力の形式は、get-domain-permissions-policyおよびdelete-domain-permissions-policyコマンドの形式と同様になります。