

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

# Membuat kebijakan utama
<a name="key-policy-overview"></a>

Anda dapat membuat dan mengelola kebijakan utama di AWS KMS konsol atau dengan menggunakan operasi AWS KMS API, seperti [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html), [ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html), dan [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html). 

Saat Anda membuat kunci KMS di AWS KMS konsol, konsol akan memandu Anda melalui langkah-langkah membuat kebijakan kunci berdasarkan [kebijakan kunci default untuk konsol](key-policy-default.md). Bila Anda menggunakan `CreateKey` atau `ReplicateKey` APIs, jika Anda tidak menentukan kebijakan kunci, ini APIs menerapkan [kebijakan kunci default untuk kunci yang dibuat secara terprogram.](key-policy-default.md) Saat Anda menggunakan `PutKeyPolicy` API, Anda diminta untuk menentukan kebijakan kunci.

Setiap dokumen kebijakan dapat memiliki satu atau lebih pernyataan kebijakan. Contoh berikut menunjukkan dokumen kebijakan kunci yang valid dengan satu pernyataan kebijakan.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "DescribePolicyStatement",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:user/Alice"
      },
      "Action": "kms:DescribeKey",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:KeySpec": "SYMMETRIC_DEFAULT"
        }
      }
    }
  ]
}
```

------

**Topics**
+ [Format kebijakan utama](#key-policy-format)
+ [Elemen dalam kebijakan utama](#key-policy-elements)
+ [Contoh kebijakan kunci](#key-policy-example)

## Format kebijakan utama
<a name="key-policy-format"></a>

Dokumen kebijakan utama harus sesuai dengan aturan berikut:
+ Hingga 32 kilobyte (32.768 byte)
+ `Sid`Elemen dalam pernyataan kebijakan kunci dapat mencakup spasi. (Spasi dilarang dalam `Sid` elemen dokumen kebijakan IAM.)

Dokumen kebijakan utama hanya dapat menyertakan karakter berikut:
+ Karakter ASCII yang dapat dicetak
+ Karakter yang dapat dicetak dalam set karakter Suplemen Latin dan Latin-1 Dasar
+ Karakter khusus tab (`\u0009`), line feed (`\u000A`), dan carriage return (`\u000D`)

## Elemen dalam kebijakan utama
<a name="key-policy-elements"></a>

Dokumen kebijakan utama harus memiliki elemen-elemen berikut:

**Versi**  
Menentukan versi dokumen kebijakan utama. Setel versi ke `2012-10-17` (versi terbaru).

**Pernyataan**  
Melampirkan pernyataan kebijakan. Dokumen kebijakan utama harus memiliki setidaknya satu pernyataan.  
Setiap pernyataan kebijakan utama terdiri dari hingga enam elemen. Itu`Effect`,`Principal`,`Action`, dan `Resource` elemen diperlukan.    
**Sid **  
(Opsional) Pernyataan identifier (`Sid`) string arbitrer yang dapat Anda gunakan untuk menggambarkan pernyataan. Kebijakan `Sid` dalam kunci dapat mencakup spasi. (Anda tidak dapat menyertakan spasi dalam `Sid` elemen kebijakan IAM.)  
**Efek**  
(Wajib) Menentukan apakah akan mengizinkan atau menolak izin dalam pernyataan kebijakan. Nilai-nilai yang valid adalah `Allow` atau `Deny`. Jika Anda tidak secara eksplisit mengizinkan akses ke kunci KMS, akses secara implisit ditolak. Anda juga dapat secara eksplisit menolak akses ke kunci KMS. Anda dapat melakukan langkah ini untuk memastikan bahwa pengguna tidak dapat mengaksesnya, meski kebijakan yang berbeda mengizinkan aksesnya.  
**Principal**  
(Wajib) [Prinsipal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying) adalah identitas yang mendapatkan izin yang ditentukan dalam pernyataan kebijakan. Anda dapat menentukan Akun AWS, pengguna IAM, peran IAM, dan beberapa AWS layanan sebagai prinsipal dalam kebijakan utama. [Grup pengguna](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) IAM bukan prinsipal yang valid dalam jenis kebijakan apa pun.  
Nilai tanda bintang, seperti `"AWS": "*"` mewakili semua AWS identitas di semua akun.  
Jangan menyetel Principal ke tanda bintang (\$1) dalam pernyataan kebijakan kunci apa pun yang mengizinkan izin kecuali Anda menggunakan [kondisi](policy-conditions.md) untuk membatasi kebijakan utama. Tanda bintang memberikan setiap identitas di setiap Akun AWS izin untuk menggunakan kunci KMS, kecuali pernyataan kebijakan lain secara eksplisit menyangkalnya. Pengguna lain Akun AWS dapat menggunakan kunci KMS Anda setiap kali mereka memiliki izin yang sesuai di akun mereka sendiri.
Praktik terbaik IAM mencegah penggunaan pengguna IAM dengan kredensil jangka panjang. Bila memungkinkan, gunakan peran IAM, yang menyediakan kredensi sementara. Untuk detailnya, lihat [Praktik terbaik keamanan di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) di *Panduan Pengguna IAM*.
Ketika prinsipal dalam pernyataan kebijakan kunci adalah [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts) yang dinyatakan sebagai`arn:aws:iam::111122223333:root"`, pernyataan kebijakan tidak memberikan izin kepada kepala sekolah IAM mana pun. Sebagai gantinya, ini memberikan Akun AWS izin untuk menggunakan kebijakan IAM untuk mendelegasikan izin yang ditentukan dalam kebijakan kunci. (Prinsipal dalam `arn:aws:iam::111122223333:root"` format *tidak* mewakili [pengguna root AWS akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html), meskipun menggunakan “root” dalam pengenal akun. Namun, prinsipal akun mewakili akun dan administratornya, termasuk pengguna root akun.)  
Ketika prinsipal adalah yang lain Akun AWS atau prinsipalnya, izin hanya berlaku jika akun diaktifkan di Wilayah dengan kunci KMS dan kebijakan kunci. Untuk informasi tentang Wilayah yang tidak diaktifkan secara default (“opt-in Regions”), lihat [Mengelola Wilayah AWS](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html) di *Referensi Umum AWS*.  
Untuk mengizinkan yang berbeda Akun AWS atau prinsipal menggunakan kunci KMS, Anda harus memberikan izin dalam kebijakan kunci dan dalam kebijakan IAM di akun lain. Lihat perinciannya di [Memungkinkan pengguna di akun lain untuk menggunakan kunci KMS](key-policy-modifying-external-accounts.md).  
**Tindakan**  
(Wajib) Tentukan operasi API untuk mengizinkan atau menolak. Misalnya, `kms:Encrypt` tindakan tersebut sesuai dengan operasi AWS KMS [Enkripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html). Anda dapat mencantumkan beberapa tindakan dalam pernyataan kebijakan. Untuk informasi selengkapnya, lihat [Referensi izin](kms-api-permissions-reference.md).  
Jika `Action` elemen yang diperlukan hilang dari pernyataan kebijakan kunci, pernyataan kebijakan tidak berpengaruh. Pernyataan kebijakan kunci tanpa `Action` elemen tidak berlaku untuk kunci KMS apa pun.   
Ketika pernyataan kebijakan kunci kehilangan `Action` elemennya, AWS KMS konsol melaporkan kesalahan dengan benar, tetapi [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) APIs berhasil, meskipun pernyataan kebijakan tidak efektif. [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)  
**Sumber daya**  
(Wajib) Dalam kebijakan kunci, nilai elemen Sumber Daya adalah`"*"`, yang berarti “kunci KMS ini.” Tanda bintang (`"*"`) mengidentifikasi kunci KMS tempat kebijakan kunci dilampirkan.  
Jika `Resource` elemen yang diperlukan hilang dari pernyataan kebijakan kunci, pernyataan kebijakan tidak berpengaruh. Pernyataan kebijakan kunci tanpa `Resource` elemen tidak berlaku untuk kunci KMS apa pun.   
Ketika pernyataan kebijakan kunci kehilangan `Resource` elemennya, AWS KMS konsol melaporkan kesalahan dengan benar, tetapi [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) APIs berhasil, meskipun pernyataan kebijakan tidak efektif. [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)  
**Kondisi**  
(Opsional) Ketentuan menentukan persyaratan yang harus dipenuhi agar kebijakan utama berlaku. Dengan kondisi, AWS dapat mengevaluasi konteks permintaan API untuk menentukan apakah pernyataan kebijakan berlaku atau tidak.   
Untuk menentukan kondisi, Anda menggunakan *kunci kondisi* yang telah ditentukan. AWS KMS mendukung [kunci kondisi AWS global](conditions-aws.md) dan [kunci AWS KMS kondisi](conditions-kms.md). Untuk mendukung kontrol akses berbasis atribut (ABAC), AWS KMS berikan kunci kondisi yang mengontrol akses ke kunci KMS berdasarkan tag dan alias. Lihat perinciannya di [ABAC untuk AWS KMS](abac.md).  
Format untuk suatu kondisi adalah:  

```
"Condition": {"condition operator": {"condition key": "condition value"}}
```
seperti:  

```
"Condition": {"StringEquals": {"kms:CallerAccount": "111122223333"}}
```

Untuk informasi selengkapnya tentang sintaks AWS kebijakan, lihat [Referensi Kebijakan AWS IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) di Panduan Pengguna *IAM*.

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

Contoh berikut menunjukkan kebijakan kunci lengkap untuk kunci KMS enkripsi simetris. Anda dapat menggunakannya untuk referensi saat Anda membaca tentang konsep kebijakan utama dalam Bab ini. Kebijakan kunci ini menggabungkan contoh pernyataan kebijakan dari bagian [kebijakan kunci default](key-policy-default.md) sebelumnya ke kebijakan kunci tunggal yang menyelesaikan berikut ini:
+ Memungkinkan contoh Akun AWS, 111122223333, akses penuh ke kunci KMS. Ini memungkinkan akun dan administratornya, termasuk pengguna root akun (untuk keadaan darurat), untuk menggunakan kebijakan IAM di akun untuk memungkinkan akses ke kunci KMS.
+ Memungkinkan peran `ExampleAdminRole` IAM untuk mengelola kunci KMS.
+ Memungkinkan peran `ExampleUserRole` IAM untuk menggunakan kunci KMS.

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

****  

```
{
    "Id": "key-consolepolicy",
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "EnableIAMUserPermissions",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "AllowKeyAdministratorsAccess",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/ExampleAdminRole"
            },
            "Action": [
                "kms:Create*",
                "kms:Describe*",
                "kms:Enable*",
                "kms:List*",
                "kms:Put*",
                "kms:Update*",
                "kms:Revoke*",
                "kms:Disable*",
                "kms:Get*",
                "kms:Delete*",
                "kms:TagResource",
                "kms:UntagResource",
                "kms:ScheduleKeyDeletion",
                "kms:CancelKeyDeletion",
                "kms:RotateKeyOnDemand"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowKeyUse",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/ExampleUserRole"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowAttachmentPersistentResources",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/ExampleUserRole"
            },
            "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
            ],
            "Resource": "*",
            "Condition": {
                "Bool": {
                    "kms:GrantIsForAWSResource": "true"
                }
            }
        }
    ]
}
```

------