

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

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