

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

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

------