

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

# Akses dan izin kunci KMS
<a name="control-access"></a>

Untuk menggunakannya AWS KMS, Anda harus memiliki kredensi yang AWS dapat digunakan untuk mengautentikasi permintaan Anda. [Kredensialnya harus menyertakan izin untuk mengakses AWS sumber daya: AWS KMS keys dan alias.](kms-alias.md) Tidak ada AWS prinsipal yang memiliki izin untuk kunci KMS kecuali izin tersebut diberikan secara eksplisit dan tidak pernah ditolak. Tidak ada izin implisit atau otomatis untuk menggunakan atau mengelola kunci KMS. 

Untuk mengontrol akses ke kunci KMS, Anda dapat menggunakan mekanisme kebijakan berikut.
+ [Kebijakan kunci](key-policies.md) — Setiap kunci KMS memiliki kebijakan utama. Ini adalah mekanisme utama untuk mengendalikan akses ke kunci KMS. Anda dapat menggunakan kebijakan kunci sendiri untuk mengontrol akses, yang berarti cakupan penuh akses ke kunci KMS didefinisikan dalam satu dokumen (kebijakan kunci). Untuk informasi selengkapnya tentang cara menggunakan kebijakan kunci, lihat [Kebijakan utama](key-policies.md).
+ [Kebijakan IAM](iam-policies.md) — Anda dapat menggunakan kebijakan IAM dalam kombinasi dengan kebijakan utama dan hibah untuk mengontrol akses ke kunci KMS. Mengontrol akses dengan cara ini memungkinkan Anda mengelola semua izin untuk identitas IAM Anda di IAM. Untuk menggunakan kebijakan IAM untuk mengizinkan akses ke kunci KMS, kebijakan kunci harus secara eksplisit mengizinkannya. Untuk informasi selengkapnya tentang cara menggunakan kebijakan IAM, lihat [Kebijakan IAM](iam-policies.md). 
+ [Hibah](grants.md) — Anda dapat menggunakan hibah dalam kombinasi dengan kebijakan utama dan kebijakan IAM untuk mengizinkan akses ke kunci KMS. Mengontrol akses dengan cara ini memungkinkan Anda mengizinkan akses ke kunci KMS dalam kebijakan kunci, dan mengizinkan identitas mendelegasikan akses mereka ke orang lain. Untuk informasi selengkapnya tentang cara menggunakan izin, lihat [Hibah di AWS KMS](grants.md).

## Kebijakan utama KMS
<a name="intro-key-policy"></a>

Cara utama untuk mengelola akses ke AWS KMS sumber daya Anda adalah dengan *kebijakan*. Kebijakan adalah dokumen yang menjelaskan prinsip mana yang dapat mengakses sumber daya mana. *Kebijakan yang melekat pada identitas IAM disebut kebijakan *berbasis identitas (atau kebijakan* *IAM), dan kebijakan* yang melekat pada jenis sumber daya lainnya disebut kebijakan sumber daya.* AWS KMS kebijakan sumber daya untuk kunci KMS disebut *kebijakan kunci*.

Semua kunci KMS memiliki kebijakan kunci. Jika Anda tidak menyediakannya, AWS KMS buatlah satu untuk Anda. [Kebijakan kunci default](key-policy-default.md) yang AWS KMS digunakan berbeda-beda tergantung pada apakah Anda membuat kunci di AWS KMS konsol atau Anda menggunakan AWS KMS API. Kami menyarankan Anda mengedit kebijakan kunci default agar selaras dengan persyaratan organisasi Anda untuk izin hak istimewa paling [sedikit](least-privilege.md). 

Anda dapat menggunakan kebijakan kunci sendiri untuk mengontrol akses jika kunci dan prinsipal IAM berada di AWS akun yang sama, yang berarti cakupan penuh akses ke kunci KMS didefinisikan dalam satu dokumen (kebijakan kunci). Namun, ketika penelepon di satu akun harus mengakses kunci di akun yang berbeda, Anda tidak dapat menggunakan kebijakan kunci sendiri untuk memberikan akses. Dalam skenario lintas akun, kebijakan IAM harus dilampirkan ke pengguna atau peran pemanggil yang secara eksplisit memungkinkan pemanggil untuk melakukan panggilan API.

Anda juga dapat menggunakan kebijakan IAM dalam kombinasi dengan kebijakan utama dan hibah untuk mengontrol akses ke kunci KMS. Untuk menggunakan kebijakan IAM untuk mengontrol akses ke kunci KMS, kebijakan kunci harus memberikan izin akun untuk menggunakan kebijakan IAM. Anda dapat menentukan [pernyataan kebijakan kunci yang mengaktifkan kebijakan IAM, atau Anda dapat secara eksplisit [menentukan prinsip yang diizinkan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#Principal_specifying) dalam kebijakan](key-policy-default.md#key-policy-default-allow-root-enable-iam) utama.

Saat menulis kebijakan, pastikan Anda memiliki kontrol kuat yang membatasi siapa yang dapat melakukan tindakan berikut:
+ Memperbarui, membuat, dan menghapus kebijakan kunci IAM dan KMS
+ Lampirkan dan lepaskan kebijakan IAM dari pengguna, peran, dan grup
+ Pasang dan lepaskan kebijakan kunci KMS dari kunci KMS Anda

## Hibah kunci KMS
<a name="intro-kms-grants"></a>

Selain IAM dan kebijakan utama, AWS KMS mendukung [hibah](grants.md). Hibah menyediakan cara yang fleksibel dan ampuh untuk mendelegasikan izin. Anda dapat menggunakan hibah untuk mengeluarkan akses kunci KMS terikat waktu ke prinsipal IAM di akun Anda, atau di akun AWS lain. AWS Kami merekomendasikan untuk mengeluarkan akses terikat waktu jika Anda tidak mengetahui nama prinsipal pada saat kebijakan dibuat, atau jika prinsip yang memerlukan akses sering berubah. [Pokok penerima hibah](grants.md#terms-grantee-principal) dapat berada di akun yang sama dengan kunci KMS atau akun yang berbeda. Jika kunci utama dan KMS berada di akun yang berbeda, maka Anda harus menentukan kebijakan IAM selain hibah. Hibah memerlukan manajemen tambahan karena Anda harus memanggil API untuk membuat hibah dan untuk pensiun atau mencabut hibah ketika tidak lagi diperlukan. 

# Kebijakan utama di AWS KMS
<a name="key-policies"></a>

Kebijakan kunci adalah kebijakan sumber daya untuk sebuah AWS KMS key. Kebijakan utama adalah cara utama untuk mengontrol akses ke kunci KMS. Setiap kunci KMS harus memiliki satu kebijakan kunci. Pernyataan dalam kebijakan kunci menentukan siapa yang memiliki izin untuk menggunakan kunci KMS dan bagaimana mereka dapat menggunakannya. Anda juga dapat menggunakan [kebijakan dan [hibah](grants.md) IAM](iam-policies.md) untuk mengontrol akses ke kunci KMS, tetapi setiap kunci KMS harus memiliki kebijakan utama. 

Tidak ada AWS prinsipal, termasuk pengguna root akun atau pembuat kunci, yang memiliki izin untuk kunci KMS kecuali mereka secara eksplisit diizinkan, dan tidak pernah ditolak, dalam kebijakan utama, kebijakan IAM, atau hibah. 

Kecuali kebijakan kunci secara eksplisit mengizinkannya, Anda tidak dapat menggunakan kebijakan IAM untuk *mengizinkan* akses ke kunci KMS. Tanpa izin dari kebijakan utama, kebijakan IAM yang mengizinkan izin tidak berpengaruh. (Anda dapat menggunakan kebijakan IAM untuk *menolak* izin ke kunci KMS tanpa izin dari kebijakan kunci.) Kebijakan kunci default mengaktifkan kebijakan IAM. Untuk mengaktifkan kebijakan IAM dalam kebijakan utama Anda, tambahkan pernyataan kebijakan yang dijelaskan di[Memungkinkan akses ke Akun AWS dan mengaktifkan kebijakan IAM](key-policy-default.md#key-policy-default-allow-root-enable-iam).

Tidak seperti kebijakan IAM, yang bersifat global, kebijakan kunci bersifat Regional. Kebijakan utama mengontrol akses hanya ke kunci KMS di Wilayah yang sama. Ini tidak berpengaruh pada kunci KMS di Wilayah lain.

**Topics**
+ [Membuat kebijakan utama](key-policy-overview.md)
+ [Kebijakan kunci default](key-policy-default.md)
+ [Melihat kebijakan utama](key-policy-viewing.md)
+ [Mengubah kebijakan utama](key-policy-modifying.md)
+ [Izin untuk layanan AWS](key-policy-services.md)

# 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"
                }
            }
        }
    ]
}
```

------

# Kebijakan kunci default
<a name="key-policy-default"></a>

Saat membuat kunci KMS, Anda dapat menentukan kebijakan kunci untuk kunci KMS baru. Jika Anda tidak menyediakannya, AWS KMS buatlah satu untuk Anda. Kebijakan kunci default yang AWS KMS digunakan berbeda-beda tergantung pada apakah Anda membuat kunci di AWS KMS konsol atau Anda menggunakan AWS KMS API.

**Kebijakan kunci default saat Anda membuat kunci KMS secara terprogram**  
Saat Anda membuat kunci KMS secara terprogram dengan [AWS KMS API](https://docs.aws.amazon.com/kms/latest/APIReference/) (termasuk dengan menggunakan [AWS SDKs](https://aws.amazon.com/tools/#sdk), [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/)atau [Alat AWS untuk PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/)), dan Anda tidak menentukan kebijakan kunci, AWS KMS menerapkan kebijakan kunci default yang sangat sederhana. Kebijakan kunci default ini memiliki satu pernyataan kebijakan yang memberikan izin Akun AWS yang memiliki kunci KMS untuk menggunakan kebijakan IAM untuk mengizinkan akses ke semua AWS KMS operasi pada kunci KMS. Untuk informasi selengkapnya tentang pernyataan kebijakan ini, lihat [Memungkinkan akses ke Akun AWS dan mengaktifkan kebijakan IAM](#key-policy-default-allow-root-enable-iam).

**Kebijakan kunci default saat Anda membuat kunci KMS dengan Konsol Manajemen AWS**  
Saat Anda [membuat kunci KMS dengan Konsol Manajemen AWS](create-keys.md), kebijakan kunci dimulai dengan pernyataan kebijakan yang [memungkinkan akses ke Akun AWS dan mengaktifkan kebijakan IAM](#key-policy-default-allow-root-enable-iam). [Konsol kemudian menambahkan pernyataan [administrator kunci, pernyataan](#key-policy-default-allow-administrators)[pengguna kunci](#key-policy-default-allow-users), dan (untuk sebagian besar jenis kunci) pernyataan yang memungkinkan prinsipal untuk menggunakan kunci KMS dengan layanan lain. AWS](#key-policy-service-integration) Anda dapat menggunakan fitur AWS KMS konsol untuk menentukan pengguna IAM, peran IAM, dan Akun AWS siapa administrator kunci dan mereka yang merupakan pengguna kunci (atau keduanya).

**Izin**
+ [Memungkinkan akses ke Akun AWS dan mengaktifkan kebijakan IAM](#key-policy-default-allow-root-enable-iam)
+ [Memungkinkan administrator kunci untuk mengelola kunci KMS](#key-policy-default-allow-administrators)
+ [Memungkinkan pengguna kunci untuk menggunakan kunci KMS](#key-policy-default-allow-users)
  + [Memungkinkan pengguna kunci untuk menggunakan kunci KMS untuk operasi kriptografi](#key-policy-users-crypto)
  + [Memungkinkan pengguna kunci untuk menggunakan kunci KMS dengan layanan AWS](#key-policy-service-integration)

## Memungkinkan akses ke Akun AWS dan mengaktifkan kebijakan IAM
<a name="key-policy-default-allow-root-enable-iam"></a>

Pernyataan kebijakan kunci default berikut sangat penting. 
+ Ini memberikan Akun AWS yang memiliki kunci KMS akses penuh ke kunci KMS. 

  Tidak seperti kebijakan AWS sumber daya lainnya, kebijakan AWS KMS kunci tidak secara otomatis memberikan izin ke akun atau identitasnya. Untuk memberikan izin kepada administrator akun, kebijakan utama harus menyertakan pernyataan eksplisit yang memberikan izin ini, seperti ini.
+ Ini memungkinkan akun untuk menggunakan kebijakan IAM untuk memungkinkan akses ke kunci KMS, selain kebijakan utama.

  Tanpa izin ini, kebijakan IAM yang memungkinkan akses ke kunci tidak efektif, meskipun kebijakan IAM yang menolak akses ke kunci masih efektif. 
+ Ini mengurangi risiko kunci menjadi tidak terkendali dengan memberikan izin kontrol akses ke administrator akun, termasuk pengguna root akun, yang tidak dapat dihapus. 

Pernyataan kebijakan kunci berikut adalah seluruh kebijakan kunci default untuk kunci KMS yang dibuat secara terprogram. Ini adalah pernyataan kebijakan pertama dalam kebijakan kunci default untuk kunci KMS yang dibuat di AWS KMS konsol.

```
{
  "Sid": "Enable IAM User Permissions",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:root"
   },
  "Action": "kms:*",
  "Resource": "*"
}
```

**Mengizinkan kebijakan IAM untuk mengizinkan akses ke kunci KMS.**  <a name="allow-iam-policies"></a>
Pernyataan kebijakan utama yang ditunjukkan di atas memberikan izin Akun AWS yang memiliki kunci untuk menggunakan kebijakan IAM, serta kebijakan utama, untuk mengizinkan semua tindakan (`kms:*`) pada kunci KMS.   
Prinsip dalam pernyataan kebijakan utama ini adalah [pokok akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts), yang diwakili oleh ARN dalam format ini:. `arn:aws:iam::account-id:root` Prinsipal akun mewakili AWS akun dan administratornya.   
Ketika prinsipal dalam pernyataan kebijakan utama adalah pokok akun, pernyataan kebijakan tidak memberikan izin utama IAM untuk menggunakan kunci KMS. Sebagai gantinya, akun dapat menggunakan kebijakan IAM untuk *mendelegasikan* izin yang ditentukan dalam pernyataan kebijakan. Pernyataan kebijakan kunci default ini memungkinkan akun menggunakan kebijakan IAM untuk mendelegasikan izin untuk semua tindakan (`kms:*`) pada kunci KMS.

**Mengurangi risiko kunci KMS menjadi tidak terkendali.**  
Tidak seperti kebijakan AWS sumber daya lainnya, kebijakan AWS KMS kunci tidak secara otomatis memberikan izin ke akun atau prinsipalnya. Untuk memberikan izin kepada prinsipal apa pun, termasuk [prinsipal akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts), Anda harus menggunakan pernyataan kebijakan utama yang memberikan izin secara eksplisit. Anda tidak diharuskan untuk memberikan prinsipal akun, atau prinsipal apa pun, akses ke kunci KMS. Namun, memberikan akses ke prinsipal akun membantu Anda mencegah kunci menjadi tidak dapat dikelola.  
Misalnya, Anda membuat kebijakan kunci yang hanya memberikan satu pengguna akses ke kunci KMS. Jika Anda kemudian menghapus pengguna itu, kunci menjadi tidak dapat dikelola dan Anda harus menghubungi [AWS Support](https://console.aws.amazon.com/support/home#/case/create) untuk mendapatkan kembali akses ke kunci KMS.   
Pernyataan kebijakan utama yang ditunjukkan di atas memberikan izin [pokok akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts) untuk mengontrol kunci. Prinsipal akun mewakili Akun AWS dan administratornya, termasuk [pengguna root akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html). Pengguna root akun adalah satu-satunya prinsipal yang tidak dapat dihapus kecuali Anda menghapus Akun AWS. Praktik terbaik IAM mencegah bertindak atas nama pengguna root akun, kecuali dalam keadaan darurat. Namun, Anda mungkin perlu bertindak sebagai pengguna root akun jika Anda menghapus semua pengguna dan peran lain dengan akses ke kunci KMS. 

## Memungkinkan administrator kunci untuk mengelola kunci KMS
<a name="key-policy-default-allow-administrators"></a>

Kebijakan kunci default yang dibuat oleh konsol tersebut mengizinkan Anda memilih pengguna IAM dan peran dalam akun dan membuatnya *administrator kunci*. Pernyataan ini disebut *pernyataan administrator kunci*. [Administrator kunci memiliki izin untuk mengelola kunci KMS, tetapi tidak memiliki izin untuk menggunakan kunci KMS dalam operasi kriptografi.](kms-cryptography.md#cryptographic-operations) Anda dapat menambahkan pengguna dan peran IAM ke daftar administrator kunci saat Anda membuat kunci KMS dalam tampilan default atau tampilan kebijakan. 

**Awas**  
Karena administrator kunci memiliki izin untuk mengubah kebijakan kunci dan membuat hibah, mereka dapat memberikan AWS KMS izin kepada diri mereka sendiri dan orang lain yang tidak ditentukan dalam kebijakan ini.  
Prinsipal yang memiliki izin untuk mengelola tag dan alias juga dapat mengontrol akses ke kunci KMS. Lihat perinciannya di [ABAC untuk AWS KMS](abac.md).

**catatan**  
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*.

Contoh berikut menunjukkan pernyataan administrator kunci dalam tampilan default AWS KMS konsol.

![\[Administrator kunci dalam kebijakan kunci default konsol tersebut, tampilan default\]](http://docs.aws.amazon.com/id_id/kms/latest/developerguide/images/console-key-policy-administrators-60.png)


Berikut ini adalah contoh pernyataan administrator kunci dalam tampilan kebijakan AWS KMS konsol. Pernyataan administrator kunci ini adalah untuk kunci KMS enkripsi simetris wilayah tunggal.

**catatan**  
 AWS KMS Konsol menambahkan administrator kunci ke kebijakan kunci di bawah pengenal `"Allow access for Key Administrators"` pernyataan. Memodifikasi pengenal pernyataan ini dapat memengaruhi cara konsol menampilkan pembaruan yang Anda buat pada pernyataan tersebut.

```
{
  "Sid": "Allow access for Key Administrators",
  "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": "*"
}
```

Pernyataan administrator kunci default untuk kunci KMS yang paling umum, kunci KMS enkripsi simetris wilayah tunggal, memungkinkan izin berikut. Untuk informasi rinci tentang setiap izin, lihat[AWS KMS izin](kms-api-permissions-reference.md).

Saat Anda menggunakan AWS KMS konsol untuk membuat kunci KMS, konsol menambahkan pengguna dan peran yang Anda tentukan ke `Principal` elemen dalam pernyataan administrator kunci.

Banyak dari izin ini berisi karakter wildcard (`*`), yang memungkinkan semua izin yang dimulai dengan kata kerja yang ditentukan. Akibatnya, ketika AWS KMS menambahkan operasi API baru, administrator kunci secara otomatis diizinkan untuk menggunakannya. Anda tidak perlu memperbarui kebijakan utama Anda untuk menyertakan operasi baru. Jika Anda lebih suka membatasi administrator kunci Anda ke set operasi API tetap, Anda dapat [mengubah kebijakan kunci Anda](key-policy-modifying.md).

**`kms:Create*`**  
Memungkinkan [`kms:CreateAlias`](kms-alias.md)dan [`kms:CreateGrant`](grants.md). (`kms:CreateKey`Izin hanya berlaku dalam kebijakan IAM.)

**`kms:Describe*`**  
Memungkinkan [`kms:DescribeKey`](viewing-keys.md). `kms:DescribeKey`Izin diperlukan untuk melihat halaman detail kunci untuk kunci KMS di. Konsol Manajemen AWS

**`kms:Enable*`**  
Memungkinkan [`kms:EnableKey`](enabling-keys.md). Untuk kunci KMS enkripsi simetris, ini juga memungkinkan. [`kms:EnableKeyRotation`](rotate-keys.md)

**`kms:List*`**  
Memungkinkan [`kms:ListGrants`](grants.md), [https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeyPolicies.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeyPolicies.html), dan [`kms:ListResourceTags`](tagging-keys.md). (`kms:ListKeys`Izin `kms:ListAliases` dan, yang diperlukan untuk melihat kunci KMS di Konsol Manajemen AWS, hanya berlaku dalam kebijakan IAM.)

**`kms:Put*`**  
Memungkinkan [https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html). Izin ini memungkinkan administrator kunci untuk mengubah kebijakan kunci untuk kunci KMS ini.

**`kms:Update*`**  
Memungkinkan [`kms:UpdateAlias`](alias-update.md)dan [https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateKeyDescription.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateKeyDescription.html). Untuk kunci Multi-region, ini memungkinkan [`kms:UpdatePrimaryRegion`](multi-region-update.md#update-primary-console)pada kunci KMS ini.

**`kms:Revoke*`**  
Memungkinkan [`kms:RevokeGrant`](grant-delete.md), yang memungkinkan administrator kunci untuk [menghapus hibah](grant-delete.md) bahkan jika mereka bukan [kepala sekolah pensiun](grants.md#terms-retiring-principal) dalam hibah. 

**`kms:Disable*`**  
Memungkinkan [`kms:DisableKey`](enabling-keys.md). Untuk kunci KMS enkripsi simetris, ini juga memungkinkan. [`kms:DisableKeyRotation`](rotate-keys.md)

**`kms:Get*`**  
Memungkinkan [`kms:GetKeyPolicy`](key-policy-viewing.md)dan [`kms:GetKeyRotationStatus`](rotate-keys.md). Untuk kunci KMS dengan bahan kunci impor, memungkinkan [https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html). Untuk kunci KMS asimetris, ini memungkinkan. [https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html) `kms:GetKeyPolicy`Izin diperlukan untuk melihat kebijakan kunci kunci KMS di. Konsol Manajemen AWS

**`kms:Delete*`**  
Memungkinkan [`kms:DeleteAlias`](kms-alias.md). Untuk kunci dengan bahan kunci impor, memungkinkan [`kms:DeleteImportedKeyMaterial`](importing-keys.md). `kms:Delete*`Izin tidak mengizinkan administrator kunci untuk menghapus kunci KMS ()`ScheduleKeyDeletion`.

**`kms:TagResource`**  
Memungkinkan [`kms:TagResource`](tagging-keys.md), yang memungkinkan administrator kunci untuk menambahkan tag ke kunci KMS. Karena tag juga dapat digunakan untuk mengontrol akses ke kunci KMS, izin ini dapat memungkinkan administrator untuk mengizinkan atau menolak akses ke kunci KMS. Lihat perinciannya di [ABAC untuk AWS KMS](abac.md).

**`kms:UntagResource`**  
Memungkinkan [`kms:UntagResource`](tagging-keys.md), yang memungkinkan administrator kunci untuk menghapus tag dari kunci KMS. Karena tag dapat digunakan untuk mengontrol akses ke kunci, izin ini dapat memungkinkan administrator untuk mengizinkan atau menolak akses ke kunci KMS. Lihat perinciannya di [ABAC untuk AWS KMS](abac.md).

**`kms:ScheduleKeyDeletion`**  
Memungkinkan [https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html), yang memungkinkan administrator kunci untuk [menghapus kunci KMS ini](deleting-keys.md). Untuk menghapus izin ini, kosongkan opsi **Izinkan administrator kunci untuk menghapus opsi kunci ini**.

**`kms:CancelKeyDeletion`**  
Memungkinkan [https://docs.aws.amazon.com/kms/latest/APIReference/API_CancelKeyDeletion.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_CancelKeyDeletion.html), yang memungkinkan administrator kunci untuk [membatalkan penghapusan kunci KMS ini](deleting-keys.md). Untuk menghapus izin ini, kosongkan opsi **Izinkan administrator kunci untuk menghapus opsi kunci ini**.

**`kms:RotateKeyOnDemand`**  
Memungkinkan [https://docs.aws.amazon.com/kms/latest/APIReference/API_RotateKeyOnDemand.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_RotateKeyOnDemand.html), yang memungkinkan administrator kunci untuk [melakukan rotasi sesuai permintaan dari materi utama dalam kunci KMS ini](rotating-keys-on-demand.md).

 

AWS KMS menambahkan izin berikut ke pernyataan administrator kunci default saat Anda membuat kunci tujuan khusus.

**`kms:ImportKeyMaterial`**  
[https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html)Izin memungkinkan administrator kunci untuk mengimpor materi kunci ke dalam kunci KMS. Izin ini disertakan dalam kebijakan kunci hanya jika Anda [membuat kunci KMS tanpa materi kunci](importing-keys-create-cmk.md).

**`kms:ReplicateKey`**  
[https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html)Izin ini memungkinkan administrator kunci untuk [membuat replika kunci utama Multi-wilayah](multi-region-keys-replicate.md) di Wilayah yang berbeda. AWS Izin ini disertakan dalam kebijakan kunci hanya jika Anda membuat kunci primer atau replika Multi-wilayah.

**`kms:UpdatePrimaryRegion`**  
[https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html)Izin ini memungkinkan administrator kunci untuk [mengubah kunci replika Multi-region menjadi kunci utama Multi-region](multi-region-update.md). Izin ini disertakan dalam kebijakan kunci hanya jika Anda membuat kunci primer atau replika Multi-wilayah.

## Memungkinkan pengguna kunci untuk menggunakan kunci KMS
<a name="key-policy-default-allow-users"></a>

*Kebijakan kunci default yang dibuat konsol untuk kunci KMS memungkinkan Anda memilih pengguna IAM dan peran IAM di akun, dan eksternal Akun AWS, dan menjadikannya pengguna utama.* 

Konsol tersebut menambahkan dua pernyataan kebijakan untuk kebijakan kunci bagi pengguna kunci.
+ [Gunakan kunci KMS secara langsung](#key-policy-users-crypto) — Pernyataan kebijakan kunci pertama memberi pengguna kunci izin untuk menggunakan kunci KMS secara langsung untuk semua [operasi kriptografi](kms-cryptography.md#cryptographic-operations) yang didukung untuk jenis kunci KMS tersebut.
+ [Gunakan kunci KMS dengan AWS layanan](#key-policy-service-integration) — Pernyataan kebijakan kedua memberikan izin kepada pengguna kunci untuk mengizinkan AWS layanan yang terintegrasi dengan menggunakan kunci KMS atas nama mereka AWS KMS untuk melindungi sumber daya, seperti bucket Amazon S3 dan tabel Amazon DynamoDB.

Anda dapat menambahkan pengguna IAM, peran IAM, dan lainnya Akun AWS ke daftar pengguna utama saat Anda membuat kunci KMS. Anda juga dapat mengedit daftar dengan tampilan default konsol tersebut untuk kebijakan kunci, seperti yang ditunjukkan pada gambar berikut. Tampilan default untuk kebijakan kunci pada halaman detail kunci. Untuk informasi selengkapnya tentang mengizinkan pengguna lain Akun AWS untuk menggunakan kunci KMS, lihat[Memungkinkan pengguna di akun lain untuk menggunakan kunci KMS](key-policy-modifying-external-accounts.md).

**catatan**  
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*.

![\[Pengguna kunci dalam kebijakan kunci default konsol tersebut, tampilan default\]](http://docs.aws.amazon.com/id_id/kms/latest/developerguide/images/console-key-policy-users-sm.png)


*Pernyataan pengguna kunci* default untuk simetris Single-region memungkinkan izin berikut. Untuk informasi rinci tentang setiap izin, lihat[AWS KMS izin](kms-api-permissions-reference.md).

Saat Anda menggunakan AWS KMS konsol untuk membuat kunci KMS, konsol akan menambahkan pengguna dan peran yang Anda tentukan ke `Principal` elemen di setiap pernyataan pengguna kunci.

**catatan**  
 AWS KMS Konsol menambahkan pengguna kunci ke kebijakan kunci di bawah pengidentifikasi pernyataan `"Allow use of the key"` dan`"Allow attachment of persistent resources"`. Memodifikasi pengenal pernyataan ini dapat memengaruhi cara konsol menampilkan pembaruan yang Anda buat pada pernyataan tersebut.

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": [
    "arn:aws:iam::111122223333:role/ExampleRole",
    "arn:aws:iam::444455556666:root"
  ]},
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:DescribeKey"
  ],
  "Resource": "*"
},
{
  "Sid": "Allow attachment of persistent resources",
  "Effect": "Allow",
  "Principal": {"AWS": [
    "arn:aws:iam::111122223333:role/ExampleRole",
    "arn:aws:iam::444455556666:root"
  ]},
  "Action": [
    "kms:CreateGrant",
    "kms:ListGrants",
    "kms:RevokeGrant"
  ],
  "Resource": "*",
  "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}
}
```

## Memungkinkan pengguna kunci untuk menggunakan kunci KMS untuk operasi kriptografi
<a name="key-policy-users-crypto"></a>

Pengguna kunci memiliki izin untuk menggunakan kunci KMS secara langsung di semua [operasi kriptografi](kms-cryptography.md#cryptographic-operations) yang didukung pada kunci KMS. Mereka juga dapat menggunakan [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)operasi untuk mendapatkan informasi rinci tentang kunci KMS di AWS KMS konsol atau dengan menggunakan operasi AWS KMS API.

Secara default, AWS KMS konsol menambahkan pernyataan pengguna kunci seperti yang ada dalam contoh berikut ke kebijakan kunci default. Karena mereka mendukung operasi API yang berbeda, tindakan dalam pernyataan kebijakan untuk kunci KMS enkripsi simetris, kunci KMS HMAC, kunci KMS asimetris untuk enkripsi kunci publik, dan kunci KMS asimetris untuk penandatanganan dan verifikasi sedikit berbeda.

**Kunci KMS enkripsi simetris**  
Konsol menambahkan pernyataan berikut ke kebijakan kunci untuk kunci KMS enkripsi simetris.  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",  
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"},
  "Action": [
    "kms:Decrypt",
    "kms:DescribeKey",
    "kms:Encrypt",
    "kms:GenerateDataKey*",
    "kms:ReEncrypt*"
  ],
  "Resource": "*"
}
```

**Kunci HMAC KMS**  
Konsol menambahkan pernyataan berikut ke kebijakan kunci untuk kunci HMAC KMS.  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",  
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"},
  "Action": [
    "kms:DescribeKey",
    "kms:GenerateMac",
    "kms:VerifyMac"
  ],
  "Resource": "*"
}
```

**Kunci KMS asimetris untuk enkripsi kunci publik**  
Konsol menambahkan pernyataan berikut ke kebijakan kunci untuk kunci KMS asimetris dengan penggunaan kunci **Enkripsi dan dekripsi**.  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:DescribeKey",
    "kms:GetPublicKey"
  ],
  "Resource": "*"
}
```

**Kunci KMS asimetris untuk penandatanganan dan verifikasi**  
Konsol menambahkan pernyataan berikut ke kebijakan kunci untuk kunci KMS asimetris dengan penggunaan kunci **Tanda dan verifikasi**.  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"},
  "Action": [
    "kms:DescribeKey",
    "kms:GetPublicKey",
    "kms:Sign",
    "kms:Verify"
  ],
  "Resource": "*"
}
```

**Kunci KMS asimetris untuk mendapatkan rahasia bersama**  
Konsol menambahkan pernyataan berikut ke kebijakan kunci untuk kunci KMS asimetris dengan penggunaan kunci perjanjian **Kunci**.  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"},
  "Action": [
    "kms:DescribeKey",
    "kms:GetPublicKey",
    "kms:DeriveSharedSecret"
  ],
  "Resource": "*"
}
```

Tindakan dalam pernyataan ini memberi pengguna kunci izin berikut.

[https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)  
Memungkinkan pengguna kunci untuk mengenkripsi data dengan kunci KMS ini.

[https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)  
Memungkinkan pengguna kunci untuk mendekripsi data dengan kunci KMS ini.

[https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html)  
Memungkinkan pengguna kunci untuk mendapatkan rahasia bersama dengan kunci KMS ini.

[https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)  
Memungkinkan pengguna kunci untuk mendapatkan informasi rinci tentang kunci KMS ini termasuk pengenal, tanggal pembuatan, dan status kunci. Ini juga memungkinkan pengguna kunci untuk menampilkan detail tentang kunci KMS di AWS KMS konsol.

`kms:GenerateDataKey*`  
Memungkinkan pengguna kunci untuk meminta kunci data simetris atau symmetric data key pair untuk operasi kriptografi sisi klien. Konsol menggunakan karakter wildcard \$1 untuk mewakili izin untuk operasi API berikut: [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html),, [GenerateDataKeyWithoutPlaintext[GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html), dan [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html). Izin ini hanya berlaku pada kunci KMS simetris yang mengenkripsi kunci data.

[km: GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html)  
Memungkinkan pengguna kunci untuk menggunakan kunci HMAC KMS untuk menghasilkan tag HMAC.

[km: GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)  
Memungkinkan pengguna kunci untuk mengunduh kunci publik dari kunci KMS asimetris. Pihak dengan siapa Anda berbagi kunci publik ini dapat mengenkripsi data di luar. AWS KMS Namun, ciphertext tersebut dapat didekripsi hanya dengan memanggil operasi [Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) di AWS KMS.

[km: \$1 ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)   
Memungkinkan pengguna kunci untuk mengenkripsi ulang data yang awalnya dienkripsi dengan kunci KMS ini, atau menggunakan kunci KMS ini untuk mengenkripsi ulang data yang sebelumnya dienkripsi. [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)Operasi ini membutuhkan akses ke kunci KMS sumber dan tujuan. Untuk mencapai ini, Anda dapat mengizinkan `kms:ReEncryptFrom` izin pada kunci KMS sumber dan `kms:ReEncryptTo` izin pada kunci KMS tujuan. Namun, untuk kesederhanaan, konsol memungkinkan `kms:ReEncrypt*` (dengan karakter `*` wildcard) pada kedua tombol KMS.

[KMS: Tanda](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html)  
Memungkinkan pengguna kunci untuk menandatangani pesan dengan kunci KMS ini.

[KMS: Verifikasi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html)  
Memungkinkan pengguna kunci untuk memverifikasi tanda tangan dengan kunci KMS ini.

[km: VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html)  
Memungkinkan pengguna kunci untuk menggunakan kunci HMAC KMS untuk memverifikasi tag HMAC.

## Memungkinkan pengguna kunci untuk menggunakan kunci KMS dengan layanan AWS
<a name="key-policy-service-integration"></a>

Kebijakan kunci default di konsol juga memberi pengguna kunci izin hibah yang mereka perlukan untuk melindungi data mereka di AWS layanan yang menggunakan hibah. AWS Layanan sering menggunakan hibah untuk mendapatkan izin khusus dan terbatas untuk menggunakan kunci KMS.

[Pernyataan kebijakan kunci ini memungkinkan pengguna kunci untuk membuat, melihat, dan mencabut hibah pada kunci KMS, tetapi hanya jika permintaan operasi hibah berasal dari layanan yang AWS terintegrasi dengannya. AWS KMS](https://aws.amazon.com/kms/features/#AWS_Service_Integration) Kondisi GrantIsFor AWSResource kebijakan [kms:](conditions-kms.md#conditions-kms-grant-is-for-aws-resource) tidak memungkinkan pengguna untuk memanggil operasi hibah ini secara langsung. Ketika pengguna kunci mengizinkannya, AWS layanan dapat membuat hibah atas nama pengguna yang memungkinkan layanan menggunakan kunci KMS untuk melindungi data pengguna. 

Pengguna kunci memerlukan izin hibah ini untuk menggunakan kunci KMS mereka dengan layanan terintegrasi, tetapi izin ini tidak cukup. Pengguna kunci juga memerlukan izin untuk menggunakan layanan terintegrasi. Untuk detail tentang memberi pengguna akses ke AWS layanan yang terintegrasi dengan AWS KMS, lihat dokumentasi untuk layanan terintegrasi.

```
{
  "Sid": "Allow attachment of persistent resources",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"},
  "Action": [
    "kms:CreateGrant",
    "kms:ListGrants",
    "kms:RevokeGrant"
  ],
  "Resource": "*",
  "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}
}
```

Misalnya, pengguna kunci dapat menggunakan izin ini pada kunci KMS dengan cara berikut.
+ Gunakan kunci KMS ini dengan Amazon Elastic Block Store (Amazon EBS) Block Store (Amazon EBS) dan Amazon Elastic Compute Cloud (Amazon EC2) untuk melampirkan volume EBS terenkripsi ke instans EC2. Pengguna kunci secara implisit memberikan izin Amazon EC2 untuk menggunakan kunci KMS untuk melampirkan volume terenkripsi ke instance. Untuk informasi selengkapnya, lihat [Bagaimana Amazon Elastic Block Store (Amazon EBS) menggunakan AWS KMS](services-ebs.md).
+ Gunakan kunci KMS ini dengan Amazon Redshift untuk meluncurkan cluster terenkripsi. Pengguna kunci secara implisit memberikan izin Amazon Redshift untuk menggunakan kunci KMS untuk meluncurkan cluster terenkripsi dan membuat snapshot terenkripsi. Untuk informasi selengkapnya, lihat [Bagaimana Amazon Redshift menggunakan AWS KMS](services-redshift.md).
+ Gunakan kunci KMS ini dengan [AWS layanan lain AWS KMS yang terintegrasi dengan](service-integration.md) hibah penggunaan untuk membuat, mengelola, atau menggunakan sumber daya terenkripsi dengan layanan tersebut.

Kebijakan kunci default memungkinkan pengguna kunci untuk mendelegasikan izin hibah mereka ke *semua* layanan terintegrasi yang menggunakan hibah. Namun, Anda dapat membuat kebijakan kunci khusus yang membatasi izin ke AWS layanan tertentu. Untuk informasi selengkapnya, lihat kunci syarat [km: ViaService](conditions-kms.md#conditions-kms-via-service).

# Melihat kebijakan utama
<a name="key-policy-viewing"></a>

Anda dapat melihat kebijakan kunci untuk [kunci yang dikelola AWS KMS pelanggan](concepts.md#customer-mgn-key) atau [Kunci yang dikelola AWS](concepts.md#aws-managed-key)di akun Anda dengan menggunakan AWS KMS konsol atau [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html)operasi di AWS KMS API. Anda tidak dapat menggunakan teknik ini untuk melihat kebijakan kunci kunci KMS secara berbeda Akun AWS. 

Untuk mempelajari lebih lanjut tentang kebijakan AWS KMS utama, lihat[Kebijakan utama di AWS KMS](key-policies.md). Untuk mempelajari cara menentukan pengguna dan peran mana yang memiliki akses ke kunci KMS, lihat[Menentukan akses ke AWS KMS keys](determining-access.md).

## Menggunakan AWS KMS konsol
<a name="key-policy-viewing-console"></a>

Pengguna yang berwenang dapat melihat kebijakan kunci untuk [kunci terkelola [Kunci yang dikelola AWS](concepts.md#aws-managed-key)atau pelanggan](concepts.md#customer-mgn-key) pada tab **Kebijakan kunci** pada Konsol Manajemen AWS. 

Untuk melihat kebijakan kunci untuk kunci KMS di Konsol Manajemen AWS, Anda harus memiliki izin kms:, [kms: ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)DescribeKey, dan [[kms](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html):](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html). GetKeyPolicy

1. Masuk ke Konsol Manajemen AWS dan buka konsol AWS Key Management Service (AWS KMS) di [https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms).

1. Untuk mengubah Wilayah AWS, gunakan pemilih Wilayah di sudut kanan atas halaman.

1. 

   Untuk melihat kunci di akun Anda yang AWS membuat dan mengelola untuk Anda, di panel navigasi, pilih **kunci AWS terkelola**. Untuk melihat tombol di akun yang Anda buat dan kelola, di panel navigasi pilih **CMK**.

1. Dalam daftar kunci KMS, pilih alias atau ID kunci dari kunci KMS yang ingin Anda periksa.

1. Pilih tab **Kebijakan kunci**.

   Pada tab **Kebijakan kunci**, Anda mungkin melihat dokumen kebijakan kunci. Ini adalah *tampilan kebijakan*. Dalam pernyataan kebijakan utama, Anda dapat melihat kepala sekolah yang telah diberi akses ke kunci KMS oleh kebijakan utama, dan Anda dapat melihat tindakan yang dapat mereka lakukan.

   Contoh berikut menunjukkan tampilan kebijakan untuk [kebijakan kunci default](key-policy-default.md).   
![\[Tampilan kebijakan kunci default dalam tampilan kebijakan di AWS KMS konsol\]](http://docs.aws.amazon.com/id_id/kms/latest/developerguide/images/console-key-policy-view.png)

   **Atau, jika Anda membuat kunci KMS di Konsol Manajemen AWS, Anda akan melihat *tampilan default* dengan bagian untuk **administrator Kunci**, **Penghapusan kunci**, dan Pengguna Kunci.** Untuk melihat dokumen kebijakan kunci, pilih **Beralih ke tampilan kebijakan**.

   Contoh berikut menunjukkan tampilan default untuk [kebijakan kunci default](key-policy-default.md).   
![\[Tampilan kebijakan kunci default dalam tampilan default di AWS KMS konsol\]](http://docs.aws.amazon.com/id_id/kms/latest/developerguide/images/console-key-policy-full-vsm.png)

## Menggunakan AWS KMS API
<a name="key-policy-viewing-api"></a>

Untuk mendapatkan kebijakan kunci untuk kunci KMS di Anda Akun AWS, gunakan [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html)operasi di AWS KMS API. Anda tidak dapat menggunakan operasi ini untuk melihat kebijakan kunci di akun yang berbeda.

Contoh berikut menggunakan [get-key-policy](https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html)perintah di AWS Command Line Interface (AWS CLI), tetapi Anda dapat menggunakan AWS SDK apa pun untuk membuat permintaan ini. 

Perlu diingat bahwa parameter `PolicyName` diperlukan meskipun `default` adalah satu-satunya nilai yang valid. Selain itu, perintah ini meminta output dalam teks, bukan JSON, agar lebih mudah dilihat.

Sebelum menjalankan perintah ini, ganti contoh ID kunci dengan ID yang valid dari akun Anda.

```
$ aws kms get-key-policy --key-id 1234abcd-12ab-34cd-56ef-1234567890ab --policy-name default --output text
```

Respons harus serupa dengan berikut ini, yang mengembalikan [kebijakan kunci default](key-policy-default.md).

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Id" : "key-consolepolicy-3",
  "Statement" : [ {
  "Sid" : "EnableIAMUserPermissions",
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : "arn:aws:iam::111122223333:root"
    },
    "Action" : "kms:*",
    "Resource" : "*"
  } ]
}
```

------

# Mengubah kebijakan utama
<a name="key-policy-modifying"></a>

Anda dapat mengubah kebijakan kunci untuk kunci KMS di Anda Akun AWS dengan menggunakan Konsol Manajemen AWS atau [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)operasi. Anda tidak dapat menggunakan teknik ini untuk mengubah kebijakan kunci kunci KMS dengan cara yang berbeda Akun AWS.

Saat mengubah kebijakan kunci, perhatikan aturan berikut:
+ Anda dapat melihat kebijakan kunci untuk [kunci yang dikelola pelanggan](concepts.md#customer-mgn-key), tetapi Anda hanya dapat mengubah kebijakan kunci untuk kunci yang dikelola pelanggan. [Kunci yang dikelola AWS](concepts.md#aws-managed-key) Kebijakan Kunci yang dikelola AWS dibuat dan dikelola oleh AWS layanan yang membuat kunci KMS di akun Anda. Anda tidak dapat melihat atau mengubah kebijakan kunci untuk file [Kunci milik AWS](concepts.md#aws-owned-key).
+ Anda dapat menambahkan atau menghapus pengguna IAM, peran IAM, dan Akun AWS dalam kebijakan utama, dan mengubah tindakan yang diizinkan atau ditolak untuk prinsipal tersebut. Untuk informasi selengkapnya tentang cara menentukan perwakilan dan izin dalam kebijakan kunci, lihat [Kebijakan utama](key-policies.md).
+ Anda tidak dapat menambahkan grup IAM ke kebijakan utama, tetapi Anda dapat menambahkan beberapa pengguna IAM dan peran IAM. Untuk informasi selengkapnya, lihat [Mengizinkan beberapa prinsipal IAM untuk mengakses kunci KMS](iam-policies.md#key-policy-modifying-multiple-iam-users).
+ Jika Anda menambahkan eksternal Akun AWS ke kebijakan utama, Anda juga harus menggunakan kebijakan IAM di akun eksternal untuk memberikan izin kepada pengguna, grup, atau peran IAM di akun tersebut. Untuk informasi selengkapnya, lihat [Memungkinkan pengguna di akun lain untuk menggunakan kunci KMS](key-policy-modifying-external-accounts.md).
+ Dokumen kebijakan kunci yang dihasilkan tidak dapat melebihi 32 KB (32.768 byte).

## Cara mengubah kebijakan kunci
<a name="key-policy-modifying-how-to"></a>

Anda dapat mengubah kebijakan kunci dalam tiga cara berbeda seperti yang dijelaskan di bagian berikut.

**Topics**
+ [Menggunakan tampilan Konsol Manajemen AWS default](#key-policy-modifying-how-to-console-default-view)
+ [Menggunakan tampilan Konsol Manajemen AWS kebijakan](#key-policy-modifying-how-to-console-policy-view)
+ [Menggunakan AWS KMS API](#key-policy-modifying-how-to-api)

### Menggunakan tampilan Konsol Manajemen AWS default
<a name="key-policy-modifying-how-to-console-default-view"></a>

Anda dapat menggunakan konsol tersebut untuk mengubah kebijakan kunci dengan antarmuka grafis yang disebut *tampilan default*.

Jika langkah-langkah berikut tidak cocok dengan apa yang Anda lihat di konsol tersebut, mungkin berarti kebijakan kunci ini tidak dibuat oleh konsol tersebut. Atau mungkin berarti bahwa kebijakan kunci telah diubah dengan cara yang tidak didukung oleh tampilan default konsol tersebut. Dalam hal ini, ikuti langkah-langkah di [Menggunakan tampilan Konsol Manajemen AWS kebijakan](#key-policy-modifying-how-to-console-policy-view) atau [Menggunakan AWS KMS API](#key-policy-modifying-how-to-api).

1. Lihat kebijakan kunci untuk kunci terkelola pelanggan seperti yang dijelaskan dalam[Menggunakan AWS KMS konsol](key-policy-viewing.md#key-policy-viewing-console). (Anda tidak dapat mengubah kebijakan utama Kunci yang dikelola AWS.)

1. Menentukan hal yang harus diubah.
   + Untuk menambah atau menghapus [administrator kunci](key-policy-default.md#key-policy-default-allow-administrators), dan untuk mengizinkan atau mencegah administrator kunci [menghapus kunci KMS](deleting-keys.md), gunakan kontrol di bagian **Administrator kunci halaman**. [Administrator kunci mengelola kunci KMS, termasuk mengaktifkan dan menonaktifkannya, menetapkan kebijakan kunci, dan mengaktifkan rotasi kunci.](rotate-keys.md)
   + Untuk menambah atau menghapus [pengguna kunci](key-policy-default.md#key-policy-default-allow-users), dan untuk mengizinkan atau melarang eksternal Akun AWS menggunakan kunci KMS, gunakan kontrol di bagian **Pengguna kunci** halaman. Pengguna kunci dapat menggunakan kunci KMS dalam [operasi kriptografi](kms-cryptography.md#cryptographic-operations), seperti mengenkripsi, mendekripsi, mengenkripsi ulang, dan menghasilkan kunci data.

### Menggunakan tampilan Konsol Manajemen AWS kebijakan
<a name="key-policy-modifying-how-to-console-policy-view"></a>

Anda dapat menggunakan konsol tersebut untuk mengubah dokumen kebijakan kunci dengan *tampilan kebijakan* konsol tersebut.

1. Lihat kebijakan kunci untuk kunci terkelola pelanggan seperti yang dijelaskan dalam[Menggunakan AWS KMS konsol](key-policy-viewing.md#key-policy-viewing-console). (Anda tidak dapat mengubah kebijakan utama Kunci yang dikelola AWS.)

1. Di bagian **Kebijakan Kunci**, pilih **Beralih ke tampilan kebijakan**.

1. Pilih **Edit**.

1. Menentukan hal yang harus diubah.
   + Untuk menambahkan pernyataan baru, pilih **Tambahkan pernyataan baru**. Kemudian, Anda dapat memilih tindakan, prinsip, dan kondisi untuk pernyataan kebijakan kunci baru Anda dari opsi yang tercantum di panel pembuat pernyataan, atau memasukkan elemen pernyataan kebijakan secara manual.
   + Untuk menghapus pernyataan dari kebijakan utama Anda, pilih pernyataan, lalu pilih **Hapus**. Tinjau pernyataan kebijakan yang dipilih dan konfirmasikan bahwa Anda ingin menghapusnya. Jika Anda memutuskan bahwa Anda tidak ingin melanjutkan dengan menghapus pernyataan, pilih **Batal**.
   + Untuk mengedit pernyataan kebijakan kunci yang ada, pilih pernyataan tersebut. Kemudian, Anda dapat menggunakan panel pembuat pernyataan untuk memilih elemen tertentu yang ingin Anda modifikasi, atau mengedit pernyataan secara manual.

1. Pilih **Simpan perubahan**.

### Menggunakan AWS KMS API
<a name="key-policy-modifying-how-to-api"></a>

Anda dapat menggunakan [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)operasi untuk mengubah kebijakan kunci kunci KMS di Anda Akun AWS. Anda tidak dapat menggunakan API ini pada kunci KMS yang berbeda Akun AWS.

1. Gunakan [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html)operasi untuk mendapatkan dokumen kebijakan kunci yang ada, lalu simpan dokumen kebijakan kunci ke file. Untuk kode sampel dalam beberapa bahasa pemrograman, lihat [Gunakan `GetKeyPolicy` dengan AWS SDK atau CLI](example_kms_GetKeyPolicy_section.md).

1. Buka dokumen kebijakan kunci di editor teks pilihan Anda, edit dokumen kebijakan kunci, lalu simpan file.

1. Gunakan [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)operasi untuk menerapkan dokumen kebijakan kunci yang diperbarui ke kunci KMS. Untuk kode sampel dalam beberapa bahasa pemrograman, lihat [Gunakan `PutKeyPolicy` dengan AWS SDK atau CLI](example_kms_PutKeyPolicy_section.md).

Untuk contoh menyalin kebijakan kunci dari satu kunci KMS ke kunci lainnya, lihat [GetKeyPolicy contoh](https://docs.aws.amazon.com/cli/latest/reference/kms/get-key-policy.html#examples) di AWS CLI Command Reference.

# Izin untuk AWS layanan dalam kebijakan utama
<a name="key-policy-services"></a>

Banyak AWS layanan digunakan AWS KMS keys untuk melindungi sumber daya yang mereka kelola. Ketika suatu layanan menggunakan [Kunci milik AWS](concepts.md#aws-owned-key)atau [Kunci yang dikelola AWS](concepts.md#aws-managed-key), layanan menetapkan dan memelihara kebijakan utama untuk kunci KMS ini. 

Namun, ketika Anda menggunakan [kunci yang dikelola pelanggan](concepts.md#customer-mgn-key) dengan AWS layanan, Anda menetapkan dan mempertahankan kebijakan kunci. Kebijakan utama tersebut harus mengizinkan layanan izin minimum yang diperlukan untuk melindungi sumber daya atas nama Anda. Kami menyarankan Anda mengikuti prinsip hak istimewa paling sedikit: berikan layanan hanya izin yang diperlukan. Anda dapat melakukannya secara efektif dengan mempelajari izin mana yang dibutuhkan layanan dan menggunakan [kunci kondisi AWS global dan kunci AWS KMS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) [kondisi](policy-conditions.md) untuk menyempurnakan izin. 

Untuk menemukan izin yang diperlukan layanan pada kunci terkelola pelanggan, lihat dokumentasi enkripsi untuk layanan tersebut. Daftar berikut mencakup tautan ke beberapa dokumentasi layanan:
+ **AWS CloudTrail**izin - [Konfigurasikan kebijakan AWS KMS utama](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/create-kms-key-policy-for-cloudtrail.html#create-kms-key-policy-for-cloudtrail-decrypt) untuk CloudTrail
+ Izin **Amazon Elastic Block Store** - Panduan Pengguna [Amazon EC2 dan Panduan Pengguna](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html#ebs-encryption-permissions) Amazon [EC2](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/EBSEncryption.html#ebs-encryption-permissions)
+ **AWS Lambda**izin - [Enkripsi data saat istirahat untuk](https://docs.aws.amazon.com/lambda/latest/dg/security-encryption-at-rest.html) Lambda
+ Izin **Amazon Q** - [Enkripsi data untuk Amazon](https://docs.aws.amazon.com/amazonq/latest/qbusiness-ug/data-encryption.html) Q
+ [Izin Layanan **Amazon Relational Database** Service - manajemen AWS KMS kunci](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.Encryption.Keys.html)
+ **AWS Secrets Manager**izin - [Otorisasi penggunaan kunci KMS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html#security-encryption-authz)
+ Izin **Layanan Antrian Sederhana Amazon** - Manajemen Kunci [Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html)

# Menggunakan kebijakan IAM dengan AWS KMS
<a name="iam-policies"></a>

Anda dapat menggunakan kebijakan IAM, bersama dengan [kebijakan utama](key-policies.md), [hibah](grants.md), dan [kebijakan titik akhir VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#edit-vpc-endpoint-policy), untuk mengontrol akses ke akun Anda. AWS KMS keys AWS KMS

**catatan**  
Untuk menggunakan kebijakan IAM untuk mengontrol akses ke kunci KMS, kebijakan kunci untuk kunci KMS harus memberikan izin akun untuk menggunakan kebijakan IAM. Khususnya, kebijakan kunci harus menyertakan [pernyataan kebijakan yang mengaktifkan kebijakan IAM](key-policy-default.md#key-policy-default-allow-root-enable-iam).  
Bagian ini menjelaskan cara menggunakan kebijakan IAM untuk mengontrol akses ke AWS KMS operasi. Untuk informasi umum tentang IAM, lihat [Panduan Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/).

Semua kunci KMS harus memiliki kebijakan kunci. Kebijakan IAM bersifat opsional. Untuk menggunakan kebijakan IAM untuk mengontrol akses ke kunci KMS, kebijakan kunci untuk kunci KMS harus memberikan izin akun untuk menggunakan kebijakan IAM. Khususnya, kebijakan kunci harus menyertakan [pernyataan kebijakan yang mengaktifkan kebijakan IAM](key-policy-default.md#key-policy-default-allow-root-enable-iam).

Kebijakan IAM dapat mengontrol akses ke AWS KMS operasi apa pun. Tidak seperti kebijakan utama, kebijakan IAM dapat mengontrol akses ke beberapa kunci KMS dan memberikan izin untuk operasi beberapa layanan terkait. AWS Tetapi kebijakan IAM sangat berguna untuk mengendalikan akses ke operasi, seperti [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html), yang tidak dapat dikendalikan oleh kebijakan utama karena mereka tidak melibatkan kunci KMS tertentu.

Jika Anda mengakses AWS KMS melalui titik akhir Amazon Virtual Private Cloud (Amazon VPC), Anda juga dapat menggunakan kebijakan titik akhir VPC untuk membatasi akses ke sumber daya saat menggunakan titik akhir. AWS KMS Misalnya, saat menggunakan titik akhir VPC, Anda mungkin hanya mengizinkan prinsipal di Anda Akun AWS untuk mengakses kunci terkelola pelanggan Anda. Untuk detailnya, lihat [kebijakan titik akhir VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#edit-vpc-endpoint-policy).

Untuk mendapatkan bantuan mengenai cara menulis dan memformat dokumen kebijakan JSON, lihat [Referensi Kebijakan IAM JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) dalam *Panduan Pengguna IAM*.

Anda dapat menggunakan kebijakan IAM dengan cara berikut:
+ **Melampirkan kebijakan izin ke peran untuk izin federasi atau lintas akun** – Anda dapat melampirkan kebijakan IAM untuk IAM role untuk mengaktifkan federasi identitas, mengizinkan izin lintas-akun, atau memberikan izin untuk aplikasi yang berjalan pada instans EC2. Untuk informasi selengkapnya tentang berbagai kasus penggunaan IAM role, lihat [IAM Role](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) dalam *Panduan Pengguna IAM*.
+ **Melampirkan kebijakan izin ke pengguna atau grup** — Anda dapat melampirkan kebijakan yang memungkinkan pengguna atau grup pengguna untuk memanggil AWS KMS operasi. Namun, praktik terbaik IAM merekomendasikan agar Anda menggunakan identitas dengan kredensi sementara, seperti peran IAM, bila memungkinkan.

Contoh berikut menunjukkan kebijakan IAM dengan AWS KMS izin. Kebijakan ini memungkinkan identitas IAM yang dilampirkan untuk mencantumkan semua kunci dan alias KMS.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:ListKeys",
      "kms:ListAliases"
    ],
    "Resource": "*"
  }
}
```

------

Seperti semua kebijakan IAM, kebijakan ini tidak memiliki elemen `Principal`. Saat Anda melampirkan kebijakan IAM ke identitas IAM, identitas tersebut akan mendapatkan izin yang ditentukan dalam kebijakan tersebut.

Untuk tabel yang menunjukkan semua tindakan AWS KMS API dan sumber daya yang diterapkan, lihat[Referensi izin](kms-api-permissions-reference.md).

## Mengizinkan beberapa prinsipal IAM untuk mengakses kunci KMS
<a name="key-policy-modifying-multiple-iam-users"></a>

Grup IAM bukan perwakilan yang valid dalam kebijakan kunci. Untuk memungkinkan beberapa pengguna dan peran mengakses kunci KMS, lakukan salah satu hal berikut:
+ Gunakan peran IAM sebagai prinsipal dalam kebijakan kunci. Beberapa pengguna yang berwenang dapat mengambil peran sesuai kebutuhan. Untuk detailnya, lihat [peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) di *Panduan Pengguna IAM*.

  Meskipun Anda dapat mencantumkan beberapa pengguna IAM dalam kebijakan utama, praktik ini tidak disarankan karena mengharuskan Anda memperbarui kebijakan kunci setiap kali daftar pengguna yang berwenang berubah. Selain itu, praktik terbaik IAM mencegah penggunaan pengguna IAM dengan kredensi jangka panjang. Untuk detailnya, lihat [Praktik terbaik keamanan di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) di *Panduan Pengguna IAM*.
+ Gunakan kebijakan IAM untuk memberikan izin kepada grup IAM. Untuk melakukan ini, pastikan bahwa kebijakan kunci mencakup pernyataan yang [memungkinkan kebijakan IAM untuk mengizinkan akses ke kunci KMS](key-policy-default.md#key-policy-default-allow-root-enable-iam), [membuat kebijakan IAM yang](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#create-managed-policy-console) memungkinkan akses ke kunci KMS, dan kemudian [melampirkan kebijakan itu ke grup IAM yang berisi pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console) yang berwenang. Dengan menggunakan pendekatan ini, Anda tidak perlu mengubah kebijakan apa pun ketika daftar pengguna yang diotorisasi berubah. Sebaliknya, Anda hanya perlu menambahkan atau menghapus pengguna tersebut dari grup IAM yang sesuai. Untuk detailnya, lihat [grup pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) di Panduan Pengguna *IAM*

Untuk informasi selengkapnya tentang cara kerja kebijakan AWS KMS utama dan kebijakan IAM, lihat[Izin pemecahan masalah AWS KMS](policy-evaluation.md).

# Praktik terbaik untuk kebijakan IAM
<a name="iam-policies-best-practices"></a>

Mengamankan akses ke AWS KMS keys sangat penting untuk keamanan semua sumber AWS daya Anda. Kunci KMS digunakan untuk melindungi banyak sumber daya paling sensitif di Anda Akun AWS. Luangkan waktu untuk merancang [kebijakan utama, kebijakan](key-policies.md) IAM, [hibah](grants.md), dan kebijakan titik akhir VPC yang mengontrol akses ke kunci KMS Anda.

Dalam pernyataan kebijakan IAM yang mengontrol akses ke kunci KMS, gunakan prinsip yang [paling tidak memiliki hak istimewa](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege). Berikan kepala sekolah IAM hanya izin yang mereka butuhkan hanya pada kunci KMS yang harus mereka gunakan atau kelola. 

Praktik terbaik berikut berlaku untuk kebijakan IAM yang mengontrol akses ke AWS KMS kunci dan alias. Untuk panduan praktik terbaik kebijakan IAM umum, lihat [Praktik terbaik keamanan di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) di Panduan Pengguna *IAM*.

**Gunakan kebijakan kunci**  
Jika memungkinkan, berikan izin dalam kebijakan utama yang memengaruhi satu kunci KMS, bukan dalam kebijakan IAM yang dapat diterapkan ke banyak kunci KMS, termasuk yang lain. Akun AWS Ini sangat penting untuk izin sensitif seperti [kms: PutKeyPolicy dan [kms: ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) tetapi juga untuk operasi kriptografi yang menentukan bagaimana data Anda dilindungi.

**Batasi CreateKey izin**  
Berikan izin untuk membuat kunci ([kms: CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)) hanya untuk kepala sekolah yang membutuhkannya. Prinsipal yang membuat kunci KMS juga menetapkan kebijakan utamanya, sehingga mereka dapat memberi diri mereka sendiri dan orang lain izin untuk menggunakan dan mengelola kunci KMS yang mereka buat. Jika Anda mengizinkan izin ini, pertimbangkan untuk membatasinya menggunakan [syarat kebijakan](policy-conditions.md). Misalnya, Anda dapat menggunakan KeySpec kondisi [kms:](conditions-kms.md#conditions-kms-key-spec) untuk membatasi izin ke kunci KMS enkripsi simetris.

**Tentukan kunci KMS dalam kebijakan IAM**  
Sebagai praktik terbaik, tentukan [ARN kunci](concepts.md#key-id-key-ARN) dari setiap kunci KMS yang izinnya berlaku dalam `Resource` elemen pernyataan kebijakan. Praktik ini membatasi izin ke kunci KMS yang dibutuhkan kepala sekolah. Misalnya, `Resource` elemen ini hanya mencantumkan kunci KMS yang perlu digunakan oleh prinsipal.  

```
"Resource": [
    "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
    "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321"
]
```
Saat menentukan kunci KMS tidak praktis, gunakan `Resource` nilai yang membatasi akses ke kunci KMS di tepercaya Akun AWS dan Wilayah, seperti. `arn:aws:kms:region:account:key/*` Atau batasi akses ke kunci KMS di semua Wilayah (\$1) yang terpercaya Akun AWS, seperti`arn:aws:kms:*:account:key/*`.  
Anda tidak dapat menggunakan [ID kunci](concepts.md#key-id-key-id), [nama alias](concepts.md#key-id-alias-name), atau [alias ARN](concepts.md#key-id-alias-ARN) untuk mewakili kunci KMS di `Resource` bidang kebijakan IAM. Jika Anda menentukan alias ARN, kebijakan berlaku untuk alias, bukan ke kunci KMS. Untuk informasi tentang kebijakan IAM alias, lihat [Mengontrol akses ke alias](alias-access.md)

**Hindari "Sumber Daya": "\$1" dalam kebijakan IAM**  <a name="avoid-resource-star"></a>
Gunakan karakter kartubebas (\$1) dengan bijaksana. Dalam kebijakan kunci, karakter wildcard dalam `Resource` elemen mewakili kunci KMS tempat kebijakan kunci dilampirkan. Namun dalam kebijakan IAM, karakter wildcard saja di `Resource` element (`"Resource": "*"`) menerapkan izin ke semua kunci KMS di semua Akun AWS yang diizinkan oleh akun prinsipal untuk digunakan. Ini mungkin termasuk [kunci KMS di lain Akun AWS](key-policy-modifying-external-accounts.md), serta kunci KMS di akun kepala sekolah.  
Misalnya, untuk menggunakan kunci KMS di akun lain Akun AWS, kepala sekolah memerlukan izin dari kebijakan kunci KMS di akun eksternal, dan dari kebijakan IAM di akun mereka sendiri. Misalkan akun arbitrer memberikan izin Akun AWS [KMS: Decrypt Anda pada kunci KMS](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) mereka. Jika demikian, kebijakan IAM di akun Anda yang memberikan `kms:Decrypt` izin peran pada semua kunci KMS (`"Resource": "*"`) akan memenuhi bagian IAM dari persyaratan tersebut. Akibatnya, kepala sekolah yang dapat mengasumsikan peran itu sekarang dapat mendekripsi ciphertext menggunakan kunci KMS di akun yang tidak tepercaya. Entri untuk operasi mereka muncul di CloudTrail log kedua akun.  
Secara khusus, hindari penggunaan `"Resource": "*"` dalam pernyataan kebijakan yang mengizinkan operasi API berikut. Operasi ini dapat dipanggil pada kunci KMS di lain Akun AWS.  
+ [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [GetKeyRotationStatus](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyRotationStatus.html)
+ [Operasi kriptografi](kms-cryptography.md#cryptographic-operations) [https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html)
+ [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html), [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html), [ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListRetirableGrants.html), [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html), [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)

**Waktu menggunakan "Sumber Daya": "\$1"**  <a name="require-resource-star"></a>
Dalam kebijakan IAM, gunakan karakter kartubebas di elemen `Resource` hanya untuk izin yang memerlukannya. Hanya izin berikut yang memerlukan elemen `"Resource": "*"`.  
+ [km: CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)
+ [km: GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html)
+ [km: ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)
+ [km: ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)
+ Izin untuk toko kunci khusus, seperti [kms: CreateCustomKeyStore dan [kms](https://docs.aws.amazon.com/kms/latest/APIReference/API_ConnectCustomKeyStore.html):](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateCustomKeyStore.html). ConnectCustomKeyStore
Izin untuk operasi alias ([kms: CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html), [kms:UpdateAlias, [kms: DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateAlias.html)) harus dilampirkan ke alias dan kunci KMS. Anda dapat menggunakan `"Resource": "*"` dalam kebijakan IAM untuk mewakili alias dan kunci KMS, atau menentukan alias dan kunci KMS dalam elemen. `Resource` Sebagai contoh, lihat [Mengontrol akses ke alias](alias-access.md).

 

Contoh dalam topik ini memberikan lebih banyak informasi dan panduan untuk merancang kebijakan IAM untuk kunci KMS. Untuk praktik terbaik IAM untuk semua AWS sumber daya, lihat [Praktik terbaik keamanan di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) di Panduan Pengguna *IAM*.

# Menentukan kunci KMS dalam pernyataan kebijakan IAM
<a name="cmks-in-iam-policies"></a>

Anda dapat menggunakan kebijakan IAM untuk mengizinkan prinsipal menggunakan atau mengelola kunci KMS. Kunci KMS ditentukan dalam `Resource` elemen pernyataan kebijakan. 
+ Untuk menentukan kunci KMS dalam pernyataan kebijakan IAM, Anda harus menggunakan kunci [ARN](concepts.md#key-id-key-ARN). Anda tidak dapat menggunakan [ID kunci](concepts.md#key-id-key-id), [nama alias](concepts.md#key-id-alias-name), atau [alias ARN](concepts.md#key-id-alias-ARN) untuk mengidentifikasi kunci KMS dalam pernyataan kebijakan IAM. 

  Misalnya: "`Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`"

  Untuk mengontrol akses ke kunci KMS berdasarkan aliasnya, gunakan kunci kondisi [kms: RequestAlias atau [kms](conditions-kms.md#conditions-kms-resource-aliases):](conditions-kms.md#conditions-kms-request-alias). ResourceAliases Lihat perinciannya di [ABAC untuk AWS KMS](abac.md).

  Gunakan alias ARN sebagai sumber daya hanya dalam pernyataan kebijakan yang mengontrol akses ke operasi alias, [CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/CreateAlias.html)seperti [UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/UpdateAlias.html),, atau. [DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/DeleteAlias.html) Lihat perinciannya di [Mengontrol akses ke alias](alias-access.md).
+ Untuk menentukan beberapa kunci KMS di akun dan Wilayah, gunakan karakter wildcard (\$1) di wilayah atau posisi ID sumber daya ARN kunci. 

  Misalnya, untuk menentukan semua kunci KMS di Wilayah AS Barat (Oregon) akun, gunakan "”`Resource": "arn:aws:kms:us-west-2:111122223333:key/*`. Untuk menentukan semua kunci KMS di semua Wilayah akun, gunakan "`Resource": "arn:aws:kms:*:111122223333:key/*`”.
+ Untuk mewakili semua kunci KMS, gunakan karakter wildcard alone ()`"*"`. Gunakan format ini untuk operasi yang tidak menggunakan kunci KMS tertentu, yaitu, [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html), [GenerateRandom[ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html), dan [ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html).

Saat menulis pernyataan kebijakan Anda, [sebaiknya](iam-policies-best-practices.md) tentukan hanya kunci KMS yang perlu digunakan oleh prinsipal, daripada memberi mereka akses ke semua kunci KMS. 

Misalnya, pernyataan kebijakan IAM berikut memungkinkan prinsipal untuk memanggil [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html), [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), [Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) operasi hanya pada kunci KMS yang tercantum dalam `Resource` elemen pernyataan kebijakan. Menentukan kunci KMS dengan kunci ARN, yang merupakan praktik terbaik, memastikan bahwa izin hanya terbatas pada kunci KMS yang ditentukan.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:DescribeKey",
      "kms:GenerateDataKey",
      "kms:Decrypt"
    ],
    "Resource": [
     "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
     "arn:aws:kms:us-west-2:111122223333:key/01234abcd-12ab-34cd-56ef-1234567890ab"
    ]
  }
}
```

------

Untuk menerapkan izin ke semua kunci KMS di tepercaya tertentu Akun AWS, Anda dapat menggunakan karakter wildcard (\$1) di posisi Region dan ID kunci. Misalnya, pernyataan kebijakan berikut memungkinkan prinsipal untuk memanggil operasi yang ditentukan pada semua kunci KMS dalam dua akun contoh tepercaya.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:DescribeKey",
      "kms:GenerateDataKey",
      "kms:GenerateDataKeyPair"
    ],
    "Resource": [
      "arn:aws:kms:*:111122223333:key/*",
      "arn:aws:kms:*:444455556666:key/*"
    ]
  }
}
```

------

Anda juga dapat menggunakan karakter kartubebas (`"*"`) saja di elemen `Resource`. Karena memungkinkan akses ke semua kunci KMS akun memiliki izin untuk digunakan, disarankan terutama untuk operasi tanpa kunci KMS tertentu dan untuk `Deny` pernyataan. Anda juga dapat menggunakannya dalam pernyataan kebijakan yang mengizinkan operasi hanya baca yang sensitif. Untuk menentukan apakah AWS KMS operasi melibatkan kunci KMS tertentu, cari nilai **kunci KMS** di kolom **Sumber daya** tabel di. [AWS KMS izin](kms-api-permissions-reference.md)

Misalnya, pernyataan kebijakan berikut menggunakan `Deny` efek untuk melarang prinsipal menggunakan operasi tertentu pada kunci KMS apa pun. Ini menggunakan karakter wildcard dalam `Resource` elemen untuk mewakili semua kunci KMS.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": [
      "kms:CreateKey",
      "kms:PutKeyPolicy",
      "kms:CreateGrant",
      "kms:ScheduleKeyDeletion"
    ],
    "Resource": "*"
  }
}
```

------

Pernyataan kebijakan berikut menggunakan karakter wildcard saja untuk mewakili semua kunci KMS. Tetapi hanya memungkinkan operasi dan operasi read-only yang kurang sensitif yang tidak berlaku untuk kunci KMS tertentu.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:CreateKey",
      "kms:ListKeys",
      "kms:ListAliases",
      "kms:ListResourceTags"
    ],
    "Resource": "*"
  }
}
```

------

# Contoh kebijakan IAM
<a name="customer-managed-policies"></a>

Dalam bagian ini, Anda dapat menemukan contoh kebijakan IAM yang mengizinkan izin untuk berbagai tindakan AWS KMS .

**penting**  
Beberapa izin dalam kebijakan berikut hanya diizinkan jika kebijakan kunci KMS juga mengizinkannya. Untuk informasi selengkapnya, lihat [Referensi izin](kms-api-permissions-reference.md).

Untuk mendapatkan bantuan mengenai cara menulis dan memformat dokumen kebijakan JSON, lihat [Referensi Kebijakan IAM JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) dalam *Panduan Pengguna IAM*.

**Topics**
+ [Izinkan pengguna untuk melihat kunci KMS di konsol AWS KMS](#iam-policy-example-read-only-console)
+ [Izinkan pengguna untuk membuat kunci KMS](#iam-policy-example-create-key)
+ [Izinkan pengguna untuk mengenkripsi dan mendekripsi dengan kunci KMS apa pun secara spesifik Akun AWS](#iam-policy-example-encrypt-decrypt-one-account)
+ [Izinkan pengguna untuk mengenkripsi dan mendekripsi dengan kunci KMS apa pun di spesifik dan Wilayah Akun AWS](#iam-policy-example-encrypt-decrypt-one-account-one-region)
+ [Izinkan pengguna untuk mengenkripsi dan mendekripsi dengan kunci KMS tertentu](#iam-policy-example-encrypt-decrypt-specific-cmks)
+ [Mencegah pengguna menonaktifkan atau menghapus tombol KMS](#iam-policy-example-deny-disable-delete)

## Izinkan pengguna untuk melihat kunci KMS di konsol AWS KMS
<a name="iam-policy-example-read-only-console"></a>

Kebijakan IAM berikut memungkinkan pengguna akses hanya-baca ke konsol. AWS KMS Pengguna dengan izin ini dapat melihat semua kunci KMS di dalamnya Akun AWS, tetapi mereka tidak dapat membuat atau mengubah kunci KMS apa pun. 

Untuk melihat kunci KMS pada halaman **kunci yang dikelola Pelanggan **Kunci yang dikelola AWS**dan pelanggan**, prinsipal memerlukan GetResources izin [kms: ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html), [kms:, dan [tag: ListAliases](https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetResources.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html), meskipun kunci tidak memiliki tag atau alias. Izin yang tersisa, terutama [kms: DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html), diperlukan untuk melihat kolom tabel kunci KMS opsional dan data pada halaman detail kunci KMS. ListRolesIzin [iam: ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html) dan [iam:](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html) diperlukan untuk menampilkan kebijakan kunci dalam tampilan default tanpa kesalahan. [Untuk melihat data di halaman **toko kunci Kustom** dan detail tentang kunci KMS di toko kunci khusus, kepala sekolah juga memerlukan izin kms:. DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html)

Jika Anda membatasi akses konsol pengguna ke kunci KMS tertentu, konsol akan menampilkan kesalahan untuk setiap kunci KMS yang tidak terlihat. 

Kebijakan ini mencakup dua pernyataan kebijakan. `Resource`Elemen dalam pernyataan kebijakan pertama memungkinkan izin yang ditentukan pada semua kunci KMS di semua Wilayah contoh. Akun AWS Pemirsa konsol tidak memerlukan akses tambahan karena AWS KMS konsol hanya menampilkan kunci KMS di akun prinsipal. Ini benar bahkan jika mereka memiliki izin untuk melihat kunci KMS di lain Akun AWS. Izin yang tersisa AWS KMS dan IAM memerlukan `"Resource": "*"` elemen karena tidak berlaku untuk kunci KMS tertentu.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "ReadOnlyAccessForAllKMSKeysInAccount",
      "Effect": "Allow",
      "Action": [
        "kms:GetPublicKey",        
        "kms:GetKeyRotationStatus",
        "kms:GetKeyPolicy",
        "kms:DescribeKey",
        "kms:ListKeyPolicies",
        "kms:ListResourceTags",
        "tag:GetResources"
      ],
      "Resource": "arn:aws:kms:*:111122223333:key/*"
    },
    {
      "Sid": "ReadOnlyAccessForOperationsWithNoKMSKey",
      "Effect": "Allow",
      "Action": [
        "kms:ListKeys",
        "kms:ListAliases",
        "iam:ListRoles",
        "iam:ListUsers"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## Izinkan pengguna untuk membuat kunci KMS
<a name="iam-policy-example-create-key"></a>

Kebijakan IAM berikut memungkinkan pengguna untuk membuat semua jenis kunci KMS. Nilai `Resource` elemen adalah `*` karena `CreateKey` operasi tidak menggunakan AWS KMS sumber daya tertentu (kunci KMS atau alias).

Untuk membatasi pengguna pada jenis kunci KMS tertentu, gunakan kunci kondisi kms:, [kms: KeySpec](conditions-kms.md#conditions-kms-key-spec)KeyUsage, dan [[kms](conditions-kms.md#conditions-kms-key-origin):](conditions-kms.md#conditions-kms-key-usage). KeyOrigin

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "kms:CreateKey",
    "Resource": "*"
  }
}
```

------

Perwakilan yang membuat kunci mungkin memerlukan beberapa izin terkait.
+ **kms: PutKeyPolicy** — Kepala sekolah yang memiliki `kms:CreateKey` izin dapat mengatur kebijakan kunci awal untuk kunci KMS. Namun, `CreateKey` pemanggil harus memiliki PutKeyPolicy izin [kms:](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html), yang memungkinkan mereka mengubah kebijakan kunci KMS, atau mereka harus menentukan `BypassPolicyLockoutSafetyCheck` parameter`CreateKey`, yang tidak disarankan. `CreateKey`Penelepon bisa mendapatkan `kms:PutKeyPolicy` izin untuk kunci KMS dari kebijakan IAM atau mereka dapat menyertakan izin ini dalam kebijakan kunci kunci KMS yang mereka buat.
+ **kms: TagResource** — Untuk menambahkan tag ke kunci KMS selama `CreateKey` operasi, `CreateKey` penelepon harus memiliki TagResource izin [kms:](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html) dalam kebijakan IAM. Menyertakan izin ini dalam kebijakan kunci KMS baru tidak cukup. Namun, jika `CreateKey` pemanggil menyertakan `kms:TagResource` kebijakan kunci awal, mereka dapat menambahkan tag dalam panggilan terpisah setelah kunci KMS dibuat.
+ **kms: CreateAlias** — Prinsipal yang membuat kunci KMS di AWS KMS konsol harus memiliki CreateAlias izin [kms: pada kunci KMS](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html) dan pada alias. (Konsol tersebut membuat dua panggilan; ke `CreateKey` dan ke `CreateAlias`). Anda harus memberikan izin alias dalam kebijakan IAM. Anda dapat memberikan izin kunci KMS dalam kebijakan utama atau kebijakan IAM. Lihat perinciannya di [Mengontrol akses ke alias](alias-access.md).

Selain itu`kms:CreateKey`, kebijakan IAM berikut memberikan `kms:TagResource` izin pada semua kunci KMS di Akun AWS dan `kms:CreateAlias` izin pada semua alias yang akun. Ini juga menyertakan beberapa izin hanya baca berguna yang dapat diberikan hanya dalam kebijakan IAM. 

Kebijakan IAM ini tidak menyertakan izin `kms:PutKeyPolicy` atau izin lain yang dapat diatur dalam kebijakan kunci. Merupakan [praktik terbaik](iam-policies-best-practices.md) untuk menetapkan izin ini dalam kebijakan utama di mana izin tersebut berlaku secara eksklusif ke satu kunci KMS.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IAMPermissionsForParticularKMSKeys",
      "Effect": "Allow",
      "Action": "kms:TagResource",
      "Resource": "arn:aws:kms:*:111122223333:key/*"
    },
    {
      "Sid": "IAMPermissionsForParticularAliases",
      "Effect": "Allow",
      "Action": "kms:CreateAlias",
      "Resource": "arn:aws:kms:*:111122223333:alias/*"
    },
    {
      "Sid": "IAMPermissionsForAllKMSKeys",
      "Effect": "Allow",
      "Action": [
        "kms:CreateKey",
        "kms:ListKeys",
        "kms:ListAliases"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## Izinkan pengguna untuk mengenkripsi dan mendekripsi dengan kunci KMS apa pun secara spesifik Akun AWS
<a name="iam-policy-example-encrypt-decrypt-one-account"></a>

Kebijakan IAM berikut memungkinkan pengguna untuk mengenkripsi dan mendekripsi data dengan kunci KMS apa pun di 111122223333. Akun AWS 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Encrypt",
      "kms:Decrypt"
    ],
    "Resource": "arn:aws:kms:*:111122223333:key/*"
  }
}
```

------

## Izinkan pengguna untuk mengenkripsi dan mendekripsi dengan kunci KMS apa pun di spesifik dan Wilayah Akun AWS
<a name="iam-policy-example-encrypt-decrypt-one-account-one-region"></a>

Kebijakan IAM berikut memungkinkan pengguna untuk mengenkripsi dan mendekripsi data dengan kunci KMS apa pun Akun AWS `111122223333` di Wilayah AS Barat (Oregon).

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Encrypt",
      "kms:Decrypt"
    ],
    "Resource": [
      "arn:aws:kms:us-west-2:111122223333:key/*"
    ]
  }
}
```

------

## Izinkan pengguna untuk mengenkripsi dan mendekripsi dengan kunci KMS tertentu
<a name="iam-policy-example-encrypt-decrypt-specific-cmks"></a>

Kebijakan IAM berikut memungkinkan pengguna untuk mengenkripsi dan mendekripsi data dengan dua kunci KMS yang ditentukan dalam elemen. `Resource` Saat menentukan kunci KMS dalam pernyataan kebijakan IAM, Anda harus menggunakan kunci [ARN](concepts.md#key-id-key-ARN) dari kunci KMS.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:Encrypt",
      "kms:Decrypt"
    ],
    "Resource": [
      "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
      "arn:aws:kms:us-west-2:111122223333:key/01234abc-d12a-b34c-d56e-f1234567890a'"
    ]
  }
}
```

------

## Mencegah pengguna menonaktifkan atau menghapus tombol KMS
<a name="iam-policy-example-deny-disable-delete"></a>

Kebijakan IAM berikut mencegah pengguna menonaktifkan atau menghapus kunci KMS apa pun, bahkan ketika kebijakan IAM lain atau kebijakan kunci mengizinkan izin ini. Kebijakan yang secara eksplisit menolak izin menimpa semua kebijakan lain, meski kebijakan yang secara eksplisit memungkinkan izin yang sama. Untuk informasi selengkapnya, lihat [Izin pemecahan masalah AWS KMS](policy-evaluation.md).

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Deny",
    "Action": [
      "kms:DisableKey",
      "kms:ScheduleKeyDeletion"
    ],
    "Resource": "*"
  }
}
```

------

# Kebijakan pengendalian sumber daya di AWS KMS
<a name="resource-control-policies"></a>

Kebijakan pengendalian sumber daya (RCPs) adalah jenis kebijakan organisasi yang dapat Anda gunakan untuk menegakkan kontrol preventif pada AWS sumber daya di organisasi Anda. RCPs membantu Anda membatasi akses eksternal ke AWS sumber daya Anda secara terpusat dalam skala besar. RCPs melengkapi kebijakan kontrol layanan (SCPs). Sementara, SCPs dapat digunakan untuk mengatur izin maksimum secara terpusat pada peran IAM dan pengguna di organisasi Anda, RCPs dapat digunakan untuk secara terpusat menetapkan izin maksimum pada AWS sumber daya di organisasi Anda.

Anda dapat menggunakan RCPs untuk mengelola izin ke kunci KMS yang dikelola pelanggan di organisasi Anda. RCPs saja tidak cukup dalam memberikan izin ke kunci yang dikelola pelanggan Anda. Tidak ada izin yang diberikan oleh RCP. RCP mendefinisikan pagar pembatas izin, atau menetapkan batasan, pada tindakan yang dapat diambil identitas terhadap sumber daya di akun yang terpengaruh. Administrator harus tetap melampirkan kebijakan berbasis identitas ke peran IAM atau pengguna, atau kebijakan utama untuk benar-benar memberikan izin.

**catatan**  
Kebijakan pengendalian sumber daya di organisasi Anda tidak berlaku [Kunci yang dikelola AWS](concepts.md#aws-managed-key).  
Kunci yang dikelola AWS dibuat, dikelola, dan digunakan atas nama Anda oleh suatu AWS layanan, Anda tidak dapat mengubah atau mengelola izin mereka.

**Pelajari selengkapnya**
+ Untuk informasi lebih umum tentang RCPs, lihat [Kebijakan kontrol sumber daya](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) di *Panduan AWS Organizations Pengguna*.
+ Untuk detail tentang cara mendefinisikan RCPs, termasuk contoh, lihat [sintaks RCP](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps_syntax.html) di *AWS Organizations Panduan Pengguna*.

Contoh berikut menunjukkan cara menggunakan RCP untuk mencegah prinsipal eksternal mengakses kunci yang dikelola pelanggan di organisasi Anda. Kebijakan ini hanyalah contoh, dan Anda harus menyesuaikannya untuk memenuhi kebutuhan bisnis dan keamanan unik Anda. Misalnya, Anda mungkin ingin menyesuaikan kebijakan Anda untuk mengizinkan akses oleh mitra bisnis Anda. Untuk detail selengkapnya, lihat [repositori contoh kebijakan perimeter data](https://github.com/aws-samples/data-perimeter-policy-examples/tree/main/resource_control_policies).

**catatan**  
`kms:RetireGrant`Izin tidak efektif dalam RCP, bahkan jika `Action` elemen menentukan tanda bintang (\$1) sebagai wildcard.  
Untuk informasi selengkapnya tentang cara izin `kms:RetireGrant` ditentukan, lihat[Menghentikan dan mencabut pemberian izin](grant-delete.md).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RCPEnforceIdentityPerimeter",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "kms:*",
            "Resource": "*",
            "Condition": {
                "StringNotEqualsIfExists": {
                    "aws:PrincipalOrgID": "my-org-id"
                },
                "Bool": {
                    "aws:PrincipalIsAWSService": "false"
                }
            }
        }
    ]
}
```

------

Contoh RCP berikut mengharuskan prinsipal AWS layanan hanya dapat mengakses kunci KMS yang dikelola pelanggan Anda saat permintaan berasal dari organisasi Anda. Kebijakan ini menerapkan kontrol hanya pada permintaan yang `aws:SourceAccount` ada. Ini memastikan bahwa integrasi layanan yang tidak memerlukan penggunaan `aws:SourceAccount` tidak terpengaruh. Jika `aws:SourceAccount` ada dalam konteks permintaan, `Null` kondisi akan dievaluasi`true`, menyebabkan `aws:SourceOrgID` kunci ditegakkan.

Untuk informasi lebih lanjut tentang masalah wakil yang bingung, lihat [Masalah wakil yang bingung](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) di *Panduan Pengguna IAM*.

```
```

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "RCPEnforceConfusedDeputyProtection",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "kms:*",
            "Resource": "*",
            "Condition": {
                "StringNotEqualsIfExists": {
                    "aws:SourceOrgID": "my-org-id"
                },
                "Bool": {
                    "aws:PrincipalIsAWSService": "true"
                },
                "Null": {
                    "aws:SourceAccount": "false"
                }
            }
        }
    ]
}
```

------

# Hibah di AWS KMS
<a name="grants"></a>

*Hibah* adalah instrumen kebijakan yang memungkinkan [AWS prinsipal](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) untuk menggunakan kunci KMS dalam operasi kriptografi. Hal ini juga dapat membiarkan mereka melihat kunci KMS (`DescribeKey`) dan membuat dan mengelola hibah. [Saat mengotorisasi akses ke kunci KMS, hibah dipertimbangkan bersama dengan [kebijakan utama dan kebijakan IAM](key-policies.md).](iam-policies.md) Hibah sering digunakan untuk izin sementara karena Anda dapat membuatnya, menggunakan izinnya, dan menghapusnya tanpa mengubah kebijakan kunci atau kebijakan IAM.

Hibah biasanya digunakan oleh AWS layanan yang terintegrasi dengan AWS KMS untuk mengenkripsi data Anda saat istirahat. Layanan akan membuat pemberian izin atas nama pengguna di akun, menggunakan izinnya, dan menghentikan pemberian izin begitu tugasnya selesai. Untuk detail tentang cara AWS layanan, gunakan hibah, lihat topik *Enkripsi saat istirahat* di panduan pengguna atau panduan pengembang layanan.

Pemberian izin adalah mekanisme kontrol akses yang sangat fleksibel dan berguna. Saat Anda membuat hibah untuk kunci KMS, hibah memungkinkan kepala penerima hibah untuk memanggil operasi hibah yang ditentukan pada kunci KMS asalkan semua kondisi yang ditentukan dalam hibah terpenuhi. 
+ Setiap hibah memungkinkan akses ke tepat satu kunci KMS. Anda dapat membuat hibah untuk kunci KMS yang berbeda Akun AWS.
+ Hibah dapat memungkinkan akses ke kunci KMS, tetapi tidak menolak akses.
+ Setiap hibah memiliki satu [pokok hibah](#terms-grantee-principal). Prinsipal penerima hibah dapat mewakili satu atau lebih identitas yang Akun AWS sama dengan kunci KMS atau dalam akun yang berbeda.
+ Hibah hanya dapat memungkinkan [operasi hibah](#terms-grant-operations). Operasi hibah harus didukung oleh kunci KMS dalam hibah. Jika Anda menentukan operasi yang tidak didukung, [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)permintaan gagal dengan `ValidationError` pengecualian.
+ Prinsipal penerima hibah dapat menggunakan izin yang diberikan hibah kepada mereka tanpa menentukan hibah, sama seperti jika izin berasal dari kebijakan utama atau kebijakan IAM. Namun, karena AWS KMS API mengikuti model [konsistensi akhirnya](#terms-eventual-consistency), saat Anda membuat, menghentikan, atau mencabut hibah, mungkin ada penundaan singkat, sebelum perubahan tersedia secara keseluruhan. AWS KMS Untuk segera menggunakan izin dalam pemberian izin, [gunakan token izin](using-grant-token.md).
+ Kepala sekolah yang berwenang dapat menghapus hibah ([pensiun](#terms-retire-grant) [atau mencabutnya](#terms-revoke-grant)). Menghapus hibah menghilangkan semua izin yang diizinkan oleh hibah. Anda tidak perlu mencari tahu kebijakan mana yang akan ditambahkan atau dihapus untuk membatalkan hibah. 
+ AWS KMS membatasi jumlah hibah pada setiap kunci KMS. Lihat perinciannya di [Hibah per kunci KMS: 50.000](resource-limits.md#grants-per-key).

Berhati-hatilah saat membuat pemberian izin dan saat memberi izin kepada orang lain untuk membuat pemberian izin. Izin untuk membuat hibah memiliki implikasi keamanan, seperti mengizinkan PutKeyPolicy izin [kms:](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) untuk menetapkan kebijakan.
+ Pengguna dengan izin untuk membuat hibah untuk kunci KMS (`kms:CreateGrant`) dapat menggunakan hibah untuk memungkinkan pengguna dan peran, termasuk AWS layanan, untuk menggunakan kunci KMS. Kepala sekolah dapat berupa identitas Anda sendiri Akun AWS atau identitas di akun atau organisasi yang berbeda.
+ Hibah hanya dapat memungkinkan sebagian dari operasi. AWS KMS Anda dapat menggunakan hibah untuk memungkinkan prinsipal melihat kunci KMS, menggunakannya dalam operasi kriptografi, dan membuat dan menghentikan hibah. Untuk detailnya, lihat [Operasi pemberian izin](#terms-grant-operations). Anda juga dapat menggunakan [batasan hibah untuk membatasi](create-grant-overview.md#grant-constraints) izin dalam hibah untuk kunci enkripsi simetris.
+ Perwakilan bisa mendapatkan izin untuk membuat pemberian izin dari kebijakan kunci atau kebijakan IAM. Kepala sekolah yang mendapatkan `kms:CreateGrant` izin dari kebijakan dapat membuat hibah untuk [operasi hibah](#terms-grant-operations) apa pun pada kunci KMS. Prinsipal ini tidak diharuskan memiliki izin yang mereka berikan pada kunci. Saat Anda memberikan izin `kms:CreateGrant` dalam kebijakan, Anda dapat menggunakan [ketentuan kebijakan](grant-authorization.md) untuk membatasi izin ini.
+ Perwakilan juga bisa mendapatkan izin untuk membuat pemberian izin dari sebuah pemberian izin. Prinsipal ini hanya dapat mendelegasikan izin yang diberikan kepada mereka, meskipun mereka memiliki izin lain dari kebijakan. Lihat perinciannya di [Pemberian izin CreateGrant](create-grant-overview.md#grant-creategrant).

## Konsep hibah
<a name="grant-concepts"></a>

Untuk menggunakan pemberian izin secara efektif, Anda harus memahami istilah dan konsep yang digunakan AWS KMS . 

**Batas pemberian izin**  <a name="terms-grant-constraint"></a>
Syarat yang membatasi izin dalam pemberian izin. Saat ini, AWS KMS mendukung batasan hibah berdasarkan [konteks enkripsi](encrypt_context.md) dalam permintaan operasi kriptografi. Lihat perinciannya di [Menggunakan batas pemberian izin](create-grant-overview.md#grant-constraints).

**ID Pemberian izin**  <a name="terms-grant-id"></a>
Pengidentifikasi unik dari hibah untuk kunci KMS. Anda dapat menggunakan ID hibah, bersama dengan [pengenal kunci](concepts.md#key-id), untuk mengidentifikasi hibah dalam [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)permintaan [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)atau permintaan.

**Operasi pemberian izin**  <a name="terms-grant-operations"></a>
 AWS KMS Operasi yang dapat Anda izinkan dalam hibah. Jika Anda menentukan operasi lain, [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)permintaan gagal dengan `ValidationError` pengecualian. Ini juga merupakan operasi yang menerima [token izin](#grant_token). Untuk informasi selengkapnya tentang izin ini, lihat [AWS KMS izin](kms-api-permissions-reference.md).  
Operasi hibah ini sebenarnya mewakili izin untuk menggunakan operasi. Oleh karena itu, untuk operasi `ReEncrypt`, Anda dapat menentukan `ReEncryptFrom`, `ReEncryptTo`, atau kedua `ReEncrypt*`.  
Operasi pemberian izin adalah:  
+ Operasi kriptografi
  + [Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)
  + [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html)
  + [Enkripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)
  + [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)
  + [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)
  + [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html)
  + [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)
  + [GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html)
  + [ReEncryptFrom](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)
  + [ReEncryptTo](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)
  + [Tanda](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html)
  + [Verifikasi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html)
  + [VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html)
+ Operasi lainnya
  + [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)
  + [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
  + [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)
  + [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)
Operasi hibah yang Anda izinkan harus didukung oleh kunci KMS dalam hibah. Jika Anda menentukan operasi yang tidak didukung, [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)permintaan gagal dengan `ValidationError` pengecualian. Misalnya, hibah untuk kunci KMS enkripsi simetris tidak dapat mengizinkan [Tanda](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html), [Verifikasi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html), [https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html)atau operasi. [https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html) Hibah untuk kunci KMS asimetris tidak dapat mengizinkan operasi apa pun yang menghasilkan kunci data atau pasangan kunci data.

**Token izin**  <a name="grant_token"></a>
 AWS KMS API mengikuti model [konsistensi akhirnya](#terms-eventual-consistency). Saat Anda membuat hibah, mungkin ada penundaan singkat sebelum perubahan tersedia di seluruh AWS KMS. Biasanya diperlukan waktu kurang dari beberapa detik agar perubahan menyebar ke seluruh sistem, tetapi dalam beberapa kasus dapat memakan waktu beberapa menit. Jika Anda mencoba menggunakan hibah sebelum sepenuhnya menyebar melalui sistem, Anda mungkin mendapatkan kesalahan akses ditolak. Token izin memungkinkan Anda mengacu pada pemberian izin dan segera menggunakan izin pemberian izin.   
*Token hibah* adalah string unik, tidak rahasia, panjang variabel, berenkode base64 yang mewakili hibah. Anda dapat menggunakan token izin untuk mengidentifikasi pemberian izin dalam [operasi pemberian izin](#terms-grant-operations). Namun, karena nilai token merupakan intisari hash, nilai tersebut tidak mengungkap detail tentang pemberian izin.  
Token hibah dirancang untuk digunakan hanya sampai hibah telah sepenuhnya disebarkan. AWS KMS Setelah itu, [perwakilan penerima](#terms-grantee-principal) dapat menggunakan izin dalam pemberian izin tanpa memberikan token izin atau bukti izin lain. Anda dapat menggunakan token hibah kapan saja, tetapi setelah hibah pada akhirnya konsisten, AWS KMS gunakan hibah untuk menentukan izin, bukan token hibah.  
Misalnya, perintah berikut memanggil [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)operasi. Ini menggunakan token hibah untuk mewakili hibah yang memberikan izin kepada penelepon (prinsipal penerima hibah) untuk memanggil `GenerateDataKey` kunci KMS yang ditentukan.  

```
$ aws kms generate-data-key \
        --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
        --key-spec AES_256 \
        --grant-token $token
```
Anda juga dapat menggunakan token izin untuk mengidentifikasi pemberian izin dalam operasi yang mengelola pemberian izin. Misalnya, kepala [sekolah yang pensiun](#terms-retiring-principal) dapat menggunakan token hibah dalam panggilan ke [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)operasi.   

```
$ aws kms retire-grant \
        --grant-token $token
```
`CreateGrant` adalah satu-satunya operasi yang menampilkan token izin. Anda tidak bisa mendapatkan token hibah dari AWS KMS operasi lain atau dari [peristiwa CloudTrail log](ct-creategrant.md) untuk CreateGrant operasi. [ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListRetirableGrants.html)Operasi [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)dan mengembalikan [ID hibah](#terms-grant-id), tetapi bukan token hibah.  
Lihat perinciannya di [Menggunakan token izin](using-grant-token.md).

**Perwakilan penerima**  <a name="terms-grantee-principal"></a>
Identitas yang mendapatkan izin yang ditentukan dalam hibah. Setiap hibah memiliki satu pokok penerima hibah, tetapi pokok penerima hibah dapat mewakili banyak identitas.   
Prinsipal penerima hibah dapat berupa AWS prinsipal apa pun, termasuk Akun AWS (root), [pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html), peran [IAM, peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) atau pengguna [federasi, atau pengguna peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) yang diasumsikan. Pokok penerima hibah dapat berada di akun yang sama dengan kunci KMS atau akun yang berbeda. Namun, perwakilan penerima tidak boleh menjadi [perwakilan layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), [grup IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html), atau [AWS organisasi](https://docs.aws.amazon.com/organizations/latest/userguide/).  
Praktik terbaik IAM mencegah penggunaan pengguna IAM dengan kredensi 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*.

**Penghentian (pemberian izin)**  <a name="terms-retire-grant"></a>
Mengakhiri pemberian izin. Anda menghentikan hibah ketika Anda selesai menggunakan izin.  
Mencabut dan menghentikan pemberian izin akan menghapus pemberian izin tersebut. Namun penghentian dilakukan oleh perwakilan yang ditentukan dalam pemberian izin. Pencabutan biasanya dilakukan oleh administrator kunci. Untuk detail selengkapnya, lihat [Menghentikan dan mencabut pemberian izin](grant-delete.md).

**Perwakilan penghentian**  <a name="terms-retiring-principal"></a>
Perwakilan yang dapat [menghentikan pemberian izin](#terms-retire-grant). Anda dapat menentukan perwakilan penghentian dalam pemberian izin, tetapi tidak diperlukan. Prinsipal pensiun dapat berupa AWS prinsipal apa pun, termasuk Akun AWS, pengguna IAM, peran IAM, pengguna federasi, dan pengguna peran yang diasumsikan. Kepala sekolah yang pensiun dapat berada di akun yang sama dengan kunci KMS atau akun yang berbeda.  
Praktik terbaik IAM mencegah penggunaan pengguna IAM dengan kredensi 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*.
Selain pensiun kepala sekolah yang ditentukan dalam hibah, hibah dapat dipensiunkan oleh Akun AWS di mana hibah itu dibuat. Jika pemberian izin mengizinkan operasi `RetireGrant`, [perwakilan penerima](#terms-grantee-principal) dapat menghentikan pemberian izin. Juga, Akun AWS atau yang merupakan kepala sekolah Akun AWS yang pensiun dapat mendelegasikan izin untuk pensiun hibah kepada kepala sekolah IAM dalam hal yang sama. Akun AWS Lihat perinciannya di [Menghentikan dan mencabut pemberian izin](grant-delete.md).

**Mencabut (pemberian izin)**  <a name="terms-revoke-grant"></a>
Mengakhiri pemberian izin. Anda mencabut pemberian izin untuk secara aktif menolak izin yang diberikan pemberian izin.   
Mencabut dan menghentikan pemberian izin akan menghapus pemberian izin tersebut. Namun penghentian dilakukan oleh perwakilan yang ditentukan dalam pemberian izin. Pencabutan biasanya dilakukan oleh administrator kunci. Untuk detail selengkapnya, lihat [Menghentikan dan mencabut pemberian izin](grant-delete.md).

**Eventual consistency (untuk pemberian izin)**  <a name="terms-eventual-consistency"></a>
 AWS KMS API mengikuti model [konsistensi akhirnya](https://en.wikipedia.org/wiki/Eventual_consistency). Saat Anda membuat, pensiun, atau mencabut hibah, mungkin ada penundaan singkat sebelum perubahan tersedia secara keseluruhan. AWS KMS Biasanya diperlukan waktu kurang dari beberapa detik agar perubahan menyebar ke seluruh sistem, tetapi dalam beberapa kasus dapat memakan waktu beberapa menit.  
Anda mungkin menyadari penundaan singkat ini jika Anda mengalami kesalahan yang tidak terduga. Misalnya, Jika Anda mencoba mengelola hibah baru atau menggunakan izin dalam hibah baru sebelum hibah diketahui seluruhnya AWS KMS, Anda mungkin mendapatkan kesalahan akses ditolak. Jika Anda menghentikan atau mencabut pemberian izin, perwakilan penerima mungkin masih bisa menggunakan izin selama jangka waktu yang singkat sampai pemberian izin sepenuhnya dihapus. Strategi tipikal adalah mencoba kembali permintaan, dan beberapa AWS SDKs termasuk backoff otomatis dan logika coba lagi.  
AWS KMS memiliki fitur untuk mengurangi penundaan singkat ini.   
+ Untuk segera menggunakan izin dalam pemberian izin baru, gunakan [token izin](using-grant-token.md). Anda dapat menggunakan token izin untuk mengacu pada pemberian izin dalam [operasi pemberian izin](#terms-grant-operations). Untuk petunjuk, lihat [Menggunakan token izin](using-grant-token.md). 
+ [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)Operasi ini memiliki `Name` parameter yang mencegah operasi coba lagi membuat hibah duplikat.
Token izin menggantikan validitas pemberian izin sampai semua titik akhir dalam layanan telah diperbarui dengan status izin baru. Dalam kebanyakan kasus, eventual consistency akan tercapai dalam waktu lima menit.
Untuk informasi lebih lanjut, lihat [konsistensi AWS KMS akhirnya](accessing-kms.md#programming-eventual-consistency).

# Praktik terbaik untuk AWS KMS hibah
<a name="grant-best-practices"></a>

AWS KMS merekomendasikan praktik terbaik berikut saat membuat, menggunakan, dan mengelola hibah.
+ Batasi izin dalam hibah kepada yang dibutuhkan oleh prinsipal penerima hibah. Gunakan prinsip [akses yang paling tidak memiliki hak istimewa](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege).
+ Gunakan prinsipal penerima hibah tertentu, seperti peran IAM, dan berikan izin utama penerima hibah untuk hanya menggunakan operasi API yang mereka butuhkan. 
+ Gunakan [batasan hibah](grants.md#terms-grant-constraint) konteks enkripsi untuk memastikan bahwa penelepon menggunakan kunci KMS untuk tujuan yang dimaksud. Untuk detail tentang cara menggunakan konteks enkripsi dalam permintaan untuk mengamankan data Anda, lihat [Cara Melindungi Integritas Data Terenkripsi Anda dengan Menggunakan AWS Key Management Service dan EncryptionContext](https://aws.amazon.com/blogs/security/how-to-protect-the-integrity-of-your-encrypted-data-by-using-aws-key-management-service-and-encryptioncontext/) di Blog *AWS Keamanan*.
**Tip**  
Gunakan batasan [EncryptionContextEqual](create-grant-overview.md#grant-constraints)hibah bila memungkinkan. Kendala [EncryptionContextSubset](create-grant-overview.md#grant-constraints)hibah lebih sulit digunakan dengan benar. Jika Anda perlu menggunakannya, baca dokumentasi dengan seksama dan uji batasan hibah untuk memastikannya berfungsi sebagaimana dimaksud.
+ Hapus hibah duplikat. Hibah duplikat memiliki ARN kunci yang sama, tindakan API, prinsipal penerima hibah, konteks enkripsi, dan nama. Jika Anda pensiun atau mencabut hibah asli tetapi meninggalkan duplikat, sisa hibah duplikat merupakan eskalasi hak istimewa yang tidak diinginkan. [Untuk menghindari duplikasi hibah saat mencoba kembali `CreateGrant` permintaan, gunakan parameter. `Name`](create-grant-overview.md#grant-create) Untuk mendeteksi hibah duplikat, gunakan operasi. [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html) Jika Anda secara tidak sengaja membuat hibah duplikat, pensiun atau cabut sesegera mungkin. 
**catatan**  
Hibah untuk [kunci AWS terkelola](concepts.md#aws-managed-key) mungkin terlihat seperti duplikat tetapi memiliki prinsip penerima hibah yang berbeda.  
Kolom `GranteePrincipal` dalam respons `ListGrants` biasanya berisi perwakilan penerima pemberian izin. Namun, ketika pokok penerima hibah dalam hibah adalah AWS layanan, `GranteePrincipal` bidang tersebut berisi pokok layanan, yang mungkin mewakili beberapa [prinsip](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services) penerima hibah yang berbeda.
+ Ingatlah bahwa hibah tidak secara otomatis kedaluwarsa. [Pensiun atau cabut hibah](grant-delete.md) segera setelah izin tidak lagi diperlukan. Hibah yang tidak dihapus dapat menimbulkan risiko keamanan untuk sumber daya terenkripsi.

# Mengontrol akses ke pemberian izin
<a name="grant-authorization"></a>

Anda dapat mengontrol akses ke operasi yang membuat dan mengelola pemberian izin dalam kebijakan kunci, kebijakan IAM, dan pemberian izin. Perwakilan yang mendapatkan izin `CreateGrant` dari pemberian izin memiliki[lebih banyak izin pemberian izin terbatas](create-grant-overview.md#grant-creategrant). 


| Operasi API | Kebijakan kunci atau kebijakan IAM | Pemberian Izin | 
| --- | --- | --- | 
| CreateGrant | ✓ | ✓ | 
| ListGrants | ✓ | - | 
| ListRetirableGrants | ✓ | - | 
| Menghentikan Pemberian Izin | (Terbatas. Lihat[Menghentikan dan mencabut pemberian izin](grant-delete.md)) | ✓ | 
| RevokeGrant | ✓ | - | 

Bila Anda menggunakan kebijakan utama atau kebijakan IAM untuk mengontrol akses ke operasi yang membuat dan mengelola hibah, Anda dapat menggunakan satu atau beberapa ketentuan kebijakan berikut untuk membatasi izin. AWS KMS mendukung semua kunci kondisi terkait hibah berikut. Untuk informasi dan contoh mendetail, lihat [AWS KMS kunci kondisi](conditions-kms.md).

[km: GrantConstraintType](conditions-kms.md#conditions-kms-grant-constraint-type)  
Memungkinkan perwakilan membuat pemberian izin hanya jika pemberian izin menyertakan [batas pemberian izin](create-grant-overview.md#grant-constraints) yang ditentukan.

[km: GrantIsFor AWSResource](conditions-kms.md#conditions-kms-grant-is-for-aws-resource)  
Memungkinkan kepala sekolah untuk menelepon`CreateGrant`,`ListGrants`, atau `RevokeGrant` hanya ketika [AWS layanan yang terintegrasi dengan AWS KMS](https://aws.amazon.com/kms/features/#AWS_Service_Integration) mengirimkan permintaan atas nama kepala sekolah.

[km: GrantOperations](conditions-kms.md#conditions-kms-grant-operations)  
Memungkinkan perwakilan membuat pemberian izin, tetapi membatasi pemberian izin untuk operasi yang ditentukan.

[km: GranteePrincipal](conditions-kms.md#conditions-kms-grantee-principal)  
Memungkinkan kepala sekolah membuat pemberian izin hanya untuk [perwakilan penerima](grants.md#terms-grantee-principal) yang ditentukan.

[km: RetiringPrincipal](conditions-kms.md#conditions-kms-retiring-principal)  
Memungkinkan perwakilan membuat pemberian izin hanya jika pemberian izin menentukan [perwakilan penghentian](grants.md#terms-retiring-principal) tertentu.

# Membuat pemberian izin
<a name="create-grant-overview"></a>

Sebelum membuat pemberian izin, pelajari tentang opsi untuk menyesuaikan pemberian izin Anda. Anda dapat menggunakan *batas pemberian izin* untuk membatasi izin dalam pemberian izin. Selain itu, pelajari tentang pemberian izin `CreateGrant`. Perwakilan yang mendapatkan izin untuk membuat pemberian izin dari pemberian izin terbatas dalam pemberian izin yang dapat dibuat.

**Topics**
+ [Membuat pemberian izin](#grant-create)
+ [Pemberian izin CreateGrant](#grant-creategrant)

## Membuat pemberian izin
<a name="grant-create"></a>

Untuk membuat hibah, hubungi [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operasi. [Tentukan kunci KMS, [pokok penerima hibah](grants.md#terms-grantee-principal), dan daftar operasi hibah yang diizinkan.](grants.md#terms-grant-operations) Anda juga dapat menetapkan [perwakilan penghentian](grants.md#terms-retiring-principal) opsional. Untuk menyesuaikan pemberian izin, gunakan parameter `Constraints` opsional untuk menentukan [batas pemberian izin](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html).

Saat Anda membuat, menghentikan, atau mencabut pemberian izin, akan ada penundaan singkat, biasanya kurang dari lima menit, sebelum perubahan tersedia di seluruh AWS KMS. Untuk informasi lebih lanjut, lihat [Konsistensi akhir (untuk hibah](grants.md#terms-eventual-consistency)).

Misalnya, `CreateGrant` perintah berikut membuat hibah yang memungkinkan pengguna yang berwenang untuk mengambil `keyUserRole` peran untuk memanggil operasi [Dekripsi pada kunci](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) KMS [simetris](symm-asymm-choose-key-spec.md#symmetric-cmks) yang ditentukan. Pemberian izin akan menggunakan parameter `RetiringPrincipal` untuk menunjuk perwakilan yang dapat menghentikan pemberian izin. Ini juga mencakup batas pemberian izin yang memberikan izin hanya saat [konteks enkripsi](encrypt_context.md) dalam permintaan berisi `"Department": "IT"`.

```
$  aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \
    --operations Decrypt \
    --retiring-principal arn:aws:iam::111122223333:role/adminRole \
    --constraints EncryptionContextSubset={Department=IT}
```

Jika kode Anda mencoba lagi operasi `CreateGrant`, atau menggunakan SDK [AWS yang secara otomatis mencoba lagi permintaan](https://docs.aws.amazon.com/general/latest/gr/api-retries.html), gunakan parameter [Nama](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-Name) opsional untuk mencegah agar duplikat pemberian izin tidak dibuat. Jika AWS KMS mendapat `CreateGrant` permintaan untuk hibah dengan properti yang sama dengan hibah yang ada, termasuk nama, ia mengakui permintaan sebagai percobaan ulang, dan tidak membuat hibah baru. Anda tidak dapat menggunakan nilai `Name` untuk mengidentifikasi pemberian izin dalam setiap operasi AWS KMS .

**penting**  
Jangan sertakan informasi rahasia atau sensitif dalam nama hibah. Ini mungkin muncul dalam teks biasa di CloudTrail log dan output lainnya.

```
$ aws kms create-grant \
    --name IT-1234abcd-keyUserRole-decrypt \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \
    --operations Decrypt \
    --retiring-principal arn:aws:iam::111122223333:role/adminRole \
    --constraints EncryptionContextSubset={Department=IT}
```

Untuk contoh kode yang menunjukkan cara membuat hibah dalam beberapa bahasa pemrograman, lihat[Gunakan `CreateGrant` dengan AWS SDK atau CLI](example_kms_CreateGrant_section.md).

### Menggunakan batas pemberian izin
<a name="grant-constraints"></a>

[Kendala hibah](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html) menetapkan ketentuan pada izin yang diberikan hibah kepada prinsipal penerima hibah. Batas pemberian izin menggantikan [kunci syarat](policy-conditions.md) dalam [kebijakan kunci](key-policies.md) atau [kebijakan IAM](iam-policies.md). Setiap nilai batasan hibah dapat mencakup hingga 8 pasangan konteks enkripsi. Nilai konteks enkripsi di setiap batasan hibah tidak dapat melebihi 384 karakter.

**penting**  
Jangan sertakan informasi rahasia atau sensitif di bidang ini. Bidang ini dapat ditampilkan dalam plaintext di CloudTrail log dan output lainnya.

AWS KMS mendukung dua kendala hibah, `EncryptionContextEquals` dan`EncryptionContextSubset`, keduanya menetapkan persyaratan untuk [konteks enkripsi](encrypt_context.md) dalam permintaan untuk operasi kriptografi. 

Kendala hibah konteks enkripsi dirancang untuk digunakan dengan [operasi hibah](grants.md#terms-grant-operations) yang memiliki parameter konteks enkripsi. 
+ Kendala konteks enkripsi hanya valid dalam hibah untuk kunci KMS enkripsi simetris. Operasi kriptografi dengan kunci KMS lainnya tidak mendukung konteks enkripsi.
+ Kendala konteks enkripsi diabaikan untuk `DescribeKey` dan `RetireGrant` operasi. `DescribeKey`dan `RetireGrant` tidak memiliki parameter konteks enkripsi, tetapi Anda dapat menyertakan operasi ini dalam hibah yang memiliki batasan konteks enkripsi.
+ Anda dapat menggunakan kendala konteks enkripsi dalam hibah untuk operasi. `CreateGrant` Batasan konteks enkripsi mengharuskan setiap hibah yang dibuat dengan `CreateGrant` izin memiliki batasan konteks enkripsi yang sama ketat atau lebih ketat.

AWS KMS mendukung batasan hibah konteks enkripsi berikut.

**EncryptionContextEquals**  
Gunakan `EncryptionContextEquals` untuk menentukan konteks enkripsi yang tepat untuk permintaan yang diizinkan.   
`EncryptionContextEquals`mengharuskan pasangan konteks enkripsi dalam permintaan adalah kecocokan yang tepat dan peka huruf besar/kecil untuk pasangan konteks enkripsi dalam batasan hibah. Pasangan ini dapat muncul dalam urutan apa pun, tetapi kunci dan nilai dalam setiap pasangan tidak dapat bervariasi.   
Misalnya, jika batasan `EncryptionContextEquals` hibah memerlukan pasangan konteks `"Department": "IT"` enkripsi, hibah mengizinkan permintaan dari jenis yang ditentukan hanya jika konteks enkripsi dalam permintaan persis. `"Department": "IT"`

**EncryptionContextSubset**  
Gunakan `EncryptionContextSubset` untuk mewajibkan permintaan tersebut menyertakan pasangan konteks enkripsi tertentu.  
`EncryptionContextSubset`mengharuskan permintaan tersebut menyertakan semua pasangan konteks enkripsi dalam batasan hibah (kecocokan yang tepat dan peka huruf besar/kecil), tetapi permintaan tersebut juga dapat memiliki pasangan konteks enkripsi tambahan. Pasangan ini dapat muncul dalam urutan apa pun, tetapi kunci dan nilai dalam setiap pasangan tidak dapat bervariasi.   
Misalnya, jika batasan `EncryptionContextSubset` hibah memerlukan pasangan konteks `Department=IT` enkripsi, hibah mengizinkan permintaan dari jenis yang ditentukan saat konteks enkripsi dalam permintaan tersebut`"Department": "IT"`, atau disertakan `"Department": "IT"` bersama dengan pasangan konteks enkripsi lainnya, seperti. `"Department": "IT","Purpose": "Test"`

Untuk menentukan batasan konteks enkripsi dalam hibah untuk kunci KMS enkripsi simetris, gunakan `Constraints` parameter dalam operasi. [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) Hibah yang dibuat perintah ini memberi pengguna yang berwenang untuk mengambil izin `keyUserRole` peran untuk memanggil operasi [Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html). Tetapi izin itu hanya efektif ketika konteks enkripsi dalam `Decrypt` permintaan adalah pasangan konteks `"Department": "IT"` enkripsi.

```
$ aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \
    --operations Decrypt \
    --retiring-principal arn:aws:iam::111122223333:role/adminRole \
    --constraints EncryptionContextEquals={Department=IT}
```

Pemberian izin yang dihasilkan akan terlihat seperti berikut. Perhatikan bahwa izin yang diberikan untuk `keyUserRole` peran hanya efektif jika `Decrypt` permintaan menggunakan pasangan konteks enkripsi yang sama yang ditentukan dalam batasan hibah. Untuk menemukan hibah pada kunci KMS, gunakan operasi. [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)

```
$ aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
{
    "Grants": [
        {
            "Name": "",
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a",
            "Operations": [
                "Decrypt"
            ],
            "GranteePrincipal": "arn:aws:iam::111122223333:role/keyUserRole",
            "Constraints": {
                "EncryptionContextEquals": {
                    "Department": "IT"
                }
            },
            "CreationDate": 1568565290.0,
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole"
        }
    ]
}
```

Untuk memenuhi batasan `EncryptionContextEquals` hibah, konteks enkripsi dalam permintaan `Decrypt` operasi harus `"Department": "IT"` berpasangan. Permintaan seperti berikut dari kepala sekolah penerima hibah akan memenuhi batasan `EncryptionContextEquals` hibah.

```
$ aws kms decrypt \
    --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\
    --ciphertext-blob fileb://encrypted_msg \
    --encryption-context Department=IT
```

Ketika batasan hibah`EncryptionContextSubset`, pasangan konteks enkripsi dalam permintaan harus menyertakan pasangan konteks enkripsi dalam batasan hibah, tetapi permintaan juga dapat menyertakan pasangan konteks enkripsi lainnya. Batasan hibah berikut mengharuskan salah satu pasangan konteks enkripsi dalam permintaan tersebut adalah. `"Deparment": "IT"`

```
"Constraints": {
   "EncryptionContextSubset": {
       "Department": "IT"
   }
}
```

Permintaan berikut dari kepala sekolah penerima hibah akan memenuhi kendala `EncryptionContextEqual` dan `EncryptionContextSubset` hibah dalam contoh ini.

```
$ aws kms decrypt \
    --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \
    --ciphertext-blob fileb://encrypted_msg \
    --encryption-context Department=IT
```

Namun, permintaan seperti berikut dari prinsipal penerima hibah akan memenuhi batasan `EncryptionContextSubset` hibah, tetapi itu akan gagal dalam kendala hibah. `EncryptionContextEquals`

```
$ aws kms decrypt \
    --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \
    --ciphertext-blob fileb://encrypted_msg \
    --encryption-context Department=IT,Purpose=Test
```

AWS layanan sering menggunakan kendala konteks enkripsi dalam hibah yang memberi mereka izin untuk menggunakan kunci KMS di Anda. Akun AWS Misalnya, Amazon DynamoDB menggunakan hibah seperti berikut ini untuk mendapatkan izin menggunakan [Kunci yang dikelola AWS](concepts.md#aws-managed-key)for DynamoDB di akun Anda. Batas pemberian izin `EncryptionContextSubset` dalam pemberian izin ini membuat izin dalam pemberian izin hanya efektif jika konteks enkripsi dalam permintaan menyertakan pasangan `"subscriberID": "111122223333"` dan `"tableName": "Services"`. Batasan hibah ini berarti bahwa hibah memungkinkan DynamoDB untuk menggunakan kunci KMS yang ditentukan hanya untuk tabel tertentu di tabel Anda. Akun AWS

Untuk mendapatkan output ini, jalankan [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)operasi pada Kunci yang dikelola AWS for DynamoDB di akun Anda.

```
$ aws kms list-grants --key-id 0987dcba-09fe-87dc-65ba-ab0987654321

{
    "Grants": [
        {
            "Operations": [
                "Decrypt",
                "Encrypt",
                "GenerateDataKey",
                "ReEncryptFrom",
                "ReEncryptTo",
                "RetireGrant",
                "DescribeKey"
            ],
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "Constraints": {
                "EncryptionContextSubset": {
                    "aws:dynamodb:tableName": "Services",
                    "aws:dynamodb:subscriberId": "111122223333"
                }
            },
            "CreationDate": 1518567315.0,
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321",
            "GranteePrincipal": "dynamodb.us-west-2.amazonaws.com",
            "RetiringPrincipal": "dynamodb.us-west-2.amazonaws.com",
            "Name": "8276b9a6-6cf0-46f1-b2f0-7993a7f8c89a",
            "GrantId": "1667b97d27cf748cf05b487217dd4179526c949d14fb3903858e25193253fe59"
        }
    ]
}
```

## Pemberian izin CreateGrant
<a name="grant-creategrant"></a>

Pemberian izin dapat menyertakan izin untuk memanggil operasi `CreateGrant`. Namun saat [perwakilan penerima](grants.md#terms-grantee-principal) mendapat izin untuk menelepon `CreateGrant` dari pemberian izin, bukan dari kebijakan, maka izin zintersebut dibatasi. 
+ Perwakilan penerima hanya dapat membuat pemberian izin yang mengizinkan beberapa atau semua operasi dalam pemberian izin induk.
+ [Batas pemberian izin](#grant-constraints) dalam pemberian izin yang dibuat harus setidaknya seketat batas dalam pemberian izin induk.

Batasan ini tidak berlaku untuk perwakilan yang mendapatkan izin `CreateGrant` dari kebijakan, meskipun izinnya dapat dibatasi oleh [ketentuan kebijakan](grant-authorization.md).

Sebagai contoh, pertimbangkan pemberian izin yang memungkinkan perwakilan penerima memanggil operasi `GenerateDataKey`, `Decrypt`, dan `CreateGrant`. Kami memanggil pemberian izin yang memberi izin `CreateGrant` pada *pemberian izin induk*.

```
# The original grant in a ListGrants response.
{
    "Grants": [
        {
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "CreationDate": 1572216195.0,
            "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a",
            "Operations": [
                "GenerateDataKey",
                "Decrypt",
                "CreateGrant
            ]
            "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole",
            "Name": "",
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "GranteePrincipal": "arn:aws:iam::111122223333:role/keyUserRole",
            "Constraints": {
                "EncryptionContextSubset": {
                    "Department": "IT"
                }
            },
        }
    ]
}
```

Perwakilan penerima, exampleUser, dapat menggunakan izin ini untuk membuat pemberian izin yang menyertakan setiap subset operasi yang ditentukan dalam pemberian izin asli, seperti `CreateGrant` dan `Decrypt`. *Pemberian izin anak*tidak dapat menyertakan operasi lain, seperti `ScheduleKeyDeletion` atau `ReEncrypt`.

Selain itu, [batas pemberian izin](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html) dalam pemberian izin anak harus seketat atau lebih ketat dari batas dalam pemberian izin induk. Misalnya, pemberian izin anak dapat menambahkan pasangan ke batas `EncryptionContextSubset` dalam pemberian izin induk, tetapi tidak dapat menghapusnya. Pemberian izin anak dapat mengubah batas `EncryptionContextSubset` ke batas `EncryptionContextEquals`, tapi tidak sebaliknya.

Praktik terbaik IAM mencegah penggunaan pengguna IAM dengan kredensi 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*.

Misalnya, perwakilan penerima dapat menggunakan izin `CreateGrant` yang didapat dari pemberian izin induk untuk membuat pemberian izin anak berikut. Operasi dalam pemberian izin anak adalah subset operasi dalam pemberian izin induk dan batas pemberian izin menjadi lebih ketat.

```
# The child grant in a ListGrants response.
{
    "Grants": [
        {
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "CreationDate": 1572249600.0,
            "GrantId": "fedcba9999c1e2e9876abcde6e9d6c9b6a1987650000abcee009abcdef40183f",
            "Operations": [
                "CreateGrant"
                "Decrypt"
            ]
            "RetiringPrincipal": "arn:aws:iam::111122223333:user/exampleUser",
            "Name": "",
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "GranteePrincipal": "arn:aws:iam::111122223333:user/anotherUser",
            "Constraints": {
                "EncryptionContextEquals": {
                    "Department": "IT"
                }
            },
        }
    ]
}
```

Perwakilan penerima dalam pemberian izin anak, `anotherUser`, dapat menggunakan izin `CreateGrant` untuk membuat pemberian izin. Namun, pemberian izin yang dibuat `anotherUser` harus menyertakan operasi dalam pemberian izin induknya atau subset, dan batas pemberian izin harus sama atau lebih ketat. 

# Melihat pemberian izin
<a name="grant-view"></a>

Untuk melihat hibah, gunakan [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)operasi. Anda harus menentukan kunci KMS tempat hibah berlaku. Anda juga dapat memfilter daftar pemberian izin berdasarkan ID pemberian izin atau perwakilan penerima. Untuk contoh lainnya, lihat [Gunakan `ListGrants` dengan AWS SDK atau CLI](example_kms_ListGrants_section.md).

Untuk melihat semua hibah di Akun AWS dan Wilayah dengan [kepala sekolah pensiun tertentu, gunakan](grants.md#terms-retiring-principal). [ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListRetirableGrants.html) Respons meliputi detail tentang setiap pemberian izin.

**catatan**  
Kolom `GranteePrincipal` dalam respons `ListGrants` biasanya berisi perwakilan penerima pemberian izin. Namun, ketika pokok penerima hibah dalam hibah adalah AWS layanan, `GranteePrincipal` bidang tersebut berisi pokok layanan, yang mungkin mewakili beberapa [prinsip](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services) penerima hibah yang berbeda.

Misalnya, perintah berikut mencantumkan semua hibah untuk kunci KMS.

```
$  aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
{
    "Grants": [
        {
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "CreationDate": 1572216195.0,
            "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a",
            "Constraints": {
                "EncryptionContextSubset": {
                    "Department": "IT"
                }
            },
            "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole",
            "Name": "",
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "GranteePrincipal": "arn:aws:iam::111122223333:user/exampleUser",
            "Operations": [
                "Decrypt"
            ]
        }
    ]
}
```

# Menggunakan token izin
<a name="using-grant-token"></a>

 AWS KMS API mengikuti model [konsistensi akhirnya](grants.md#terms-eventual-consistency). Saat Anda membuat pemberian izin, mungkin tidak langsung efektif. Mungkin ada penundaan singkat sebelum perubahan tersedia di seluruh AWS KMS. Biasanya diperlukan waktu kurang dari beberapa detik agar perubahan menyebar ke seluruh sistem, tetapi dalam beberapa kasus dapat memakan waktu beberapa menit. Setelah perubahan disebarkan sepenuhnya ke seluruh sistem, prinsipal penerima hibah dapat menggunakan izin dalam hibah tanpa menentukan token hibah atau bukti hibah apa pun. Namun, jika hibah yang sangat baru sehingga belum diketahui semua orang AWS KMS, permintaan tersebut mungkin gagal dengan `AccessDeniedException` kesalahan.

Untuk segera menggunakan izin dalam pemberian izin baru, gunakan [token izin](grants.md#grant_token) untuk pemberian izin. Simpan token hibah yang dikembalikan oleh [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operasi. Kemudian kirimkan token hibah dalam permintaan AWS KMS operasi. Anda dapat mengirimkan token hibah ke [operasi AWS KMS hibah](grants.md#terms-grant-operations) apa pun dan Anda dapat mengirimkan beberapa token hibah dalam permintaan yang sama.



Contoh berikut menggunakan `CreateGrant` operasi untuk membuat hibah yang memungkinkan [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)dan [Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) operasi. Operasi tersebut menyimpan token izin yang menampilkan `CreateGrant` dalam variabel `token`. Kemudian, dalam panggilan ke operasi `GenerateDataKey`, ini menggunakan token izin di variabel `token`.

```
# Create a grant; save the grant token 
$ token=$(aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:user/appUser \
    --retiring-principal arn:aws:iam::111122223333:user/acctAdmin \
    --operations GenerateDataKey Decrypt \
    --query GrantToken \
    --output text)

# Use the grant token in a request
$ aws kms generate-data-key \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    –-key-spec AES_256 \
    --grant-tokens $token
```

Prinsipal dengan izin juga dapat menggunakan token hibah untuk pensiun hibah baru bahkan sebelum hibah tersedia di seluruh. AWS KMS(Operasi `RevokeGrant` tidak menerima token izin.) Untuk detail selengkapnya, lihat [Menghentikan dan mencabut pemberian izin](grant-delete.md).

```
# Retire the grant
$ aws kms retire-grant --grant-token $token
```

# Menghentikan dan mencabut pemberian izin
<a name="grant-delete"></a>

Untuk menghapus, menghentikan, atau mencabut pemberian izin.

Operasi [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)dan [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)operasi sangat mirip satu sama lain. Kedua operasi menghapus hibah, yang menghilangkan izin yang diizinkan oleh hibah. Perbedaan utama antara operasi ini adalah bagaimana mereka diotorisasi.

**RevokeGrant**  
Seperti kebanyakan AWS KMS operasi, akses ke `RevokeGrant` operasi dikendalikan melalui [kebijakan utama dan kebijakan](key-policies.md) [IAM](iam-policies.md). [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)API dapat dipanggil oleh kepala sekolah mana pun dengan `kms:RevokeGrant` izin. Izin ini disertakan dalam izin standar yang diberikan kepada administrator kunci. Biasanya, administrator mencabut pemberian izin untuk menolak izin yang diberikan pemberian izin.

**RetireGrant**  
Pemberian izin menentukan orang yang dapat menghentikannya. Desain ini memungkinkan Anda mengontrol siklus hidup pemberian izin tanpa mengubah kebijakan kunci atau kebijakan IAM. Biasanya, Anda akan menghentikan pemberian izin begitu selesai menggunakan izin.  
Pemberian izin dapat dihentikan dengan [perwakilan penghentian](grants.md#terms-retiring-principal) yang ditentukan dalam pemberian izin. [Kepala penerima hibah](grants.md#terms-grantee-principal) juga dapat mempensiunkan hibah, tetapi hanya jika mereka juga merupakan kepala sekolah pensiun atau hibah termasuk operasi. `RetireGrant` Sebagai cadangan, Akun AWS di mana hibah dibuat dapat menghentikan hibah.  
Ada izin `kms:RetireGrant` yang dapat digunakan dalam kebijakan IAM, tetapi memiliki utilitas terbatas. Perwakilan yang ditentukan dalam pemberian izin dapat menghentikan pemberian izin tanpa izin `kms:RetireGrant`. Izin `kms:RetireGrant` saja tidak memungkinkan kepala sekolah untuk menghentikan pemberian izin. `kms:RetireGrant`Izin tersebut tidak efektif dalam [kebijakan utama atau kebijakan](key-policies.md) [pengendalian sumber daya](resource-control-policies.md).  
+ Untuk menolak izin pensiun hibah, Anda dapat menggunakan `Deny` tindakan dengan `kms:RetireGrant` izin dalam kebijakan IAM Anda.
+  Akun AWS Yang memiliki kunci KMS dapat mendelegasikan `kms:RetireGrant` izin ke kepala IAM di akun. 
+ Jika kepala sekolah pensiun berbeda Akun AWS, administrator di akun lain dapat menggunakan `kms:RetireGrant` untuk mendelegasikan izin untuk mempensiunkan hibah ke kepala IAM di akun itu.

 AWS KMS API mengikuti model [konsistensi akhirnya](grants.md#terms-eventual-consistency). Saat Anda membuat, pensiun, atau mencabut hibah, mungkin ada penundaan singkat sebelum perubahan tersedia secara keseluruhan. AWS KMS Biasanya diperlukan waktu kurang dari beberapa detik agar perubahan menyebar ke seluruh sistem, tetapi dalam beberapa kasus dapat memakan waktu beberapa menit. Jika Anda perlu segera menghapus hibah baru, sebelum tersedia secara keseluruhan AWS KMS, [gunakan token hibah](using-grant-token.md) untuk menghentikan hibah. Anda tidak dapat menggunakan token izin untuk mencabut pemberian izin.

# Kunci kondisi untuk AWS KMS
<a name="policy-conditions"></a>

Anda dapat menentukan kondisi dalam [kebijakan utama dan kebijakan](key-policies.md) [IAM](iam-policies.md) yang mengontrol akses ke AWS KMS sumber daya. Pernyataan kebijakan hanya efektif jika syaratnya benar. Misalnya, Anda mungkin ingin pernyataan kebijakan berlaku hanya setelah tanggal tertentu. Atau, Anda mungkin ingin pernyataan kebijakan mengontrol akses hanya saat nilai tertentu muncul dalam permintaan API.

Untuk menentukan kondisi, Anda menggunakan *kunci kondisi* dalam [`Condition`elemen](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) pernyataan kebijakan dengan [operator kondisi IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html). Beberapa kunci kondisi berlaku umumnya untuk AWS; yang lain khusus untuk AWS KMS.

Nilai kunci kondisi harus mematuhi karakter dan aturan pengkodean untuk kebijakan AWS KMS utama dan kebijakan IAM. Untuk detail tentang aturan dokumen kebijakan utama, lihat[Format kebijakan utama](key-policy-overview.md#key-policy-format). Untuk detail tentang aturan dokumen kebijakan IAM, lihat [Persyaratan nama IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-names) di Panduan Pengguna *IAM..*

**Topics**
+ [AWS kunci kondisi global](conditions-aws.md)
+ [AWS KMS kunci kondisi](conditions-kms.md)
+ [AWS KMS kunci kondisi untuk platform yang dibuktikan](conditions-attestation.md)

# AWS kunci kondisi global
<a name="conditions-aws"></a>

AWS mendefinisikan [kunci kondisi global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#AvailableKeys), satu set kunci kondisi kebijakan untuk semua AWS layanan yang menggunakan IAM untuk kontrol akses. AWS KMS mendukung semua kunci kondisi global. Anda dapat menggunakannya dalam kebijakan AWS KMS utama dan kebijakan IAM.

Misalnya, Anda dapat menggunakan kunci kondisi PrincipalArn global [aws:](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalarn) untuk mengizinkan akses ke AWS KMS key (kunci KMS) hanya jika prinsipal dalam permintaan diwakili oleh Amazon Resource Name (ARN) dalam nilai kunci kondisi. Untuk mendukung [kontrol akses berbasis atribut](abac.md) (ABAC) di AWS KMS, Anda dapat menggunakan kunci kondisi global [aws:ResourceTag/*tag-key*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) dalam kebijakan IAM untuk mengizinkan akses ke kunci KMS dengan tag tertentu.

Untuk membantu mencegah AWS layanan digunakan sebagai wakil yang bingung dalam kebijakan di mana prinsipal adalah [kepala AWS layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), Anda dapat menggunakan [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)atau kunci kondisi [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)global. Lihat perinciannya di [Menggunakan `aws:SourceArn` atau tombol `aws:SourceAccount` kondisi](least-privilege.md#least-privilege-source-arn).

Untuk informasi tentang kunci kondisi AWS global, termasuk jenis permintaan yang tersedia, lihat [Kunci Konteks Kondisi AWS Global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) di *Panduan Pengguna IAM*. Untuk contoh penggunaan kunci syarat global dalam kebijakan IAM, lihat [Mengontrol Akses ke Permintaan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-requests) dan [Mengontrol Kunci Tag](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-tag-keys) di *Panduan Pengguna IAM*.

Topik berikut memberikan panduan khusus untuk menggunakan kunci syarat berdasarkan alamat IP dan VPC endpoint.

**Topics**
+ [Menggunakan kondisi alamat IP dalam kebijakan dengan AWS KMS izin](#conditions-aws-ip-address)
+ [Menggunakan kondisi titik akhir VPC dalam kebijakan dengan izin AWS KMS](#conditions-aws-vpce)
+ [Menggunakan IPv6 alamat dalam IAM dan kebijakan AWS KMS utama](#KMS-IPv6-policies)

## Menggunakan kondisi alamat IP dalam kebijakan dengan AWS KMS izin
<a name="conditions-aws-ip-address"></a>

Anda dapat menggunakan AWS KMS untuk melindungi data Anda dalam [AWS layanan terintegrasi](service-integration.md). Tetapi berhati-hatilah saat menentukan [operator kondisi alamat IP](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_IPAddress) atau kunci `aws:SourceIp` kondisi dalam pernyataan kebijakan yang sama yang memungkinkan atau menolak akses ke. AWS KMS Misalnya, kebijakan di [AWS: Denies Access to AWS Based on the Source IP](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-ip.html) membatasi AWS tindakan ke permintaan dari rentang IP yang ditentukan.

Pertimbangkan skenario ini:

1. Anda melampirkan kebijakan seperti yang ditampilkan di [AWS: Denies Access to AWS Based on the Source IP](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_aws_deny-ip.html) ke identitas IAM. Anda menetapkan nilai kunci syarat `aws:SourceIp` ke rentang alamat IP untuk perusahaan pengguna. Identitas IAM ini memiliki kebijakan lain yang dilampirkan yang memungkinkannya menggunakan Amazon EBS, Amazon EC2, dan. AWS KMS

1. Identitas mencoba melampirkan volume EBS terenkripsi ke instans EC2. Tindakan ini gagal dengan kesalahan otorisasi meskipun pengguna memiliki izin untuk menggunakan semua layanan yang relevan.

Langkah 2 gagal karena permintaan AWS KMS untuk mendekripsi kunci data terenkripsi volume berasal dari alamat IP yang terkait dengan infrastruktur Amazon EC2. Agar berhasil, permintaan harus berasal dari alamat IP pengguna asal. Karena kebijakan di langkah 1 secara eksplisit menolak semua permintaan dari alamat IP selain yang ditentukan, izin Amazon EC2 untuk mendekripsi kunci data terenkripsi volume EBS ditolak.

Selain itu, kunci syarat `aws:SourceIP` tidak efektif bila permintaan berasal dari [Amazon VPC endpoint](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html). Untuk membatasi permintaan ke VPC endpoint, termasuk [AWS KMS VPC endpoint](kms-vpc-endpoint.md), gunakan kunci syarat `aws:SourceVpce` atau `aws:SourceVpc`. Untuk informasi selengkapnya, lihat [VPC endpoint - Mengontrol Penggunaan Titik Akhir](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html#vpc-endpoints-iam-access) di *Panduan Pengguna Amazon VPC*. 

## Menggunakan kondisi titik akhir VPC dalam kebijakan dengan izin AWS KMS
<a name="conditions-aws-vpce"></a>

[AWS KMS mendukung titik akhir Amazon Virtual Private Cloud (Amazon VPC)](kms-vpc-endpoint.md) yang didukung oleh. [AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Introduction.html#what-is-privatelink) Anda dapat menggunakan [kunci kondisi global](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#AvailableKeys) berikut dalam kebijakan utama dan kebijakan IAM untuk mengontrol akses ke AWS KMS sumber daya saat permintaan berasal dari VPC atau menggunakan titik akhir VPC. Lihat perinciannya di [Gunakan titik akhir VPC untuk mengontrol akses ke sumber daya AWS KMS](vpce-policy-condition.md).
+ `aws:SourceVpc` membatasi akses ke permintaan dari VPC yang ditentukan. 
+ `aws:SourceVpce` membatasi akses ke permintaan dari VPC endpoint yang ditentukan. 

Jika Anda menggunakan tombol kondisi ini untuk mengontrol akses ke kunci KMS, Anda mungkin secara tidak sengaja menolak akses ke AWS layanan yang digunakan AWS KMS atas nama Anda. 

Berhati-hatilah untuk menghindari situasi seperti contoh [kunci syarat alamat IP](#conditions-aws-ip-address). Jika Anda membatasi permintaan kunci KMS ke titik akhir VPC atau VPC, panggilan AWS KMS ke dari layanan terintegrasi, seperti Amazon S3 atau Amazon EBS, mungkin gagal. Hal ini dapat terjadi meskipun permintaan sumber pada akhirnya berasal dari VPC atau dari VPC endpoint. 

## Menggunakan IPv6 alamat dalam IAM dan kebijakan AWS KMS utama
<a name="KMS-IPv6-policies"></a>

Sebelum mencoba mengakses AWS KMS IPv6, pastikan kebijakan kunci dan IAM yang berisi batasan alamat IP diperbarui untuk menyertakan rentang IPv6 alamat. Kebijakan berbasis IP yang tidak diperbarui untuk menangani IPv6 alamat dapat mengakibatkan klien salah kehilangan atau mendapatkan akses ketika mereka mulai menggunakan IPv6. Untuk panduan umum tentang kontrol akses KMS, lihat[Akses dan izin kunci KMS](control-access.md). Untuk mempelajari tentang KMS dan dukungan dual stack, lihat[Dukungan titik akhir tumpukan ganda](ipv6-kms.md).

**penting**  
Pernyataan ini tidak mengizinkan tindakan apa pun. Gunakan pernyataan ini dalam kombinasi dengan pernyataan lain yang memungkinkan tindakan tertentu.

Pernyataan berikut secara eksplisit menolak akses ke semua izin KMS untuk permintaan yang berasal dari berbagai alamat. `192.0.2.*` IPv4 Alamat IP apa pun di luar rentang ini tidak secara eksplisit ditolak izin KMS. Karena semua IPv6 alamat berada di luar rentang yang ditolak, pernyataan ini tidak secara eksplisit menolak izin KMS untuk alamat apa pun. IPv6 

```
{
     "Sid": "DenyKMSPermissions",
     "Effect": "Deny",
    "Action": [
        "kms:*"
    ],
    "Resource": "*",
    "Condition": {
        "NotIpAddress": {
            "aws:SourceIp": [ 
                "192.0.2.0/24"
            ]
        }
    }
}
```

Anda dapat memodifikasi `Condition` elemen untuk menolak rentang alamat IPv4 IPv6 (`192.0.2.0/24``2001:db8:1234::/32`) dan () seperti yang ditunjukkan pada contoh berikut.

```
{
    "Sid": "DenyKMSPermissions",
    "Effect": "Deny",
    "Action": [
        "kms:*"
    ],
    "Resource": "*",
    "Condition": {
        "NotIpAddress": {
            "aws:SourceIp": [ 
                "192.0.2.0/24",
                "2001:db8:1234::/32"
            ]
        }
    }
}
```

# AWS KMS kunci kondisi
<a name="conditions-kms"></a>

AWS KMS menyediakan satu set kunci kondisi yang dapat Anda gunakan dalam kebijakan utama dan kebijakan IAM. Kunci kondisi ini khusus untuk AWS KMS. Misalnya, Anda dapat menggunakan kunci `kms:EncryptionContext:context-key` kondisi untuk memerlukan [konteks enkripsi](encrypt_context.md) tertentu saat mengontrol akses ke kunci KMS enkripsi simetris.

**Ketentuan untuk permintaan operasi API**

Banyak tombol AWS KMS kondisi mengontrol akses ke kunci KMS berdasarkan nilai parameter dalam permintaan AWS KMS operasi. Misalnya, Anda dapat menggunakan kunci KeySpec kondisi [kms:](#conditions-kms-key-spec) dalam kebijakan IAM untuk mengizinkan penggunaan [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operasi hanya jika nilai `KeySpec` parameter dalam `CreateKey` permintaan adalah. `RSA_4096` 

Jenis syarat ini berfungsi bahkan saat parameter tidak muncul dalam permintaan, seperti saat Anda menggunakan nilai default parameter. Misalnya Anda dapat menggunakan [kms: KeySpec](#conditions-kms-key-spec) condition key untuk memungkinkan pengguna menggunakan `CreateKey` operasi hanya jika nilai `KeySpec` parameternya`SYMMETRIC_DEFAULT`, yang merupakan nilai default. Syarat ini memungkinkan permintaan yang memiliki parameter `KeySpec` dengan nilai `SYMMETRIC_DEFAULT` dan permintaan yang tidak memiliki parameter `KeySpec`.

**Ketentuan untuk kunci KMS yang digunakan dalam operasi API**

Beberapa tombol AWS KMS kondisi dapat mengontrol akses ke operasi berdasarkan properti kunci KMS yang digunakan dalam operasi. Misalnya, Anda dapat menggunakan KeyOrigin kondisi [kms:](#conditions-kms-key-origin) untuk mengizinkan prinsipal memanggil [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)kunci KMS hanya ketika kunci KMS berada`Origin`. `AWS_KMS` Untuk mengetahui apakah kunci syarat dapat digunakan dengan cara ini, lihat deskripsi kunci syarat.

Operasi harus berupa operasi *sumber daya kunci KMS*, yaitu operasi yang diotorisasi untuk kunci KMS tertentu. Untuk mengidentifikasi operasi sumber daya kunci KMS, dalam [Tabel Tindakan dan Sumber Daya](kms-api-permissions-reference.md#kms-api-permissions-reference-table), cari nilai `KMS key` di `Resources` kolom untuk operasi. Jika Anda menggunakan jenis kunci kondisi ini dengan operasi yang tidak diizinkan untuk sumber daya kunci KMS tertentu, seperti [ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html), izin tidak efektif karena kondisi tidak pernah dapat dipenuhi. Tidak ada sumber daya kunci KMS yang terlibat dalam otorisasi `ListKeys` operasi dan tidak ada `KeySpec` properti. 

Topik berikut menjelaskan setiap kunci AWS KMS kondisi dan menyertakan contoh pernyataan kebijakan yang menunjukkan sintaks kebijakan.

**Menggunakan operator set dengan kunci syarat**

Jika kondisi kebijakan membandingkan dua set nilai, seperti kumpulan tag dalam permintaan dan kumpulan tag dalam kebijakan, Anda perlu memberi tahu AWS cara membandingkan set. IAM mendefinisikan dua operator set, `ForAnyValue` dan `ForAllValues`, untuk tujuan ini. Gunakan operator set hanya dengan *kunci syarat multi-nilai*, yang membutuhkannya. Jangan gunakan operator set dengan *kunci syarat bernilai tunggal*. Seperti biasa, uji pernyataan kebijakan Anda secara menyeluruh sebelum menggunakannya dalam lingkungan produksi.

Kunci syarat adalah bernilai tunggal atau multi-nilai. Untuk menentukan apakah kunci AWS KMS kondisi bernilai tunggal atau multi-nilai, lihat kolom **Jenis nilai** dalam deskripsi kunci kondisi. 
+ Kunci syarat *bernilai tunggal* memiliki paling banyak satu nilai dalam konteks otorisasi (permintaan atau sumber daya). Misalnya, karena setiap panggilan API hanya dapat berasal dari satu Akun AWS, [kms: CallerAccount](#conditions-kms-caller-account) adalah kunci kondisi bernilai tunggal. Jangan gunakan operator set dengan kunci syarat bernilai tunggal. 
+ Kunci syarat *bernilai tunggal* memiliki paling banyak satu nilai dalam konteks otorisasi (permintaan atau sumber daya). Misalnya, karena setiap kunci KMS dapat memiliki beberapa alias, [kms: ResourceAliases](#conditions-kms-resource-aliases) dapat memiliki beberapa nilai. Kunci syarat multi-nilai memerlukan operator set. 

Perhatikan bahwa perbedaan antara kunci syarat bernilai tunggal dan multi-nilai bergantung pada jumlah nilai dalam konteks otorisasi; bukan jumlah nilai dalam syarat kebijakan.

**Awas**  
Menggunakan operator set dengan kunci syarat bernilai tunggal dapat membuat pernyataan kebijakan yang terlalu permisif (atau terlalu ketat). Gunakan operator set hanya dengan kunci syarat multi-nilai.  
Jika Anda membuat atau memperbarui kebijakan yang menyertakan operator `ForAllValues` set dengan kms:EncryptionContext: *kunci-konteks atau kunci* `aws:RequestTag/tag-key` kondisi, akan AWS KMS menampilkan pesan galat berikut:  
`OverlyPermissiveCondition: Using the ForAllValues set operator with a single-valued condition key matches requests without the specified [encryption context or tag] or with an unspecified [encryption context or tag]. To fix, remove ForAllValues.`

Untuk detail informasi tentang operator set `ForAnyValue` dan `ForAllValues`, lihat [Menggunakan beberapa kunci dan nilai](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions) di *Panduan Pengguna IAM*. Untuk informasi tentang risiko menggunakan operator yang `ForAllValues` ditetapkan dengan kondisi bernilai tunggal, lihat [Peringatan Keamanan — ForAllValues dengan kunci bernilai tunggal](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html#access-analyzer-reference-policy-checks-security-warning-forallvalues-with-single-valued-key) dalam *Panduan Pengguna IAM*.

**Topics**
+ [km: BypassPolicyLockoutSafetyCheck](#conditions-kms-bypass-policy-lockout-safety-check)
+ [km: CallerAccount](#conditions-kms-caller-account)
+ [kms: CustomerMasterKeySpec (usang)](#conditions-kms-key-spec-replaced)
+ [kms: CustomerMasterKeyUsage (usang)](#conditions-kms-key-usage-replaced)
+ [km: DataKeyPairSpec](#conditions-kms-data-key-spec)
+ [km: EncryptionAlgorithm](#conditions-kms-encryption-algorithm)
+ [*kms:EncryptionContext: kunci-konteks*](#conditions-kms-encryption-context)
+ [km: EncryptionContextKeys](#conditions-kms-encryption-context-keys)
+ [km: ExpirationModel](#conditions-kms-expiration-model)
+ [km: GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [km: GrantIsFor AWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [km: GrantOperations](#conditions-kms-grant-operations)
+ [km: GranteePrincipal](#conditions-kms-grantee-principal)
+ [km: KeyAgreementAlgorithm](#conditions-kms-key-agreement-algorithm)
+ [km: KeyOrigin](#conditions-kms-key-origin)
+ [km: KeySpec](#conditions-kms-key-spec)
+ [km: KeyUsage](#conditions-kms-key-usage)
+ [km: MacAlgorithm](#conditions-kms-mac-algorithm)
+ [km: MessageType](#conditions-kms-message-type)
+ [km: MultiRegion](#conditions-kms-multiregion)
+ [km: MultiRegionKeyType](#conditions-kms-multiregion-key-type)
+ [km: PrimaryRegion](#conditions-kms-primary-region)
+ [km: ReEncryptOnSameKey](#conditions-kms-reencrypt-on-same-key)
+ [km: RequestAlias](#conditions-kms-request-alias)
+ [km: ResourceAliases](#conditions-kms-resource-aliases)
+ [km: ReplicaRegion](#conditions-kms-replica-region)
+ [km: RetiringPrincipal](#conditions-kms-retiring-principal)
+ [km: RotationPeriodInDays](#conditions-kms-rotation-period-in-days)
+ [km: ScheduleKeyDeletionPendingWindowInDays](#conditions-kms-schedule-key-deletion-pending-window-in-days)
+ [km: SigningAlgorithm](#conditions-kms-signing-algorithm)
+ [km: ValidTo](#conditions-kms-valid-to)
+ [km: ViaService](#conditions-kms-via-service)
+ [km: WrappingAlgorithm](#conditions-kms-wrapping-algorithm)
+ [km: WrappingKeySpec](#conditions-kms-wrapping-key-spec)

## km: BypassPolicyLockoutSafetyCheck
<a name="conditions-kms-bypass-policy-lockout-safety-check"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:BypassPolicyLockoutSafetyCheck`  |  Boolean  | Bernilai tunggal |  `CreateKey` `PutKeyPolicy`  |  Kebijakan IAM saja Kebijakan kunci dan kebijakan IAM  | 

Kunci `kms:BypassPolicyLockoutSafetyCheck` kondisi mengontrol akses ke [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)dan [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)operasi berdasarkan nilai `BypassPolicyLockoutSafetyCheck` parameter dalam permintaan. 

Contoh berikut pernyataan kebijakan IAM mencegah pengguna melewati pemeriksaan keamanan penguncian kebijakan dengan menolak izin mereka untuk membuat kunci KMS ketika nilai parameter dalam permintaan adalah `BypassPolicyLockoutSafetyCheck` `CreateKey` `true.` 

```
{
  "Effect": "Deny",
  "Action": [
    "kms:CreateKey",
    "kms:PutKeyPolicy"
  ],
  "Resource": "*",
  "Condition": {
    "Bool": {
      "kms:BypassPolicyLockoutSafetyCheck": true
    }
  }
}
```

Anda juga dapat menggunakan kunci syarat `kms:BypassPolicyLockoutSafetyCheck` dalam kebijakan IAM atau kebijakan kunci untuk mengontrol akses ke operasi `PutKeyPolicy`. Contoh pernyataan kebijakan berikut dari kebijakan utama mencegah pengguna melewati pemeriksaan keamanan penguncian kebijakan saat mengubah kebijakan kunci KMS. 

Sebagai ganti dari menggunakan `Deny` eksplisit, pernyataan kebijakan ini menggunakan `Allow` dengan [operator syarat Null](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) untuk mengizinkan akses hanya ketika permintaan tidak menyertakan parameter `BypassPolicyLockoutSafetyCheck`. Ketika parameter tidak digunakan, nilai defaultnya adalah `false`. Pernyataan kebijakan yang sedikit lebih lemah ini dapat ditimpa dalam kasus yang jarang terjadi di mana bypass diperlukan. 

```
{
  "Effect": "Allow",
  "Action": "kms:PutKeyPolicy",
  "Resource": "*",
  "Condition": {
    "Null": {
      "kms:BypassPolicyLockoutSafetyCheck": true
    }
  }
}
```

**Lihat juga**
+ [km: KeySpec](#conditions-kms-key-spec)
+ [km: KeyOrigin](#conditions-kms-key-origin)
+ [km: KeyUsage](#conditions-kms-key-usage)

## km: CallerAccount
<a name="conditions-kms-caller-account"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:CallerAccount`  |  String  | Bernilai tunggal |  Operasi sumber daya utama KMS Operasi penyimpanan kunci kustom  |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan kunci kondisi ini untuk mengizinkan atau menolak akses ke semua identitas (pengguna dan peran) dalam file. Akun AWS Dalam kebijakan kunci, Anda menggunakan elemen `Principal` untuk menentukan identitas yang berlaku untuk pernyataan kebijakan. Sintaksis untuk elemen `Principal` tidak memberikan cara untuk menentukan semua identitas dalam Akun AWS. Tetapi Anda dapat mencapai efek ini dengan menggabungkan kunci kondisi ini dengan `Principal` elemen yang menentukan semua AWS identitas.

Anda dapat menggunakannya untuk mengontrol akses ke *operasi sumber daya kunci KMS* apa pun, yaitu AWS KMS operasi apa pun yang menggunakan kunci KMS tertentu. Untuk mengidentifikasi operasi sumber daya kunci KMS, dalam [Tabel Tindakan dan Sumber Daya](kms-api-permissions-reference.md#kms-api-permissions-reference-table), cari nilai `KMS key` di `Resources` kolom untuk operasi. Ini juga berlaku untuk operasi yang mengelola [penyimpanan kunci kustom](key-store-overview.md#custom-key-store-overview).

Misalnya, pernyataan kebijakan kunci berikut menunjukkan cara menggunakan kunci syarat `kms:CallerAccount`. Pernyataan kebijakan ini ada dalam kebijakan utama Kunci yang dikelola AWS untuk Amazon EBS. Ini menggabungkan `Principal` elemen yang menentukan semua AWS identitas dengan kunci `kms:CallerAccount` kondisi untuk secara efektif memungkinkan akses ke semua identitas di 111122223333. Akun AWS Ini berisi kunci AWS KMS kondisi tambahan (`kms:ViaService`) untuk membatasi izin lebih lanjut dengan hanya mengizinkan permintaan yang datang melalui Amazon EBS. Untuk informasi selengkapnya, lihat [km: ViaService](#conditions-kms-via-service).

```
{
  "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS",
  "Effect": "Allow",
  "Principal": {"AWS": "*"},
  "Condition": {
    "StringEquals": {
      "kms:CallerAccount": "111122223333",
      "kms:ViaService": "ec2.us-west-2.amazonaws.com"
    }
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:CreateGrant",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}
```

## kms: CustomerMasterKeySpec (usang)
<a name="conditions-kms-key-spec-replaced"></a>

Kunci `kms:CustomerMasterKeySpec` kondisi tidak digunakan lagi. Sebagai gantinya, gunakan [kms: KeySpec](#conditions-kms-key-spec) condition key.

Kunci `kms:CustomerMasterKeySpec` dan `kms:KeySpec` kondisi bekerja dengan cara yang sama. Hanya nama-nama yang berbeda. Kami menyarankan Anda menggunakan`kms:KeySpec`. Namun, untuk menghindari perubahan yang melanggar, AWS KMS mendukung kedua tombol kondisi.

## kms: CustomerMasterKeyUsage (usang)
<a name="conditions-kms-key-usage-replaced"></a>

Kunci `kms:CustomerMasterKeyUsage` kondisi tidak digunakan lagi. Sebagai gantinya, gunakan [kms: KeyUsage](#conditions-kms-key-usage) condition key.

Kunci `kms:CustomerMasterKeyUsage` dan `kms:KeyUsage` kondisi bekerja dengan cara yang sama. Hanya nama-nama yang berbeda. Kami menyarankan Anda menggunakan`kms:KeyUsage`. Namun, untuk menghindari perubahan yang melanggar, AWS KMS mendukung kedua tombol kondisi.

## km: DataKeyPairSpec
<a name="conditions-kms-data-key-spec"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:DataKeyPairSpec`  |  String  | Bernilai tunggal |  `GenerateDataKeyPair` `GenerateDataKeyPairWithoutPlaintext`  |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan tombol kondisi ini untuk mengontrol akses ke [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)dan [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html)operasi berdasarkan nilai `KeyPairSpec` parameter dalam permintaan. Misalnya, Anda dapat mengizinkan pengguna untuk menghasilkan hanya tipe tertentu dari pasangan kunci data.

Contoh pernyataan kebijakan kunci berikut menggunakan kunci `kms:DataKeyPairSpec` kondisi untuk memungkinkan pengguna menggunakan kunci KMS untuk menghasilkan hanya pasangan kunci data RSA.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": [
    "kms:GenerateDataKeyPair",
    "kms:GenerateDataKeyPairWithoutPlaintext"
  ],
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:DataKeyPairSpec": "RSA*"
    }
  }
}
```

**Lihat juga**
+ [km: KeySpec](#conditions-kms-key-spec)
+ [km: EncryptionAlgorithm](#conditions-kms-encryption-algorithm)
+ [*kms:EncryptionContext: kunci-konteks*](#conditions-kms-encryption-context)
+ [km: EncryptionContextKeys](#conditions-kms-encryption-context-keys)

## km: EncryptionAlgorithm
<a name="conditions-kms-encryption-algorithm"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:EncryptionAlgorithm`  |  String  | Bernilai tunggal |  `Decrypt` `Encrypt` `GenerateDataKey` `GenerateDataKeyPair` `GenerateDataKeyPairWithoutPlaintext` `GenerateDataKeyWithoutPlaintext` `ReEncrypt`  |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan kunci syarat `kms:EncryptionAlgorithm` untuk mengontrol akses ke operasi kriptografi berdasarkan algoritme enkripsi yang digunakan dalam operasi. Untuk [Enkripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html), [Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html), dan [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)operasi, ia mengontrol akses berdasarkan nilai [EncryptionAlgorithm](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html#KMS-Decrypt-request-EncryptionAlgorithm)parameter dalam permintaan. Untuk operasi yang menghasilkan kunci data dan pasangan kunci data, ini mengontrol akses berdasarkan algoritme enkripsi yang digunakan untuk mengenkripsi kunci data.

Kunci kondisi ini tidak berpengaruh pada operasi yang dilakukan di luar AWS KMS, seperti mengenkripsi dengan kunci publik dalam key pair KMS asimetris di luar. AWS KMS

**EncryptionAlgorithm parameter dalam permintaan**

Untuk memungkinkan pengguna hanya menggunakan algoritma enkripsi tertentu dengan kunci KMS, gunakan pernyataan kebijakan dengan `Deny` efek dan operator `StringNotEquals` kondisi. Misalnya, contoh pernyataan kebijakan kunci berikut melarang prinsipal yang dapat mengambil `ExampleRole` peran dari menggunakan kunci KMS ini dalam operasi kriptografi tertentu kecuali algoritma enkripsi dalam permintaan adalah`RSAES_OAEP_SHA_256`, algoritma enkripsi asimetris yang digunakan dengan kunci RSA KMS.

Tidak seperti pernyataan kebijakan yang memungkinkan pengguna untuk menggunakan algoritma enkripsi tertentu, pernyataan kebijakan dengan negatif ganda seperti ini mencegah kebijakan dan hibah lain untuk kunci KMS ini memungkinkan peran ini menggunakan algoritme enkripsi lainnya. `Deny`Dalam pernyataan kebijakan utama ini lebih diutamakan daripada kebijakan utama atau kebijakan IAM apa pun yang `Allow` berpengaruh, dan diutamakan daripada semua hibah untuk kunci KMS ini dan prinsipalnya.

```
{
  "Sid": "Allow only one encryption algorithm with this asymmetric KMS key",
  "Effect": "Deny",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*"
  ],
  "Resource": "*",
  "Condition": {
    "StringNotEquals": {
      "kms:EncryptionAlgorithm": "RSAES_OAEP_SHA_256"
    }
  }
}
```

**Algoritma enkripsi yang digunakan untuk operasi**

Anda juga dapat menggunakan kunci syarat `kms:EncryptionAlgorithm` untuk mengontrol akses ke operasi berdasarkan algoritme enkripsi yang digunakan dalam operasi, bahkan ketika algoritme tidak ditentukan dalam permintaan. Ini memungkinkan Anda untuk meminta atau melarang algoritme `SYMMETRIC_DEFAULT`, yang mungkin tidak ditentukan dalam permintaan karena itu adalah nilai default.

Fitur ini memungkinkan Anda menggunakan kunci syarat `kms:EncryptionAlgorithm` untuk mengontrol akses ke operasi yang menghasilkan kunci data dan pasangan kunci data. Operasi ini hanya menggunakan kunci KMS enkripsi simetris dan algoritma. `SYMMETRIC_DEFAULT`

Misalnya, kebijakan IAM ini membatasi perwakilannya pada enkripsi simetris. Ini menolak akses ke kunci KMS apa pun di akun contoh untuk operasi kriptografi kecuali algoritma enkripsi yang ditentukan dalam permintaan atau digunakan dalam operasi adalah SYMMETRIC\$1DEFAULT. Termasuk `GenerateDataKey*` menambahkan [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), [GenerateDataKeyWithoutPlaintext[GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html),, dan [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html)ke izin. Syarat tidak berpengaruh pada operasi ini karena selalu menggunakan algoritme enkripsi simetris.

```
{
  "Sid": "AllowOnlySymmetricAlgorithm",
  "Effect": "Deny",
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*"
  ],
  "Resource": "arn:aws:kms:us-west-2:111122223333:key/*",
  "Condition": {
    "StringNotEquals": {
      "kms:EncryptionAlgorithm": "SYMMETRIC_DEFAULT"
    }
  }
}
```

**Lihat juga**
+ [km: MacAlgorithm](#conditions-kms-mac-algorithm)
+ [km: SigningAlgorithm](#conditions-kms-signing-algorithm)

## *kms:EncryptionContext: kunci-konteks*
<a name="conditions-kms-encryption-context"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:EncryptionContext:context-key`  |  String  | Bernilai tunggal |  `CreateGrant` `Encrypt` `Decrypt` `GenerateDataKey` `GenerateDataKeyPair` `GenerateDataKeyPairWithoutPlaintext` `GenerateDataKeyWithoutPlaintext` `ReEncrypt` `RetireGrant`  |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan tombol `kms:EncryptionContext:context-key` kondisi untuk mengontrol akses ke kunci [KMS enkripsi simetris](symm-asymm-choose-key-spec.md#symmetric-cmks) berdasarkan [konteks enkripsi](encrypt_context.md) dalam permintaan untuk operasi [kriptografi](kms-cryptography.md#cryptographic-operations). Gunakan kunci syarat ini untuk mengevaluasi kunci dan nilai dalam pasangan konteks enkripsi. Untuk mengevaluasi hanya kunci konteks enkripsi atau memerlukan konteks enkripsi terlepas dari kunci atau nilai, gunakan [kms: EncryptionContextKeys](#conditions-kms-encryption-context-keys) condition key.

**catatan**  
Nilai kunci kondisi harus sesuai dengan aturan karakter untuk kebijakan utama dan kebijakan IAM. Beberapa karakter yang valid dalam konteks enkripsi tidak valid dalam kebijakan. Anda mungkin tidak dapat menggunakan kunci kondisi ini untuk mengekspresikan semua nilai konteks enkripsi yang valid. Untuk detail tentang aturan dokumen kebijakan utama, lihat[Format kebijakan utama](key-policy-overview.md#key-policy-format). Untuk detail tentang aturan dokumen kebijakan IAM, lihat [Persyaratan nama IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-names) di Panduan Pengguna *IAM*.

Anda tidak dapat menentukan konteks enkripsi dalam operasi kriptografi dengan kunci KMS [asimetris atau kunci KMS](symmetric-asymmetric.md) [HMAC](hmac.md). Algoritma asimetris dan algoritma MAC tidak mendukung konteks enkripsi.

Untuk menggunakan *kunci kondisi kunci konteks kms: EncryptionContext*:, ganti *context-key* placeholder dengan kunci konteks enkripsi. Ganti *context-value* placeholder dengan nilai konteks enkripsi.

```
"kms:EncryptionContext:context-key": "context-value"
```

Misalnya, kunci syarat berikut menentukan konteks enkripsi di mana kuncinya adalah `AppName` dan nilainya adalah `ExampleApp` (`AppName = ExampleApp`).

```
"kms:EncryptionContext:AppName": "ExampleApp"
```

Ini adalah [kunci syarat bernilai tunggal](#set-operators). Kunci dalam kunci syarat menentukan kunci konteks enkripsi tertentu (*context-key*). Meskipun Anda dapat menyertakan beberapa pasangan konteks enkripsi di setiap permintaan API, pasangan konteks enkripsi dengan *context-key* yang ditentukan hanya dapat memiliki satu nilai. Misalnya, kunci `kms:EncryptionContext:Department` kondisi hanya berlaku untuk pasangan konteks enkripsi dengan `Department` kunci, dan setiap pasangan konteks enkripsi yang diberikan dengan `Department` kunci hanya dapat memiliki satu nilai.

Jangan gunakan operator set dengan kunci syarat `kms:EncryptionContext:context-key`. Jika Anda membuat pernyataan kebijakan dengan tindakan `Allow`, kunci syarat `kms:EncryptionContext:context-key`, dan operator set `ForAllValues`, syaratmemungkinkan permintaan tanpa konteks enkripsi dan permintaan dengan pasangan konteks enkripsi yang tidak ditentukan dalam syarat kebijakan.

**Awas**  
Jangan gunakan operator set `ForAnyValue` atau `ForAllValues` dengan kunci syarat bernilai tunggal ini. Operator set ini dapat membuat syarat kebijakan yang tidak memerlukan nilai yang ingin Anda wajibkan dan mengizinkan nilai yang ingin Anda larang.  
Jika Anda membuat atau memperbarui kebijakan yang menyertakan operator `ForAllValues` set dengan kms:EncryptionContext: *context-key*, akan AWS KMS menampilkan pesan galat berikut:  
`OverlyPermissiveCondition:EncryptionContext: Using the ForAllValues set operator with a single-valued condition key matches requests without the specified encryption context or with an unspecified encryption context. To fix, remove ForAllValues.`

Untuk mewajibkan pasangan konteks enkripsi tertentu, gunakan kunci syarat `kms:EncryptionContext:context-key` dengan operator `StringEquals`.

Contoh pernyataan kebijakan kunci berikut memungkinkan prinsipal yang dapat mengambil peran untuk menggunakan kunci KMS dalam `GenerateDataKey` permintaan hanya ketika konteks enkripsi dalam permintaan menyertakan pasangan. `AppName:ExampleApp` Pasangan konteks enkripsi lainnya diizinkan.

Nama kunci tidak peka huruf besar/kecil. Kepekaan terharap huruf besar/kecil dari nilai ditentukan oleh operator syarat, seperti `StringEquals`. Lihat perinciannya di [Kepekaan terhadap huruf besar/kecil dari syarat konteks enkripsi](#conditions-kms-encryption-context-case).

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:AppName": "ExampleApp"
    }
  }
}
```

Untuk meminta pasangan konteks enkripsi dan melarang semua pasangan konteks enkripsi lainnya, gunakan keduanya kms:EncryptionContext: *context-key* dan [`kms:EncryptionContextKeys`](#conditions-kms-encryption-context-keys)dalam pernyataan kebijakan. Pernyataan kebijakan kunci berikut menggunakan syarat `kms:EncryptionContext:AppName` untuk mewajibkan pasangan konteks enkripsi `AppName=ExampleApp` dalam permintaan. Pernyataan tersebut juga menggunakan kunci syarat `kms:EncryptionContextKeys` dengan operator set `ForAllValues` untuk mengizinkan hanya kunci konteks enkripsi `AppName`. 

Operator set `ForAllValues` membatasi kunci konteks enkripsi dalam permintaan ke `AppName`. Jika syarat `kms:EncryptionContextKeys` dengan operator set `ForAllValues` digunakan sendiri dalam pernyataan kebijakan, operator set ini akan mengizinkan permintaan tanpa konteks enkripsi. Namun, jika permintaan tidak memiliki konteks enkripsi, kondisi `kms:EncryptionContext:AppName` akan gagal. Untuk detail tentang operator set `ForAllValues`, lihat [Menggunakan beberapa kunci dan nilai](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions) di *Panduan Pengguna IAM*.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/KeyUsers"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:AppName": "ExampleApp"
    },
    "ForAllValues:StringEquals": {
      "kms:EncryptionContextKeys": [
        "AppName"
      ]
    }
  }
}
```

Anda juga dapat menggunakan tombol kondisi ini untuk menolak akses ke kunci KMS untuk operasi tertentu. Contoh pernyataan kebijakan kunci berikut menggunakan `Deny` efek untuk melarang prinsipal menggunakan kunci KMS jika konteks enkripsi dalam permintaan menyertakan pasangan konteks `Stage=Restricted` enkripsi. Syarat ini memungkinkan permintaan dengan pasangan konteks enkripsi lainnya, termasuk pasangan konteks enkripsi dengan kunci `Stage` dan nilai lainnya, seperti `Stage=Test`.

```
{
  "Effect": "Deny",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:Stage": "Restricted"
    }
  }
}
```

### Menggunakan beberapa pasangan konteks enkripsi
<a name="conditions-kms-encryption-context-many"></a>

Anda dapat mewajibkan atau melarang beberapa pasangan konteks enkripsi. Anda juga dapat mewajibkan salah satu dari beberapa pasangan konteks enkripsi. Untuk detail tentang logika yang digunakan untuk menafsirkan kondisi ini, lihat [Membuat syarat dengan beberapa kunci atau nilai](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html) di Panduan Pengguna IAM. 

**catatan**  
Versi sebelumnya dari topik ini menampilkan pernyataan kebijakan yang menggunakan `ForAnyValue` dan `ForAllValues` menetapkan operator dengan *kunci kondisi kunci-konteks kms: EncryptionContext*:. Menggunakan operator set dengan [kunci syarat bernilai tunggal](#set-operators) dapat menghasilkan kebijakan yang mengizinkan permintaan tanpa konteks enkripsi dan pasangan konteks enkripsi yang tidak ditentukan.   
Misalnya, kondisi kebijakan dengan efek `Allow`, operator set `ForAllValues`, dan kunci syarat `"kms:EncryptionContext:Department": "IT"` tidak membatasi konteks enkripsi ke pasangan "Department=IT". Ini memungkinkan permintaan tanpa konteks enkripsi dan permintaan dengan pasangan konteks enkripsi yang tidak ditentukan, seperti `Stage=Restricted`.  
Harap tinjau kebijakan Anda dan hilangkan operator yang ditetapkan dari kondisi apa pun dengan kms:EncryptionContext: *context-key*. Upaya untuk membuat atau memperbarui kebijakan dengan format ini gagal dengan pengecualian `OverlyPermissiveCondition`. Untuk mengatasi kesalahan, hapus operator set.

Untuk mewajibkan beberapa pasangan konteks enkripsi, daftarkan pasangan dalam syarat yang sama. Contoh pernyataan kebijakan kunci berikut memerlukan dua pasangan konteks enkripsi, `Department=IT` dan `Project=Alpha`. Karena syarat memiliki kunci (`kms:EncryptionContext:Department` dan `kms:EncryptionContext:Project`) yang berbeda, syarat tersebut secara implisit dihubungkan oleh operator DAN. Pasangan konteks enkripsi lainnya diizinkan, tetapi tidak diwajibkan.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:Decrypt",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:Department": "IT",
      "kms:EncryptionContext:Project": "Alpha"
    }
  }
}
```

Untuk meminta satu pasangan konteks enkripsi ATAU pasangan lain, tempatkan setiap kunci syarat dalam pernyataan kebijakan terpisah. Contoh kebijakan kunci berikut memerlukan pasangan `Department=IT` *atau* `Project=Alpha`, atau keduanya. Pasangan konteks enkripsi lainnya diizinkan, tetapi tidak diwajibkan.

```
{
 "Effect": "Allow",
 "Principal": {
  "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
 },
 "Action": "kms:GenerateDataKey",
 "Resource": "*",
 "Condition": {
  "StringEquals": {
   "kms:EncryptionContext:Department": "IT"
  }
 }
},
{
 "Effect": "Allow",
 "Principal": {
  "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
 },
 "Action": "kms:GenerateDataKey",
 "Resource": "*",
 "Condition": {
  "StringEquals": {
   "kms:EncryptionContext:Project": "Alpha"
  }
 }
}
```

Untuk meminta pasangan enkripsi tertentu dan mengecualikan semua pasangan konteks enkripsi lainnya, gunakan keduanya kms:EncryptionContext: *context-key* dan [`kms:EncryptionContextKeys`](#conditions-kms-encryption-context-keys)dalam pernyataan kebijakan. *Pernyataan kebijakan kunci berikut menggunakan kondisi kms:EncryptionContext: *context-key* untuk memerlukan konteks enkripsi dengan keduanya `Department=IT` dan pasangan.* `Project=Alpha` Ini menggunakan kunci syarat `kms:EncryptionContextKeys` dengan operator set `ForAllValues` untuk mengizinkan hanya kunci konteks enkripsi `Department` dan `Project`. 

Operator set `ForAllValues` membatasi kunci konteks enkripsi dalam permintaan ke `Department` dan `Project`. Jika digunakan sendiri dalam suatu kondisi, operator set ini akan mengizinkan permintaan tanpa konteks enkripsi, tetapi dalam konfigurasi ini, *kunci-konteks kms: EncryptionContext*: dalam kondisi ini akan gagal.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:Department": "IT",
      "kms:EncryptionContext:Project": "Alpha"
    },
    "ForAllValues:StringEquals": {
      "kms:EncryptionContextKeys": [
        "Department",
        "Project"
      ]
    }
  }
}
```

Anda juga dapat melarang beberapa pasangan konteks enkripsi. Contoh pernyataan kebijakan kunci berikut menggunakan `Deny` efek untuk melarang prinsipal menggunakan kunci KMS jika konteks enkripsi dalam permintaan menyertakan `Stage=Restricted` `Stage=Production` atau.pair. 

Beberapa nilai (`Restricted` dan `Production`) untuk kunci yang sama (`kms:EncryptionContext:Stage`) secara implisit dihubungkan oleh ATAU. Untuk detailnya, lihat [Logika evaluasi untuk syarat dengan beberapa kunci atau nilai](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multiple-conditions-eval) di *Panduan Pengguna IAM*.

```
{
  "Effect": "Deny",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:Stage": [
         "Restricted",
         "Production"
      ] 
    }
  }
}
```

### Kepekaan terhadap huruf besar/kecil dari syarat konteks enkripsi
<a name="conditions-kms-encryption-context-case"></a>

Konteks enkripsi yang ditentukan dalam operasi dekripsi harus sama persis, peka huruf besar/kecil untuk konteks enkripsi yang ditentukan dalam operasi enkripsi. Hanya urutan pasangan dalam konteks enkripsi dengan banyak pasangan yang dapat bervariasi.

Namun, dalam kondisi kebijakan, kunci syarat tidak peka huruf besar/kecil. Pengaturan kepekaan terhadap huruf besar/kecil dari nilai syarat ditentukan oleh [operator syarat kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) yang Anda gunakan, seperti `StringEquals` atau `StringEqualsIgnoreCase`.

Dengan demikian, kunci syarat, yang terdiri dari awalan `kms:EncryptionContext:` dan pengganti *`context-key`*, tidak peka huruf besar/kecil. Kebijakan yang menggunakan syarat ini tidak memeriksa huruf salah satu elemen kunci syarat. Kepekaan terhadap huruf besar/kecil dari nilai, yaitu, penggantian *`context-value`*, ditentukan oleh operator syarat kebijakan.

Misalnya, pernyataan kebijakan berikut mengizinkan operasi saat konteks enkripsi menyertakan kunci `Appname`, terlepas dari kapitalisasinya. Syarat `StringEquals` mengharuskan `ExampleApp` dikapitalisasi seperti yang ditentukan. 

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:Decrypt",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:Appname": "ExampleApp"
    }
  }
}
```

Untuk mewajibkan kunci konteks enkripsi peka huruf besar/kecil, gunakan kondisi EncryptionContextKeys kebijakan [kms:](#conditions-kms-encryption-context-keys) dengan operator kondisi peka huruf besar/kecil, seperti. `StringEquals` Dalam syarat kebijakan ini, karena kunci konteks enkripsi adalah nilai dalam syarat kebijakan ini, kepekaan terhadap huruf besar/kecilnya ditentukan oleh operator syarat. 

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "ForAnyValue:StringEquals": {
      "kms:EncryptionContextKeys": "AppName"
    }
  }
}
```

Untuk mewajibkan evaluasi case-sensitive dari kunci konteks enkripsi dan nilai, gunakan kondisi kebijakan *kunci-konteks `kms:EncryptionContextKeys` dan kms:EncryptionContext: bersama-sama dalam pernyataan* kebijakan yang sama. Operator syarat peka huruf besar/kecil (seperti `StringEquals`) selalu berlaku untuk nilai syarat. Kunci konteks enkripsi (seperti `AppName`) adalah nilai syarat `kms:EncryptionContextKeys`. Nilai konteks enkripsi (seperti`ExampleApp`) adalah nilai dari kms:EncryptionContext: kondisi *kunci-konteks*.

Misalnya, dalam contoh pernyataan kebijakan kunci berikut, karena operator `StringEquals` peka huruf besar/kecil, baik kunci konteks enkripsi maupun nilai konteks enkripsi peka huruf besar/kecil.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "ForAnyValue:StringEquals": {
      "kms:EncryptionContextKeys": "AppName"
    },
    "StringEquals": {
      "kms:EncryptionContext:AppName": "ExampleApp"
    }
  }
}
```

### Menggunakan variabel dalam syarat konteks enkripsi
<a name="conditions-kms-encryption-context-variables"></a>

Kunci dan nilai dalam pasangan konteks enkripsi harus berupa string literal sederhana. Kunci dan nilai tersebut tidak bisa berupa bilangan bulat atau objek, atau jenis apa pun yang tidak sepenuhnya diselesaikan. Jika Anda menggunakan tipe yang berbeda, seperti integer atau float, AWS KMS menafsirkannya sebagai string literal.

```
"encryptionContext": {
    "department": "10103.0"
}
```

Namun, nilai kunci syarat `kms:EncryptionContext:context-key` dapat berupa [variabel kebijakan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html). Variabel kebijakan ini diselesaikan saat runtime berdasarkan nilai dalam permintaan. Misalnya, `aws:CurrentTime ` memutuskan waktu permintaan dan `aws:username` memutuskan nama ramah pemanggil.

Anda dapat menggunakan variabel kebijakan ini untuk membuat pernyataan kebijakan dengan syarat yang memerlukan informasi yang sangat spesifik dalam konteks enkripsi, seperti nama pengguna pemanggil. Karena berisi variabel, Anda dapat menggunakan pernyataan kebijakan yang sama untuk semua pengguna yang dapat mengambil peran tersebut. Anda tidak perlu menulis pernyataan kebijakan terpisah untuk setiap pengguna.

Pertimbangkan situasi di mana Anda ingin semua pengguna yang dapat mengambil peran untuk menggunakan kunci KMS yang sama untuk mengenkripsi dan mendekripsi data mereka. Namun, Anda ingin mengizinkan mereka mendekripsi hanya data yang mereka enkripsi. Mulailah dengan mengharuskan setiap permintaan untuk AWS KMS menyertakan konteks enkripsi di mana kuncinya berada `user` dan nilainya adalah nama AWS pengguna pemanggil, seperti yang berikut.

```
"encryptionContext": {
    "user": "bob"
}
```

Kemudian, untuk menerapkan persyaratan ini, Anda dapat menggunakan pernyataan kebijakan seperti pada contoh berikut. Pernyataan kebijakan ini memberikan izin `TestTeam` peran untuk mengenkripsi dan mendekripsi data dengan kunci KMS. Namun, izin hanya valid jika konteks enkripsi dalam permintaan menyertakan pasangan `"user": "<username>"`. Untuk mewakili nama pengguna, kondisi menggunakan variabel kebijakan [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-infotouse](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-infotouse).

Saat permintaan dievaluasi, nama pengguna pemanggil menggantikan variabel dalam syarat. Dengan begitu, syarat memerlukan konteks enkripsi `"user": "bob"` untuk "bob" dan `"user": "alice"` untuk "alice."

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/TestTeam"
  },
  "Action": [
    "kms:Decrypt",
    "kms:Encrypt"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:user": "${aws:username}"
    }
  }
}
```

Anda dapat menggunakan variabel kebijakan IAM hanya dalam nilai kunci syarat `kms:EncryptionContext:context-key`. Anda tidak dapat menggunakan variabel dalam kunci.

Anda juga dapat menggunakan [kunci konteks khusus penyedia](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc_user-id.html) dalam variabel. Kunci konteks ini secara unik mengidentifikasi pengguna yang masuk AWS dengan menggunakan federasi identitas web. 

Seperti semua variabel, variabel ini hanya dapat digunakan dalam syarat kebijakan `kms:EncryptionContext:context-key`, bukan dalam konteks enkripsi yang sebenarnya. Dan variable hanya dapat digunakan dalam nilai syarat, bukan di kunci.

Misalnya, pernyataan kebijakan kunci berikut ini mirip dengan kebijakan kunci sebelumnya. Namun, kondisi tersebut memerlukan konteks enkripsi di mana kuncinya adalah `sub` dan nilainya secara unik mengidentifikasi pengguna yang masuk ke kumpulan pengguna Amazon Cognito. Untuk detail tentang mengidentifikasi pengguna dan peran di Amazon Cognito, lihat [Peran IAM](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html) di [Panduan Developer Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/).

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/TestTeam"
  },
  "Action": [
    "kms:Decrypt",
    "kms:Encrypt"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
       "kms:EncryptionContext:sub": "${cognito-identity.amazonaws.com:sub}"
    }
  }
}
```

**Lihat juga**
+ [km: EncryptionContextKeys](#conditions-kms-encryption-context-keys)
+ [km: GrantConstraintType](#conditions-kms-grant-constraint-type)

## km: EncryptionContextKeys
<a name="conditions-kms-encryption-context-keys"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:EncryptionContextKeys`  |  String (daftar)  | Multi-nilai |  `CreateGrant` `Decrypt` `Encrypt` `GenerateDataKey` `GenerateDataKeyPair` `GenerateDataKeyPairWithoutPlaintext` `GenerateDataKeyWithoutPlaintext` `ReEncrypt` `RetireGrant`  |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan tombol `kms:EncryptionContextKeys` kondisi untuk mengontrol akses ke kunci [KMS enkripsi simetris](symm-asymm-choose-key-spec.md#symmetric-cmks) berdasarkan [konteks enkripsi](encrypt_context.md) dalam permintaan untuk operasi kriptografi. Gunakan kunci syarat ini untuk mengevaluasi hanya kunci di setiap pasangan konteks enkripsi. Untuk mengevaluasi kunci dan nilai dalam konteks enkripsi, gunakan kunci syarat `kms:EncryptionContext:context-key`.

Anda tidak dapat menentukan konteks enkripsi dalam operasi kriptografi dengan kunci KMS [asimetris atau kunci KMS](symmetric-asymmetric.md) [HMAC](hmac.md). Algoritma asimetris dan algoritma MAC tidak mendukung konteks enkripsi.

**catatan**  
Nilai kunci kondisi, termasuk kunci konteks enkripsi, harus sesuai dengan karakter dan aturan pengkodean untuk kebijakan AWS KMS kunci. Anda mungkin tidak dapat menggunakan kunci kondisi ini untuk mengekspresikan semua kunci konteks enkripsi yang valid. Untuk detail tentang aturan dokumen kebijakan utama, lihat[Format kebijakan utama](key-policy-overview.md#key-policy-format). Untuk detail tentang aturan dokumen kebijakan IAM, lihat [Persyaratan nama IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-names) di Panduan Pengguna *IAM*.

Ini adalah [kunci syarat multi-nilai](#set-operators). Anda dapat menentukan beberapa pasangan konteks enkripsi di setiap permintaan API. `kms:EncryptionContextKeys`membandingkan kunci konteks enkripsi dalam permintaan dengan kumpulan kunci konteks enkripsi dalam kebijakan. Untuk menentukan bagaimana set ini dibandingkan, Anda harus menyediakan operator set `ForAnyValue` atau `ForAllValues` dalam syarat kebijakan. Untuk detail tentang operator kumpulan, lihat [Menggunakan beberapa kunci dan nilai](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions) di Panduan Pengguna IAM.
+ `ForAnyValue`: Setidaknya satu kunci konteks enkripsi dalam permintaan harus cocok dengan kunci konteks enkripsi dalam syarat kebijakan. Kunci konteks enkripsi lainnya diizinkan. Jika permintaan tidak memiliki konteks enkripsi, syaratnya tidak terpenuhi.
+ `ForAllValues`: Setiap kunci konteks enkripsi dalam permintaan harus cocok dengan kunci konteks enkripsi dalam syarat kebijakan. Operator set ini membatasi kunci konteks enkripsi untuk yang ada dalam syarat kebijakan. Operator set ini tidak mewajibkan kunci konteks enkripsi apa pun, tetapi melarang kunci konteks enkripsi yang tidak ditentukan.

Contoh pernyataan kebijakan kunci berikut menggunakan kunci syarat `kms:EncryptionContextKeys` dengan operator set `ForAnyValue`. Pernyataan kebijakan ini memungkinkan penggunaan kunci KMS untuk operasi yang ditentukan, tetapi hanya jika setidaknya satu dari pasangan konteks enkripsi dalam permintaan menyertakan `AppName` kunci, terlepas dari nilainya. 

Misalnya, pernyataan kebijakan kunci ini mengizinkan permintaan `GenerateDataKey` dengan dua pasangan konteks enkripsi, `AppName=Helper` dan `Project=Alpha`, karena pasangan konteks enkripsi pertama memenuhi syarat. Permintaan dengan hanya `Project=Alpha` atau tanpa konteks enkripsi akan gagal.

Karena operasi [StringEquals](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)kondisi peka huruf besar/kecil, pernyataan kebijakan ini memerlukan ejaan dan kasus kunci konteks enkripsi. Tetapi Anda dapat menggunakan operator syarat yang mengabaikan huruf besar/kecil kunci, seperti `StringEqualsIgnoreCase`.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": [
    "kms:Encrypt",
    "kms:GenerateDataKey*"
  ],
  "Resource": "*",
  "Condition": {
    "ForAnyValue:StringEquals": {
      "kms:EncryptionContextKeys": "AppName"
    }
  }
}
```

Anda juga dapat menggunakan kunci `kms:EncryptionContextKeys` kondisi untuk memerlukan konteks enkripsi (konteks enkripsi apa pun) dalam operasi kriptografi yang menggunakan kunci KMS; 

Contoh pernyataan kebijakan kunci berikut menggunakan kunci `kms:EncryptionContextKeys` kondisi dengan [operator kondisi Null](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) untuk mengizinkan akses ke kunci KMS hanya jika konteks enkripsi dalam permintaan API tidak null. Syarat ini tidak memeriksa kunci atau nilai konteks enkripsi. Syarat ini hanya memverifikasi bahwa konteks enkripsi ada. 

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": [
    "kms:Encrypt",
    "kms:GenerateDataKey*"
  ],
  "Resource": "*",
  "Condition": {
    "Null": {
      "kms:EncryptionContextKeys": false
    }
  }
}
```

**Lihat juga**
+ [*kms:EncryptionContext: kunci-konteks*](#conditions-kms-encryption-context)
+ [km: GrantConstraintType](#conditions-kms-grant-constraint-type)

## km: ExpirationModel
<a name="conditions-kms-expiration-model"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:ExpirationModel`  |  String  | Bernilai tunggal |  `ImportKeyMaterial`  |  Kebijakan kunci dan kebijakan IAM  | 

Kunci `kms:ExpirationModel` kondisi mengontrol akses ke [ImportKeyMaterial](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html)operasi berdasarkan nilai [ExpirationModel](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ExpirationModel)parameter dalam permintaan. 

`ExpirationModel` adalah parameter opsional yang menentukan apakah material kunci yang diimpor kedaluwarsa. Nilai yang valid adalah `KEY_MATERIAL_EXPIRES` dan `KEY_MATERIAL_DOES_NOT_EXPIRE`. `KEY_MATERIAL_EXPIRES` adalah nilai default. 

Tanggal dan waktu kedaluwarsa ditentukan oleh nilai parameter. [ValidTo](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ValidTo) Parameter `ValidTo` diperlukan kecuali nilai parameter `ExpirationModel` adalah `KEY_MATERIAL_DOES_NOT_EXPIRE`. Anda juga dapat menggunakan [kms: ValidTo](#conditions-kms-valid-to) condition key untuk meminta tanggal kedaluwarsa tertentu sebagai syarat untuk akses.

Contoh pernyataan kebijakan berikut menggunakan kunci `kms:ExpirationModel` kondisi untuk memungkinkan pengguna mengimpor materi kunci ke kunci KMS hanya jika permintaan menyertakan `ExpirationModel` parameter dan nilainya. `KEY_MATERIAL_DOES_NOT_EXPIRE` 

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:ImportKeyMaterial",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ExpirationModel": "KEY_MATERIAL_DOES_NOT_EXPIRE"
    }
  }
}
```

Anda juga dapat menggunakan tombol `kms:ExpirationModel` kondisi untuk memungkinkan pengguna mengimpor materi kunci hanya ketika materi kunci kedaluwarsa. Contoh pernyataan kebijakan kunci berikut menggunakan kunci `kms:ExpirationModel` kondisi dengan [operator kondisi Null](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_Null) untuk memungkinkan pengguna mengimpor materi kunci hanya ketika permintaan tidak memiliki `ExpirationModel` parameter. Nilai default untuk ExpirationModel adalah`KEY_MATERIAL_EXPIRES`.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:ImportKeyMaterial",
  "Resource": "*",
  "Condition": {
    "Null": {
      "kms:ExpirationModel": true
    }
  }
}
```

**Lihat juga**
+ [km: ValidTo](#conditions-kms-valid-to)
+ [km: WrappingAlgorithm](#conditions-kms-wrapping-algorithm)
+ [km: WrappingKeySpec](#conditions-kms-wrapping-key-spec)

## km: GrantConstraintType
<a name="conditions-kms-grant-constraint-type"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:GrantConstraintType`  |  String  | Bernilai tunggal |  `CreateGrant` `RetireGrant`  |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan kunci kondisi ini untuk mengontrol akses ke [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operasi berdasarkan jenis [batasan hibah](create-grant-overview.md#grant-constraints) dalam permintaan. 

Saat Anda membuat pemberian izin, Anda dapat secara opsional menentukan batasan pemberian izin untuk mengizinkan operasi yang izinnya hanya diizinkan saat [konteks enkripsi](encrypt_context.md) tertentu ada. Batasan pemberian izin dapat berupa salah satu dari dua jenis: `EncryptionContextEquals` atau `EncryptionContextSubset`. Anda dapat menggunakan kunci syarat ini untuk memeriksa apakah permintaan berisi satu jenis atau jenis lain.

**penting**  
Jangan sertakan informasi rahasia atau sensitif di bidang ini. Bidang ini dapat ditampilkan dalam plaintext di CloudTrail log dan output lainnya.

Contoh pernyataan kebijakan kunci berikut menggunakan kunci `kms:GrantConstraintType` kondisi untuk memungkinkan pengguna membuat hibah hanya jika permintaan menyertakan batasan `EncryptionContextEquals` hibah. Contoh menunjukkan pernyataan kebijakan dalam kebijakan kunci.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:CreateGrant",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:GrantConstraintType": "EncryptionContextEquals"
    }
  }
}
```

**Lihat juga**
+ [*kms:EncryptionContext: kunci-konteks*](#conditions-kms-encryption-context)
+ [km: EncryptionContextKeys](#conditions-kms-encryption-context-keys)
+ [km: GrantIsFor AWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [km: GrantOperations](#conditions-kms-grant-operations)
+ [km: GranteePrincipal](#conditions-kms-grantee-principal)
+ [km: RetiringPrincipal](#conditions-kms-retiring-principal)

## km: GrantIsFor AWSResource
<a name="conditions-kms-grant-is-for-aws-resource"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:GrantIsForAWSResource`  |  Boolean  | Bernilai tunggal |  `CreateGrant` `ListGrants` `RevokeGrant`  |  Kebijakan kunci dan kebijakan IAM  | 

Mengizinkan atau menolak izin untuk [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html), [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html), atau [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)operasi hanya ketika [AWS layanan terintegrasi dengan AWS KMS](https://aws.amazon.com/kms/features/#AWS_Service_Integration) panggilan operasi atas nama pengguna. Syarat kebijakan ini tidak mengizinkan pengguna untuk memanggil operasi pemberian izin ini secara langsung.

Contoh pernyataan kebijakan kunci berikut menggunakan kunci syarat `kms:GrantIsForAWSResource`. Ini memungkinkan AWS layanan yang terintegrasi dengan AWS KMS, seperti Amazon EBS, untuk membuat hibah pada kunci KMS ini atas nama prinsipal yang ditentukan. 

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:CreateGrant",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "kms:GrantIsForAWSResource": true
    }
  }
}
```

**Lihat juga**
+ [km: GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [km: GrantOperations](#conditions-kms-grant-operations)
+ [km: GranteePrincipal](#conditions-kms-grantee-principal)
+ [km: RetiringPrincipal](#conditions-kms-retiring-principal)

## km: GrantOperations
<a name="conditions-kms-grant-operations"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:GrantOperations`  |  String  | Multi-nilai |  `CreateGrant`  |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan tombol kondisi ini untuk mengontrol akses ke [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operasi berdasarkan [operasi hibah](grants.md#terms-grant-operations) dalam permintaan. Misalnya, Anda dapat mengizinkan pengguna membuat hibah yang mendelegasikan izin untuk mengenkripsi tetapi tidak mendekripsi. Untuk informasi selengkapnya tentang pemberian izin, lihat [Menggunakan pemberian izin](grants.md).

Ini adalah [kunci syarat multi-nilai](#set-operators). `kms:GrantOperations` membandingkan kumpulan operasi pemberian izin dalam permintaan `CreateGrant` dengan kumpulan operasi pemberian izin dalam kebijakan. Untuk menentukan bagaimana set ini dibandingkan, Anda harus menyediakan operator set `ForAnyValue` atau `ForAllValues` dalam syarat kebijakan. Untuk detail tentang operator set, lihat [Menggunakan beberapa kunci dan nilai](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions) di Panduan Pengguna IAM.
+ `ForAnyValue`: Setidaknya satu operasi pemberian izin dalam permintaan harus cocok dengan salah satu operasi pemberian izin dalam syarat kebijakan. Operasi pemberian izin lainnya diizinkan.
+ ForAllValues: Setiap operasi hibah dalam permintaan harus sesuai dengan operasi hibah dalam kondisi kebijakan. Operator set ini membatasi operasi pemberian izin untuk yang ditentukan dalam syarat kebijakan. Operator set ini tidak mewajibkan operasi pemberian izin apa pun, tetapi melarang operasi pemberian izin yang tidak ditentukan.

  ForAllValues juga mengembalikan true ketika tidak ada operasi hibah dalam permintaan, tetapi `CreateGrant` tidak mengizinkannya. Jika parameter `Operations` tidak ada atau memiliki nilai null, permintaan `CreateGrant` gagal.

Contoh pernyataan kebijakan kunci berikut menggunakan kunci `kms:GrantOperations` kondisi untuk membuat hibah hanya ketika operasi hibah`Encrypt`,`ReEncryptTo`, atau keduanya. Jika pemberian izin mencakup operasi lain, permintaan `CreateGrant` gagal.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:CreateGrant",
  "Resource": "*",
  "Condition": {
    "ForAllValues:StringEquals": {
      "kms:GrantOperations": [
        "Encrypt",
        "ReEncryptTo"
      ]
    }
  }
}
```

Jika Anda mengubah operator yang ditetapkan dalam syarat kebijakan ke `ForAnyValue`, pernyataan kebijakan akan mewajibkan setidaknya salah satu operasi pemberian izin dalam izin adalah `Encrypt` atau `ReEncryptTo`, tetapi akan mengizinkan operasi pemberian izin lainnya, seperti `Decrypt` atau `ReEncryptFrom`.

**Lihat juga**
+ [km: GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [km: GrantIsFor AWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [km: GranteePrincipal](#conditions-kms-grantee-principal)
+ [km: RetiringPrincipal](#conditions-kms-retiring-principal)

## km: GranteePrincipal
<a name="conditions-kms-grantee-principal"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:GranteePrincipal`  |  String  | Bernilai tunggal |  `CreateGrant`  |  Kebijakan IAM dan kunci  | 

Anda dapat menggunakan tombol kondisi ini untuk mengontrol akses ke [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operasi berdasarkan nilai [GranteePrincipal](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-GranteePrincipal)parameter dalam permintaan. Misalnya, Anda dapat membuat hibah untuk menggunakan kunci KMS hanya jika prinsipal penerima hibah dalam `CreateGrant` permintaan cocok dengan prinsipal yang ditentukan dalam pernyataan kondisi.

Untuk menentukan pokok penerima hibah, gunakan Amazon Resource Name (ARN) dari prinsipal. AWS Prinsipal yang valid meliputi Akun AWS, pengguna IAM, peran IAM, pengguna federasi, dan pengguna peran yang diasumsikan. *Untuk bantuan dengan sintaks ARN untuk prinsipal, lihat [IAM ARNs di Panduan Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns).*

Contoh pernyataan kebijakan kunci berikut menggunakan kunci `kms:GranteePrincipal` kondisi untuk membuat hibah untuk kunci KMS hanya jika pokok penerima hibah dalam hibah adalah. `LimitedAdminRole`

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:CreateGrant",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:GranteePrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole"
    }
  }
}
```

**Lihat juga**
+ [km: GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [km: GrantIsFor AWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [km: GrantOperations](#conditions-kms-grant-operations)
+ [km: RetiringPrincipal](#conditions-kms-retiring-principal)

## km: KeyAgreementAlgorithm
<a name="conditions-kms-key-agreement-algorithm"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:KeyAgreementAlgorithm`  |  String  | Bernilai tunggal | `DeriveSharedSecret` |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan tombol `kms:KeyAgreementAlgorithm` kondisi untuk mengontrol akses ke [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html)operasi berdasarkan nilai `KeyAgreementAlgorithm` parameter dalam permintaan. Satu-satunya nilai yang valid untuk `KeyAgreementAlgorithm` adalah`ECDH`.

Misalnya, pernyataan kebijakan kunci berikut menggunakan kunci `kms:KeyAgreementAlgorithm` kondisi untuk menolak semua akses DeriveSharedSecret kecuali `KeyAgreementAlgorithm` is`ECDH`.

```
{
       "Effect": "Deny",
       "Principal": {
         "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
       },
       "Action": "kms:DeriveSharedSecret",
       "Resource": "*",
       "Condition": {
            "StringNotEquals": {
               "kms:KeyAgreementAlgorithm": "ECDH"
         }
       }
}
```

**Lihat juga**
+ [km: KeyUsage](#conditions-kms-key-usage)

## km: KeyOrigin
<a name="conditions-kms-key-origin"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:KeyOrigin`  |  String  | Bernilai tunggal |  `CreateKey` Operasi sumber daya utama KMS  |  Kebijakan IAM Kebijakan kunci dan kebijakan IAM  | 

Kunci `kms:KeyOrigin` kondisi mengontrol akses ke operasi berdasarkan nilai `Origin` properti kunci KMS yang dibuat oleh atau digunakan dalam operasi. Kunci syarat ini berfungsi sebagai syarat sumber daya atau syarat permintaan.

Anda dapat menggunakan tombol kondisi ini untuk mengontrol akses ke [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operasi berdasarkan nilai parameter [Origin](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-Origin) dalam permintaan. Nilai yang valid untuk `Origin` are`AWS_KMS`,`AWS_CLOUDHSM`,`EXTERNAL_KEY_STORE`, dan`EXTERNAL`. 

Misalnya, Anda dapat membuat kunci KMS hanya ketika materi kunci dihasilkan di AWS KMS (`AWS_KMS`), hanya jika materi kunci dihasilkan dalam AWS CloudHSM klaster yang terkait dengan penyimpanan kunci [kustom CloudHSM](key-store-overview.md#custom-key-store-overview) `AWS_CLOUDHSM` (), hanya jika materi kunci dihasilkan di penyimpanan [kunci eksternal](key-store-overview.md#custom-key-store-overview) `EXTERNAL_KEY_STORE` (), atau hanya ketika [materi kunci diimpor](importing-keys.md) dari sumber eksternal (). `EXTERNAL` 

Contoh pernyataan kebijakan kunci berikut menggunakan kunci `kms:KeyOrigin` kondisi untuk membuat kunci KMS hanya ketika AWS KMS membuat materi kunci.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
      },
      "Action": "kms:CreateKey",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:KeyOrigin": "AWS_KMS"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
      },
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:GenerateDataKeyPair",
        "kms:GenerateDataKeyPairWithoutPlaintext",
        "kms:ReEncrypt*"
      ],
      "Resource": "arn:aws:kms:us-west-2:111122223333:key/*",
      "Condition": {
        "StringEquals": {
          "kms:KeyOrigin": "AWS_CLOUDHSM"
        }
      }
    }
  ]
}
```

------

Anda juga dapat menggunakan tombol `kms:KeyOrigin` kondisi untuk mengontrol akses ke operasi yang menggunakan atau mengelola kunci KMS berdasarkan `Origin` properti kunci KMS yang digunakan untuk operasi. Operasi harus berupa operasi *sumber daya kunci KMS*, yaitu operasi yang diotorisasi untuk kunci KMS tertentu. Untuk mengidentifikasi operasi sumber daya kunci KMS, dalam [Tabel Tindakan dan Sumber Daya](kms-api-permissions-reference.md#kms-api-permissions-reference-table), cari nilai `KMS key` di `Resources` kolom untuk operasi.

Misalnya, kebijakan IAM berikut memungkinkan prinsipal untuk melakukan operasi sumber daya kunci KMS yang ditentukan, tetapi hanya dengan kunci KMS di akun yang dibuat di penyimpanan kunci kustom.

```
{
  "Effect": "Allow",  
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:GenerateDataKey",
    "kms:GenerateDataKeyWithoutPlaintext",
    "kms:GenerateDataKeyPair",
    "kms:GenerateDataKeyPairWithoutPlaintext",
    "kms:ReEncrypt*"
  ],
  "Resource": "arn:aws:kms:us-west-2:111122223333:key/*",
  "Condition": {
    "StringEquals": {
      "kms:KeyOrigin": "AWS_CLOUDHSM"
    }
  }
}
```

**Lihat juga**
+ [km: BypassPolicyLockoutSafetyCheck](#conditions-kms-bypass-policy-lockout-safety-check)
+ [km: KeySpec](#conditions-kms-key-spec)
+ [km: KeyUsage](#conditions-kms-key-usage)

## km: KeySpec
<a name="conditions-kms-key-spec"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:KeySpec`  |  String  | Bernilai tunggal |  `CreateKey` Operasi sumber daya utama KMS |  Kebijakan IAM Kebijakan kunci dan kebijakan IAM  | 

Kunci `kms:KeySpec` kondisi mengontrol akses ke operasi berdasarkan nilai `KeySpec` properti kunci KMS yang dibuat oleh atau digunakan dalam operasi. 

Anda dapat menggunakan kunci kondisi ini dalam kebijakan IAM untuk mengontrol akses ke [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operasi berdasarkan nilai [KeySpec](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-KeySpec)parameter dalam `CreateKey` permintaan. Misalnya, Anda dapat menggunakan kondisi ini untuk memungkinkan pengguna membuat hanya kunci KMS enkripsi simetris atau hanya kunci KMS HMAC.

Contoh berikut pernyataan kebijakan IAM menggunakan kunci `kms:KeySpec` kondisi untuk memungkinkan prinsipal untuk membuat hanya kunci KMS asimetris RSA. Izin hanya berlaku ketika permintaan dimulai dengan`RSA_`. `KeySpec`

```
{
  "Effect": "Allow",
  "Action": "kms:CreateKey",
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:KeySpec": "RSA_*"
    }
  }
}
```

Anda juga dapat menggunakan tombol `kms:KeySpec` kondisi untuk mengontrol akses ke operasi yang menggunakan atau mengelola kunci KMS berdasarkan `KeySpec` properti kunci KMS yang digunakan untuk operasi. Operasi harus berupa operasi *sumber daya kunci KMS*, yaitu operasi yang diotorisasi untuk kunci KMS tertentu. Untuk mengidentifikasi operasi sumber daya kunci KMS, dalam [Tabel Tindakan dan Sumber Daya](kms-api-permissions-reference.md#kms-api-permissions-reference-table), cari nilai `KMS key` di `Resources` kolom untuk operasi. 

Misalnya, kebijakan IAM berikut memungkinkan prinsipal untuk melakukan operasi sumber daya kunci KMS yang ditentukan, tetapi hanya dengan kunci KMS enkripsi simetris di akun. 

```
{
  "Effect": "Allow",
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:DescribeKey"
  ],
  "Resource": "arn:aws:kms:us-west-2:111122223333:key/*",
  "Condition": {
    "StringEquals": {
      "kms:KeySpec": "SYMMETRIC_DEFAULT"
    }
  }
}
```

**Lihat juga**
+ [km: BypassPolicyLockoutSafetyCheck](#conditions-kms-bypass-policy-lockout-safety-check)
+ [kms: CustomerMasterKeySpec (usang)](#conditions-kms-key-spec-replaced)
+ [km: DataKeyPairSpec](#conditions-kms-data-key-spec)
+ [km: KeyOrigin](#conditions-kms-key-origin)
+ [km: KeyUsage](#conditions-kms-key-usage)

## km: KeyUsage
<a name="conditions-kms-key-usage"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:KeyUsage`  |  String  | Bernilai tunggal |  `CreateKey` Operasi sumber daya utama KMS  |  Kebijakan IAM Kebijakan kunci dan kebijakan IAM  | 

Kunci `kms:KeyUsage` kondisi mengontrol akses ke operasi berdasarkan nilai `KeyUsage` properti kunci KMS yang dibuat oleh atau digunakan dalam operasi. 

Anda dapat menggunakan tombol kondisi ini untuk mengontrol akses ke [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operasi berdasarkan nilai [KeyUsage](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html#KMS-CreateKey-request-KeyUsage)parameter dalam permintaan. Nilai yang valid untuk `KeyUsage` are`ENCRYPT_DECRYPT`,`SIGN_VERIFY`,`GENERATE_VERIFY_MAC`, dan`KEY_AGREEMENT`.

Misalnya, Anda dapat membuat kunci KMS hanya jika `KeyUsage` ada `ENCRYPT_DECRYPT` atau menolak izin pengguna saat `KeyUsage` ada`SIGN_VERIFY`. 

Contoh berikut pernyataan kebijakan IAM menggunakan kunci `kms:KeyUsage` kondisi untuk membuat kunci KMS hanya ketika adalah`KeyUsage`. `ENCRYPT_DECRYPT`

```
{
  "Effect": "Allow",  
  "Action": "kms:CreateKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:KeyUsage": "ENCRYPT_DECRYPT"
    }
  }
}
```

Anda juga dapat menggunakan tombol `kms:KeyUsage` kondisi untuk mengontrol akses ke operasi yang menggunakan atau mengelola kunci KMS berdasarkan `KeyUsage` properti kunci KMS dalam operasi. Operasi harus berupa operasi *sumber daya kunci KMS*, yaitu operasi yang diotorisasi untuk kunci KMS tertentu. Untuk mengidentifikasi operasi sumber daya kunci KMS, dalam [Tabel Tindakan dan Sumber Daya](kms-api-permissions-reference.md#kms-api-permissions-reference-table), cari nilai `KMS key` di `Resources` kolom untuk operasi.

Misalnya, kebijakan IAM berikut memungkinkan prinsipal untuk melakukan operasi sumber daya kunci KMS yang ditentukan, tetapi hanya dengan kunci KMS di akun yang digunakan untuk penandatanganan dan verifikasi.

```
{
  "Effect": "Allow",
  "Action": [
    "kms:CreateGrant",
    "kms:DescribeKey",
    "kms:GetPublicKey",
    "kms:ScheduleKeyDeletion"
  ],
  "Resource": "arn:aws:kms:us-west-2:111122223333:key/*",
  "Condition": {
    "StringEquals": {
      "kms:KeyUsage": "SIGN_VERIFY"
    }
  }
}
```

**Lihat juga**
+ [km: BypassPolicyLockoutSafetyCheck](#conditions-kms-bypass-policy-lockout-safety-check)
+ [kms: CustomerMasterKeyUsage (usang)](#conditions-kms-key-usage-replaced)
+ [km: KeyOrigin](#conditions-kms-key-origin)
+ [km: KeySpec](#conditions-kms-key-spec)

## km: MacAlgorithm
<a name="conditions-kms-mac-algorithm"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:MacAlgorithm`  |  String  | Bernilai tunggal | `GenerateMac``VerifyMac` |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan tombol `kms:MacAlgorithm` kondisi untuk mengontrol akses ke [GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html)dan [VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html)operasi berdasarkan nilai `MacAlgorithm` parameter dalam permintaan. 

Contoh kebijakan kunci berikut memungkinkan pengguna yang dapat mengambil `testers` peran untuk menggunakan kunci HMAC KMS untuk menghasilkan dan memverifikasi tag HMAC hanya ketika algoritma MAC dalam permintaan adalah atau. `HMAC_SHA_384` `HMAC_SHA_512` Kebijakan ini menggunakan dua pernyataan kebijakan terpisah masing-masing dengan kondisinya sendiri. Jika Anda menentukan lebih dari satu algoritma MAC dalam pernyataan kondisi tunggal, kondisi memerlukan kedua algoritma, bukan satu atau yang lain.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/testers"
      },
      "Action": [
        "kms:GenerateMac",
        "kms:VerifyMac"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:MacAlgorithm": "HMAC_SHA_384"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/testers"
      },
      "Action": [
        "kms:GenerateMac",
        "kms:VerifyMac"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "kms:MacAlgorithm": "HMAC_SHA_512"
        }
      }
    }
  ]
}
```

------

**Lihat juga**
+ [km: EncryptionAlgorithm](#conditions-kms-encryption-algorithm)
+ [km: SigningAlgorithm](#conditions-kms-signing-algorithm)

## km: MessageType
<a name="conditions-kms-message-type"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:MessageType`  |  String  | Bernilai tunggal |  `Sign` `Verify`  | Kebijakan kunci dan kebijakan IAM | 

Kunci syarat `kms:MessageType` mengontrol akses ke operasi [Tandatangani](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html) dan [Verifikasi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html) berdasarkan nilai parameter `MessageType` dalam permintaan. Nilai yang valid untuk `MessageType` adalah `RAW` dan `DIGEST`. 

Misalnya, pernyataan kebijakan kunci berikut menggunakan kunci `kms:MessageType` kondisi untuk menggunakan kunci KMS asimetris untuk menandatangani pesan, tetapi bukan intisari pesan.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:Sign",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:MessageType": "RAW"
    }
  }
}
```

**Lihat juga**
+ [km: SigningAlgorithm](#conditions-kms-signing-algorithm)

## km: MultiRegion
<a name="conditions-kms-multiregion"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:MultiRegion`  |  Boolean  | Bernilai tunggal |  `CreateKey` Operasi sumber daya utama KMS  |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan kunci syarat ini untuk mengizinkan operasi hanya pada kunci Wilayah tunggal atau hanya pada [kunci multi-Wilayah](multi-region-keys-overview.md). Kunci `kms:MultiRegion` kondisi mengontrol akses ke AWS KMS operasi pada kunci KMS dan [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operasi berdasarkan nilai `MultiRegion` properti kunci KMS. Nilai yang valid adalah `true` (multi-Wilayah), dan `false` (Wilayah tunggal). Semua kunci KMS memiliki `MultiRegion` properti.

Misalnya, pernyataan kebijakan IAM berikut menggunakan kunci syarat `kms:MultiRegion` untuk mengizinkan perwakilan membuat kunci Wilayah tunggal saja. 

```
{
  "Effect": "Allow",
  "Action": "kms:CreateKey",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "kms:MultiRegion": false
    }
  }
}
```

## km: MultiRegionKeyType
<a name="conditions-kms-multiregion-key-type"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:MultiRegionKeyType`  |  String  | Bernilai tunggal |  `CreateKey` Operasi sumber daya utama KMS  |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan kunci syarat ini untuk mengizinkan operasi hanya pada [kunci utama multi-Wilayah](multi-region-keys-overview.md#mrk-primary-key) atau hanya pada [kunci replika multi-Wilayah](multi-region-keys-overview.md#mrk-replica-key). Kunci `kms:MultiRegionKeyType` kondisi mengontrol akses ke AWS KMS operasi pada kunci KMS dan [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operasi berdasarkan `MultiRegionKeyType` properti kunci KMS. Nilai yang valid adalah `PRIMARY` dan `REPLICA`. Hanya kunci Multi-region yang memiliki `MultiRegionKeyType` properti.

Biasanya, Anda menggunakan kunci `kms:MultiRegionKeyType` kondisi dalam kebijakan IAM untuk mengontrol akses ke beberapa kunci KMS. Namun, karena kunci Multi-wilayah tertentu dapat berubah menjadi primer atau replika, Anda mungkin ingin menggunakan kondisi ini dalam kebijakan kunci untuk mengizinkan operasi hanya jika kunci Multi-wilayah tertentu adalah kunci primer atau replika.

Misalnya, pernyataan kebijakan IAM berikut menggunakan kunci syarat `kms:MultiRegionKeyType` untuk mengizinkan perwakilan menjadwalkan dan membatalkan penghapusan kunci hanya pada kunci replika multi-Wilayah di Akun AWS yang ditentukan. 

```
{
  "Effect": "Allow",
  "Action": [
    "kms:ScheduleKeyDeletion",
    "kms:CancelKeyDeletion"
  ],
  "Resource": "arn:aws:kms:*:111122223333:key/*",
  "Condition": {
    "StringEquals": {
      "kms:MultiRegionKeyType": "REPLICA"
    }
  }
}
```

Untuk mengizinkan atau menolak akses ke semua kunci multi-Wilayah, Anda bisa menggunakan kedua nilai atau nilai null dengan `kms:MultiRegionKeyType`. Namun, kunci MultiRegion kondisi [kms:](#conditions-kms-multiregion) direkomendasikan untuk tujuan itu.

## km: PrimaryRegion
<a name="conditions-kms-primary-region"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:PrimaryRegion`  |  String (daftar)  | Bernilai tunggal |  `UpdatePrimaryRegion`  |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan tombol kondisi ini untuk membatasi Wilayah tujuan dalam [UpdatePrimaryRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html)operasi. Ini adalah Wilayah AWS yang dapat meng-host kunci utama Multi-wilayah Anda. 

Kunci `kms:PrimaryRegion` kondisi mengontrol akses ke [UpdatePrimaryRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html)operasi berdasarkan nilai `PrimaryRegion` parameter. `PrimaryRegion`Parameter menentukan [kunci replika Multi-region yang](multi-region-keys-overview.md#mrk-replica-key) sedang dipromosikan ke primer. Wilayah AWS Nilai kondisi adalah satu atau lebih Wilayah AWS nama, seperti `us-east-1` atau`ap-southeast-2`, atau pola nama Wilayah, seperti `eu-*`

Misalnya, pernyataan kebijakan kunci berikut menggunakan kunci `kms:PrimaryRegion` kondisi untuk mengizinkan prinsipal memperbarui wilayah utama kunci Multi-wilayah ke salah satu dari empat Wilayah yang ditentukan.

```
{
  "Effect": "Allow",
  "Action": "kms:UpdatePrimaryRegion",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/Developer"
  },
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:PrimaryRegion": [ 
         "us-east-1",
         "us-west-2",
         "eu-west-3",
         "ap-southeast-2"
      ]
    }
  }
}
```

## km: ReEncryptOnSameKey
<a name="conditions-kms-reencrypt-on-same-key"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:ReEncryptOnSameKey`  |  Boolean  | Bernilai tunggal |  `ReEncrypt`  |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan kunci kondisi ini untuk mengontrol akses ke [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)operasi berdasarkan apakah permintaan menentukan kunci KMS tujuan yang sama dengan yang digunakan untuk enkripsi asli. 

Misalnya, pernyataan kebijakan kunci berikut menggunakan kunci `kms:ReEncryptOnSameKey` kondisi untuk mengenkripsi ulang hanya jika kunci KMS tujuan sama dengan yang digunakan untuk enkripsi asli.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:ReEncrypt*",
  "Resource": "*",
  "Condition": {
    "Bool": {
      "kms:ReEncryptOnSameKey": true
    }
  }
}
```

## km: RequestAlias
<a name="conditions-kms-request-alias"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:RequestAlias`  |  String (daftar)  | Bernilai tunggal |  [Operasi kriptografi](kms-cryptography.md#cryptographic-operations) [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)  |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan kunci kondisi ini untuk mengizinkan operasi hanya ketika permintaan menggunakan alias tertentu untuk mengidentifikasi kunci KMS. Kunci `kms:RequestAlias` kondisi mengontrol akses ke kunci KMS yang digunakan dalam operasi kriptografi,`GetPublicKey`, atau `DescribeKey` berdasarkan [alias](kms-alias.md) yang mengidentifikasi kunci KMS dalam permintaan. (Kondisi kebijakan ini tidak berpengaruh pada [GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html)operasi karena operasi tidak menggunakan kunci KMS atau alias.) 

Kondisi ini mendukung [kontrol akses berbasis atribut](abac.md) (ABAC) di AWS KMS, yang memungkinkan Anda mengontrol akses ke kunci KMS berdasarkan tag dan alias kunci KMS. Anda dapat menggunakan tag dan alias untuk mengizinkan atau menolak akses ke kunci KMS tanpa mengubah kebijakan atau hibah. Lihat perinciannya di [ABAC untuk AWS KMS](abac.md).

Untuk menentukan alias dalam syarat kebijakan ini, gunakan [nama alias](concepts.md#key-id-alias-name), seperti `alias/project-alpha`, atau pola nama alias, seperti `alias/*test*`. Anda tidak dapat menentukan [alias ARN](concepts.md#key-id-alias-ARN) dalam nilai kunci syarat ini.

Untuk memenuhi syarat ini, nilai parameter `KeyId` dalam permintaan harus berupa nama alias yang cocok atau alias ARN. Jika permintaan menggunakan [pengenal kunci](concepts.md#key-id) yang berbeda, itu tidak memenuhi kondisi, bahkan jika mengidentifikasi kunci KMS yang sama.

Misalnya, pernyataan kebijakan kunci berikut memungkinkan prinsipal untuk memanggil [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)operasi pada kunci KMS. Namun ini hanya diizinkan jika nilai parameter `KeyId` dalam permintaan adalah `alias/finance-key` atau alias ARN dengan nama alias itu, seperti `arn:aws:kms:us-west-2:111122223333:alias/finance-key`.

```
{
  "Sid": "Key policy using a request alias condition",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/developer"
  },
  "Action": "kms:GenerateDataKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:RequestAlias": "alias/finance-key"
    }
  }
}
```

Anda tidak dapat menggunakan tombol kondisi ini untuk mengontrol akses ke operasi alias, seperti [CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html)atau [DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html). Untuk informasi tentang mengontrol akses ke operasi alias, lihat [Mengontrol akses ke alias](alias-access.md).

## km: ResourceAliases
<a name="conditions-kms-resource-aliases"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:ResourceAliases`  |  String (daftar)  | Multi-nilai | Operasi sumber daya utama KMS |  Kebijakan IAM saja  | 

Gunakan tombol kondisi ini untuk mengontrol akses ke kunci KMS berdasarkan [alias](kms-alias.md) yang terkait dengan kunci KMS. Operasi harus berupa operasi *sumber daya kunci KMS*, yaitu operasi yang diotorisasi untuk kunci KMS tertentu. Untuk mengidentifikasi operasi sumber daya kunci KMS, dalam [Tabel Tindakan dan Sumber Daya](kms-api-permissions-reference.md#kms-api-permissions-reference-table), cari nilai `KMS key` di `Resources` kolom untuk operasi.

Kondisi ini mendukung kontrol akses berbasis atribut (ABAC) di. AWS KMS Dengan ABAC, Anda dapat mengontrol akses ke kunci KMS berdasarkan tag yang ditetapkan ke kunci KMS dan alias yang terkait dengan kunci KMS. Anda dapat menggunakan tag dan alias untuk mengizinkan atau menolak akses ke kunci KMS tanpa mengubah kebijakan atau hibah. Lihat perinciannya di [ABAC untuk AWS KMS](abac.md).

Alias harus unik di Akun AWS dan Wilayah, tetapi kondisi ini memungkinkan Anda mengontrol akses ke beberapa kunci KMS di Wilayah yang sama (menggunakan operator `StringLike` perbandingan) atau ke beberapa kunci KMS di setiap akun yang berbeda Wilayah AWS .

**catatan**  
ResourceAliasesKondisi [kms:](#conditions-kms-resource-aliases) hanya efektif jika kunci KMS sesuai dengan [alias per](resource-limits.md#aliases-per-key) kuota kunci KMS. Jika kunci KMS melebihi kuota ini, kepala sekolah yang berwenang untuk menggunakan kunci KMS dengan `kms:ResourceAliases` syarat ditolak akses ke kunci KMS.

Untuk menentukan alias dalam syarat kebijakan ini, gunakan [nama alias](concepts.md#key-id-alias-name), seperti `alias/project-alpha`, atau pola nama alias, seperti `alias/*test*`. Anda tidak dapat menentukan [alias ARN](concepts.md#key-id-alias-ARN) dalam nilai kunci syarat ini. Untuk memenuhi kondisi, kunci KMS yang digunakan dalam operasi harus memiliki alias yang ditentukan. Tidak masalah apakah atau bagaimana kunci KMS diidentifikasi dalam permintaan operasi.

Ini adalah kunci kondisi multivaluasi yang membandingkan kumpulan alias yang terkait dengan kunci KMS dengan kumpulan alias dalam kebijakan. Untuk menentukan bagaimana set ini dibandingkan, Anda harus menyediakan operator set `ForAnyValue` atau `ForAllValues` dalam syarat kebijakan. Untuk detail tentang operator kumpulan, lihat [Menggunakan beberapa kunci dan nilai](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_multi-value-conditions.html#reference_policies_multi-key-or-value-conditions) di Panduan Pengguna IAM.
+ ForAnyValue: Setidaknya satu alias yang terkait dengan kunci KMS harus cocok dengan alias dalam kondisi kebijakan. Alias ​​lainnya diizinkan. Jika kunci KMS tidak memiliki alias, kondisinya tidak terpenuhi.
+ ForAllValues: Setiap alias yang terkait dengan kunci KMS harus cocok dengan alias dalam kebijakan. Operator set ini membatasi alias yang terkait dengan kunci KMS ke alias yang berada dalam kondisi kebijakan. Operator set ini tidak mewajibkan alias apa pun, tetapi melarang alias yang tidak ditentukan.

Misalnya, pernyataan kebijakan IAM berikut memungkinkan prinsipal untuk memanggil [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)operasi pada setiap kunci KMS dalam Akun AWS yang ditentukan yang terkait dengan alias. `finance-key` (Kebijakan kunci kunci KMS yang terpengaruh juga harus mengizinkan akun prinsipal untuk menggunakannya untuk operasi ini.) Untuk menunjukkan bahwa kondisi terpenuhi ketika salah satu dari banyak alias yang mungkin terkait dengan kunci KMS adalah`alias/finance-key`, kondisi menggunakan operator `ForAnyValue` set. 

Karena `kms:ResourceAliases` kondisi didasarkan pada sumber daya, bukan permintaan, panggilan untuk `GenerateDataKey` berhasil untuk setiap kunci KMS yang terkait dengan `finance-key` alias, bahkan jika permintaan menggunakan [ID kunci atau kunci](concepts.md#key-id-key-id) [ARN untuk mengidentifikasi](concepts.md#key-id-key-ARN) kunci KMS. 

```
{
  "Sid": "AliasBasedIAMPolicy",
  "Effect": "Allow",
  "Action": "kms:GenerateDataKey",
  "Resource": [
    "arn:aws:kms:*:111122223333:key/*",
    "arn:aws:kms:*:444455556666:key/*"
  ],
  "Condition": {
    "ForAnyValue:StringEquals": {
      "kms:ResourceAliases": "alias/finance-key"
    }
  }
}
```

Contoh berikut pernyataan kebijakan IAM memungkinkan prinsipal untuk mengaktifkan dan menonaktifkan kunci KMS tetapi hanya ketika semua alias kunci KMS menyertakan ".” `Test` Pernyataan kebijakan ini menggunakan dua kondisi. Kondisi dengan operator `ForAllValues` set mengharuskan semua alias yang terkait dengan kunci KMS menyertakan “Uji”. Kondisi dengan operator yang `ForAnyValue` ditetapkan mengharuskan kunci KMS memiliki setidaknya satu alias dengan “Uji.” Tanpa `ForAnyValue` syarat, pernyataan kebijakan ini akan memungkinkan prinsipal untuk menggunakan kunci KMS yang tidak memiliki alias.

```
{
  "Sid": "AliasBasedIAMPolicy",
  "Effect": "Allow",
  "Action": [
    "kms:EnableKey",
    "kms:DisableKey"
  ],
  "Resource": "arn:aws:kms:*:111122223333:key/*",
  "Condition": {
    "ForAllValues:StringLike": {
      "kms:ResourceAliases": [
        "alias/*Test*"
      ]
    },
    "ForAnyValue:StringLike": {
      "kms:ResourceAliases": [
        "alias/*Test*"
      ]
    }
  }
}
```

## km: ReplicaRegion
<a name="conditions-kms-replica-region"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:ReplicaRegion`  |  String (daftar)  | Bernilai tunggal |  `ReplicateKey`  |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan kunci kondisi ini untuk membatasi Wilayah AWS di mana prinsipal dapat mereplikasi kunci [Multi-wilayah](multi-region-keys-overview.md). Kunci `kms:ReplicaRegion` kondisi mengontrol akses ke [ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operasi berdasarkan nilai [ReplicaRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-RetiringPrincipal)parameter dalam permintaan. Parameter ini menentukan Wilayah AWS untuk [kunci replika](multi-region-keys-overview.md#mrk-replica-key) baru. 

Nilai kondisi adalah satu atau lebih Wilayah AWS nama, seperti `us-east-1` atau`ap-southeast-2`, atau pola nama, seperti`eu-*`. Untuk daftar nama Wilayah AWS yang AWS KMS mendukung, lihat [AWS Key Management Service titik akhir dan kuota](https://docs.aws.amazon.com/general/latest/gr/kms.html) di. Referensi Umum AWS

Misalnya, pernyataan kebijakan kunci berikut menggunakan kunci `kms:ReplicaRegion` kondisi untuk mengizinkan prinsipal memanggil [ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html)operasi hanya jika nilai `ReplicaRegion` parameter adalah salah satu Wilayah yang ditentukan.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/Administrator"
  },
  "Action": "kms:ReplicateKey"
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ReplicaRegion": [ 
         "us-east-1",
         "eu-west-3",
         "ap-southeast-2"
      ]
    }
  }
}
```

Kunci kondisi ini mengontrol akses hanya ke [ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html)operasi. Untuk mengontrol akses ke [UpdatePrimaryRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html)operasi, gunakan [kms:](#conditions-kms-primary-region) tombol PrimaryRegion kondisi.

## km: RetiringPrincipal
<a name="conditions-kms-retiring-principal"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:RetiringPrincipal`  |  String (daftar)  | Bernilai tunggal |  `CreateGrant`  |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan tombol kondisi ini untuk mengontrol akses ke [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operasi berdasarkan nilai [RetiringPrincipal](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-RetiringPrincipal)parameter dalam permintaan. Misalnya, Anda dapat membuat hibah untuk menggunakan kunci KMS hanya jika `RetiringPrincipal` dalam `CreateGrant` permintaan cocok dengan `RetiringPrincipal` dalam pernyataan kondisi.

Untuk menentukan prinsipal pensiun, gunakan Amazon Resource Name (ARN) dari AWS prinsipal. Prinsipal yang valid meliputi Akun AWS, pengguna IAM, peran IAM, pengguna federasi, dan pengguna peran yang diasumsikan. *Untuk bantuan dengan sintaks ARN untuk prinsipal, lihat [IAM ARNs di Panduan Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns).*

Contoh pernyataan kebijakan kunci berikut memungkinkan pengguna untuk membuat hibah untuk kunci KMS. Kunci `kms:RetiringPrincipal` kondisi membatasi izin untuk `CreateGrant` permintaan di mana kepala sekolah pensiun dalam hibah adalah. `LimitedAdminRole`

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:CreateGrant",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:RetiringPrincipal": "arn:aws:iam::111122223333:role/LimitedAdminRole"
    }
  }
}
```

**Lihat juga**
+ [km: GrantConstraintType](#conditions-kms-grant-constraint-type)
+ [km: GrantIsFor AWSResource](#conditions-kms-grant-is-for-aws-resource)
+ [km: GrantOperations](#conditions-kms-grant-operations)
+ [km: GranteePrincipal](#conditions-kms-grantee-principal)

## km: RotationPeriodInDays
<a name="conditions-kms-rotation-period-in-days"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Tipe kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:RotationPeriodInDays`  |  Numerik  | Bernilai tunggal |  `EnableKeyRotation`  |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan kunci kondisi ini untuk membatasi nilai yang dapat ditentukan oleh prinsipal dalam `RotationPeriodInDays` parameter permintaan. [EnableKeyRotation](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKeyRotation.html)

`RotationPeriodInDays`Menentukan jumlah hari antara setiap tanggal rotasi kunci otomatis. AWS KMS memungkinkan Anda untuk menentukan periode rotasi antara 90 dan 2560 hari, tetapi Anda dapat menggunakan kunci `kms:RotationPeriodInDays` kondisi untuk lebih membatasi periode rotasi, seperti menegakkan periode rotasi minimum dalam rentang yang valid.

Misalnya, pernyataan kebijakan kunci berikut menggunakan kunci `kms:RotationPeriodInDays` kondisi untuk mencegah prinsipal mengaktifkan rotasi kunci jika periode rotasi kurang dari atau sama dengan 180 hari.

```
{
  "Effect": "Deny",
  "Action": "kms:EnableKeyRotation",
  "Principal": "*",
  "Resource": "*",
  "Condition" : {
      "NumericLessThanEquals" : {
        "kms:RotationPeriodInDays" : "180"
      }
  }
}
```

## km: ScheduleKeyDeletionPendingWindowInDays
<a name="conditions-kms-schedule-key-deletion-pending-window-in-days"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Tipe kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:ScheduleKeyDeletionPendingWindowInDays`  |  Numerik  | Bernilai tunggal |  `ScheduleKeyDeletion`  |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan kunci kondisi ini untuk membatasi nilai yang dapat ditentukan oleh prinsipal dalam `PendingWindowInDays` parameter permintaan. [ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html)

`PendingWindowInDays`Menentukan jumlah hari yang AWS KMS akan menunggu sebelum menghapus kunci. AWS KMS memungkinkan Anda untuk menentukan masa tunggu antara 7 dan 30 hari, tetapi Anda dapat menggunakan kunci `kms:ScheduleKeyDeletionPendingWindowInDays` kondisi untuk lebih membatasi masa tunggu, seperti menegakkan periode tunggu minimum dalam rentang yang valid.

Misalnya, pernyataan kebijakan kunci berikut menggunakan kunci `kms:ScheduleKeyDeletionPendingWindowInDays` kondisi untuk mencegah prinsipal menjadwalkan penghapusan kunci jika masa tunggu kurang dari atau sama dengan 21 hari.

```
{
  "Effect": "Deny",
  "Action": "kms:ScheduleKeyDeletion",
  "Principal": "*",
  "Resource": "*",
  "Condition" : {
      "NumericLessThanEquals" : {
        "kms:ScheduleKeyDeletionPendingWindowInDays" : "21"
      }
  }
}
```

## km: SigningAlgorithm
<a name="conditions-kms-signing-algorithm"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:SigningAlgorithm`  |  String  | Bernilai tunggal |  `Sign`  `Verify`  |  Kebijakan kunci dan kebijakan IAM  | 

Anda dapat menggunakan tombol `kms:SigningAlgorithm` kondisi untuk mengontrol akses ke operasi [Tanda](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html) dan [Verifikasi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html) berdasarkan nilai [SigningAlgorithm](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html#KMS-Sign-request-SigningAlgorithm)parameter dalam permintaan. Kunci kondisi ini tidak berpengaruh pada operasi yang dilakukan di luar AWS KMS, seperti memverifikasi tanda tangan dengan kunci publik dalam key pair KMS asimetris di luar. AWS KMS

Kebijakan kunci contoh berikut memungkinkan pengguna yang dapat mengambil `testers` peran untuk menggunakan kunci KMS untuk menandatangani pesan hanya ketika algoritma penandatanganan yang digunakan untuk permintaan adalah algoritma RSASSA\$1PSS, seperti. `RSASSA_PSS_SHA512`

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/testers"
  },
  "Action": "kms:Sign",
  "Resource": "*",
  "Condition": {
    "StringLike": {
      "kms:SigningAlgorithm": "RSASSA_PSS*"
    }
  }
}
```

**Lihat juga**
+ [km: EncryptionAlgorithm](#conditions-kms-encryption-algorithm)
+ [km: MacAlgorithm](#conditions-kms-mac-algorithm)
+ [km: MessageType](#conditions-kms-message-type)

## km: ValidTo
<a name="conditions-kms-valid-to"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:ValidTo`  |  Timestamp  | Bernilai tunggal |  `ImportKeyMaterial`  |  Kebijakan kunci dan kebijakan IAM  | 

Kunci `kms:ValidTo` kondisi mengontrol akses ke [ImportKeyMaterial](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html)operasi berdasarkan nilai [ValidTo](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ValidTo)parameter dalam permintaan, yang menentukan kapan bahan kunci yang diimpor kedaluwarsa. Nilainya dinyatakan dalam [waktu Unix](https://en.wikipedia.org/wiki/Unix_time).

Secara default, parameter `ValidTo` diperlukan dalam permintaan `ImportKeyMaterial`. Namun, jika nilai [ExpirationModel](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html#KMS-ImportKeyMaterial-request-ExpirationModel)parameternya`KEY_MATERIAL_DOES_NOT_EXPIRE`, `ValidTo` parameternya tidak valid. Anda juga dapat menggunakan [kms: ExpirationModel](#conditions-kms-expiration-model) condition key untuk meminta `ExpirationModel` parameter atau nilai parameter tertentu.

Contoh pernyataan kebijakan berikut memungkinkan pengguna untuk mengimpor materi kunci ke kunci KMS. Kunci syarat `kms:ValidTo` membatasi izin untuk permintaan `ImportKeyMaterial` di mana nilai `ValidTo` kurang dari atau sama dengan `1546257599.0` (31 Desember 2018 pukul 11.59.59). 

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:ImportKeyMaterial",
  "Resource": "*",
  "Condition": {
    "NumericLessThanEquals": {
      "kms:ValidTo": "1546257599.0"
    }
  }
}
```

**Lihat juga**
+ [km: ExpirationModel](#conditions-kms-expiration-model) 
+ [km: WrappingAlgorithm](#conditions-kms-wrapping-algorithm)
+ [km: WrappingKeySpec](#conditions-kms-wrapping-key-spec)

## km: ViaService
<a name="conditions-kms-via-service"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:ViaService`  |  String  | Bernilai tunggal |  Operasi sumber daya utama KMS  |  Kebijakan kunci dan kebijakan IAM  | 

Kunci `kms:ViaService` kondisi membatasi penggunaan kunci KMS untuk permintaan dari yang ditentukan Layanan AWS. Kunci kondisi ini hanya berlaku untuk [sesi akses Teruskan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html). Anda dapat menentukan satu atau beberapa layanan di setiap kunci syarat `kms:ViaService`. Operasi harus berupa operasi *sumber daya kunci KMS*, yaitu operasi yang diotorisasi untuk kunci KMS tertentu. Untuk mengidentifikasi operasi sumber daya kunci KMS, dalam [Tabel Tindakan dan Sumber Daya](kms-api-permissions-reference.md#kms-api-permissions-reference-table), cari nilai `KMS key` di `Resources` kolom untuk operasi.

Misalnya, pernyataan kebijakan kunci berikut menggunakan kunci `kms:ViaService` kondisi untuk mengizinkan kunci yang [dikelola pelanggan](concepts.md#customer-mgn-key) digunakan untuk tindakan yang ditentukan hanya jika permintaan berasal dari Amazon EC2 atau Amazon RDS di wilayah AS Barat (Oregon) atas nama. `ExampleRole`

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:CreateGrant",
    "kms:ListGrants",
    "kms:DescribeKey"
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ViaService": [
        "ec2.us-west-2.amazonaws.com",
        "rds.us-west-2.amazonaws.com"
      ]
    }
  }
}
```

Anda juga dapat menggunakan kunci `kms:ViaService` kondisi untuk menolak izin menggunakan kunci KMS ketika permintaan berasal dari layanan tertentu. Misalnya, pernyataan kebijakan berikut dari kebijakan kunci menggunakan kunci `kms:ViaService` kondisi untuk mencegah kunci yang dikelola pelanggan digunakan untuk `Encrypt` operasi saat permintaan berasal AWS Lambda atas nama`ExampleRole`.

```
{
  "Effect": "Deny",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": [
    "kms:Encrypt"    
  ],
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ViaService": [
          "lambda.us-west-2.amazonaws.com"
      ]
    }
  }
}
```

**penting**  
Saat Anda menggunakan kunci syarat `kms:ViaService`, layanan membuat permintaan atas nama perwakilan di Akun AWS. Perwakilan ini harus memiliki izin berikut:  
Izin untuk menggunakan kunci KMS. Prinsipal perlu memberikan izin ini ke layanan terintegrasi sehingga layanan dapat menggunakan kunci yang dikelola pelanggan atas nama kepala sekolah. Untuk informasi selengkapnya, lihat [Menggunakan AWS KMS enkripsi dengan AWS layanan](service-integration.md).
Izin untuk menggunakan layanan terintegrasi. Untuk detail tentang memberi pengguna akses ke AWS layanan yang terintegrasi dengan AWS KMS, lihat dokumentasi untuk layanan terintegrasi.

Semua [Kunci yang dikelola AWS](concepts.md#aws-managed-key)menggunakan kunci `kms:ViaService` kondisi dalam dokumen kebijakan kunci mereka. Kondisi ini memungkinkan kunci KMS digunakan hanya untuk permintaan yang berasal dari layanan yang membuat kunci KMS. Untuk melihat kebijakan kunci untuk sebuah Kunci yang dikelola AWS, gunakan [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html)operasi. 

Kunci syarat `kms:ViaService` valid di IAM dan pernyataan kebijakan kunci. Layanan yang Anda tentukan harus [terintegrasi dengan AWS KMS](https://aws.amazon.com/kms/features/#AWS_Service_Integration) dan mendukung kunci syarat `kms:ViaService`.

### Layanan yang mendukung kunci syarat `kms:ViaService`
<a name="viaService_table"></a>

Tabel berikut mencantumkan AWS layanan yang terintegrasi dengan AWS KMS dan mendukung penggunaan kunci `kms:ViaService` kondisi dalam kunci yang dikelola pelanggan Layanan dalam tabel ini mungkin tidak tersedia di semua wilayah. Gunakan `.amazonaws.com` akhiran AWS KMS ViaService nama di semua AWS partisi.

**catatan**  
Anda mungkin perlu menggulir secara horizontal atau vertikal untuk melihat semua data dalam tabel ini.


| Nama layanan | AWS KMS ViaService nama | 
| --- | --- | 
| Operasi Amazon AI | aiops.AWS\$1region.amazonaws.com | 
| AWS App Runner | apprunner.AWS\$1region.amazonaws.com | 
| AWS AppFabric | appfabric.AWS\$1region.amazonaws.com | 
| Amazon AppFlow | appflow.AWS\$1region.amazonaws.com | 
| AWS Application Migration Service | mgn.AWS\$1region.amazonaws.com | 
| Amazon Athena | athena.AWS\$1region.amazonaws.com | 
| AWS Audit Manager | auditmanager.AWS\$1region.amazonaws.com | 
| Amazon Aurora | rds.AWS\$1region.amazonaws.com | 
| AWS Backup | backup.AWS\$1region.amazonaws.com | 
| AWS Backup Gerbang | backup-gateway.AWS\$1region.amazonaws.com | 
| Salinan Model Batuan Dasar Amazon | bedrock.AWS\$1region.amazonaws.com | 
| Amazon Chime SDK | chimevoiceconnector.AWS\$1region.amazonaws.com | 
| AWS Clean Rooms ML | cleanrooms-ml.AWS\$1region.amazonaws.com | 
| AWS CodeArtifact | codeartifact.AWS\$1region.amazonaws.com | 
|  CodeGuru Peninjau Amazon | codeguru-reviewer.AWS\$1region.amazonaws.com | 
| Amazon Comprehend | comprehend.AWS\$1region.amazonaws.com | 
| Amazon Connect | connect.AWS\$1region.amazonaws.com | 
| Amazon Connect Customer Profiles | profile.AWS\$1region.amazonaws.com | 
| Amazon Q di Connect | wisdom.AWS\$1region.amazonaws.com | 
| AWS Database Migration Service (AWS DMS) | dms.AWS\$1region.amazonaws.com | 
| AWS DeepRacer | deepracer.AWS\$1region.amazonaws.com | 
| AWS Directory Service | directoryservice.AWS\$1region.amazonaws.com | 
| Amazon DocumentDB | docdb-elastic.AWS\$1region.amazonaws.com | 
| Amazon DynamoDB | dynamodb.AWS\$1region.amazonaws.com | 
| Amazon EC2 Systems Manager (SSM) | ssm.AWS\$1region.amazonaws.com | 
| Amazon Elastic Block Store (Amazon EBS) | ec2.AWS\$1region.amazonaws.com(Hanya EBS) | 
| Amazon Elastic Container Registry (Amazon ECR) | ecr.AWS\$1region.amazonaws.com | 
| Amazon Elastic File System (Amazon EFS) | elasticfilesystem.AWS\$1region.amazonaws.com | 
| Amazon ElastiCache |  Sertakan kedua ViaService nama dalam nilai kunci kondisi: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/kms/latest/developerguide/conditions-kms.html)  | 
| AWS Elemental MediaTailor | mediatailor.AWS\$1region.amazonaws.com | 
| AWS Resolusi Entitas | entityresolution.AWS\$1region.amazonaws.com | 
| Amazon EventBridge | events.AWS\$1region.amazonaws.com | 
| Amazon FinSpace | finspace.AWS\$1region.amazonaws.com | 
| Amazon Forecast | forecast.AWS\$1region.amazonaws.com | 
| Amazon FSx | fsx.AWS\$1region.amazonaws.com | 
| AWS Glue | glue.AWS\$1region.amazonaws.com | 
| AWS Ground Station | groundstation.AWS\$1region.amazonaws.com | 
| Amazon GuardDuty | malware-protection.AWS\$1region.amazonaws.com | 
| AWS HealthLake | healthlake.AWS\$1region.amazonaws.com | 
| AWS IoT SiteWise | iotsitewise.AWS\$1region.amazonaws.com | 
| Amazon Kendra | kendra.AWS\$1region.amazonaws.com | 
| Amazon Keyspaces (untuk Apache Cassandra) | cassandra.AWS\$1region.amazonaws.com | 
| Amazon Kinesis | kinesis.AWS\$1region.amazonaws.com | 
| Amazon Data Firehose | firehose.AWS\$1region.amazonaws.com | 
| Amazon Kinesis Video Streams | kinesisvideo.AWS\$1region.amazonaws.com | 
| AWS Lambda | lambda.AWS\$1region.amazonaws.com | 
| Amazon Lex | lex.AWS\$1region.amazonaws.com | 
| AWS License Manager | license-manager.AWS\$1region.amazonaws.com | 
| Amazon Location Service | geo.AWS\$1region.amazonaws.com | 
| Amazon Lookout for Equipment | lookoutequipment.AWS\$1region.amazonaws.com | 
| Amazon Lookout for Metrics | lookoutmetrics.AWS\$1region.amazonaws.com | 
| Amazon Lookout for Vision | lookoutvision.AWS\$1region.amazonaws.com | 
| Amazon Macie | macie.AWS\$1region.amazonaws.com | 
| AWS Mainframe Modernization | m2.AWS\$1region.amazonaws.com | 
| AWS Mainframe Modernization Pengujian Aplikasi | apptest.AWS\$1region.amazonaws.com | 
| Amazon Managed Blockchain | managedblockchain.AWS\$1region.amazonaws.com | 
| Amazon Managed Streaming for Apache Kafka (Amazon MSK) | kafka.AWS\$1region.amazonaws.com | 
| Amazon Managed Workflows for Apache Airflow (MWAA) | airflow.AWS\$1region.amazonaws.com | 
| Amazon MemoryDB | memorydb.AWS\$1region.amazonaws.com | 
| Amazon Monitron | monitron.AWS\$1region.amazonaws.com | 
| Amazon MQ | mq.AWS\$1region.amazonaws.com | 
| Amazon Neptune | rds.AWS\$1region.amazonaws.com | 
| Amazon Nimble Studio | nimble.AWS\$1region.amazonaws.com | 
| AWS HealthOmics | omics.AWS\$1region.amazonaws.com | 
|  OpenSearch Layanan Amazon | es.AWS\$1region.amazonaws.com, aoss.AWS\$1region.amazonaws.com | 
| Paket OpenSearch Kustom Amazon | custom-packages.AWS\$1region.amazonaws.com | 
| AWS Proton | proton.AWS\$1region.amazonaws.com | 
| Amazon Quantum Ledger Database (Amazon QLDB) | qldb.AWS\$1region.amazonaws.com | 
| Wawasan Performa Amazon RDS | rds.AWS\$1region.amazonaws.com | 
| Amazon Redshift | redshift.AWS\$1region.amazonaws.com | 
| Editor kueri Amazon Redshift V2 | sqlworkbench.AWS\$1region.amazonaws.com | 
| Amazon Redshift Tanpa Server | redshift-serverless.AWS\$1region.amazonaws.com | 
| Amazon Rekognition | rekognition.AWS\$1region.amazonaws.com | 
| Amazon Relational Database Service (Amazon RDS) | rds.AWS\$1region.amazonaws.com | 
| Toko Data Replikasi Amazon | ards.AWS\$1region.amazonaws.com | 
| Amazon SageMaker AI | sagemaker.AWS\$1region.amazonaws.com | 
| AWS Secrets Manager | secretsmanager.AWS\$1region.amazonaws.com | 
| Amazon Security Lake | securitylake.AWS\$1region.amazonaws.com | 
| Amazon Simple Email Service (Amazon SES) | ses.AWS\$1region.amazonaws.com | 
| Amazon Simple Notification Service (Amazon SNS) | sns.AWS\$1region.amazonaws.com | 
| Amazon Simple Queue Service (Amazon SQS) | sqs.AWS\$1region.amazonaws.com | 
| Amazon Simple Storage Service (Amazon S3) | s3.AWS\$1region.amazonaws.com | 
| Tabel Amazon S3 | s3tables.AWS\$1region.amazonaws.com | 
| AWS Snowball Edge | importexport.AWS\$1region.amazonaws.com | 
| AWS Step Functions | states.AWS\$1region.amazonaws.com | 
| AWS Storage Gateway | storagegateway.AWS\$1region.amazonaws.com | 
| Manajer Insiden AWS Systems Manager | ssm-incidents.AWS\$1region.amazonaws.com | 
| Manajer Insiden AWS Systems Manager Kontak | ssm-contacts.AWS\$1region.amazonaws.com | 
| Amazon Timestream | timestream.AWS\$1region.amazonaws.com | 
| Amazon Translate | translate.AWS\$1region.amazonaws.com | 
| Akses Terverifikasi AWS | verified-access.AWS\$1region.amazonaws.com | 
| Amazon WorkMail | workmail.AWS\$1region.amazonaws.com | 
| Amazon WorkSpaces | workspaces.AWS\$1region.amazonaws.com | 
| Klien WorkSpaces Tipis Amazon | thinclient.AWS\$1region.amazonaws.com | 
|  WorkSpaces Web Amazon | workspaces-web.AWS\$1region.amazonaws.com | 
| AWS X-Ray | xray.AWS\$1region.amazonaws.com | 

## km: WrappingAlgorithm
<a name="conditions-kms-wrapping-algorithm"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:WrappingAlgorithm`  |  String  | Bernilai tunggal |  `GetParametersForImport`  |  Kebijakan kunci dan kebijakan IAM  | 

Kunci kondisi ini mengontrol akses ke [GetParametersForImport](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html)operasi berdasarkan nilai [WrappingAlgorithm](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html#KMS-GetParametersForImport-request-WrappingAlgorithm)parameter dalam permintaan. Anda dapat menggunakan syarat ini untuk mewajibkan perwakilan menggunakan algoritme tertentu untuk mengenkripsi materi kunci selama proses impor. Permintaan untuk kunci publik dan token impor yang diperlukan gagal ketika permintaan menentukan algoritme pembungkusan yang berbeda.

Contoh pernyataan kebijakan kunci berikut menggunakan kunci syarat `kms:WrappingAlgorithm` untuk memberikan contoh izin pengguna untuk memanggil operasi `GetParametersForImport`, tetapi mencegah mereka menggunakan algoritme pembungkusan `RSAES_OAEP_SHA_1`. Ketika `WrappingAlgorithm` dalam permintaan `GetParametersForImport` adalah `RSAES_OAEP_SHA_1`, operasi gagal.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:GetParametersForImport",
  "Resource": "*",
  "Condition": {
    "StringNotEquals": {
      "kms:WrappingAlgorithm": "RSAES_OAEP_SHA_1"
    }
  }
}
```

**Lihat juga**
+ [km: ExpirationModel](#conditions-kms-expiration-model)
+ [km: ValidTo](#conditions-kms-valid-to)
+ [km: WrappingKeySpec](#conditions-kms-wrapping-key-spec)

## km: WrappingKeySpec
<a name="conditions-kms-wrapping-key-spec"></a>


| AWS KMS kunci kondisi | Jenis syarat | Jenis nilai | Operasi API | Jenis kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:WrappingKeySpec`  |  String  | Bernilai tunggal |  `GetParametersForImport`  |  Kebijakan kunci dan kebijakan IAM  | 

Kunci kondisi ini mengontrol akses ke [GetParametersForImport](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html)operasi berdasarkan nilai [WrappingKeySpec](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html#KMS-GetParametersForImport-request-WrappingKeySpec)parameter dalam permintaan. Anda dapat menggunakan syarat ini untuk mewajibkan perwakilan menggunakan jenis kunci publik tertentu selama proses impor. Jika permintaan menentukan jenis kunci yang berbeda, permintaan akan gagal.

Karena satu-satunya nilai yang valid untuk nilai parameter `WrappingKeySpec` adalah `RSA_2048`, mencegah pengguna menggunakan nilai ini akan secara efektif mencegah pengguna menggunakan operasi `GetParametersForImport`. 

Contoh pernyataan kebijakan berikut menggunakan kunci syarat `kms:WrappingAlgorithm` untuk mewajibkan `WrappingKeySpec` dalam permintaan adalah `RSA_4096`.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/ExampleRole"
  },
  "Action": "kms:GetParametersForImport",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:WrappingKeySpec": "RSA_4096"
    }
  }
}
```

**Lihat juga**
+ [km: ExpirationModel](#conditions-kms-expiration-model)
+ [km: ValidTo](#conditions-kms-valid-to)
+ [km: WrappingAlgorithm](#conditions-kms-wrapping-algorithm)

# AWS KMS kunci kondisi untuk platform yang dibuktikan
<a name="conditions-attestation"></a>

AWS KMS menyediakan kunci kondisi untuk mendukung pengesahan kriptografi untuk [AWS Nitro Enclave dan NitroTPM](https://docs.aws.amazon.com/enclaves/latest/user/). AWS Nitro Enclave adalah kemampuan Amazon EC2 yang memungkinkan Anda membuat lingkungan komputasi terisolasi yang disebut [enclaves](https://docs.aws.amazon.com/enclaves/latest/user/nitro-enclave-concepts.html#term-enclave) untuk melindungi dan memproses data yang sangat sensitif. NitroTPM memperluas fungsionalitas pengesahan serupa ke instans EC2.

Saat Anda memanggil operasi [Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html),, [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret), [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html), atau [GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html)API dengan dokumen pengesahan yang ditandatangani, ini APIs mengenkripsi plaintext dalam respons di bawah kunci publik dari dokumen pengesahan, dan mengembalikan ciphertext alih-alih plaintext. Ciphertext ini dapat didekripsi hanya dengan menggunakan kunci pribadi di enklave. Untuk informasi selengkapnya, lihat [Dukungan pengesahan kriptografi di AWS KMS](cryptographic-attestation.md).

**catatan**  
Jika Anda tidak memberikan kebijakan kunci saat membuat AWS KMS kunci, AWS buatlah untuk Anda. [Kebijakan kunci default](key-policy-default.md) ini memberikan akses penuh kunci KMS ke kunci tersebut dan memungkinkan akun menggunakan kebijakan IAM untuk mengizinkan akses ke kunci tersebut. Akun AWS Kebijakan ini memungkinkan semua tindakan seperti [Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html). AWS merekomendasikan [Izin hak istimewa paling sedikit](least-privilege.md) untuk menerapkan prinsip kebijakan kunci KMS Anda. Anda juga dapat membatasi akses dengan [memodifikasi tindakan kebijakan kunci KMS](key-policy-modifying.md) untuk. `kms:*` `[NotAction:](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_notaction.html)kms:Decrypt`

Kunci syarat berikut memungkinkan Anda membatasi izin untuk operasi ini berdasarkan konten dokumen pengesahan yang ditandatangani. Sebelum mengizinkan operasi, AWS KMS bandingkan dokumen pengesahan dengan nilai dalam kunci kondisi ini AWS KMS .

# Kunci kondisi untuk Nitro Enclave
<a name="conditions-nitro-enclave"></a>

Kunci kondisi berikut khusus untuk pengesahan Nitro Enclave:

## km:RecipientAttestation: 384 ImageSha
<a name="conditions-kms-recipient-image-sha"></a>


| AWS KMS Kunci Kondisi | Jenis Syarat | Jenis nilai | Operasi API | Jenis Kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:RecipientAttestation:ImageSha384`  |  String  | Bernilai tunggal |  `Decrypt` `DeriveSharedSecret` `GenerateDataKey` `GenerateDataKeyPair` `GenerateRandom`  |  Kebijakan kunci dan kebijakan IAM  | 

Kunci `kms:RecipientAttestation:ImageSha384` kondisi mengontrol akses ke`Decrypt`,`DeriveSharedSecret`,`GenerateDataKey`,`GenerateDataKeyPair`, dan `GenerateRandom` dengan kunci KMS saat gambar digest dari dokumen pengesahan yang ditandatangani dalam permintaan cocok dengan nilai dalam kunci kondisi. `ImageSha384`Nilai sesuai dengan PCR0 dalam dokumen pengesahan. Kunci kondisi ini hanya efektif jika `Recipient` parameter dalam permintaan menentukan dokumen pengesahan yang ditandatangani untuk enclave Nitro. AWS 

Nilai ini juga termasuk dalam [CloudTrailacara](ct-nitro-enclave.md) untuk permintaan ke AWS KMS kantong Nitro.

Misalnya, pernyataan kebijakan kunci berikut memungkinkan `data-processing` peran menggunakan kunci KMS untuk [Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html),,, [DeriveSharedSecret[GenerateDataKey[GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret), dan operasi. [GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html) Kunci `kms:RecipientAttestation:ImageSha384` kondisi memungkinkan operasi hanya jika image digest value (PCR0) dari dokumen pengesahan dalam permintaan cocok dengan nilai image digest dalam kondisi tersebut. Kunci kondisi ini hanya efektif jika `Recipient` parameter dalam permintaan menentukan dokumen pengesahan yang ditandatangani untuk enclave Nitro. AWS 

Jika permintaan tidak menyertakan dokumen pengesahan yang valid dari kantong AWS Nitro, izin ditolak karena kondisi ini tidak terpenuhi.

```
{
  "Sid" : "Enable enclave data processing",
  "Effect" : "Allow",
  "Principal" : {
    "AWS" : "arn:aws:iam::111122223333:role/data-processing"
  },
  "Action": [
    "kms:Decrypt",
    "kms:DeriveSharedSecret",
    "kms:GenerateDataKey",
    "kms:GenerateDataKeyPair",
    "kms:GenerateRandom"
  ],
  "Resource" : "*",
  "Condition": {
    "StringEqualsIgnoreCase": {
      "kms:RecipientAttestation:ImageSha384": "9fedcba8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef1abcdef0abcdef1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef99"
    }
  }
}
```

## km ::PCR RecipientAttestation <PCR\$1ID>
<a name="conditions-kms-recipient-pcrs"></a>


| AWS KMS Kunci Kondisi | Jenis Syarat | Jenis nilai | Operasi API | Jenis Kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:RecipientAttestation:PCR<PCR_ID>`  |  String  | Bernilai tunggal |  `Decrypt` `DeriveSharedSecret` `GenerateDataKey` `GenerateDataKeyPair` `GenerateRandom`  |  Kebijakan kunci dan kebijakan IAM  | 

Kunci `kms:RecipientAttestation:PCR<PCR_ID>` kondisi mengontrol akses ke`Decrypt`,`DeriveSharedSecret`,`GenerateDataKey`,`GenerateDataKeyPair`, dan `GenerateRandom` dengan kunci KMS hanya jika konfigurasi platform register (PCRs) dari dokumen pengesahan yang ditandatangani dalam permintaan cocok dengan kunci kondisi. PCRs Kunci kondisi ini hanya efektif jika `Recipient` parameter dalam permintaan menentukan dokumen pengesahan yang ditandatangani dari enklave Nitro. AWS 

Nilai ini juga termasuk dalam [CloudTrailperistiwa](ct-nitro-enclave.md) yang mewakili permintaan AWS KMS untuk kantong Nitro.

Untuk menentukan nilai PCR, gunakan format berikut. Gabungkan ID PCR ke nama kunci syarat. Anda dapat menentukan ID PCR yang mengidentifikasi salah satu dari [enam pengukuran enclave](https://docs.aws.amazon.com/enclaves/latest/user/set-up-attestation.html#where) atau ID PCR khusus yang Anda tentukan untuk kasus penggunaan tertentu. Nilai PCR harus berupa string heksadesimal huruf kecil hingga 96 byte.

```
"kms:RecipientAttestation:PCRPCR_ID": "PCR_value"
```

Misalnya, kunci kondisi berikut menentukan nilai tertentu untuk PCR1, yang sesuai dengan hash kernel yang digunakan untuk enclave dan proses bootstrap.

```
kms:RecipientAttestation:PCR1: "abc1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef8abcdef9abcdef8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef0abcde"
```

Contoh pernyataan kebijakan kunci berikut memungkinkan `data-processing` peran untuk menggunakan kunci KMS untuk operasi [Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html).

Kunci `kms:RecipientAttestation:PCR` kondisi dalam pernyataan ini memungkinkan operasi hanya jika PCR1 nilai dalam dokumen pengesahan yang ditandatangani dalam permintaan cocok dengan `kms:RecipientAttestation:PCR1` nilai dalam kondisi. Gunakan operator kebijakan `StringEqualsIgnoreCase` untuk mewajibkan perbandingan nilai PCR yang tidak peka huruf besar/kecil.

Jika permintaan tidak menyertakan dokumen pengesahan, izin ditolak karena kondisi ini tidak terpenuhi.

```
{
  "Sid" : "Enable enclave data processing",
  "Effect" : "Allow",
  "Principal" : {
    "AWS" : "arn:aws:iam::111122223333:role/data-processing"
  },
  "Action": "kms:Decrypt",
  "Resource" : "*",
  "Condition": {
    "StringEqualsIgnoreCase": {
      "kms:RecipientAttestation:PCR1": "abc1de4f2dcf774f6e3b679f62e5f120065b2e408dcea327bd1c9dddaea6664e7af7935581474844767453082c6f1586116376cede396a30a39a611b9aad7966c87"
    }
  }
}
```

# Kunci kondisi untuk NitroTPM
<a name="conditions-nitro-tpm"></a>

Kunci kondisi berikut khusus untuk pengesahan NitroTPM:

## km ::nitrotpmpcr RecipientAttestation <PCR\$1ID>
<a name="conditions-kms-recipient-nitro-tpm-pcrs"></a>


| AWS KMS Kunci Kondisi | Jenis Syarat | Jenis nilai | Operasi API | Jenis Kebijakan | 
| --- | --- | --- | --- | --- | 
|  `kms:RecipientAttestation:NitroTPMPCR<PCR_ID>`  |  String  | Bernilai tunggal |  `Decrypt` `DeriveSharedSecret` `GenerateDataKey` `GenerateDataKeyPair` `GenerateRandom`  |  Kebijakan kunci dan kebijakan IAM  | 

Kunci `kms:RecipientAttestation:NitroTPMPCR<PCR_ID>` kondisi mengontrol akses ke`Decrypt`,`DeriveSharedSecret`,`GenerateDataKey`,`GenerateDataKeyPair`, dan `GenerateRandom` dengan kunci KMS hanya jika konfigurasi platform register (PCRs) dari dokumen pengesahan yang ditandatangani dalam permintaan cocok dengan kunci kondisi. PCRs Kunci kondisi ini hanya efektif jika `Recipient` parameter dalam permintaan menentukan dokumen pengesahan yang ditandatangani dari NitRotPM.

Nilai ini juga termasuk dalam [CloudTrailperistiwa](ct-nitro-tpm.md) yang mewakili permintaan AWS KMS untuk NitRotPM.

Untuk menentukan nilai PCR, gunakan format berikut. Gabungkan ID PCR ke nama kunci syarat. Nilai PCR harus berupa string heksadesimal huruf kecil hingga 96 byte.

```
"kms:RecipientAttestation:NitroTPMPCRPCR_ID": "PCR_value"
```

Misalnya, kunci kondisi berikut menentukan nilai tertentu untuk PCR4:

```
kms:RecipientAttestation:NitroTPMPCR4: "abc1abcdef2abcdef3abcdef4abcdef5abcdef6abcdef7abcdef8abcdef9abcdef8abcdef7abcdef6abcdef5abcdef4abcdef3abcdef2abcdef1abcdef0abcde"
```

Contoh pernyataan kebijakan kunci berikut memungkinkan `data-processing` peran untuk menggunakan kunci KMS untuk operasi [Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html).

Kunci `kms:RecipientAttestation:NitroTPMPCR` kondisi dalam pernyataan ini memungkinkan operasi hanya jika PCR4 nilai dalam dokumen pengesahan yang ditandatangani dalam permintaan cocok dengan `kms:RecipientAttestation:NitroTPMPCR4` nilai dalam kondisi. Gunakan operator kebijakan `StringEqualsIgnoreCase` untuk mewajibkan perbandingan nilai PCR yang tidak peka huruf besar/kecil.

Jika permintaan tidak menyertakan dokumen pengesahan, izin ditolak karena kondisi ini tidak terpenuhi.

```
{
  "Sid" : "Enable NitroTPM data processing",
  "Effect" : "Allow",
  "Principal" : {
    "AWS" : "arn:aws:iam::111122223333:role/data-processing"
  },
  "Action": "kms:Decrypt",
  "Resource" : "*",
  "Condition": {
    "StringEqualsIgnoreCase": {
      "kms:RecipientAttestation:NitroTPMPCR4": "abc1de4f2dcf774f6e3b679f62e5f120065b2e408dcea327bd1c9dddaea6664e7af7935581474844767453082c6f1586116376cede396a30a39a611b9aad7966c87"
    }
  }
}
```

# Izin hak istimewa paling sedikit
<a name="least-privilege"></a>

Karena kunci KMS Anda melindungi informasi sensitif, kami sarankan untuk mengikuti prinsip akses yang paling tidak memiliki hak istimewa. Delegasikan izin minimum yang diperlukan untuk melakukan tugas saat Anda menentukan kebijakan utama Anda. Hanya izinkan semua tindakan (`kms:*`) pada kebijakan kunci KMS jika Anda berencana untuk membatasi izin lebih lanjut dengan kebijakan IAM tambahan. [Jika Anda berencana untuk mengelola izin dengan kebijakan IAM, batasi siapa yang memiliki kemampuan untuk membuat dan melampirkan kebijakan IAM ke prinsipal IAM dan memantau perubahan kebijakan.](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudwatch-alarms-for-cloudtrail.html#cloudwatch-alarms-for-cloudtrail-iam-policy-changes)

Jika Anda mengizinkan semua tindakan (`kms:*`) dalam kebijakan utama dan kebijakan IAM, prinsipal memiliki izin administratif dan penggunaan ke kunci KMS. Sebagai praktik keamanan terbaik, kami sarankan hanya mendelegasikan izin ini ke kepala sekolah tertentu. Anda dapat melakukan ini dengan secara eksplisit menyebutkan prinsipal dalam kebijakan utama atau dengan membatasi prinsip mana kebijakan IAM dilampirkan. Anda juga dapat menggunakan [tombol kondisi](policy-conditions.md) untuk membatasi izin. Misalnya, Anda dapat menggunakan [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag)untuk mengizinkan semua tindakan jika prinsipal yang membuat panggilan API memiliki tag yang ditentukan dalam aturan kondisi.

Untuk bantuan memahami bagaimana pernyataan kebijakan dievaluasi AWS, lihat [Logika evaluasi kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) di *Panduan Pengguna IAM*. Sebaiknya tinjau topik ini sebelum menulis kebijakan untuk mengurangi kemungkinan kebijakan Anda memiliki efek yang tidak diinginkan, seperti menyediakan akses ke kepala sekolah yang seharusnya tidak memiliki akses.

**Tip**  
Saat menguji aplikasi di lingkungan non-produksi, gunakan [IAM Access Analyzer untuk membantu Anda menerapkan hak istimewa paling sedikit pada kebijakan IAM](https://aws.amazon.com/iam/features/analyze-access/) Anda.

Jika Anda menggunakan pengguna IAM alih-alih peran IAM, kami sangat menyarankan untuk mengaktifkan AWS [otentikasi multi-faktor (](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa.html)MFA) untuk mengurangi kerentanan kredensyal jangka panjang. Anda dapat menggunakan MFA untuk melakukan hal berikut: 
+ Mengharuskan pengguna memvalidasi kredensialnya dengan MFA sebelum melakukan tindakan istimewa, seperti menjadwalkan penghapusan kunci.
+ Pisahkan kepemilikan kata sandi akun administrator dan perangkat MFA antar individu untuk menerapkan otorisasi terpisah.

**Pelajari selengkapnya**
+ [AWS kebijakan terkelola untuk fungsi pekerjaan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html)
+ [Teknik untuk menulis kebijakan IAM dengan hak akses paling rendah](https://aws.amazon.com//blogs/security/techniques-for-writing-least-privilege-iam-policies/)

## Menerapkan izin yang paling tidak memiliki hak istimewa
<a name="key-policy-least-privilege"></a>

Ketika Anda memberikan izin AWS layanan untuk menggunakan kunci KMS, pastikan bahwa izin tersebut hanya berlaku untuk sumber daya yang harus diakses layanan atas nama Anda. Strategi hak istimewa terkecil ini membantu mencegah penggunaan kunci KMS yang tidak sah saat permintaan diteruskan antar layanan. AWS 

Untuk menerapkan strategi hak istimewa terkecil, gunakan kami sarankan menggunakan kunci kondisi konteks AWS KMS enkripsi dan ARN sumber global atau kunci kondisi akun sumber.

### Menggunakan kunci kondisi konteks enkripsi
<a name="least-privilege-encryption-context"></a>

Cara paling efektif untuk menerapkan izin yang paling tidak memiliki hak istimewa saat menggunakan AWS KMS sumber daya adalah dengan memasukkan [kms:EncryptionContext:*context-key*](conditions-kms.md#conditions-kms-encryption-context)atau kunci [kms:EncryptionContextKeys](conditions-kms.md#conditions-kms-encryption-context-keys)kondisi dalam kebijakan yang memungkinkan kepala sekolah memanggil operasi kriptografi. AWS KMS Kunci kondisi ini sangat efektif karena mengaitkan izin dengan [konteks enkripsi](encrypt_context.md) yang terikat pada ciphertext saat sumber daya dienkripsi. 

[Gunakan kunci kondisi konteks enkripsi hanya jika tindakan dalam pernyataan kebijakan adalah [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)atau operasi kriptografi AWS KMS simetris yang mengambil `EncryptionContext` parameter, seperti operasi seperti [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)atau Dekripsi.](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) (Untuk daftar operasi yang didukung, lihat [kms:EncryptionContext:*context-key*](conditions-kms.md#conditions-kms-encryption-context)atau [kms:EncryptionContextKeys](conditions-kms.md#conditions-kms-encryption-context-keys).) Jika Anda menggunakan kunci kondisi ini untuk mengizinkan operasi lain, seperti [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html), izin akan ditolak.

Tetapkan nilai ke konteks enkripsi yang digunakan layanan saat mengenkripsi sumber daya. Informasi ini biasanya tersedia di bagian Keamanan dokumentasi layanan. Misalnya, [konteks enkripsi untuk AWS Proton mengidentifikasi sumber daya Proton](https://docs.aws.amazon.com/proton/latest/adminguide/data-protection.html#encryption-context) dan template AWS terkaitnya. [Konteks AWS Secrets Manager enkripsi](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html#security-encryption-encryption-context) mengidentifikasi rahasia dan versinya. [Konteks enkripsi untuk Lokasi Amazon](https://docs.aws.amazon.com/location/latest/developerguide/encryption-at-rest.html#location-encryption-context) mengidentifikasi pelacak atau koleksi. 

Contoh pernyataan kebijakan kunci berikut memungkinkan Amazon Location Service untuk membuat hibah atas nama pengguna yang berwenang. Pernyataan kebijakan ini membatasi izin dengan menggunakan [kms: ViaService](conditions-kms.md#conditions-kms-via-service), [kms: CallerAccount](conditions-kms.md#conditions-kms-caller-account), dan kunci `kms:EncryptionContext:context-key` kondisi untuk mengikat izin ke sumber daya pelacak tertentu.

```
{
  "Sid": "Allow Amazon Location to create grants on behalf of authorized users",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/LocationTeam"
  },
  "Action": "kms:CreateGrant",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ViaService": "geo.us-west-2.amazonaws.com",
      "kms:CallerAccount": "111122223333",
      "kms:EncryptionContext:aws:geo:arn": "arn:aws:geo:us-west-2:111122223333:tracker/SAMPLE-Tracker"
    }
  }
}
```

### Menggunakan `aws:SourceArn` atau tombol `aws:SourceAccount` kondisi
<a name="least-privilege-source-arn"></a>

Ketika prinsipal dalam pernyataan kebijakan kunci adalah [prinsip AWS layanan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), kami sangat menyarankan Anda menggunakan [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)atau kunci kondisi [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)global, selain kunci `kms:EncryptionContext:context-key` kondisi. ARN dan nilai akun disertakan dalam konteks otorisasi hanya ketika permintaan datang AWS KMS dari layanan lain. AWS [Kombinasi kondisi ini mengimplementasikan izin yang paling tidak memiliki hak istimewa dan menghindari skenario wakil yang berpotensi membingungkan.](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) Prinsipal layanan biasanya tidak digunakan sebagai prinsipal dalam kebijakan utama, tetapi beberapa AWS layanan, seperti, memerlukannya. AWS CloudTrail

Untuk menggunakan `aws:SourceArn` atau kunci kondisi `aws:SourceAccount` global, tetapkan nilai ke Amazon Resource Name (ARN) atau akun sumber daya yang sedang dienkripsi. Misalnya, dalam pernyataan kebijakan kunci yang memberikan AWS CloudTrail izin untuk mengenkripsi jejak, tetapkan nilai `aws:SourceArn` ke ARN jejak. Bila memungkinkan, gunakan`aws:SourceArn`, yang lebih spesifik. Tetapkan nilai ke ARN atau pola ARN dengan karakter wildcard. Jika Anda tidak tahu ARN sumber daya, gunakan `aws:SourceAccount` sebagai gantinya.

**catatan**  
Jika ARN sumber daya menyertakan karakter yang tidak diizinkan dalam kebijakan AWS KMS kunci, Anda tidak dapat menggunakan ARN sumber daya tersebut dalam nilai kunci kondisi. `aws:SourceArn` Sebagai gantinya, gunakan tombol `aws:SourceAccount` kondisi. Untuk detail tentang aturan dokumen kebijakan utama, lihat[Format kebijakan utama](key-policy-overview.md#key-policy-format).

Dalam contoh kebijakan kunci berikut, prinsipal yang mendapatkan izin adalah prinsipal AWS CloudTrail layanan,`cloudtrail.amazonaws.com`. Untuk menerapkan hak istimewa paling sedikit, kebijakan ini menggunakan kunci `aws:SourceArn` dan `kms:EncryptionContext:context-key` kondisi. Pernyataan kebijakan memungkinkan CloudTrail untuk menggunakan kunci KMS untuk [menghasilkan kunci data](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) yang digunakan untuk mengenkripsi jejak. `kms:EncryptionContext:context-key`Kondisi `aws:SourceArn` dan dievaluasi secara independen. Setiap permintaan untuk menggunakan kunci KMS untuk operasi yang ditentukan harus memenuhi kedua kondisi.

Untuk membatasi izin layanan ke `finance` jejak di akun contoh (111122223333) dan `us-west-2` Wilayah, pernyataan kebijakan ini menetapkan `aws:SourceArn` kunci kondisi ke ARN dari jejak tertentu. Pernyataan kondisi menggunakan [ArnEquals](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html#Conditions_ARN)operator untuk memastikan bahwa setiap elemen dalam ARN dievaluasi secara independen saat mencocokkan. Contoh ini juga menggunakan kunci `kms:EncryptionContext:context-key` kondisi untuk membatasi izin untuk melacak di akun dan Wilayah tertentu. 

Sebelum menggunakan kebijakan kunci ini, ganti contoh ID akun, Wilayah, dan nama jejak dengan nilai yang valid dari akun Anda.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowCloudTrailToEncryptLogs",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudtrail.amazonaws.com"
      },
      "Action": "kms:GenerateDataKey",
      "Resource": "*",
      "Condition": {
        "ArnEquals": {
          "aws:SourceArn": [
            "arn:aws:cloudtrail:us-west-2:111122223333:trail/finance"
          ]
        },
        "StringLike": {
          "kms:EncryptionContext:aws:cloudtrail:arn": [
            "arn:aws:cloudtrail:*:111122223333:trail/*"
          ]
        }
      }
    }
  ]
}
```

------

# ABAC untuk AWS KMS
<a name="abac"></a>

Attribute-based access control (ABAC) adalah strategi otorisasi yang mendefinisikan izin berdasarkan atribut. AWS KMS mendukung ABAC dengan memungkinkan Anda untuk mengontrol akses ke kunci yang dikelola pelanggan Anda berdasarkan tag dan alias yang terkait dengan kunci KMS. Kunci kondisi tag dan alias yang memungkinkan ABAC AWS KMS menyediakan cara yang kuat dan fleksibel untuk mengotorisasi prinsipal untuk menggunakan kunci KMS tanpa mengedit kebijakan atau mengelola hibah. Namun Anda harus menggunakan fitur ini dengan hati-hati sehingga perwakilan tidak ditolak aksesnya atau diizinkan secara tidak sengaja. 

Jika Anda menggunakan ABAC, ketahui bahwa izin untuk mengelola tag dan alias sekarang adalah izin kontrol akses. Pastikan Anda mengetahui tag dan alias yang ada di semua kunci KMS sebelum menerapkan kebijakan yang bergantung pada tag atau alias. Lakukan tindakan pencegahan yang wajar saat menambahkan, menghapus, dan memperbarui alias, dan saat menandai dan menghapus tanda kunci. Berikan izin untuk mengelola tag dan alias hanya kepada perwakilan yang membutuhkannya, dan membatasi tag dan alias yang dapat mereka kelola. 

**Catatan**  
Saat menggunakan ABAC untuk AWS KMS, berhati-hatilah dalam memberikan izin kepada prinsipal untuk mengelola tag dan alias. Mengubah tag atau alias mungkin mengizinkan atau menolak izin ke kunci KMS. Administrator kunci yang tidak memiliki izin untuk mengubah kebijakan kunci atau membuat hibah dapat mengontrol akses ke kunci KMS jika mereka memiliki izin untuk mengelola tag atau alias.   
Mungkin diperlukan waktu hingga lima menit untuk perubahan tag dan alias untuk memengaruhi otorisasi kunci KMS. Perubahan terbaru mungkin terlihat dalam operasi API sebelum mempengaruhi otorisasi.  
Untuk mengontrol akses ke kunci KMS berdasarkan aliasnya, Anda harus menggunakan tombol kondisi. Anda tidak dapat menggunakan alias untuk mewakili kunci KMS dalam `Resource` elemen pernyataan kebijakan. Ketika alias muncul di `Resource` elemen, pernyataan kebijakan berlaku untuk alias, bukan ke kunci KMS terkait.

**Pelajari selengkapnya**
+ Untuk detail tentang AWS KMS dukungan untuk ABAC, termasuk contoh, lihat [Gunakan alias untuk mengontrol akses ke tombol KMS](alias-authorization.md) dan[Gunakan tag untuk mengontrol akses ke tombol KMS](tag-authorization.md).
+ Untuk informasi lebih umum tentang penggunaan tag untuk mengontrol akses ke AWS sumber daya, lihat [Untuk apa ABAC? AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) dan [Mengontrol Akses ke AWS Sumber Daya Menggunakan Tag Sumber Daya](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html) di *Panduan Pengguna IAM*.

## Kunci kondisi ABAC untuk AWS KMS
<a name="about-abac-kms"></a>

Untuk mengotorisasi akses ke kunci KMS berdasarkan tag dan aliasnya, gunakan kunci kondisi berikut dalam kebijakan kunci atau kebijakan IAM.


| Kunci syarat ABAC | Deskripsi | Tipe kebijakan | AWS KMS operasi | 
| --- | --- | --- | --- | 
| [aws: ResourceTag](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) | Tag (kunci dan nilai) pada kunci KMS cocok dengan tag (kunci dan nilai) atau pola tag dalam kebijakan | Khusus kebijakan IAM | Operasi sumber daya utama KMS 2 | 
| [aws:RequestTag/*tag-kunci*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag) | Tag (kunci dan nilai) dalam permintaan cocok dengan tag (kunci dan nilai) atau pola tag dalam kebijakan | Kebijakan kunci dan kebijakan IAM1 | [TagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html), [UntagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_UntagResource.html) | 
| [aws: TagKeys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys) | Kunci tag dalam permintaan cocok dengan kunci tag dalam kebijakan | Kebijakan kunci dan kebijakan IAM1 | [TagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html), [UntagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_UntagResource.html) | 
| [km: ResourceAliases](conditions-kms.md#conditions-kms-resource-aliases) | Alias yang terkait dengan kunci KMS cocok dengan alias atau pola alias dalam kebijakan | Khusus kebijakan IAM | Operasi sumber daya utama KMS 2 | 
| [km: RequestAlias](conditions-kms.md#conditions-kms-request-alias) | Alias yang mewakili kunci KMS dalam permintaan cocok dengan pola alias atau alias dalam kebijakan. | Kebijakan kunci dan kebijakan IAM1 | [Operasi kriptografi](kms-cryptography.md#cryptographic-operations),, [DescribeKey[GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) | 

1Kunci syarat yang dapat digunakan dalam kebijakan kunci juga dapat digunakan dalam kebijakan IAM, tetapi hanya jika [kebijakan kunci mengizinkannya](key-policy-default.md#key-policy-default-allow-root-enable-iam).

2 *Operasi sumber daya kunci KMS adalah operasi* yang diizinkan untuk kunci KMS tertentu. Untuk mengidentifikasi operasi sumber daya kunci KMS, dalam [tabel AWS KMS izin](kms-api-permissions-reference.md#kms-api-permissions-reference-table), cari nilai kunci KMS di `Resources` kolom untuk operasi. 

Misalnya, Anda dapat menggunakan kunci syarat ini untuk membuat kebijakan berikut.
+ Kebijakan IAM dengan `kms:ResourceAliases` itu memungkinkan izin untuk menggunakan kunci KMS dengan alias atau pola alias tertentu. Ini sedikit berbeda dari kebijakan yang mengandalkan tag: Meskipun Anda dapat menggunakan pola alias dalam kebijakan, setiap alias harus unik di Akun AWS dan Wilayah. Ini memungkinkan Anda menerapkan kebijakan ke kumpulan kunci KMS tertentu tanpa mencantumkan kunci kunci ARNs KMS dalam pernyataan kebijakan. Untuk menambah atau menghapus kunci KMS dari set, ubah alias tombol KMS.
+ Kebijakan kunci dengan `kms:RequestAlias` itu memungkinkan prinsipal untuk menggunakan kunci KMS dalam `Encrypt` operasi, tetapi hanya ketika `Encrypt` permintaan menggunakan alias tersebut untuk mengidentifikasi kunci KMS.
+ Kebijakan IAM dengan `aws:ResourceTag/tag-key` itu menolak izin untuk menggunakan kunci KMS dengan kunci tag dan nilai tag tertentu. Ini memungkinkan Anda menerapkan kebijakan ke kumpulan kunci KMS tertentu tanpa mencantumkan kunci kunci ARNs KMS dalam pernyataan kebijakan. Untuk menambah atau menghapus kunci KMS dari set, tag atau untag kunci KMS.
+ Kebijakan IAM dengan `aws:RequestTag/tag-key` itu memungkinkan prinsipal untuk menghapus hanya `"Purpose"="Test"` tag kunci KMS. 
+ Kebijakan IAM dengan `aws:TagKeys` itu menolak izin untuk menandai atau menghapus tag kunci KMS dengan kunci tag. `Restricted`

ABAC menjadikan manajemen akses fleksibel dan dapat diskalakan. Misalnya, Anda dapat menggunakan kunci `aws:ResourceTag/tag-key` kondisi untuk membuat kebijakan IAM yang memungkinkan prinsipal menggunakan kunci KMS untuk operasi tertentu hanya jika kunci KMS memiliki tag. `Purpose=Test` Kebijakan ini berlaku untuk semua kunci KMS di seluruh Wilayah. Akun AWS

Saat dilampirkan ke pengguna atau peran, kebijakan IAM berikut memungkinkan prinsipal untuk menggunakan semua kunci KMS yang ada dengan `Purpose=Test` tag untuk operasi yang ditentukan. Untuk menyediakan akses ini ke kunci KMS baru atau yang sudah ada, Anda tidak perlu mengubah kebijakan. Cukup lampirkan `Purpose=Test` tag ke tombol KMS. Demikian pula, untuk menghapus akses ini dari kunci KMS dengan `Purpose=Test` tag, edit atau hapus tag. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AliasBasedIAMPolicy",
      "Effect": "Allow",
      "Action": [
        "kms:Decrypt",
        "kms:Encrypt",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
      ],
      "Resource": "arn:aws:kms:*:111122223333:key/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Purpose": "Test"
        }
      }
    }
  ]
}
```

------

Namun, jika Anda menggunakan fitur ini, hati-hati saat mengelola tag dan alias. Menambahkan, mengubah, atau menghapus tag atau alias dapat secara tidak sengaja mengizinkan atau menolak akses ke kunci KMS. Administrator kunci yang tidak memiliki izin untuk mengubah kebijakan kunci atau membuat hibah dapat mengontrol akses ke kunci KMS jika mereka memiliki izin untuk mengelola tag dan alias. Untuk mengurangi risiko ini, pertimbangkan [membatasi izin untuk mengelola tag](tag-permissions.md#tag-permissions-conditions) dan [alias](alias-access.md#alias-access-limiting). Misalnya, Anda mungkin ingin hanya mengizinkan perwakilan terpilih yang dapat mengelola tag `Purpose=Test`. Untuk detailnya, lihat [Gunakan alias untuk mengontrol akses ke tombol KMS](alias-authorization.md) dan [Gunakan tag untuk mengontrol akses ke tombol KMS](tag-authorization.md).

## Tag atau alias?
<a name="abac-tag-or-alias"></a>

AWS KMS mendukung ABAC dengan tag dan alias. Kedua opsi ini menyediakan strategi kontrol akses yang fleksibel dan dapat diskalakan, tetapi keduanya sedikit berbeda satu sama lain. 

Anda mungkin memutuskan untuk menggunakan tag atau menggunakan alias berdasarkan pola AWS penggunaan khusus Anda. Misalnya, jika Anda telah memberikan izin penandaan kepada sebagian besar administrator, mungkin akan lebih mudah untuk mengontrol strategi otorisasi berdasarkan alias. Atau, jika Anda mendekati kuota [alias per kunci KMS](resource-limits.md#aliases-per-key), Anda mungkin lebih memilih strategi otorisasi berdasarkan tag. 

Manfaat berikut adalah kepentingan umum.

**Manfaat kontrol akses berbasis tag**
+ Mekanisme otorisasi yang sama untuk berbagai jenis AWS sumber daya. 

  Anda dapat menggunakan tag atau kunci tag yang sama untuk mengontrol akses ke beberapa jenis sumber daya, seperti klaster Amazon Relational Database Service (Amazon RDS), volume Amazon Elastic Block Store (Amazon EBS) Block Store (Amazon EBS), dan kunci KMS. Fitur ini mengaktifkan beberapa model otorisasi yang berbeda yang lebih fleksibel dari kontrol akses berbasis peran tradisional.
+ Otorisasi akses ke sekelompok kunci KMS.

  Anda dapat menggunakan tag untuk mengelola akses ke sekelompok kunci KMS yang sama Akun AWS dan Wilayah. Tetapkan tag atau kunci tag yang sama ke kunci KMS yang Anda pilih. Kemudian buat pernyataan easy-to-maintain kebijakan sederhana yang didasarkan pada tag atau kunci tag. Untuk menambah atau menghapus kunci KMS dari grup otorisasi Anda, tambahkan atau hapus tag; Anda tidak perlu mengedit kebijakan.

**Manfaat kontrol akses berbasis alias**
+ Otorisasi akses ke operasi kriptografi berdasarkan alias.

  Sebagian besar kondisi kebijakan berbasis permintaan untuk atribut, termasuk [aws:RequestTag/*tag-key*](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag), hanya memengaruhi operasi yang menambahkan, mengedit, atau menghapus atribut. Tetapi [kms: RequestAlias](conditions-kms.md#conditions-kms-request-alias) condition key mengontrol akses ke operasi kriptografi berdasarkan alias yang digunakan untuk mengidentifikasi kunci KMS dalam permintaan. Misalnya, Anda dapat memberikan izin utama untuk menggunakan kunci KMS dalam `Encrypt` operasi tetapi hanya jika nilai `KeyId` parameternya`alias/restricted-key-1`. Untuk memenuhi syarat ini, Anda memerlukan semua hal berikut:
  + Kunci KMS harus dikaitkan dengan alias itu.
  + Permintaan harus menggunakan alias untuk mengidentifikasi kunci KMS.
  + Kepala sekolah harus memiliki izin untuk menggunakan kunci KMS sesuai dengan `kms:RequestAlias` kondisi tersebut. 

  Ini sangat berguna jika aplikasi Anda biasanya menggunakan nama alias atau alias ARNs untuk merujuk ke kunci KMS.
+ Berikan izin yang sangat terbatas.

  Alias harus unik di wilayah Akun AWS dan. Akibatnya, memberi prinsipal akses ke kunci KMS berdasarkan alias bisa jauh lebih membatasi daripada memberi mereka akses berdasarkan tag. Tidak seperti alias, tag dapat ditetapkan ke beberapa kunci KMS di akun dan Wilayah yang sama. Jika Anda memilih, Anda dapat menggunakan pola alias, seperti`alias/test*`, untuk memberikan akses prinsipal ke sekelompok kunci KMS di akun dan Wilayah yang sama. Namun, mengizinkan atau menolak akses ke alias tertentu memungkinkan kontrol yang sangat ketat pada kunci KMS.

# Memecahkan masalah ABAC untuk AWS KMS
<a name="troubleshooting-tags-aliases"></a>

Mengontrol akses ke kunci KMS berdasarkan tag dan aliasnya nyaman dan kuat. Namun, ini rentan akan beberapa kesalahan yang dapat diprediksi yang ingin Anda cegah.

## Akses berubah karena perubahan tag
<a name="access-denied-tag"></a>

Jika tag dihapus atau nilainya diubah, prinsipal yang memiliki akses ke kunci KMS hanya berdasarkan tag tersebut akan ditolak akses ke kunci KMS. Ini juga dapat terjadi ketika tag yang disertakan dalam pernyataan kebijakan penolakan ditambahkan ke kunci KMS. Menambahkan tag terkait kebijakan ke kunci KMS dapat memungkinkan akses ke kepala sekolah yang harus ditolak aksesnya ke kunci KMS.

Misalnya, misalkan kepala sekolah memiliki akses ke kunci KMS berdasarkan `Project=Alpha` tag, seperti izin yang diberikan oleh contoh pernyataan kebijakan IAM berikut. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "IAMPolicyWithResourceTag",
      "Effect": "Allow",
      "Action": [
        "kms:GenerateDataKeyWithoutPlaintext",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:ap-southeast-1:111122223333:key/*",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/Project": "Alpha"
        }
      }
    }
  ]
}
```

------

Jika tag dihapus dari kunci KMS atau nilai tag diubah, prinsipal tidak lagi memiliki izin untuk menggunakan kunci KMS untuk operasi yang ditentukan. Ini mungkin menjadi jelas ketika prinsipal mencoba membaca atau menulis data dalam AWS layanan yang menggunakan kunci yang dikelola pelanggan Untuk melacak perubahan tag, tinjau CloudTrail log [TagResource](ct-tagresource.md)atau [UntagResource entri](ct-untagresource.md) Anda.

Untuk memulihkan akses tanpa memperbarui kebijakan, ubah tag pada tombol KMS. Tindakan ini memiliki dampak minimal selain jangka waktu singkat saat diterapkan di seluruh AWS KMS. Agar kesalahan seperti ini tidak terjadi, hanya berikan izin penandaan dan penghapusan tanda untuk perwakilan yang memerlukannya dan [batasi izin penandaan](tag-permissions.md#tag-permissions-conditions) untuk tag yang perlu dikelola.. Sebelum mengubah tag, cari kebijakan untuk mendeteksi akses yang bergantung pada tag, dan dapatkan kunci KMS di semua Wilayah yang memiliki tag. Anda dapat mempertimbangkan untuk membuat CloudWatch alarm Amazon ketika tag tertentu diubah.

## Perubahan akses karena perubahan alias
<a name="access-denied-alias"></a>

Jika alias dihapus atau dikaitkan dengan kunci KMS yang berbeda, prinsipal yang memiliki akses ke kunci KMS hanya berdasarkan alias tersebut akan ditolak akses ke kunci KMS. Hal ini juga dapat terjadi ketika alias yang terkait dengan kunci KMS disertakan dalam pernyataan kebijakan penolakan. Menambahkan alias terkait kebijakan ke kunci KMS juga dapat memungkinkan akses ke kepala sekolah yang harus ditolak aksesnya ke kunci KMS.

Misalnya, pernyataan kebijakan IAM berikut menggunakan [kms: ResourceAliases](conditions-kms.md#conditions-kms-resource-aliases) condition key untuk mengizinkan akses ke kunci KMS di Wilayah akun yang berbeda dengan alias yang ditentukan.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AliasBasedIAMPolicy",
      "Effect": "Allow",
      "Action": [
        "kms:List*",
        "kms:Describe*",
        "kms:Decrypt"
      ],
      "Resource": "arn:aws:kms:*:111122223333:key/*",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "kms:ResourceAliases": [
            "alias/ProjectAlpha",
            "alias/ProjectAlpha_Test",
            "alias/ProjectAlpha_Dev"
          ]
        }
      }
    }
  ]
}
```

------

Untuk melacak perubahan alias, tinjau CloudTrail log Anda untuk [CreateAlias](ct-createalias.md), [UpdateAlias](ct-updatealias.md), dan [DeleteAlias](ct-deletealias.md)entri.

Untuk memulihkan akses tanpa memperbarui kebijakan, ubah alias yang terkait dengan kunci KMS. Karena setiap alias dapat dikaitkan dengan hanya satu kunci KMS di akun dan Wilayah, mengelola alias sedikit lebih sulit daripada mengelola tag. Memulihkan akses ke beberapa prinsipal pada satu kunci KMS dapat menolak akses prinsipal yang sama atau lainnya ke kunci KMS yang berbeda. 

Agar kesalahan ini tidak terjadi, berikan izin manajemen alias hanya untuk perwakilan yang memerlukannya dan [batasi izin manajemen-alias](alias-access.md#alias-access-limiting) untuk alias yang perlu dikelola. Sebelum memperbarui atau menghapus alias, cari kebijakan untuk mendeteksi akses yang bergantung pada alias, dan temukan kunci KMS di semua Wilayah yang terkait dengan alias.

## Akses ditolak karena kuota alias
<a name="access-denied-alias-quota"></a>

Pengguna yang diberi wewenang untuk menggunakan kunci KMS dengan ResourceAliases kondisi [kms:](conditions-kms.md#conditions-kms-resource-aliases) akan mendapatkan `AccessDenied` pengecualian jika kunci KMS melebihi [alias default per kuota kunci KMS](resource-limits.md#aliases-per-key) untuk akun dan Wilayah tersebut. 

Untuk memulihkan akses, hapus alias yang terkait dengan kunci KMS sehingga sesuai dengan kuota. Atau gunakan mekanisme alternatif untuk memberi pengguna akses ke kunci KMS. 

## Perubahan otorisasi yang tertunda
<a name="tag-alias-auth-delay"></a>

Perubahan yang Anda buat pada tag dan alias mungkin membutuhkan waktu hingga lima menit untuk memengaruhi otorisasi kunci KMS. Akibatnya, perubahan tag atau alias mungkin tercermin dalam respons dari operasi API sebelum berlaku pada otorisasi. Penundaan ini kemungkinan akan lebih lama daripada penundaan konsistensi akhirnya singkat yang mempengaruhi sebagian besar AWS KMS operasi. 

Misalnya, Anda mungkin memiliki kebijakan IAM yang memungkinkan prinsipal tertentu untuk menggunakan kunci KMS apa pun dengan tag. `"Purpose"="Test"` Kemudian Anda menambahkan `"Purpose"="Test"` tag ke kunci KMS. Meskipun [TagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html)operasi selesai dan [ListResourceTags](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListResourceTags.html)respons mengonfirmasi bahwa tag ditetapkan ke kunci KMS, kepala sekolah mungkin tidak memiliki akses ke kunci KMS hingga lima menit.

Agar tidak terjadi kesalahan, buat perkiraan penundaan ke dalam kode Anda. 

## Permintaan gagal karena pembaruan alias
<a name="failed-requests"></a>

Saat memperbarui alias, Anda mengaitkan alias yang ada dengan kunci KMS yang berbeda. 

[Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) dan [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)permintaan yang menentukan [nama alias](concepts.md#key-id-alias-name) atau alias [ARN](concepts.md#key-id-alias-ARN) mungkin gagal karena alias sekarang dikaitkan dengan kunci KMS yang tidak mengenkripsi ciphertext. Situasi ini biasanya menampilkan `IncorrectKeyException` atau `NotFoundException`. Atau jika permintaan tidak memiliki `KeyId` atau `DestinationKeyId` parameter, operasi mungkin gagal dengan `AccessDenied` pengecualian karena pemanggil tidak lagi memiliki akses ke kunci KMS yang mengenkripsi ciphertext. 

Anda dapat melacak perubahan dengan melihat CloudTrail log untuk [CreateAlias](ct-createalias.md), [UpdateAlias](ct-updatealias.md), dan entri [DeleteAlias](ct-deletealias.md)log. Anda juga dapat menggunakan nilai `LastUpdatedDate` bidang dalam [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)respons untuk mendeteksi perubahan. 

Misalnya, [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)contoh respons berikut menunjukkan bahwa `ProjectAlpha_Test` alias dalam `kms:ResourceAliases` kondisi telah diperbarui. Akibatnya, kepala sekolah yang memiliki akses berdasarkan alias kehilangan akses ke kunci KMS yang sebelumnya terkait. Sebaliknya, mereka memiliki akses ke kunci KMS yang baru terkait. 

```
$ aws kms list-aliases --query 'Aliases[?starts_with(AliasName, `alias/ProjectAlpha`)]'

{
    "Aliases": [
        {
            "AliasName": "alias/ProjectAlpha_Test",
            "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/ProjectAlpha_Test",
            "TargetKeyId": "0987dcba-09fe-87dc-65ba-ab0987654321",
            "CreationDate": 1566518783.394,
            "LastUpdatedDate": 1605308931.903
        },
        {
            "AliasName": "alias/ProjectAlpha_Restricted",
            "AliasArn": "arn:aws:kms:us-west-2:111122223333:alias/ProjectAlpha_Restricted",
            "TargetKeyId": "1234abcd-12ab-34cd-56ef-1234567890ab",
            "CreationDate": 1553410800.010,
            "LastUpdatedDate": 1553410800.010
        }
    ]
}
```

Memperbaiki perubahan ini tidaklah mudah. Anda dapat memperbarui alias lagi untuk mengaitkannya dengan kunci KMS asli. Namun, sebelum Anda bertindak, Anda perlu mempertimbangkan efek perubahan itu pada kunci KMS yang saat ini terkait. Jika kepala sekolah menggunakan kunci KMS terakhir dalam operasi kriptografi, mereka mungkin memerlukan akses lanjutan ke sana. Dalam hal ini, Anda mungkin ingin memperbarui kebijakan untuk memastikan bahwa kepala sekolah memiliki izin untuk menggunakan kedua kunci KMS. 

Anda dapat mencegah kesalahan seperti ini: Sebelum memperbarui alias, cari kebijakan untuk mendeteksi akses yang bergantung pada alias. Kemudian dapatkan kunci KMS di semua Wilayah yang terkait dengan alias. Berikan izin manajemen alias hanya untuk perwakilan yang memerlukannya dan [batasi izin manajemen-alias](alias-access.md#alias-access-limiting) untuk alias yang perlu dikelola.

# RBAC untuk AWS KMS
<a name="rbac"></a>

Kontrol akses berbasis peran (RBAC) adalah strategi otorisasi yang hanya memberi pengguna izin yang diperlukan untuk melakukan tugas pekerjaan mereka, dan tidak lebih. AWS KMS [mendukung RBAC dengan memungkinkan Anda mengontrol akses ke kunci Anda dengan menentukan izin terperinci tentang penggunaan kunci dalam kebijakan utama.](key-policies.md) Kebijakan kunci menentukan sumber daya, tindakan, efek, prinsip, dan kondisi opsional untuk memberikan akses ke kunci.

Untuk mengimplementasikan RBAC di AWS KMS, sebaiknya pisahkan izin untuk pengguna kunci dan administrator kunci.

------
#### [ Key users ]

Contoh kebijakan kunci berikut memungkinkan peran `ExampleUserRole` IAM untuk menggunakan kunci KMS.

```
{
            "Sid": "Allow use of the key",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws: iam::111122223333:role/ExampleUserRole"
            },
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
            ],
            "Resource": "*"
  }
```

 Pengguna kunci Anda mungkin memerlukan izin yang lebih sedikit daripada pengguna dalam contoh ini. Hanya tetapkan izin yang dibutuhkan pengguna. Gunakan pertanyaan berikut untuk membantu Anda menyempurnakan izin lebih lanjut.
+ Prinsipal IAM (peran atau pengguna) mana yang membutuhkan akses ke kunci?
+ Tindakan apa yang harus dilakukan setiap kepala sekolah dengan kunci? Misalnya, apakah prinsipal hanya memerlukan izin Enkripsi dan Tanda tangani?
+ Apakah pengguna itu manusia atau AWS layanan? Jika ini adalah AWS layanan, Anda dapat menggunakan [kunci kondisi](conditions-kms.md#conditions-kms-via-service) untuk membatasi penggunaan kunci ke AWS layanan tertentu.

------
#### [ Key administrators ]



Contoh kebijakan kunci berikut memungkinkan peran `ExampleAdminRole` IAM untuk mengelola kunci KMS. 

```
{
            "Sid": "Allow access for Key Administrators",
            "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"
            ],
            "Resource": "*"
    }
```

 Administrator kunci Anda mungkin memerlukan izin yang lebih sedikit daripada administrator dalam contoh ini. Hanya tetapkan izin yang dibutuhkan administrator kunci Anda.

------

Hanya berikan pengguna izin yang mereka butuhkan untuk memenuhi peran mereka. Izin pengguna dapat bervariasi tergantung pada apakah kunci digunakan dalam lingkungan pengujian atau produksi. Jika Anda menggunakan izin yang tidak terlalu ketat di lingkungan non-produksi tertentu, terapkan proses untuk menguji kebijakan sebelum dirilis ke produksi.

**Pelajari selengkapnya**
+ [Identitas IAM (pengguna, grup pengguna, dan peran)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)
+ [Jenis kontrol akses](https://docs.aws.amazon.com/prescriptive-guidance/latest/saas-multitenant-api-access-authorization/access-control-types.html)

# Memungkinkan pengguna di akun lain untuk menggunakan kunci KMS
<a name="key-policy-modifying-external-accounts"></a>

Anda dapat mengizinkan pengguna atau peran yang berbeda Akun AWS untuk menggunakan kunci KMS di akun Anda. Akses lintas akun memerlukan izin dalam kebijakan kunci kunci KMS dan dalam kebijakan IAM di akun pengguna eksternal.

Izin lintas akun hanya efektif untuk operasi berikut:
+ [Operasi kriptografi](kms-cryptography.md#cryptographic-operations)
+ [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)
+ [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [GetKeyRotationStatus](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyRotationStatus.html)
+ [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)
+ [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)
+ [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)
+ [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)

Jika Anda memberikan izin akun yang berbeda untuk operasi lain kepada pengguna, izin tersebut tidak berpengaruh. Misalnya, jika Anda memberikan izin prinsipal di akun lain [kms: ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html) izin dalam kebijakan IAM, atau ScheduleKeyDeletion izin [kms:](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html) pada kunci KMS dalam kebijakan kunci, upaya pengguna untuk memanggil operasi tersebut pada sumber daya Anda masih gagal. 

Untuk detail tentang penggunaan kunci KMS di akun yang berbeda untuk AWS KMS operasi, lihat kolom **Penggunaan lintas akun** di dan[AWS KMS izin](kms-api-permissions-reference.md). [Menggunakan kunci KMS di akun lain](#cross-account-use) Ada bagian **Penggunaan lintas akun** juga dalam setiap deskripsi API di [Referensi API AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/APIReference/).

**Awas**  
Berhati-hatilah dalam memberikan izin kepada kepala sekolah untuk menggunakan kunci KMS Anda. Sebisa mungkin, ikuti prinsip *hak istimewa paling rendah*. Berikan pengguna akses hanya ke kunci KMS yang mereka butuhkan hanya untuk operasi yang mereka butuhkan.  
Juga, berhati-hatilah dalam menggunakan kunci KMS yang tidak dikenal, terutama kunci KMS di akun yang berbeda. Pengguna jahat mungkin memberi Anda izin untuk menggunakan kunci KMS mereka untuk mendapatkan informasi tentang Anda atau akun Anda.   
Untuk informasi tentang menggunakan kebijakan untuk melindungi sumber daya di akun Anda, lihat [Praktik terbaik untuk kebijakan IAM](iam-policies-best-practices.md).

Untuk memberikan izin menggunakan kunci KMS kepada pengguna dan peran di akun lain, Anda harus menggunakan dua jenis kebijakan yang berbeda:
+ **Kebijakan kunci** untuk kunci KMS harus memberikan izin kepada akun eksternal (atau pengguna dan peran di akun eksternal) untuk menggunakan kunci KMS. Kebijakan utama ada di akun yang memiliki kunci KMS.
+ **Kebijakan IAM** di akun eksternal harus mendelegasikan izin kebijakan kunci untuk pengguna dan perannya. Kebijakan ini ditetapkan di akun eksternal dan akan memberikan izin kepada pengguna dan peran dalam akun tersebut.

Kebijakan kunci menentukan siapa yang *dapat* memiliki akses ke kunci KMS. Kebijakan IAM menentukan *siapa* yang memiliki akses ke kunci KMS. Kebijakan kunci atau kebijakan IAM saja tidak cukup—Anda harus mengubah keduanya. 

Untuk mengedit kebijakan utama, Anda dapat menggunakan [Tampilan Kebijakan](key-policy-modifying.md#key-policy-modifying-how-to-console-policy-view) di Konsol Manajemen AWS atau menggunakan [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)operasi [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)atau.

Untuk mendapatkan bantuan saat mengedit kebijakan IAM, lihat [Menggunakan kebijakan IAM dengan AWS KMS](iam-policies.md). 

Untuk contoh yang menunjukkan bagaimana kebijakan utama dan kebijakan IAM bekerja sama untuk mengizinkan penggunaan kunci KMS di akun yang berbeda, lihat. [Contoh 2: Pengguna mengasumsikan peran dengan izin untuk menggunakan kunci KMS dalam yang berbeda Akun AWS](policy-evaluation.md#example-cross-acct)

[Anda dapat melihat AWS KMS operasi lintas akun yang dihasilkan pada kunci KMS di log Anda AWS CloudTrail .](logging-using-cloudtrail.md) Operasi yang menggunakan kunci KMS di akun lain dicatat di akun penelepon dan akun pemilik kunci KMS.

**Topics**
+ [Langkah 1: Menambahkan pernyataan kebijakan kunci di akun lokal](#cross-account-key-policy)
+ [Langkah 2: Menambahkan kebijakan IAM di akun eksternal](#cross-account-iam-policy)
+ [Mengizinkan penggunaan kunci KMS eksternal dengan Layanan AWS](#cross-account-service)
+ [Menggunakan kunci KMS di akun lain](#cross-account-use)

**catatan**  
Contoh dalam topik ini menunjukkan cara menggunakan kebijakan kunci dan kebijakan IAM bersama-sama untuk menyediakan dan membatasi akses ke kunci KMS. Contoh generik ini tidak dimaksudkan untuk mewakili izin yang Layanan AWS diperlukan tertentu pada kunci KMS. Untuk informasi tentang izin yang Layanan AWS diperlukan, lihat topik enkripsi dalam dokumentasi layanan.

## Langkah 1: Menambahkan pernyataan kebijakan kunci di akun lokal
<a name="cross-account-key-policy"></a>

Kebijakan kunci untuk kunci KMS adalah penentu utama siapa yang dapat mengakses kunci KMS dan operasi mana yang dapat mereka lakukan. Kebijakan utama selalu ada di akun yang memiliki kunci KMS. Tidak seperti kebijakan IAM, kebijakan kunci tidak menentukan sumber daya. Sumber daya adalah kunci KMS yang terkait dengan kebijakan kunci. Saat memberikan izin lintas akun, kebijakan kunci untuk kunci KMS harus memberikan izin kepada akun eksternal (atau pengguna dan peran di akun eksternal) untuk menggunakan kunci KMS.

Untuk memberikan izin akun eksternal untuk menggunakan kunci KMS, tambahkan pernyataan ke kebijakan kunci yang menentukan akun eksternal. Di elemen `Principal` kebijakan kunci, masukkan Amazon Resource Name (ARN) dari akun eksternal. 

Saat Anda menentukan akun eksternal dalam kebijakan kunci, administrator IAM di akun eksternal dapat menggunakan kebijakan IAM untuk mendelegasikan izin tersebut untuk setiap pengguna dan peran dalam akun eksternal. Mereka juga dapat memutuskan tindakan yang ditentukan dalam kebijakan kunci yang dapat dilakukan pengguna dan peran. 

Izin yang diberikan ke akun eksternal dan prinsipalnya hanya berlaku jika akun eksternal diaktifkan di Wilayah yang menghosting kunci KMS dan kebijakan utamanya. 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*.

Misalnya, Anda ingin mengizinkan akun `444455556666` menggunakan kunci KMS enkripsi simetris di akun. `111122223333` Untuk melakukannya, tambahkan pernyataan kebijakan seperti yang ada di contoh berikut ke kebijakan kunci untuk kunci KMS di akun`111122223333`. Pernyataan kebijakan ini memberikan akun eksternal,`444455556666`, izin untuk menggunakan kunci KMS dalam operasi kriptografi untuk kunci KMS enkripsi simetris. 

**catatan**  
Contoh berikut mewakili kebijakan kunci sampel untuk berbagi kunci KMS dengan akun lain. Ganti contoh`Sid`,`Principal`, dan `Action` nilai dengan nilai yang valid untuk tujuan penggunaan kunci KMS Anda. 

```
{
    "Sid": "Allow an external account to use this KMS key",
    "Effect": "Allow",
    "Principal": {
        "AWS": [
            "arn:aws:iam::444455556666:root"
        ]
    },
    "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
    ],
    "Resource": "*"
}
```

Alih-alih memberikan izin untuk akun eksternal, Anda dapat menentukan pengguna dan peran eksternal tertentu dalam kebijakan kunci. Namun, pengguna dan peran tersebut tidak dapat menggunakan kunci KMS sampai administrator IAM di akun eksternal melampirkan kebijakan IAM yang tepat ke identitas mereka. Kebijakan IAM dapat memberikan izin untuk semua atau sebagian peran dan pengguna eksternal yang ditentukan dalam kebijakan kunci. Mereka juga dapat mengizinkan semua atau sebagian tindakan yang ditentukan dalam kebijakan kunci. 

Menentukan identitas dalam kebijakan kunci akan membatasi izin yang bisa diberikan administrator IAM di akun eksternal. Namun, hal ini akan membuat manajemen kebijakan dengan dua akun menjadi lebih kompleks. Misalnya, anggaplah Anda perlu menambahkan pengguna atau peran. Anda harus menambahkan identitas tersebut ke kebijakan kunci di akun yang memiliki kunci KMS dan membuat kebijakan IAM di akun identitas.

Untuk menentukan peran atau pengguna eksternal tertentu dalam kebijakan kunci, di elemen `Principal`, masukkan Amazon Resource Name (ARN) dari pengguna atau peran di akun eksternal.

Misalnya, contoh pernyataan kebijakan kunci berikut memungkinkan `ExampleRole` di akun `444455556666` untuk menggunakan kunci KMS di akun`111122223333`. Pernyataan kebijakan kunci ini memberikan akun eksternal,`444455556666`, izin untuk menggunakan kunci KMS dalam operasi kriptografi untuk kunci KMS enkripsi simetris. 

**catatan**  
Contoh berikut mewakili kebijakan kunci sampel untuk berbagi kunci KMS dengan akun lain. Ganti contoh`Sid`,`Principal`, dan `Action` nilai dengan nilai yang valid untuk tujuan penggunaan kunci KMS Anda. 

```
{
    "Sid": "Allow an external account to use this KMS key",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::444455556666:role/ExampleRole"
    },
    "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:ReEncrypt*",
        "kms:GenerateDataKey*",
        "kms:DescribeKey"
    ],
    "Resource": "*"
}
```

**catatan**  
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.

Anda juga harus memutuskan izin yang ingin diberikan ke akun eksternal. Misalnya, Anda mungkin ingin memberi pengguna izin untuk mendekripsi tetapi tidak mengenkripsi, atau izin untuk melihat kunci KMS tetapi tidak menggunakannya. Untuk daftar izin pada kunci KMS, lihat. [AWS KMS izin](kms-api-permissions-reference.md)

**Menyetel kebijakan kunci saat Anda membuat kunci KMS**  
Bila Anda menggunakan [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operasi untuk membuat kunci KMS, Anda dapat menggunakan `Policy` parameternya untuk menentukan kebijakan kunci yang memberikan akun eksternal, atau pengguna eksternal dan peran, izin untuk menggunakan kunci KMS.  
Saat Anda membuat kunci KMS di Konsol Manajemen AWS, Anda juga membuat kebijakan utamanya. Saat Anda memilih identitas di bagian **Administrator Kunci** dan **Pengguna Kunci**, AWS KMS tambahkan pernyataan kebijakan untuk identitas tersebut ke kebijakan kunci kunci KMS. Bagian **Pengguna Kunci** juga memungkinkan Anda menambahkan akun eksternal sebagai pengguna kunci.  
Saat Anda memasukkan ID akun akun eksternal, AWS KMS tambahkan dua pernyataan ke kebijakan utama. Tindakan ini hanya mempengaruhi kebijakan kunci. Pengguna dan peran di akun eksternal tidak dapat menggunakan kunci KMS sampai Anda melampirkan kebijakan IAM untuk memberi mereka beberapa atau semua izin ini.  
Pernyataan kebijakan kunci pertama memberikan izin akun eksternal untuk menggunakan kunci KMS dalam operasi kriptografi. Pernyataan kebijakan kunci kedua memungkinkan akun eksternal untuk membuat, melihat, dan mencabut hibah pada kunci KMS, tetapi hanya jika permintaan berasal dari [AWS layanan yang terintegrasi dengannya](https://aws.amazon.com/kms/features/#AWS_Service_Integration). AWS KMS Izin ini memungkinkan AWS layanan lain yang mengenkripsi data pengguna untuk menggunakan kunci KMS. Izin ini dirancang untuk kunci KMS yang mengenkripsi data pengguna dalam layanan AWS 

## Langkah 2: Menambahkan kebijakan IAM di akun eksternal
<a name="cross-account-iam-policy"></a>

Kebijakan kunci di akun yang memiliki kunci KMS menetapkan rentang izin yang valid. Namun, pengguna dan peran di akun eksternal tidak dapat menggunakan kunci KMS sampai Anda melampirkan kebijakan IAM yang mendelegasikan izin tersebut, atau menggunakan hibah untuk mengelola akses ke kunci KMS. Kebijakan IAM ditetapkan di akun eksternal. 

Jika kebijakan kunci memberikan izin untuk akun eksternal, Anda dapat melampirkan kebijakan IAM untuk setiap pengguna atau peran dalam akun tersebut. Namun jika kebijakan kunci memberikan izin untuk pengguna atau peran tertentu, kebijakan IAM hanya dapat memberikan izin tersebut untuk semua atau sebagian pengguna dan peran tertentu. Jika kebijakan IAM memberikan akses kunci KMS ke pengguna atau peran eksternal lainnya, kebijakan tersebut tidak berpengaruh.

Kebijakan kunci juga membatasi tindakan dalam kebijakan IAM. Kebijakan IAM dapat mendelegasikan semua atau sebagian tindakan yang ditentukan dalam kebijakan kunci. Jika kebijakan IAM mencantumkan tindakan yang tidak ditentukan dalam kebijakan kunci, izin tersebut tidak efektif.

Contoh berikut kebijakan IAM memungkinkan prinsipal untuk menggunakan kunci KMS dalam akun `111122223333` untuk operasi kriptografi. Untuk memberikan izin ini kepada pengguna dan peran dalam akun `444455556666`, [lampirkan kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console) untuk pengguna atau peran dalam akun `444455556666`.

**catatan**  
Contoh berikut merupakan contoh kebijakan IAM untuk berbagi kunci KMS dengan akun lain. Ganti contoh`Sid`,`Resource`, dan `Action` nilai dengan nilai yang valid untuk tujuan penggunaan kunci KMS Anda.

```
{
    "Sid": "AllowUseOfKeyInAccount111122223333",
    "Effect": "Allow",
    "Action": [
      "kms:Encrypt",
      "kms:Decrypt",
      "kms:ReEncrypt*",
      "kms:GenerateDataKey*",
      "kms:DescribeKey"
    ],
    "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}
```

Perhatikan detail penting berikut tentang kebijakan ini:
+ Tidak seperti kebijakan kunci, pernyataan kebijakan IAM tidak berisi elemen `Principal`. Dalam kebijakan IAM, perwakilan adalah identitas yang dilampirkan kebijakan tersebut. 
+ `Resource`Elemen dalam kebijakan IAM mengidentifikasi kunci KMS yang dapat digunakan oleh prinsipal. Untuk menentukan kunci KMS, tambahkan [kunci ARN](concepts.md#key-id-alias-ARN) ke `Resource` elemen.
+ Anda dapat menentukan lebih dari satu kunci KMS dalam `Resource` elemen. Tetapi jika Anda tidak menentukan kunci KMS tertentu dalam `Resource` elemen, Anda mungkin secara tidak sengaja memberikan akses ke lebih banyak kunci KMS daripada yang Anda inginkan.
+ Untuk mengizinkan pengguna eksternal menggunakan kunci KMS dengan [AWS layanan yang terintegrasi dengannya AWS KMS,](https://aws.amazon.com/kms/features/#AWS_Service_Integration) Anda mungkin perlu menambahkan izin ke kebijakan kunci atau kebijakan IAM. Lihat perinciannya di [Mengizinkan penggunaan kunci KMS eksternal dengan Layanan AWS](#cross-account-service).

Untuk informasi selengkapnya tentang bekerja dengan kebijakan IAM, lihat [Kebijakan IAM](iam-policies.md).

## Mengizinkan penggunaan kunci KMS eksternal dengan Layanan AWS
<a name="cross-account-service"></a>

Anda dapat memberi pengguna izin akun yang berbeda untuk menggunakan kunci KMS Anda dengan layanan yang terintegrasi dengannya AWS KMS. Misalnya, pengguna di akun eksternal dapat menggunakan kunci KMS Anda untuk mengenkripsi objek di bucket Amazon S3 atau untuk mengenkripsi rahasia yang mereka simpan. AWS Secrets Manager

Kebijakan kunci harus memberikan izin kepada pengguna eksternal atau akun pengguna eksternal untuk menggunakan kunci KMS. Selain itu, Anda perlu melampirkan kebijakan IAM ke identitas yang memberikan izin pengguna untuk menggunakan. Layanan AWS Layanan ini mungkin juga mengharuskan pengguna memiliki izin tambahan dalam kebijakan kunci atau kebijakan IAM. Untuk daftar izin yang Layanan AWS diperlukan pada kunci terkelola pelanggan, lihat topik Perlindungan Data di bagian Keamanan panduan pengguna atau panduan pengembang untuk layanan. 

## Menggunakan kunci KMS di akun lain
<a name="cross-account-use"></a>

Jika Anda memiliki izin untuk menggunakan kunci KMS yang berbeda Akun AWS, Anda dapat menggunakan kunci KMS di Konsol Manajemen AWS, AWS SDKs AWS CLI, dan. Alat AWS untuk PowerShell

Untuk mengidentifikasi kunci KMS di akun yang berbeda dalam perintah shell atau permintaan API, gunakan [pengidentifikasi kunci](concepts.md#key-id) berikut.
+ Untuk [operasi kriptografi](kms-cryptography.md#cryptographic-operations), [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html), dan [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html), gunakan [kunci ARN](concepts.md#key-id-key-ARN) atau [alias ARN](concepts.md#key-id-alias-ARN) dari kunci KMS.
+ Untuk [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html), [GetKeyRotationStatus](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyRotationStatus.html), [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/ListGrants.html), dan [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/RevokeGrant.html), gunakan tombol ARN dari tombol KMS.

Jika Anda hanya memasukkan ID kunci atau nama alias, AWS asumsikan kunci KMS ada di akun Anda.

 AWS KMS Konsol tidak menampilkan kunci KMS di akun lain, bahkan jika Anda memiliki izin untuk menggunakannya. Juga, daftar kunci KMS yang ditampilkan di konsol AWS layanan lain tidak termasuk kunci KMS di akun lain. 

Untuk menentukan kunci KMS di akun yang berbeda di konsol AWS layanan, Anda harus memasukkan kunci ARN atau alias ARN dari kunci KMS. Pengidentifikasi kunci yang diperlukan bervariasi menurut layanan, dan mungkin berbeda antara konsol layanan dan operasi API-nya. Untuk detailnya, lihat dokumentasi layanan.

# Kontrol akses ke tombol Multi-wilayah
<a name="multi-region-keys-auth"></a>

Anda dapat menggunakan kunci multi-Wilayah sesuai dengan kepatuhan, pemulihan bencana, dan skenario backup yang akan lebih kompleks dengan kunci Wilayah tunggal. Namun, karena properti keamanan dari kunci multi-wilayah secara signifikan berbeda dengan kunci Wilayah tunggal, kami merekomendasikan sebaiknya berhati-hati saat mengotorisasi pembuatan, manajemen, dan penggunaan kunci multi-Wilayah.

**catatan**  
Pernyataan kebijakan IAM yang ada dengan karakter wildcard di `Resource` bidang sekarang berlaku untuk kunci Single-region dan Multi-region. Untuk membatasi mereka ke kunci KMS wilayah tunggal atau kunci Multi-wilayah, gunakan kunci kondisi [kms](conditions-kms.md#conditions-kms-multiregion):. MultiRegion

Gunakan alat otorisasi Anda untuk mencegah pembuatan dan penggunaan kunci multi-Wilayah dalam skenario apa pun di mana Wilayah tunggal saja cukup. Izinkan kepala sekolah untuk mereplikasi kunci Multi-wilayah hanya ke yang membutuhkannya. Wilayah AWS Berikan izin kunci multi-Wilayah hanya kepada perwakilan yang membutuhkan dan hanya untuk tugas-tugas yang memerlukannya.

Anda dapat menggunakan kebijakan utama, kebijakan IAM, dan hibah untuk mengizinkan prinsipal IAM mengelola dan menggunakan kunci Multi-wilayah di Anda. Akun AWS Setiap kunci multi-Wilayah adalah sumber daya independen dengan ARN dan kebijakan kunci yang unik. Anda perlu menetapkan dan memelihara kebijakan kunci untuk setiap kunci dan memastikan bahwa kebijakan IAM baru maupun yang sudah ada menerapkan strategi otorisasi Anda. 

Untuk mendukung kunci Multi-region, AWS KMS gunakan peran terkait layanan IAM. Peran ini memberi AWS KMS izin yang dibutuhkan untuk menyinkronkan [properti bersama](multi-region-keys-overview.md#mrk-sync-properties). Untuk informasi selengkapnya, lihat [Otorisasi AWS KMS untuk menyinkronkan kunci Multi-region](multi-region-auth-slr.md).

**Topics**
+ [Basic otorisasi untuk kunci multi-Wilayah](#multi-region-auth-about)
+ [Mengotorisasi administrator dan pengguna kunci multi-Wilayah](#multi-region-auth-users)

## Basic otorisasi untuk kunci multi-Wilayah
<a name="multi-region-auth-about"></a>

Ketika merancang kebijakan kunci dan kebijakan IAM untuk kunci multi-Wilayah, pertimbangkan prinsip-prinsip berikut.
+ **Kebijakan utama** - Setiap kunci Multi-wilayah adalah sumber daya kunci KMS independen dengan kebijakan [utamanya](key-policies.md) sendiri. Anda dapat menerapkan kebijakan kunci yang sama maupun berbeda untuk setiap kunci dari kumpulan kunci multi-Wilayah terkait. Kebijakan utama *bukan* [properti bersama](multi-region-keys-overview.md#mrk-sync-properties) dari kunci Multi-wilayah. AWS KMS tidak menyalin atau menyinkronkan kebijakan utama di antara kunci Multi-wilayah terkait. 

  Saat Anda membuat kunci replika di AWS KMS konsol, konsol akan menampilkan kebijakan kunci saat ini dari kunci utama sebagai kenyamanan. Anda dapat menggunakan kebijakan kunci ini, mengeditnya, atau menghapus serta menggantinya. Tetapi bahkan jika Anda menerima kebijakan kunci utama tidak berubah, AWS KMS tidak menyinkronkan kebijakan. Sebagai contoh, jika Anda mengubah kebijakan kunci dari kunci primer, kebijakan kunci dari replika tetap sama.
+ **Kebijakan kunci default** — Saat Anda membuat kunci Multi-wilayah dengan menggunakan [CreateKey](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateKey.html)dan `ReplicateKey` operasi, [kebijakan kunci default](key-policy-default.md) diterapkan kecuali Anda menentukan kebijakan kunci dalam permintaan. Ini adalah kebijakan kunci default yang sama yang diterapkan untuk kunci wilayah tunggal.
+ **Kebijakan IAM** [— Seperti semua kunci KMS, Anda dapat menggunakan kebijakan IAM untuk mengontrol akses ke kunci Multi-wilayah hanya jika kebijakan kunci mengizinkannya.](key-policy-default.md#key-policy-default-allow-root-enable-iam) [Kebijakan IAM](iam-policies.md) berlaku untuk semua secara Wilayah AWS default. Namun, Anda dapat menggunakan kunci kondisi, seperti [aws: RequestedRegion](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requestedregion), untuk membatasi izin ke Wilayah tertentu. 

  Untuk membuat kunci primer dan replika, perwakilan harus memiliki izin `kms:CreateKey` dalam kebijakan IAM yang berlaku untuk wilayah di mana kunci dibuat. 
+ **Hibah — AWS KMS hibah** [bersifat Regional](grants.md). Setiap hibah memungkinkan izin untuk satu kunci KMS. Anda dapat menggunakan izin untuk mengizinkan izin untuk kunci primer multi-wilayah atau kunci replika. Tetapi Anda tidak dapat menggunakan satu hibah untuk mengizinkan izin ke beberapa kunci KMS, bahkan jika itu adalah kunci Multi-wilayah terkait.
+ **ARN kunci** — Setiap kunci multi-Wilayah memiliki [ARN kunci unik](mrk-how-it-works.md). Kunci kunci ARNs Multi-region terkait memiliki partisi, akun, dan ID kunci yang sama, tetapi Wilayah yang berbeda.

  Guna menerapkan pernyataan kebijakan IAM untuk kunci multi-Wilayah tertentu, gunakan ARN kunci atau pola ARN kuncinya yang mencakup Wilayah. Untuk menerapkan pernyataan kebijakan IAM untuk semua kunci multi-wilayah terkait, menggunakan karakter kartubebas (\$1) dalam elemen Wilayah dari ARN, seperti yang ditunjukkan dalam contoh berikut.

  ```
  {
    "Effect": "Allow",  
    "Action": [
      "kms:Describe*",
      "kms:List*"
    ],
    "Resource": {
        "arn:aws:kms:*::111122223333:key/mrk-1234abcd12ab34cd56ef1234567890ab"
    }
  }
  ```

  Untuk menerapkan pernyataan kebijakan ke semua kunci Multi-wilayah di Anda Akun AWS, Anda dapat menggunakan kondisi MultiRegion kebijakan [kms:](conditions-kms.md#conditions-kms-multiregion) atau pola ID kunci yang menyertakan awalan khusus`mrk-`.
+ **Peran terkait layanan** [— Kepala sekolah yang membuat kunci utama Multi-wilayah harus memiliki izin iam:. CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html)

  [Untuk menyinkronkan properti bersama kunci Multi-wilayah terkait, gunakan AWS KMS peran terkait layanan IAM.](multi-region-auth-slr.md) AWS KMS membuat peran terkait layanan di Akun AWS setiap kali Anda membuat kunci utama Multi-wilayah. (Jika perannya ada, AWS KMS akan membuatnya ulang, yang tidak memiliki efek berbahaya.) Peran ini berlaku di semua Wilayah. AWS KMS [Untuk memungkinkan membuat (atau membuat ulang) peran terkait layanan, kepala sekolah yang membuat kunci utama Multi-wilayah harus memiliki izin iam:. CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html)

## Mengotorisasi administrator dan pengguna kunci multi-Wilayah
<a name="multi-region-auth-users"></a>

Perwakilan yang membuat dan mengelola kunci multi-Wilayah memerlukan izin berikut di daerah primer dan replika:
+ `kms:CreateKey`
+ `kms:ReplicateKey`
+ `kms:UpdatePrimaryRegion`
+ `iam:CreateServiceLinkedRole`

### Membuat kunci primer
<a name="mrk-auth-create-primary"></a>

Untuk [membuat kunci primer Multi-wilayah](create-primary-keys.md), prinsipal memerlukan CreateServiceLinkedRole izin [kms: CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) dan [iam:](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html) dalam kebijakan IAM yang efektif di Region kunci primer. Prinsipal yang memiliki izin ini dapat membuat kunci Single-region dan Multi-region kecuali Anda membatasi izinnya. 

`iam:CreateServiceLinkedRole`Izin memungkinkan AWS KMS untuk membuat [**AWSServiceRoleForKeyManagementServiceMultiRegionKeys**peran](multi-region-auth-slr.md) untuk menyinkronkan [properti bersama kunci](multi-region-keys-overview.md#mrk-sync-properties) Multi-wilayah terkait.

Misalnya, kebijakan IAM ini memungkinkan prinsipal untuk membuat kunci Multi-wilayah, melampirkan kebijakan untuk kunci tersebut, dan peran terkait layanan untuk kunci Multi-wilayah.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":{
      "Action": [
        "kms:CreateKey",
        "iam:CreateServiceLinkedRole"
      ],
      "Effect":"Allow",
      "Resource":"*"
  }
}
```

------

Untuk mengizinkan atau menolak izin membuat kunci utama Multi-wilayah, gunakan kunci MultiRegion kondisi [kms:](conditions-kms.md#conditions-kms-multiregion). Nilai yang valid adalah `true` (kunci multi-Wilayah) atau `false` (kunci Wilayah tunggal). Misalnya, pernyataan kebijakan IAM berikut menggunakan tindakan `Deny` dengan kunci syarat `kms:MultiRegion` untuk mencegah perwakilan membuat kunci multi-Wilayah. 

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement":{
      "Action":"kms:CreateKey",
      "Effect":"Deny",
      "Resource":"*",
      "Condition": {
          "Bool": {
            "kms:MultiRegion": true
          }
      }
  }
}
```

------

### Mereplikasi kunci
<a name="mrk-auth-replicate"></a>

Untuk [membuat kunci replika multi-Wilayah](#mrk-auth-replicate), perwakilan memerlukan izin berikut:
+  [kms: ReplicateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html) izin dalam kebijakan kunci kunci utama.
+ [kms: CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) izin dalam kebijakan IAM yang efektif di Region kunci replika.

Berhati-hatilah saat mengizinkan izin ini. Mereka memungkinkan prinsipal untuk membuat kunci KMS dan kebijakan utama yang mengotorisasi penggunaannya. Parameter izin `kms:ReplicateKey` juga mengizinkan transfer materi kunci di seluruh batas-batas Wilayah dalam AWS KMS.

Untuk membatasi Wilayah AWS di mana kunci Multi-region dapat direplikasi, gunakan [kms](conditions-kms.md#conditions-kms-replica-region): condition key. ReplicaRegion Kunci ini hanya akan membatasi izin `kms:ReplicateKey`. Jika tidak, kunci tidak berpengaruh. Misalnya, kebijakan kunci berikut mengizinkan perwakilan untuk mereplikasi kunci primer ini, tetapi hanya di Wilayah tertentu.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/Administrator"
  },
  "Action": "kms:ReplicateKey",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:ReplicaRegion": [
         "us-east-1",
         "eu-west-3",
         "ap-southeast-2"
      ]
    }
  }
}
```

### Memperbarui Wilayah primer
<a name="mrk-auth-update"></a>

Perwakilan terotorisasi dapat mengkonversi kunci replika untuk kunci primer, yang mengubah kunci primer sebelumnya ke replika. Tindakan ini dikenal sebagai [memperbarui Wilayah primer](multi-region-update.md). Untuk memperbarui Wilayah utama, kepala sekolah membutuhkan [kms: UpdatePrimaryRegion](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html) izin di kedua Wilayah. Anda dapat memberikan izin ini di kebijakan kunci atau IAM.
+ `kms:UpdatePrimaryRegion` pada kunci primer. Izin ini harus efektif di Wilayah kunci primer.
+ `kms:UpdatePrimaryRegion` pada kunci replika. Izin ini harus berlaku di Wilayah kunci replika.

Misalnya, kebijakan kunci berikut memberi pengguna yang dapat mengasumsikan izin peran Administrator untuk memperbarui Wilayah utama kunci KMS. Kunci KMS ini dapat menjadi kunci utama atau kunci replika dalam operasi ini.

```
{
  "Effect": "Allow",
  "Resource": "*",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/Administrator"
  },
  "Action": "kms:UpdatePrimaryRegion"
}
```

Untuk membatasi kunci Wilayah AWS yang dapat meng-host kunci utama, gunakan [kms: PrimaryRegion](conditions-kms.md#conditions-kms-primary-region) condition key. Misalnya, pernyataan kebijakan IAM berikut memungkinkan prinsipal untuk memperbarui Region utama kunci Multi-region di Akun AWS, tetapi hanya jika Region primer baru adalah salah satu Wilayah yang ditentukan.

```
{
  "Effect": "Allow",  
  "Action": "kms:UpdatePrimaryRegion",
  "Resource": {
      "arn:aws:kms:*:111122223333:key/*"
  },
  "Condition": {
    "StringEquals": {
      "kms:PrimaryRegion": [ 
         "us-west-2",
         "sa-east-1",
         "ap-southeast-1"
      ]
    }
  }
}
```

### Menggunakan dan mengelola kunci multi-Wilayah
<a name="mrk-auth-using"></a>

Secara default, kepala sekolah yang memiliki izin untuk menggunakan dan mengelola kunci KMS di dan Wilayah juga memiliki izin untuk menggunakan Akun AWS dan mengelola kunci Multi-wilayah. Namun, Anda dapat menggunakan [kms: MultiRegion](conditions-kms.md#conditions-kms-multiregion) condition key untuk mengizinkan hanya kunci Single-region atau hanya kunci Multi-region. Atau gunakan kunci MultiRegionKeyType kondisi [kms:](conditions-kms.md#conditions-kms-multiregion-key-type) untuk mengizinkan hanya kunci utama Multi-wilayah atau hanya kunci replika. Kedua tombol kondisi mengontrol akses ke [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)operasi dan operasi apa pun yang menggunakan kunci KMS yang ada, seperti [Enkripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html) atau. [EnableKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_EnableKey.html)

Contoh pernyataan kebijakan IAM berikut menggunakan kunci syarat `kms:MultiRegion` untuk mencegah perwakilan menggunakan atau mengelola kunci multi-Wilayah apa pun.

```
{
  "Effect": "Deny",  
  "Action": "kms:*",
  "Resource": "*",
  "Condition": {
    "Bool": "kms:MultiRegion": true
  }
}
```

Contoh pernyataan kebijakan IAM berikut menggunakan kunci syarat `kms:MultiRegionKeyType` untuk mengizinkan perwakilan menjadwalkan dan membatalkan penghapusan kunci, tetapi hanya pada kunci replika multi-Wilayah.

```
{
  "Effect": "Allow",  
  "Action": [
    "kms:ScheduleKeyDeletion",
    "kms:CancelKeyDeletion"
  ],
  "Resource": {
      "arn:aws:kms:us-west-2:111122223333:key/*"
  },
  "Condition": {
    "StringEquals": "kms:MultiRegionKeyType": "REPLICA"
  }
}
```

# Menentukan akses ke AWS KMS keys
<a name="determining-access"></a>

Untuk menentukan sepenuhnya siapa atau apa yang saat ini memiliki akses ke suatu AWS KMS key, Anda harus memeriksa kebijakan kunci KMS, semua [hibah](grants.md) yang berlaku untuk kunci KMS, dan potensi semua AWS Identity and Access Management (IAM) kebijakan. Anda dapat melakukan ini untuk menentukan ruang lingkup potensi penggunaan kunci KMS, atau untuk membantu Anda memenuhi persyaratan kepatuhan atau audit. Topik berikut dapat membantu Anda menghasilkan daftar lengkap AWS kepala sekolah (identitas) yang saat ini memiliki akses ke kunci KMS.

**Topics**
+ [Memeriksa kebijakan kunci](determining-access-key-policy.md)
+ [Memeriksa kebijakan IAM](determining-access-iam-policies.md)
+ [Memeriksa pemberian izin](determining-access-grants.md)

# Memeriksa kebijakan kunci
<a name="determining-access-key-policy"></a>

[Kebijakan utama](key-policies.md) adalah cara utama untuk mengontrol akses ke kunci KMS. Setiap kunci KMS memiliki persis satu kebijakan utama.

Jika kebijakan kunci terdiri dari atau menyertakan [kebijakan kunci default, kebijakan](key-policy-default.md#key-policy-default-allow-root-enable-iam) kunci memungkinkan administrator IAM di akun untuk menggunakan kebijakan IAM untuk mengontrol akses ke kunci KMS. Selain itu, jika kebijakan kunci memberikan Akun AWS izin [lain](key-policy-modifying-external-accounts.md) untuk menggunakan kunci KMS, administrator IAM di akun eksternal dapat menggunakan kebijakan IAM untuk mendelegasikan izin tersebut. Untuk menentukan daftar lengkap kepala sekolah yang dapat mengakses kunci KMS, [periksa](determining-access-iam-policies.md) kebijakan IAM. 

Untuk melihat kebijakan kunci kunci yang [dikelola AWS KMS pelanggan](concepts.md#customer-mgn-key) atau [Kunci yang dikelola AWS](concepts.md#aws-managed-key)di akun Anda, gunakan Konsol Manajemen AWS atau [GetKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyPolicy.html)operasi di AWS KMS API. Untuk melihat kebijakan kunci, Anda harus memiliki `kms:GetKeyPolicy` izin untuk kunci KMS. Untuk petunjuk untuk melihat kebijakan kunci untuk kunci KMS, lihat[Melihat kebijakan utama](key-policy-viewing.md).

Periksa dokumen kebijakan kunci dan perhatikan semua perwakilan yang ditentukan dalam setiap elemen `Principal` pernyataan kebijakan. Dalam pernyataan kebijakan dengan `Allow` efek, pengguna IAM, peran IAM, dan Akun AWS `Principal` elemen memiliki akses ke kunci KMS ini.

**catatan**  
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.

Contoh berikut menggunakan pernyataan kebijakan yang ditemukan di [kebijakan kunci default](key-policy-default.md) untuk menunjukkan cara melakukannya.

**Example Pernyataan kebijakan 1**  

```
{
  "Sid": "Enable IAM User Permissions",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:root"},
  "Action": "kms:*",
  "Resource": "*"
}
```
Dalam pernyataan kebijakan 1, `arn:aws:iam::111122223333:root` adalah [pokok AWS akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts) yang mengacu pada Akun AWS 111122223333. (Ini bukan pengguna root akun.) Secara default, pernyataan kebijakan seperti ini disertakan dalam dokumen kebijakan kunci saat Anda membuat kunci KMS baru dengan Konsol Manajemen AWS, atau membuat kunci KMS baru secara terprogram tetapi tidak menyediakan kebijakan kunci.  
Dokumen kebijakan kunci dengan pernyataan yang memungkinkan akses ke Akun AWS mengaktifkan [kebijakan IAM di akun untuk memungkinkan akses ke kunci KMS](key-policy-default.md#key-policy-default-allow-root-enable-iam). Ini berarti bahwa pengguna dan peran dalam akun mungkin memiliki akses ke kunci KMS bahkan jika mereka tidak secara eksplisit terdaftar sebagai prinsipal dalam dokumen kebijakan utama. Berhati-hatilah untuk [memeriksa semua kebijakan IAM](determining-access-iam-policies.md) di semua yang Akun AWS terdaftar sebagai prinsipal untuk menentukan apakah mereka mengizinkan akses ke kunci KMS ini.

**Example Pernyataan kebijakan 2**  

```
{
  "Sid": "Allow access for Key Administrators",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/KMSKeyAdmins"},
  "Action": [
    "kms:Describe*",
    "kms:Put*",
    "kms:Create*",
    "kms:Update*",
    "kms:Enable*",
    "kms:Revoke*",
    "kms:List*",
    "kms:Disable*",
    "kms:Get*",
    "kms:Delete*",
    "kms:ScheduleKeyDeletion",
    "kms:CancelKeyDeletion"
  ],
  "Resource": "*"
}
```
Dalam pernyataan kebijakan 2, `arn:aws:iam::111122223333:role/KMSKeyAdmins` mengacu pada peran IAM bernama KMSKey Admin di 111122223333. Akun AWS Pengguna yang berwenang untuk mengambil peran ini diizinkan untuk melakukan tindakan yang tercantum dalam pernyataan kebijakan, yang merupakan tindakan administratif untuk mengelola kunci KMS.

**Example Kebijakan pernyataan 3**  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"},
  "Action": [
    "kms:DescribeKey",
    "kms:GenerateDataKey*",
    "kms:Encrypt",
    "kms:ReEncrypt*",
    "kms:Decrypt"
  ],
  "Resource": "*"
}
```
Dalam pernyataan kebijakan 3, `arn:aws:iam::111122223333:role/EncryptionApp` mengacu pada peran IAM yang disebutkan EncryptionApp dalam Akun AWS 111122223333. Kepala sekolah yang berwenang untuk mengambil peran ini diizinkan untuk melakukan tindakan yang tercantum dalam pernyataan kebijakan, yang mencakup [operasi kriptografi](kms-cryptography.md#cryptographic-operations) untuk kunci KMS enkripsi simetris.

**Example Kebijakan pernyataan 4**  

```
{
  "Sid": "Allow attachment of persistent resources",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"},
  "Action": [
    "kms:ListGrants",
    "kms:CreateGrant",
    "kms:RevokeGrant"
  ],
  "Resource": "*",
  "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}
}
```
Dalam pernyataan kebijakan 4, `arn:aws:iam::111122223333:role/EncryptionApp` mengacu pada peran IAM yang disebutkan EncryptionApp dalam Akun AWS 111122223333. Kepala sekolah yang berwenang mengambil peran ini diizinkan untuk melakukan tindakan yang tercantum dalam pernyataan kebijakan. [Tindakan ini, bila dikombinasikan dengan tindakan yang diizinkan dalam **pernyataan kebijakan Contoh 3**, adalah tindakan yang diperlukan untuk mendelegasikan penggunaan kunci KMS ke sebagian besar [AWS layanan yang terintegrasi dengan AWS KMS](service-integration.md), khususnya layanan yang menggunakan hibah.](grants.md) GrantIsForAWSResourceNilai [kms:](conditions-kms.md#conditions-kms-grant-is-for-aws-resource) dalam `Condition` elemen memastikan bahwa delegasi hanya diperbolehkan ketika delegasi adalah AWS layanan yang terintegrasi dengan AWS KMS dan menggunakan hibah untuk otorisasi.

Untuk mempelajari semua cara yang berbeda, Anda dapat menentukan perwakilan dalam dokumen kebijakan kunci, lihat [Menentukan Perwakilan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#Principal_specifying) di *Panduan Pengguna IAM*.

Untuk mempelajari lebih lanjut tentang kebijakan AWS KMS utama, lihat[Kebijakan utama di AWS KMS](key-policies.md).

# Memeriksa kebijakan IAM
<a name="determining-access-iam-policies"></a>

Selain kebijakan dan hibah utama, Anda juga dapat menggunakan [kebijakan IAM](iam-policies.md) untuk mengizinkan akses ke kunci KMS. Untuk informasi selengkapnya tentang bagaimana kebijakan IAM dan kebijakan kunci bekerja sama, lihat [Izin pemecahan masalah AWS KMS](policy-evaluation.md).

Untuk menentukan prinsipal mana yang saat ini memiliki akses ke kunci KMS melalui kebijakan IAM, Anda dapat menggunakan alat IAM [Policy Simulator berbasis browser, atau Anda dapat membuat permintaan ke API IAM](https://policysim.aws.amazon.com/).

**Contents**
+ [Menguji kebijakan IAM dengan simulator kebijakan IAM](#determining-access-iam-policy-simulator)
+ [Menguji kebijakan IAM dengan API IAM](#determining-access-iam-api)

## Menguji kebijakan IAM dengan simulator kebijakan IAM
<a name="determining-access-iam-policy-simulator"></a>

Simulator Kebijakan IAM dapat membantu Anda mempelajari prinsip mana yang memiliki akses ke kunci KMS melalui kebijakan IAM.

**Untuk menggunakan simulator kebijakan IAM untuk menentukan akses ke kunci KMS**

1. Masuk ke Konsol Manajemen AWS dan kemudian buka IAM Policy Simulator di[https://policysim.aws.amazon.com/](https://policysim.aws.amazon.com/).

1. Di panel **Pengguna, Grup, dan Peran**, pilih pengguna, grup, atau peran yang kebijakannya ingin disimulasikan.

1. (Opsional) Hapus kotak centang di samping kebijakan yang ingin dihilangkan dari simulasi. Untuk mensimulasikan semua kebijakan, biarkan semua kebijakan dipilih.

1. Di panel **Simulator Kebijakan**, lakukan hal berikut:

   1. Untuk **Pilih layanan**, pilih **Layanan Manajemen Kunci**.

   1. Untuk mensimulasikan AWS KMS tindakan tertentu, untuk **Pilih tindakan**, pilih tindakan yang akan disimulasikan. Untuk mensimulasikan semua AWS KMS tindakan, pilih **Pilih Semua**.

1. (Opsional) Simulator Kebijakan mensimulasikan akses ke semua kunci KMS secara default. Untuk mensimulasikan akses ke kunci KMS tertentu, pilih **Pengaturan Simulasi** dan kemudian ketik Nama Sumber Daya Amazon (ARN) dari kunci KMS untuk disimulasikan.

1. Pilih **Jalankan Simulasi**.

Anda bisa melihat hasil simulasi di bagian **Hasil**. Ulangi langkah 2 hingga 6 untuk setiap pengguna, grup, dan peran dalam Akun AWS.

## Menguji kebijakan IAM dengan API IAM
<a name="determining-access-iam-api"></a>

Anda dapat menggunakan API IAM untuk memeriksa kebijakan IAM secara terprogram. Langkah-langkah berikut memberikan gambaran umum tentang cara melakukannya:

1. Untuk setiap yang Akun AWS terdaftar sebagai prinsipal dalam kebijakan kunci (yaitu, setiap [prinsipal AWS akun](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts) yang ditentukan dalam format ini:`"Principal": {"AWS": "arn:aws:iam::111122223333:root"}`), gunakan [ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html)dan [ListRoles](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html)operasi di API IAM untuk mendapatkan semua pengguna dan peran dalam akun.

1. Untuk setiap pengguna dan peran dalam daftar, gunakan [SimulatePrincipalPolicy](https://docs.aws.amazon.com/IAM/latest/APIReference/API_SimulatePrincipalPolicy.html)operasi di API IAM, meneruskan parameter berikut:
   + Untuk `PolicySourceArn`, tentukan Amazon Resource Name (ARN) pengguna atau peran dari daftar Anda. Anda hanya dapat menentukan satu `PolicySourceArn` untuk setiap `SimulatePrincipalPolicy` permintaan, jadi Anda harus memanggil operasi ini beberapa kali, sekali untuk setiap pengguna dan peran dalam daftar Anda.
   + Untuk `ActionNames` daftar, tentukan setiap tindakan AWS KMS API yang akan disimulasikan. Untuk mensimulasikan semua tindakan AWS KMS API, gunakan`kms:*`. Untuk menguji tindakan AWS KMS API individual, mendahului setiap tindakan API dengan "`kms:`“, misalnya"”`kms:ListKeys`. Untuk daftar lengkap tindakan AWS KMS API, lihat [Tindakan](https://docs.aws.amazon.com/kms/latest/APIReference/API_Operations.html) di *Referensi AWS Key Management Service API*.
   + (Opsional) Untuk menentukan apakah pengguna atau peran memiliki akses ke kunci KMS tertentu, gunakan `ResourceArns` parameter untuk menentukan daftar Nama Sumber Daya Amazon (ARNs) kunci KMS. Untuk menentukan apakah pengguna atau peran memiliki akses ke kunci KMS apa pun, hilangkan parameter. `ResourceArns`

IAM merespons setiap permintaan `SimulatePrincipalPolicy` dengan keputusan evaluasi: `allowed`, `explicitDeny`, atau `implicitDeny`. Untuk setiap respons yang berisi keputusan evaluasi`allowed`, respons menyertakan nama operasi AWS KMS API tertentu yang diizinkan. Ini juga termasuk ARN kunci KMS yang digunakan dalam evaluasi, jika ada.

# Memeriksa pemberian izin
<a name="determining-access-grants"></a>

Hibah adalah mekanisme lanjutan untuk menentukan izin yang AWS KMS dapat digunakan oleh Anda atau AWS layanan terintegrasi untuk menentukan bagaimana dan kapan kunci KMS dapat digunakan. Hibah dilampirkan ke kunci KMS, dan setiap hibah berisi kepala sekolah yang menerima izin untuk menggunakan kunci KMS dan daftar operasi yang diizinkan. Pemberian izin adalah alternatif untuk kebijakan kunci , dan berguna untuk kasus penggunaan tertentu. Untuk informasi selengkapnya, lihat [Hibah di AWS KMS](grants.md).

Untuk mendapatkan daftar hibah untuk kunci KMS, gunakan operasi. AWS KMS [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html) Anda dapat memeriksa hibah untuk kunci KMS untuk menentukan siapa atau apa yang saat ini memiliki akses untuk menggunakan kunci KMS melalui hibah tersebut. Sebagai contoh, berikut ini representasi JSON bantuan yang diperoleh dari perintah [list-grants](https://docs.aws.amazon.com/cli/latest/reference/kms/list-grants.html) dalam AWS CLI.

```
{"Grants": [{
  "Operations": ["Decrypt"],
  "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
  "Name": "0d8aa621-43ef-4657-b29c-3752c41dc132",
  "RetiringPrincipal": "arn:aws:iam::123456789012:root",
  "GranteePrincipal": "arn:aws:sts::111122223333:assumed-role/aws:ec2-infrastructure/i-5d476fab",
  "GrantId": "dc716f53c93acacf291b1540de3e5a232b76256c83b2ecb22cdefa26576a2d3e",
  "IssuingAccount": "arn:aws:iam::111122223333:root",
  "CreationDate": 1.444151834E9,
  "Constraints": {"EncryptionContextSubset": {"aws:ebs:id": "vol-5cccfb4e"}}
}]}
```

Untuk mengetahui siapa atau apa yang memiliki akses untuk menggunakan tombol KMS, cari `"GranteePrincipal"` elemennya. Dalam contoh sebelumnya, perwakilan penerima adalah peran pengguna diasumsikan yang berhubungan dengan instans EC2 i-5d476fab. Infrastruktur EC2 menggunakan peran ini untuk melampirkan volume vol-5cccfb4e EBS terenkripsi ke instans. Dalam hal ini, peran infrastruktur EC2 memiliki izin untuk menggunakan kunci KMS karena sebelumnya Anda membuat volume EBS terenkripsi yang dilindungi oleh kunci KMS ini. Anda kemudian melampirkan volume ke instans EC2.

Berikut ini contoh lain dari representasi JSON pemberian izin yang diperoleh dari perintah [list-grants](https://docs.aws.amazon.com/cli/latest/reference/kms/list-grants.html) dalam AWS CLI. Dalam contoh berikut, pokok penerima hibah adalah yang lain. Akun AWS

```
{"Grants": [{
  "Operations": ["Encrypt"],
  "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
  "Name": "",
  "GranteePrincipal": "arn:aws:iam::444455556666:root",
  "GrantId": "f271e8328717f8bde5d03f4981f06a6b3fc18bcae2da12ac38bd9186e7925d11",
  "IssuingAccount": "arn:aws:iam::111122223333:root",
  "CreationDate": 1.444151269E9
}]}
```

# Konteks enkripsi
<a name="encrypt_context"></a>

**catatan**  
Anda tidak dapat menentukan konteks enkripsi dalam operasi kriptografi dengan kunci KMS [asimetris atau kunci KMS](symmetric-asymmetric.md) [HMAC](hmac.md). Algoritma asimetris dan algoritma MAC tidak mendukung konteks enkripsi.

Semua [operasi AWS KMS kriptografi](kms-cryptography.md#cryptographic-operations) dengan [kunci KMS enkripsi simetris](symm-asymm-choose-key-spec.md#symmetric-cmks) menerima *konteks enkripsi*, satu set opsional pasangan nilai kunci non-rahasia yang dapat berisi informasi kontekstual tambahan tentang data. Anda dapat menyisipkan konteks enkripsi dalam `Encrypt` operasi AWS KMS untuk meningkatkan otorisasi dan auditabilitas panggilan dekripsi AWS KMS API Anda. AWS KMS menggunakan konteks enkripsi sebagai data otentikasi tambahan (AAD) untuk mendukung enkripsi yang diautentikasi. Konteks enkripsi terikat secara kriptografis ke ciphertext sehingga konteks enkripsi yang sama diperlukan untuk mendekripsi data.

Konteks enkripsi tidak rahasia dan tidak dienkripsi. Konteks enkripsi muncul dalam plaintext di [Log AWS CloudTrail](logging-using-cloudtrail.md), sehingga Anda dapat menggunakannya untuk mengidentifikasi dan mengategorikan operasi kriptografi Anda. Konteks enkripsi Anda tidak boleh menyertakan informasi sensitif. Sebaiknya konteks enkripsi Anda menjelaskan data yang dienkripsi atau didekripsi. Misalnya, ketika mengenkripsi file, Anda mungkin menggunakan bagian dari jalur file sebagai konteks enkripsi.

```
"encryptionContext": {
    "department": "10103.0"
}
```

Misalnya, saat mengenkripsi volume dan snapshot yang dibuat dengan operasi [Amazon Elastic Block Store (](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)Amazon EBS) [CreateSnapshot](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateSnapshot.html), Amazon EBS menggunakan ID volume sebagai nilai konteks enkripsi.

```
"encryptionContext": {
  "aws:ebs:id": "vol-abcde12345abc1234"
}
```

Anda juga dapat menggunakan konteks enkripsi untuk memperbaiki atau membatasi akses ke AWS KMS keys akun Anda. Anda dapat menggunakan konteks enkripsi [sebagai batasan dalam hibah](grants.md) dan sebagai *[kondisi dalam pernyataan kebijakan](policy-conditions.md)*. Kunci konteks enkripsi dan nilainya dapat berupa string arbitrer dengan. `aws` Nilai-nilai ini kontras [tag yang AWS dihasilkan](https://docs.aws.amazon.com/tag-editor/latest/userguide/best-practices-and-strats.html#tag-conventions) seperti [aws:cloudformation:stack-name](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-resource-tags.html). Untuk informasi selengkapnya, lihat [*kms:EncryptionContext: kunci-konteks*](conditions-kms.md#conditions-kms-encryption-context) 

Untuk mempelajari cara menggunakan konteks enkripsi untuk melindungi integritas data terenkripsi, lihat posting [Cara Melindungi Integritas Data Terenkripsi Anda dengan Menggunakan AWS Key Management Service dan EncryptionContext](https://aws.amazon.com/blogs/security/how-to-protect-the-integrity-of-your-encrypted-data-by-using-aws-key-management-service-and-encryptioncontext/) di Blog Keamanan. AWS 

## Aturan konteks enkripsi
<a name="encryption-context-rules"></a>

AWS KMS memberlakukan aturan berikut untuk kunci dan nilai konteks enkripsi.
+ Kunci dan nilai dalam pasangan konteks enkripsi harus berupa string literal sederhana. Jika Anda menggunakan jenis yang berbeda, seperti bilangan bulat atau float, AWS KMS menafsirkannya sebagai string.
+ Kunci dan nilai dalam konteks enkripsi dapat mencakup karakter Unicode. Jika konteks enkripsi menyertakan karakter yang tidak diizinkan dalam kebijakan utama atau kebijakan IAM, Anda tidak akan dapat menentukan konteks enkripsi dalam kunci kondisi kebijakan, seperti [`kms:EncryptionContext:context-key`](conditions-kms.md#conditions-kms-encryption-context)dan [`kms:EncryptionContextKeys`](conditions-kms.md#conditions-kms-encryption-context-keys). Untuk detail tentang aturan dokumen kebijakan utama, lihat[Format kebijakan utama](key-policy-overview.md#key-policy-format). Untuk detail tentang aturan dokumen kebijakan IAM, lihat [Persyaratan nama IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html#reference_iam-quotas-names) di Panduan Pengguna *IAM*.

## Konteks enkripsi dalam kebijakan
<a name="encryption-context-authorization"></a>

Konteks enkripsi digunakan terutama untuk memverifikasi integritas dan keaslian. Tetapi Anda juga dapat menggunakan konteks enkripsi untuk mengontrol akses ke enkripsi simetris AWS KMS keys dalam kebijakan utama dan kebijakan IAM. 

Kunci EncryptionContextKeys kondisi [kms:EncryptionContext:](conditions-kms.md#conditions-kms-encryption-context) dan [kms:](conditions-kms.md#conditions-kms-encryption-context) mengizinkan (atau menolak) izin hanya jika permintaan menyertakan kunci konteks enkripsi tertentu atau pasangan kunci-nilai. 

Misalnya, pernyataan kebijakan kunci berikut memungkinkan `RoleForExampleApp` peran untuk menggunakan kunci KMS dalam `Decrypt` operasi. Ini menggunakan kunci `kms:EncryptionContext:context-key` kondisi untuk mengizinkan izin ini hanya ketika konteks enkripsi dalam permintaan menyertakan pasangan konteks `AppName:ExampleApp` enkripsi.

```
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:role/RoleForExampleApp"
  },
  "Action": "kms:Decrypt",
  "Resource": "*",
  "Condition": {
    "StringEquals": {
      "kms:EncryptionContext:AppName": "ExampleApp"
    }
  }
}
```

Untuk informasi lebih lanjut tentang kunci kondisi konteks enkripsi, lihat [Kunci kondisi untuk AWS KMS](policy-conditions.md).

## Konteks enkripsi dalam hibah
<a name="encryption-context-grants"></a>

Saat [membuat hibah](grants.md), Anda dapat menyertakan [batasan hibah](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html) yang menetapkan ketentuan untuk izin hibah. AWS KMS mendukung dua kendala hibah, `EncryptionContextEquals` dan`EncryptionContextSubset`, keduanya melibatkan [konteks enkripsi](#encrypt_context) dalam permintaan untuk operasi kriptografi. Ketika Anda menggunakan batasan hibah ini, izin dalam hibah hanya efektif ketika konteks enkripsi dalam permintaan untuk operasi kriptografi memenuhi persyaratan batasan hibah. 

Misalnya, Anda dapat menambahkan batasan `EncryptionContextEquals` hibah ke hibah yang memungkinkan operasi. [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) Dengan batasan ini, hibah memungkinkan operasi hanya ketika konteks enkripsi dalam permintaan cocok huruf besar/kecil untuk konteks enkripsi dalam batasan hibah.

```
$ aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:user/exampleUser \
    --retiring-principal arn:aws:iam::111122223333:role/adminRole \
    --operations GenerateDataKey \
    --constraints EncryptionContextEquals={Purpose=Test}
```

Permintaan seperti berikut dari prinsipal penerima hibah akan memenuhi batasan `EncryptionContextEquals`.

```
$ aws kms generate-data-key \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --key-spec AES_256 \
    --encryption-context Purpose=Test
```

Untuk detail tentang batasan hibah, lihat [Menggunakan batas pemberian izin](create-grant-overview.md#grant-constraints). Untuk informasi mendetail tentang hibah, lihat [Hibah di AWS KMS](grants.md).

## Konteks enkripsi pencatatan
<a name="encryption-context-auditing"></a>

AWS KMS digunakan AWS CloudTrail untuk mencatat konteks enkripsi sehingga Anda dapat menentukan kunci dan data KMS mana yang telah diakses. Entri log menunjukkan dengan tepat kunci KMS mana yang digunakan untuk mengenkripsi atau mendekripsi data tertentu yang direferensikan oleh konteks enkripsi dalam entri log.

**penting**  
Karena konteks enkripsi dicatat, konteks tidak boleh berisi informasi sensitif.

## Menyimpan konteks enkripsi
<a name="encryption-context-storing"></a>

Untuk menyederhanakan penggunaan konteks enkripsi ketika Anda memanggil operasi [https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) atau [https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html), Anda dapat menyimpan konteks enkripsi bersama data terenkripsi. Sebaiknya Anda hanya menyimpan konteks enkripsi yang mencukupi untuk membantu Anda membuat konteks enkripsi penuh ketika Anda membutuhkannya untuk enkripsi atau dekripsi. 

Misalnya, jika konteks enkripsi sepenuhnya memenuhi syarat untuk file, simpan hanya bagian dari jalur tersebut dengan konten file terenkripsi. Kemudian, ketika Anda membutuhkan konteks enkripsi penuh, rekonstruksi konteks dari fragmen yang disimpan. Jika seseorang merusak file, seperti mengganti namanya atau memindahkannya ke lokasi lain, perubahan nilai konteks enkripsi dan permintaan dekripsi akan gagal.

# Menguji izin Anda
<a name="testing-permissions"></a>

Untuk menggunakannya AWS KMS, Anda harus memiliki kredensi yang AWS dapat digunakan untuk mengautentikasi permintaan API Anda. Kredensialnya harus menyertakan izin untuk mengakses kunci dan alias KMS. Izin ditentukan oleh kebijakan utama, kebijakan IAM, hibah, dan kontrol akses lintas akun. Selain mengontrol akses ke kunci KMS, Anda dapat mengontrol akses ke CloudHSM Anda, dan ke toko kunci khusus Anda.

Anda dapat menentukan parameter `DryRun` API untuk memverifikasi bahwa Anda memiliki izin yang diperlukan untuk menggunakan AWS KMS kunci. Anda juga dapat menggunakan `DryRun` untuk memverifikasi bahwa parameter permintaan dalam panggilan AWS KMS API ditentukan dengan benar. 

**Topics**
+ [Apa DryRun parameternya?](#what-is-dryrun)
+ [Menentukan DryRun dengan API](#dryrun-api)

## Apa DryRun parameternya?
<a name="what-is-dryrun"></a>

 `DryRun`adalah parameter API opsional yang Anda tentukan untuk memverifikasi bahwa panggilan AWS KMS API akan berhasil. Gunakan `DryRun` untuk menguji panggilan API Anda, sebelum benar-benar melakukan panggilan ke AWS KMS. Anda dapat memverifikasi yang berikut ini. 
+ Bahwa Anda memiliki izin yang diperlukan untuk menggunakan AWS KMS kunci.
+ Bahwa Anda telah menentukan parameter dalam panggilan dengan benar.

AWS KMS mendukung penggunaan `DryRun` parameter dalam tindakan API tertentu: 
+ [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)
+ [Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)
+ [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html)
+ [Enkripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)
+ [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)
+ [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html)
+ [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html)
+ [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)
+ [GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html)
+ [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)
+ [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)
+ [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)
+ [Tanda](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html)
+ [Verifikasi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html)
+ [VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html)

Menggunakan `DryRun` parameter akan dikenakan biaya dan akan ditagih sebagai permintaan API standar. Untuk informasi selengkapnya tentang AWS KMS harga, lihat [AWS Key Management Service Harga](https://aws.amazon.com/kms/pricing/).

 Semua permintaan API yang menggunakan `DryRun` parameter berlaku untuk kuota permintaan API dan dapat menghasilkan pengecualian pembatasan jika Anda melebihi kuota permintaan API. Misalnya, memanggil [Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) dengan `DryRun` atau tanpa `DryRun` hitungan terhadap kuota operasi kriptografi yang sama. Lihat [Permintaan pelambatan AWS KMS](throttling.md) untuk mempelajari selengkapnya.

Setiap panggilan ke operasi AWS KMS API ditangkap sebagai peristiwa dan direkam dalam AWS CloudTrail log. Output dari setiap operasi yang menentukan `DryRun` parameter muncul di CloudTrail log Anda. Untuk informasi selengkapnya, lihat [Logging panggilan AWS KMS API dengan AWS CloudTrail](logging-using-cloudtrail.md).

## Menentukan DryRun dengan API
<a name="dryrun-api"></a>

Untuk menggunakan`DryRun`, tentukan `—dry-run` parameter dalam AWS CLI perintah dan panggilan AWS KMS API yang mendukung parameter. Ketika Anda melakukannya, AWS KMS akan memverifikasi apakah panggilan Anda akan berhasil. AWS KMS panggilan yang digunakan `DryRun` akan selalu gagal dan mengembalikan pesan dengan informasi tentang alasan mengapa panggilan gagal. Pesan dapat mencakup pengecualian berikut:
+ `DryRunOperationException`- Permintaan akan berhasil jika `DryRun` tidak ditentukan. 
+ `ValidationException`- Permintaan gagal menentukan parameter API yang salah.
+ `AccessDeniedException`- Anda tidak memiliki izin untuk melakukan tindakan API yang ditentukan pada sumber daya KMS.

Misalnya, perintah berikut menggunakan [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)operasi dan membuat hibah yang memungkinkan pengguna yang berwenang untuk mengambil `keyUserRole` peran untuk memanggil operasi [Dekripsi](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) pada kunci KMS [simetris](symm-asymm-choose-key-spec.md#symmetric-cmks) tertentu. `DryRun`Parameter ditentukan.

```
$  aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \
    --operations Decrypt \
    --dry-run
```

# Izin pemecahan masalah AWS KMS
<a name="policy-evaluation"></a><a name="security_iam_troubleshoot"></a>

Saat mengotorisasi akses ke kunci KMS, AWS KMS evaluasi hal berikut:
+ [Kebijakan kunci](determining-access-key-policy.md) yang dilampirkan pada kunci KMS. Kebijakan kunci selalu didefinisikan di Akun AWS dan Wilayah yang memiliki kunci KMS. 
+ Semua [kebijakan IAM](determining-access-iam-policies.md) yang dilampirkan pada pengguna atau peran yang membuat permintaan. Kebijakan IAM yang mengatur penggunaan kunci KMS oleh prinsipal selalu didefinisikan dalam prinsipal. Akun AWS
+ Semua [hibah](determining-access-grants.md) yang berlaku untuk kunci KMS.
+ Jenis kebijakan lain yang mungkin berlaku untuk permintaan untuk menggunakan kunci KMS, seperti [kebijakan kontrol AWS Organizations layanan dan kebijakan titik](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_type-auth.html#orgs_manage_policies_scp) akhir [VPC](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#edit-vpc-endpoint-policy). Kebijakan ini bersifat opsional dan mengaktifkan semua tindakan secara default, namun Anda dapat menggunakannya untuk membatasi izin yang diberikan kepada perwakilan.

AWS KMS mengevaluasi mekanisme kebijakan ini bersama-sama untuk menentukan apakah akses ke kunci KMS diperbolehkan atau ditolak. Untuk melakukan ini, AWS KMS gunakan proses yang mirip dengan yang digambarkan dalam diagram alur berikut. Bagan alur berikut memberikan representasi visual dari proses evaluasi kebijakan.

![\[Bagan alur yang menjelaskan proses evaluasi kebijakan\]](http://docs.aws.amazon.com/id_id/kms/latest/developerguide/images/updated-kms-authz-diagram.png)


Bagan alur ini dibagi menjadi dua bagian. Bagian-bagian ini tampaknya berurutan, tetapi biasanya dievaluasi pada waktu yang sama.
+ *Otorisasi penggunaan* menentukan apakah Anda diizinkan untuk menggunakan kunci KMS berdasarkan kebijakan utama, kebijakan IAM, hibah, dan kebijakan lain yang berlaku.
+ *Kepercayaan kunci* menentukan apakah Anda harus mempercayai kunci KMS yang diizinkan untuk Anda gunakan. Secara umum, Anda mempercayai sumber daya di Anda Akun AWS. Namun, Anda juga dapat merasa yakin tentang menggunakan kunci KMS dalam hal yang berbeda Akun AWS jika hibah atau kebijakan IAM di akun Anda memungkinkan Anda untuk menggunakan kunci KMS.

Anda dapat menggunakan diagram alur ini untuk mengetahui mengapa penelepon diizinkan atau ditolak izin untuk menggunakan kunci KMS. Anda juga dapat menggunakannya untuk mengevaluasi kebijakan dan pemberian izin. Misalnya, bagan alur menunjukkan bahwa pemanggil dapat ditolak aksesnya oleh pernyataan `DENY` eksplisit, atau dengan tidak adanya pernyataan `ALLOW` eksplisit, dalam kebijakan kunci, kebijakan IAM, atau pemberian izin.

Bagan alur dapat menjelaskan beberapa skenario izin umum.

**Topics**
+ [Contoh 1: Pengguna ditolak akses ke kunci KMS di Akun AWS](#example-no-iam)
+ [Contoh 2: Pengguna mengasumsikan peran dengan izin untuk menggunakan kunci KMS dalam yang berbeda Akun AWS](#example-cross-acct)

## Contoh 1: Pengguna ditolak akses ke kunci KMS di Akun AWS
<a name="example-no-iam"></a>

Alice adalah pengguna IAM di 111122223333. Akun AWS Dia ditolak akses ke kunci KMS dalam hal yang sama Akun AWS. Mengapa Alice tidak bisa menggunakan tombol KMS?

Dalam hal ini, Alice ditolak akses ke kunci KMS karena tidak ada kebijakan kunci, kebijakan IAM, atau hibah yang memberinya izin yang diperlukan. Kebijakan kunci kunci KMS memungkinkan Akun AWS untuk menggunakan kebijakan IAM untuk mengontrol akses ke kunci KMS, tetapi tidak ada kebijakan IAM yang memberikan izin kepada Alice untuk menggunakan kunci KMS.

![\[Bagan alur yang menjelaskan proses evaluasi kebijakan\]](http://docs.aws.amazon.com/id_id/kms/latest/developerguide/images/kms-auth-flow-Alice.png)


Pertimbangkan kebijakan yang relevan untuk contoh ini.
+ Kunci KMS yang ingin digunakan Alice memiliki kebijakan [kunci default](key-policy-default.md). Kebijakan ini [memungkinkan pemilik Akun AWS](key-policy-default.md#key-policy-default-allow-root-enable-iam) kunci KMS untuk menggunakan kebijakan IAM untuk mengontrol akses ke kunci KMS. Kebijakan kunci ini memenuhi syarat *Apakah kebijakan kunci MENGIZINKAN akun pemanggil menggunakan kebijakan IAM untuk mengontrol akses ke kunci?* dalam bagan alur.

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Id" : "key-test-1",
    "Statement" : [ {
      "Sid" : "DelegateToIAMPolicies",
      "Effect" : "Allow",
      "Principal" : {
        "AWS" : "arn:aws:iam::111122223333:root"
      },
      "Action" : "kms:*",
      "Resource" : "*"
    } ]
  }
  ```

------
+ Namun, tidak ada kebijakan kunci, kebijakan IAM, atau hibah yang memberikan izin kepada Alice untuk menggunakan kunci KMS. Oleh karena itu, Alice ditolak izinnya untuk menggunakan kunci KMS.

## Contoh 2: Pengguna mengasumsikan peran dengan izin untuk menggunakan kunci KMS dalam yang berbeda Akun AWS
<a name="example-cross-acct"></a>

Bob adalah pengguna di akun 1 (111122223333). [Dia diizinkan untuk menggunakan kunci KMS di akun 2 (444455556666) dalam operasi kriptografi.](kms-cryptography.md#cryptographic-operations) Bagaimana ini mungkin?

**Tip**  
Saat mengevaluasi izin lintas akun, ingatlah bahwa kebijakan kunci ditentukan dalam akun kunci KMS. Kebijakan IAM ditentukan dalam akun pemanggil, bahkan ketika pemanggil berada dalam akun yang berbeda. Untuk detail tentang menyediakan akses lintas akun ke kunci KMS, lihat. [Memungkinkan pengguna di akun lain untuk menggunakan kunci KMS](key-policy-modifying-external-accounts.md)
+ Kebijakan kunci untuk kunci KMS di akun 2 memungkinkan akun 2 menggunakan kebijakan IAM untuk mengontrol akses ke kunci KMS. 
+ Kebijakan kunci untuk kunci KMS di akun 2 memungkinkan akun 1 untuk menggunakan kunci KMS dalam operasi kriptografi. Namun, akun 1 harus menggunakan kebijakan IAM untuk memberikan akses prinsipal ke kunci KMS.
+ Kebijakan IAM di akun 1 memungkinkan `Engineering` peran untuk menggunakan kunci KMS di akun 2 untuk operasi kriptografi.
+ Bob, pengguna di akun 1, memiliki izin untuk mengasumsikan peran `Engineering`.
+ Bob dapat mempercayai kunci KMS ini, karena meskipun tidak ada di akunnya, kebijakan IAM di akunnya memberinya izin eksplisit untuk menggunakan kunci KMS ini.

![\[Bagan alur yang menjelaskan proses evaluasi kebijakan\]](http://docs.aws.amazon.com/id_id/kms/latest/developerguide/images/kms-auth-flow-Bob.png)


Pertimbangkan kebijakan yang memungkinkan Bob, pengguna di akun 1, menggunakan kunci KMS di akun 2.
+ Kebijakan kunci untuk kunci KMS memungkinkan akun 2 (444455556666, akun yang memiliki kunci KMS) untuk menggunakan kebijakan IAM untuk mengontrol akses ke kunci KMS. Kebijakan kunci ini juga memungkinkan akun 1 (111122223333) untuk menggunakan kunci KMS dalam operasi kriptografi (ditentukan dalam elemen pernyataan kebijakan). `Action` Namun, tidak ada seorang pun di akun 1 yang dapat menggunakan kunci KMS di akun 2 hingga akun 1 mendefinisikan kebijakan IAM yang memberikan akses kepada prinsipal ke kunci KMS.

  Dalam bagan alur, kebijakan kunci ini di akun 2 memenuhi syarat*Apakah kebijakan kunci memungkinkan akun pemanggil menggunakan kebijakan IAM untuk mengontrol akses ke kunci?*. 

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

****  

  ```
  {
      "Id": "key-policy-acct-2",
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "PermissionUseIAMpolicies",
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::444455556666:root"
              },
              "Action": "kms:*",
              "Resource": "*"
          },
          {
              "Sid": "AllowAccount1UseThisKMSKeys",
              "Effect": "Allow",
              "Principal": {
                  "AWS": "arn:aws:iam::111122223333:root"
              },
              "Action": [
                  "kms:Encrypt",
                  "kms:Decrypt",
                  "kms:ReEncryptFrom",
                  "kms:ReEncryptTo",
                  "kms:GenerateDataKey",
                  "kms:GenerateDataKeyWithoutPlaintext",
                  "kms:DescribeKey"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------
+ Kebijakan IAM di penelepon Akun AWS (akun 1, 111122223333) memberikan izin utama untuk melakukan operasi kriptografi menggunakan kunci KMS di akun 2 (444455556666). Elemen `Action` mendelegasikan akses yang sama yang diberikan kebijakan kunci di akun 2 ke akun 1 kepada perwakilan. Untuk memberikan izin ini ke peran `Engineering` dalam akun 1, [kebijakan inline ini akan disematkan](https://docs.aws.amazon.com/IAM/latest/APIReference/API_PutRolePolicy.html) dalam peran `Engineering`.

  Kebijakan IAM lintas akun seperti ini hanya efektif jika kebijakan kunci untuk kunci KMS di akun 2 memberikan izin akun 1 untuk menggunakan kunci KMS. Selain itu, akun 1 hanya dapat memberikan izin perwakilannya untuk melakukan tindakan yang diberikan kebijakan kunci kepada akun.

  Dalam bagan alur, ini memenuhi syarat *Apakah kebijakan IAM mengizinkan pemanggil untuk melakukan tindakan ini?*.

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

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "kms:Encrypt",
                  "kms:Decrypt",
                  "kms:ReEncryptFrom",
                  "kms:ReEncryptTo",
                  "kms:GenerateDataKey",
                  "kms:GenerateDataKeyWithoutPlaintext",
                  "kms:DescribeKey"
              ],
              "Resource": [
              "arn:aws:kms:us-west-2:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab"
              ]
          }
      ]
  }
  ```

------
+ Elemen terakhir yang dibutuhkan adalah penentuan peran `Engineering` dalam akun 1. `AssumeRolePolicyDocument` dalam peran memungkinkan Bob untuk mengasumsikan peran `Engineering`.

  ```
  {
      "Role": {
          "Arn": "arn:aws:iam::111122223333:role/Engineering",
          "CreateDate": "2019-05-16T00:09:25Z",
          "AssumeRolePolicyDocument": {
              "Version": "2012-10-17",		 	 	 
              "Statement": {
                  "Principal": {
                      "AWS": "arn:aws:iam::111122223333:user/bob"
                  },
                  "Effect": "Allow",
                  "Action": "sts:AssumeRole"
              }
          },
          "Path": "/",
          "RoleName": "Engineering",
          "RoleId": "AROA4KJY2TU23Y7NK62MV"
      }
  }
  ```

# AWS KMS glosarium kontrol akses
<a name="access-glossary"></a>

Topik berikut menjelaskan istilah dan konsep penting dalam kontrol AWS KMS akses.

## Autentikasi
<a name="permission-concept-authentication"></a>

*Otentikasi* adalah proses verifikasi identitas Anda. Untuk mengirim permintaan AWS KMS, Anda harus masuk AWS menggunakan AWS kredensil Anda.

## Otorisasi
<a name="permission-concept-authorization"></a>

*Otorisasi* memberikan izin untuk mengirim permintaan untuk membuat, mengelola, atau menggunakan AWS KMS sumber daya. Misalnya, Anda harus diberi wewenang untuk menggunakan kunci KMS dalam operasi kriptografi.

Untuk mengontrol akses ke AWS KMS sumber daya Anda, gunakan [kebijakan utama, kebijakan](key-policies.md) [IAM](iam-policies.md), dan [hibah](grants.md). Setiap kunci KMS harus memiliki kebijakan kunci. Jika kebijakan kunci mengizinkannya, Anda juga dapat menggunakan kebijakan dan hibah IAM untuk memberikan akses kepada prinsipal ke kunci KMS. Untuk menyempurnakan otorisasi, Anda dapat menggunakan [kunci kondisi](policy-conditions.md) yang mengizinkan atau menolak akses hanya jika permintaan atau sumber daya memenuhi ketentuan yang Anda tentukan. [Anda juga dapat mengizinkan akses ke kepala sekolah yang Anda percayai pada orang lain. Akun AWS](key-policy-modifying-external-accounts.md)

## Mengautentikasi dengan identitas
<a name="security_iam_authentication"></a>

Otentikasi adalah cara Anda masuk AWS menggunakan kredensi identitas Anda. Anda harus diautentikasi sebagai Pengguna root akun AWS, pengguna IAM, atau dengan mengasumsikan peran IAM.

Anda dapat masuk sebagai identitas federasi menggunakan kredensil dari sumber identitas seperti AWS IAM Identity Center (Pusat Identitas IAM), autentikasi masuk tunggal, atau kredensional. Google/Facebook Untuk informasi selengkapnya tentang cara masuk, lihat [Cara masuk ke Akun AWS Anda](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) dalam *Panduan Pengguna AWS Sign-In *.

Untuk akses terprogram, AWS sediakan SDK dan CLI untuk menandatangani permintaan secara kriptografis. Untuk informasi selengkapnya, lihat [AWS Signature Version 4 untuk permintaan API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) dalam *Panduan Pengguna IAM*.

### Akun AWS pengguna root
<a name="security_iam_authentication-rootuser"></a>

 Saat Anda membuat Akun AWS, Anda mulai dengan satu identitas masuk yang disebut *pengguna Akun AWS root* yang memiliki akses lengkap ke semua Layanan AWS dan sumber daya. Kami sangat menyarankan agar Anda tidak menggunakan pengguna root untuk tugas sehari-hari. Untuk tugas yang memerlukan kredensial pengguna root, lihat [Tugas yang memerlukan kredensial pengguna root](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) dalam *Panduan Pengguna IAM*. 

### Identitas terfederasi
<a name="security_iam_authentication-federated"></a>

Sebagai praktik terbaik, mewajibkan pengguna manusia untuk menggunakan federasi dengan penyedia identitas untuk mengakses Layanan AWS menggunakan kredensi sementara.

*Identitas federasi* adalah pengguna dari direktori perusahaan Anda, penyedia identitas web, atau Directory Service yang mengakses Layanan AWS menggunakan kredensil dari sumber identitas. Identitas terfederasi mengambil peran yang memberikan kredensial sementara.

Untuk manajemen akses terpusat, kami menyarankan AWS IAM Identity Center. Untuk informasi selengkapnya, lihat [Apa itu Pusat Identitas IAM?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) dalam *Panduan Pengguna AWS IAM Identity Center *.

### Pengguna dan grup IAM
<a name="security_iam_authentication-iamuser"></a>

*[Pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* adalah identitas dengan izin khusus untuk satu orang atau aplikasi. Sebaiknya gunakan kredensial sementara alih-alih pengguna IAM dengan kredensial jangka panjang. Untuk informasi selengkapnya, lihat [Mewajibkan pengguna manusia untuk menggunakan federasi dengan penyedia identitas untuk mengakses AWS menggunakan kredensi sementara](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) di Panduan Pengguna *IAM*.

[https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) menentukan kumpulan pengguna IAM dan mempermudah pengelolaan izin untuk pengguna dalam jumlah besar. Untuk mempelajari selengkapnya, lihat [Kasus penggunaan untuk pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) dalam *Panduan Pengguna IAM*.

### Peran IAM
<a name="security_iam_authentication-iamrole"></a>

*[Peran IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* adalah identitas dengan izin khusus yang menyediakan kredensial sementara. Anda dapat mengambil peran dengan [beralih dari pengguna ke peran IAM (konsol)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) atau dengan memanggil operasi AWS CLI atau AWS API. Untuk informasi selengkapnya, lihat [Metode untuk mengambil peran](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) dalam *Panduan Pengguna IAM*.

Peran IAM berguna untuk akses pengguna terfederasi, izin pengguna IAM sementara, akses lintas akun, akses lintas layanan, dan aplikasi yang berjalan di Amazon EC2. Untuk informasi selengkapnya, lihat [Akses sumber daya lintas akun di IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) dalam *Panduan Pengguna IAM*.

## Mengelola akses menggunakan kebijakan
<a name="security_iam_access-manage"></a>

Anda mengontrol akses AWS dengan membuat kebijakan dan melampirkannya ke AWS identitas atau sumber daya. Kebijakan menentukan izin saat dikaitkan dengan identitas atau sumber daya. AWS mengevaluasi kebijakan ini ketika kepala sekolah membuat permintaan. Sebagian besar kebijakan disimpan AWS sebagai dokumen JSON. Untuk informasi selengkapnya tentang dokumen kebijakan JSON, lihat [Gambaran umum kebijakan JSON](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) dalam *Panduan Pengguna IAM*.

Menggunakan kebijakan, administrator menentukan siapa yang memiliki akses ke apa dengan mendefinisikan **principal** mana yang dapat melakukan **tindakan** pada **sumber daya** apa, dan dalam **kondisi** apa.

Secara default, pengguna dan peran tidak memiliki izin. Administrator IAM membuat kebijakan IAM dan menambahkannya ke peran, yang kemudian dapat diambil oleh pengguna. Kebijakan IAM mendefinisikan izin terlepas dari metode yang Anda gunakan untuk melakukan operasinya.

### Kebijakan berbasis identitas
<a name="security_iam_access-manage-id-based-policies"></a>

Kebijakan berbasis identitas adalah dokumen kebijakan izin JSON yang Anda lampirkan ke identitas (pengguna, grup, atau peran). Kebijakan ini mengontrol tindakan apa yang bisa dilakukan oleh identitas tersebut, terhadap sumber daya yang mana, dan dalam kondisi apa. Untuk mempelajari cara membuat kebijakan berbasis identitas, lihat [Tentukan izin IAM kustom dengan kebijakan yang dikelola pelanggan](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) dalam *Panduan Pengguna IAM*.

Kebijakan berbasis identitas dapat berupa *kebijakan inline* (disematkan langsung ke dalam satu identitas) atau *kebijakan terkelola* (kebijakan mandiri yang dilampirkan pada banyak identitas). Untuk mempelajari cara memilih antara kebijakan terkelola dan kebijakan inline, lihat [Pilih antara kebijakan terkelola dan kebijakan inline](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) dalam *Panduan Pengguna IAM*.

### Kebijakan berbasis sumber daya
<a name="security_iam_access-manage-resource-based-policies"></a>

[Kebijakan AWS KMS kunci adalah kebijakan](key-policies.md) berbasis sumber daya yang mengontrol akses ke kunci KMS. Setiap kunci KMS harus memiliki kebijakan kunci. Anda dapat menggunakan mekanisme otorisasi lain untuk mengizinkan akses ke kunci KMS, tetapi hanya jika kebijakan kunci mengizinkannya. (Anda dapat menggunakan kebijakan IAM untuk *menolak* akses ke kunci KMS meskipun kebijakan kunci tidak secara eksplisit mengizinkannya.)

Kebijakan berbasis sumber daya adalah dokumen kebijakan JSON yang Anda lampirkan ke sumber daya, seperti kunci KMS, untuk mengontrol akses ke sumber daya tertentu. Kebijakan berbasis sumber daya mendefinisikan tindakan yang dapat dilakukan oleh prinsipal tertentu pada sumber daya itu dan dalam kondisi apa. Anda tidak menentukan sumber daya dalam kebijakan berbasis sumber daya, tetapi Anda harus menentukan prinsipal, seperti akun, pengguna, peran, pengguna gabungan, atau. Layanan AWS Kebijakan berbasis sumber daya adalah kebijakan inline yang terletak di layanan yang mengelola sumber daya. Anda tidak dapat menggunakan kebijakan AWS terkelola dari IAM, seperti [kebijakan `AWSKeyManagementServicePowerUser` terkelola, dalam kebijakan](security-iam-awsmanpol.md#security-iam-awsmanpol-AWSKeyManagementServicePowerUser) berbasis sumber daya.

### Jenis-jenis kebijakan lain
<a name="security_iam_access-manage-other-policies"></a>

AWS mendukung jenis kebijakan tambahan yang dapat menetapkan izin maksimum yang diberikan oleh jenis kebijakan yang lebih umum:
+ **Batasan izin** – Menetapkan izin maksimum yang dapat diberikan oleh kebijakan berbasis identitas kepada entitas IAM. Untuk informasi selengkapnya, lihat [Batasan izin untuk entitas IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) dalam *Panduan Pengguna IAM*.
+ **Kebijakan kontrol layanan (SCPs)** — Tentukan izin maksimum untuk organisasi atau unit organisasi di AWS Organizations. Untuk informasi selengkapnya, lihat [Kebijakan kontrol layanan](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) dalam *Panduan Pengguna AWS Organizations *.
+ **Kebijakan kontrol sumber daya (RCPs)** — Tetapkan izin maksimum yang tersedia untuk sumber daya di akun Anda. Untuk informasi selengkapnya, lihat [Kebijakan kontrol sumber daya (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html) di *Panduan AWS Organizations Pengguna*.
+ **Kebijakan sesi** – Kebijakan lanjutan yang diteruskan sebagai parameter saat membuat sesi sementara untuk peran atau pengguna terfederasi. Untuk informasi selengkapnya, lihat [Kebijakan sesi](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) dalam *Panduan Pengguna IAM*.

### Berbagai jenis kebijakan
<a name="security_iam_access-manage-multiple-policies"></a>

Ketika beberapa jenis kebijakan berlaku pada suatu permintaan, izin yang dihasilkan lebih rumit untuk dipahami. Untuk mempelajari cara AWS menentukan apakah akan mengizinkan permintaan saat beberapa jenis kebijakan terlibat, lihat [Logika evaluasi kebijakan](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) di *Panduan Pengguna IAM*.

## AWS KMS sumber daya
<a name="kms-resources-operations"></a>

Pada tahun AWS KMS, sumber daya utama adalah AWS KMS key. AWS KMS juga mendukung [alias](kms-alias.md), sumber daya independen yang menyediakan nama ramah untuk kunci KMS. Beberapa AWS KMS operasi memungkinkan Anda untuk menggunakan alias untuk mengidentifikasi kunci KMS.

Setiap instance kunci atau alias KMS memiliki [Amazon Resource Name](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arns-syntax) (ARN) unik dengan format standar. Dalam AWS KMS sumber daya, nama AWS layanannya adalah`kms`. 
+ **AWS KMS key**

  Format ARN:

  `arn:AWS partition name:AWS service name:Wilayah AWS:Akun AWS ID:key/key ID`

  ARN contoh:

  `arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`
+ **Alias**

  Format ARN:

  `arn:AWS partition name:AWS service name:Wilayah AWS:Akun AWS ID:alias/alias name`

  ARN contoh:

  `arn:aws:kms:us-west-2:111122223333:alias/example-alias`

AWS KMS menyediakan serangkaian operasi API untuk bekerja dengan AWS KMS sumber daya Anda. Untuk informasi selengkapnya tentang mengidentifikasi kunci KMS dalam operasi Konsol Manajemen AWS dan AWS KMS API, lihat[Pengidentifikasi kunci () KeyId](concepts.md#key-id). Untuk daftar AWS KMS operasi, lihat [Referensi AWS Key Management Service API](https://docs.aws.amazon.com/kms/latest/APIReference/).