Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Kebijakan domain
CodeArtifact mendukung penggunaan izin berbasis sumber daya untuk mengontrol akses. Dengan kebijakan berbasis sumber daya, Anda dapat menentukan siapa yang memiliki akses ke sumber daya tersebut dan tindakan apa yang dapat dilakukan pada sumber daya tersebut. Secara default, hanya AWS akun yang memiliki domain yang dapat membuat dan mengakses repositori di domain. Anda dapat menerapkan dokumen kebijakan ke domain untuk mengizinkan IAM prinsipal lain mengaksesnya.
Untuk informasi selengkapnya, lihat Kebijakan dan Izin dan Kebijakan Berbasis Identitas dan Kebijakan Berbasis Sumber Daya.
Topik
Mengaktifkan akses lintas akun ke domain
Kebijakan sumber daya adalah file teks dalam JSON format. File harus menentukan prinsipal (aktor), satu atau beberapa tindakan, dan efek (Allow
atau Deny
). Untuk membuat repositori di domain yang dimiliki oleh akun lain, prinsipal harus diberikan izin CreateRepository
pada sumber daya domain.
Sebagai contoh, kebijakan sumber daya berikut memberikan izin 123456789012
pada akun untuk membuat repositori di domain.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:CreateRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:root" }, "Resource": "*" } ] }
Untuk memungkinkan pembuatan repositori dengan tanda, Anda harus menyertakan izin codeartifact:TagResource
. Ini juga akan memberikan akses kepada akun untuk menambahkan tanda ke domain dan semua repositori di dalamnya.
Kebijakan domain dievaluasi untuk semua operasi terhadap domain dan semua sumber daya dalam domain. Ini berarti kebijakan domain dapat digunakan untuk menerapkan izin ke repositori dan paket di domain. Ketika Resource
elemen diatur ke*
, maka pernyataan tersebut berlaku untuk semua sumber daya dalam domain. Misalnya, jika kebijakan di atas juga disertakan codeartifact:DescribeRepository
dalam daftar IAM tindakan yang diizinkan, maka kebijakan akan mengizinkan pemanggilan DescribeRepository
pada setiap repositori di domain. Kebijakan domain dapat digunakan untuk menerapkan izin ke sumber daya tertentu dalam domain dengan menggunakan sumber daya tertentu ARNs dalam Resource
elemen.
catatan
Kebijakan domain dan repositori dapat digunakan untuk mengonfigurasi izin. Ketika kedua kebijakan hadir, maka kedua kebijakan akan dievaluasi dan tindakan diperbolehkan jika diizinkan oleh salah satu kebijakan. Untuk informasi selengkapnya, lihat Interaksi antara kebijakan repositori dan domain.
Untuk mengakses paket di domain yang dimiliki oleh akun lain, prinsipal harus diberikan izin GetAuthorizationToken
pada sumber daya domain. Hal ini memungkinkan pemilik domain untuk melakukan kontrol atas akun yang dapat membaca isi repositori di domain.
Sebagai contoh, sumber daya berikut kebijakan memberikan izin 123456789012
kepada akun untuk mengambil token auth untuk repositori apa pun di domain.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:GetAuthorizationToken" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:root" }, "Resource": "*" } ] }
catatan
Prinsipal yang ingin mengambil paket dari titik akhir repositori harus diberikan izin ReadFromRepository
pada sumber daya repositori selain izin GetAuthorizationToken
pada domain. Demikian pula, prinsipal yang ingin memublikasikan paket ke titik akhir repositori harus diberikan izin PublishPackageVersion
selain GetAuthorizationToken
.
Untuk informasi selengkapnya tentang izin ReadFromRepository
dan PublishPackageVersion
, lihat Kebijakan Repositori.
Contoh kebijakan domain
Ketika beberapa akun menggunakan domain, akun harus diberikan serangkaian izin dasar untuk memungkinkan penggunaan domain sepenuhnya. Kebijakan sumber daya berikut mencantumkan serangkaian izin yang memungkinkan penggunaan domain sepenuhnya.
{ "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" } } ] }
catatan
Anda tidak perlu membuat kebijakan domain jika domain dan semua repositori dimiliki oleh satu akun dan hanya perlu digunakan dari akun tersebut.
Contoh kebijakan domain dengan AWS Organizations
Anda dapat menggunakan kunci aws:PrincipalOrgID
kondisi untuk memberikan akses ke CodeArtifact domain dari semua akun di organisasi Anda, sebagai berikut.
{ "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"]} } } }
Untuk informasi selengkapnya tentang menggunakan kunci aws:PrincipalOrgID
kondisi, lihat Kunci Konteks Kondisi AWS Global di Panduan IAM Pengguna.
Menetapkan kebijakan domain
Anda dapat menggunakan perintah put-domain-permissions-policy
untuk melampirkan kebijakan ke domain.
aws codeartifact put-domain-permissions-policy --domain
my_domain
--domain-owner111122223333
\ --policy-documentfile://</PATH/TO/policy.json>
Ketika Anda memanggil put-domains-permissions-policy
, kebijakan sumber daya pada domain diabaikan ketika mengevaluasi izin. Hal ini memastikan bahwa pemilik domain tidak dapat mengunci diri dari domain, yang akan mencegah mereka memperbarui kebijakan sumber daya.
catatan
Anda tidak dapat memberikan izin ke AWS akun lain untuk memperbarui kebijakan sumber daya pada domain menggunakan kebijakan sumber daya, karena kebijakan sumber daya diabaikan saat memanggil put-domain-permissions-policy.
Contoh output:
{ "policy": { "resourceArn": "arn:aws:codeartifact:
region-id
:111122223333
:domain/my_domain
", "document": "{ ...policy document content...}
", "revision": "MQlyyTQRASRU3HB58gBtSDHXG7Q3hvxxxxxxx=
" } }
Output perintah berisi Amazon Resource Name (ARN) dari sumber daya domain, konten lengkap dokumen kebijakan, dan pengidentifikasi revisi. Pengidentifikasi revisi dapat diteruskan ke put-domain-permissions-policy
menggunakan opsi --policy-revision
. Hal ini memastikan bahwa revisi dokumen yang sedang ditimpa, dan bukan versi yang lebih baru yang ditetapkan oleh penulis lain.
Membaca kebijakan domain
Untuk membaca versi dokumen kebijakan yang ada, gunakan perintah get-domain-permissions-policy
. Untuk memformat output agar dapat dibaca, gunakan --output
dan --query policy.document
bersama-sama dengan modul json.tool
Python, sebagai berikut.
aws codeartifact get-domain-permissions-policy --domain
my_domain
--domain-owner111122223333
\ --output text --query policy.document | python -mjson.tool
Contoh output:
{ "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" } } ] }
Menghapus kebijakan domain
Gunakan perintah delete-domain-permissions-policy
untuk menghapus kebijakan dari domain.
aws codeartifact delete-domain-permissions-policy --domain
my_domain
--domain-owner111122223333
Format output sama dengan perintah get-domain-permissions-policy
dan delete-domain-permissions-policy
.