翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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
への権限が必要となります。
ReadFromRepository
と PublishPackageVersion
への権限の詳細については、[レポジトリーポリシー] を参照してください。
ドメインポリシーの例
複数のアカウントがドメインを使用している場合、ドメインを完全に使用できるようにするには、そのアカウントに基本的な権限セットを付与する必要があります。次のリソースポリシーは、ドメインの完全な使用を許可する一連の権限を一覧表示します。
{
"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-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 --domain
my_domain
--domain-owner111122223333
\ --output text --query policy.document | python -mjson.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-owner111122223333
出力の形式は、get-domain-permissions-policy
およびdelete-domain-permissions-policy
コマンドの形式と同様になります。