

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Kebijakan domain
<a name="domain-policies"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) dan [Kebijakan Berbasis Identitas dan Kebijakan Berbasis Sumber Daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_identity-vs-resource.html).

**Topics**
+ [Mengaktifkan akses lintas akun ke domain](#enabling-cross-acount-access-to-a-domain)
+ [Contoh kebijakan domain](#domain-policy-example)
+ [Contoh kebijakan domain dengan AWS Organizations](#domain-policy-example-with-aws-organizations)
+ [Menetapkan kebijakan domain](#set-domain-policy)
+ [Membaca kebijakan domain](#reading-a-domain-policy)
+ [Menghapus kebijakan domain](#deleting-a-domain-policy)

## Mengaktifkan akses lintas akun ke domain
<a name="enabling-cross-acount-access-to-a-domain"></a>

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.

------
#### [ JSON ]

****  

```
{
    "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 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](repo-policies.md#interaction-repo-domain-policies).

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.

------
#### [ JSON ]

****  

```
{
    "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](repo-policies.md).

## Contoh kebijakan domain
<a name="domain-policy-example"></a>

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.

------
#### [ JSON ]

****  

```
{
    "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
<a name="domain-policy-example-with-aws-organizations"></a>

Anda dapat menggunakan kunci `aws:PrincipalOrgID` kondisi untuk memberikan akses ke CodeArtifact domain dari semua akun di organisasi Anda, sebagai berikut.

------
#### [ JSON ]

****  

```
{
    "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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) di *Panduan Pengguna IAM*.

## Menetapkan kebijakan domain
<a name="set-domain-policy"></a>

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
<a name="reading-a-domain-policy"></a>

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:

------
#### [ JSON ]

****  

```
{
    "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
<a name="deleting-a-domain-policy"></a>

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`.