Kebijakan domain - CodeArtifact

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 akun AWS yang memiliki domain dapat membuat dan mengakses repositori dalam domain. Anda dapat menerapkan dokumen kebijakan ke domain untuk mengizinkan prinsipal IAM lain mengaksesnya.

Untuk informasi selengkapnya, lihat Kebijakan dan Izin dan Kebijakan Berbasis Identitas dan Kebijakan Berbasis Sumber Daya.

Mengaktifkan akses lintas akun ke domain

Kebijakan sumber daya adalah file teks dalam format JSON. 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 tindakan IAM 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 ARN sumber daya tertentu dalam elemen. Resource

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 kunci syarat aws:PrincipalOrgID, lihat Kunci Konteks Syarat Global AWS di Panduan Pengguna IAM.

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-owner 111122223333 \ --policy-document file://</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 dari perintah berisi Amazon Resource Name (ARN) dari sumber daya domain, isi 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-owner 111122223333 \ --output text --query policy.document | python -m json.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-owner 111122223333

Format output sama dengan perintah get-domain-permissions-policy dan delete-domain-permissions-policy.