Key Management Service (KMS) terintegrasi dengan Resource Access Management (RAM), memungkinkan Anda mengontrol siapa yang dapat mengakses resource KMS dan tindakan apa yang dapat mereka lakukan. Pengguna RAM dan peran RAM memerlukan izin eksplisit—Akun Alibaba Cloud secara default memiliki akses penuh ke resource miliknya.
Sebelum menulis kebijakan RAM untuk KMS, baca:
Jenis resource di KMS
Tabel berikut mencantumkan semua jenis resource KMS beserta Nama Sumber Daya Alibaba Cloud (ARN)-nya. Gunakan ARN ini dalam bidang Resource kebijakan RAM.
| Jenis resource | ARN |
|---|---|
| Key container | acs:kms:${region}:${account}:key |
| Secret container | acs:kms:${region}:${account}:secret |
| Alias container | acs:kms:${region}:${account}:alias |
| Certificate container | acs:kms:${region}:${account}:certificate |
| Key | acs:kms:${region}:${account}:key/${key-id} |
| Secret | acs:kms:${region}:${account}:secret/${secret-name} |
| Alias | acs:kms:${region}:${account}:alias/${alias-name} |
| Certificate | acs:kms:${region}:${account}:certificate/${id} |
Aksi di KMS
Aksi KMS dalam kebijakan RAM mengikuti format kms:<ApiName>. Tabel-tabel berikut memetakan setiap operasi API ke aksi RAM dan jenis resource yang sesuai.
DescribeRegions tidak memerlukan kontrol akses. Akun Alibaba Cloud, pengguna RAM, dan peran RAM dapat memanggilnya setelah melewati autentikasi RAM tanpa kebijakan eksplisit.Operasi API Utama
| Operasi | Aksi | Jenis resource |
|---|---|---|
| ListKeys | kms:ListKeys | Key container |
| CreateKey | kms:CreateKey | Key container |
| DescribeKey | kms:DescribeKey | Key |
| UpdateKeyDescription | kms:UpdateKeyDescription | Key |
| EnableKey | kms:EnableKey | Key |
| DisableKey | kms:DisableKey | Key |
| ScheduleKeyDeletion | kms:ScheduleKeyDeletion | Key |
| CancelKeyDeletion | kms:CancelKeyDeletion | Key |
| GetParametersForImport | kms:GetParametersForImport | Key |
| ImportKeyMaterial | kms:ImportKeyMaterial | Key |
| DeleteKeyMaterial | kms:DeleteKeyMaterial | Key |
| ListAliases | kms:ListAliases | Alias container |
| CreateAlias | kms:CreateAlias | Alias dan kunci |
| UpdateAlias | kms:UpdateAlias | Alias dan key |
| DeleteAlias | kms:DeleteAlias | Alias dan key |
| ListAliasesByKeyId | kms:ListAliasesByKeyId | Key |
| CreateKeyVersion | kms:CreateKeyVersion | Key |
| DescribeKeyVersion | kms:DescribeKeyVersion | Key |
| ListKeyVersions | kms:ListKeyVersions | Key |
| UpdateRotationPolicy | kms:UpdateRotationPolicy | Key |
| Encrypt | kms:Encrypt | Key |
| Decrypt | kms:Decrypt | Key |
| ReEncrypt | kms:ReEncryptFrom, kms:ReEncryptTo, kms:ReEncrypt* | Key |
| GenerateDataKey | kms:GenerateDataKey | Key |
| GenerateDataKeyWithoutPlaintext | kms:GenerateDataKeyWithoutPlaintext | Key |
| ExportDataKey | kms:ExportDataKey | Key |
| GenerateAndExportDataKey | kms:GenerateAndExportDataKey | Key |
| AsymmetricSign | kms:AsymmetricSign | Key |
| AsymmetricVerify | kms:AsymmetricVerify | Key |
| AsymmetricEncrypt | kms:AsymmetricEncrypt | Key |
| AsymmetricDecrypt | kms:AsymmetricDecrypt | Key |
| GetPublicKey | kms:GetPublicKey | Key |
Operasi API Secrets Manager
| Operasi | Aksi | Jenis resource |
|---|---|---|
| CreateSecret | kms:CreateSecret | Secret container |
| ListSecrets | kms:ListSecrets | Secret container |
| DescribeSecret | kms:DescribeSecret | Secret |
| DeleteSecret | kms:DeleteSecret | Secret |
| UpdateSecret | kms:UpdateSecret | Secret |
| RestoreSecret | kms:RestoreSecret | Secret |
| GetSecretValue | kms:GetSecretValue + kms:Decrypt* | Secret |
| PutSecretValue | kms:PutSecretValue + kms:GenerateDataKey* | Secret |
| ListSecretVersionIds | kms:ListSecretVersionIds | Secret |
| UpdateSecretVersionStage | kms:UpdateSecretVersionStage | Secret |
| GetRandomPassword | kms:GetRandomPassword | None (tidak dibatasi pada resource tertentu) |
\* kms:Decrypt (untuk GetSecretValue) dan kms:GenerateDataKey (untuk PutSecretValue) hanya diperlukan jika kunci master pelanggan (CMK) yang dikelola sendiri ditentukan sebagai kunci enkripsi untuk rahasia generik.
Operasi API Certificates Manager
| Operasi | Aksi | Jenis resource |
|---|---|---|
| CreateCertificate | kms:CreateCertificate | Certificate |
| UploadCertificate | kms:UploadCertificate | Certificate |
| GetCertificate | kms:GetCertificate | Certificate |
| DescribeCertificate | kms:DescribeCertificate | Certificate |
| UpdateCertificateStatue | kms:UpdateCertificateStatue | Certificate |
| DeleteCertificate | kms:DeleteCertificate | Certificate |
| CertificatePrivateKeySign | kms:CertificatePrivateKeySign | Certificate |
| CertificatePublicKeyVerify | kms:CertificatePublicKeyVerify | Certificate |
| CertificatePublicKeyEncrypt | kms:CertificatePublicKeyEncrypt | Certificate |
| CertificatePrivateKeyDecrypt | kms:CertificatePrivateKeyDecrypt | Certificate |
Operasi API manajemen tag
| Operasi | Aksi | Jenis resource |
|---|---|---|
| ListResourceTags | kms:ListResourceTags | Kunci atau rahasia |
| UntagResource | kms:UntagResource | Key atau secret |
| TagResource | kms:TagResource | Key atau secret |
Kondisi kebijakan di KMS
Tambahkan kondisi ke kebijakan RAM untuk membatasi kapan dan bagaimana kebijakan tersebut berlaku. RAM hanya memberikan akses jika semua kondisi yang ditentukan terpenuhi.
Dua jenis kondisi tersedia untuk kebijakan KMS:
Kondisi global — Berlaku di seluruh layanan Alibaba Cloud. Misalnya, gunakan
acs:CurrentTimeuntuk membatasi kebijakan pada jendela waktu tertentu atauacs:SourceIpuntuk membatasi akses berdasarkan alamat IP.Kondisi berbasis tag — Membatasi operasi kriptografi (seperti
Encrypt,Decrypt, danGenerateDataKey) hanya pada kunci yang memiliki tag tertentu. Gunakan formatkms:tag/<tag-key>.
Untuk daftar lengkap kunci kondisi yang didukung, lihat Elemen kebijakan.
Contoh kebijakan RAM
Berikan akses penuh ke semua resource KMS
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:*"
],
"Resource": [
"*"
]
}
]
}Berikan akses untuk mendaftar dan mengkueri key, melihat alias, serta menggunakan key
Mengizinkan pendaftaran dan pengkuerian key, penampilan alias, serta operasi enkripsi, dekripsi, dan kunci data.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:List*", "kms:Describe*",
"kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey"
],
"Resource": [
"*"
]
}
]
}Batasi operasi kriptografi hanya pada key yang ditandai
Mengizinkan Encrypt, Decrypt, dan GenerateDataKey hanya pada key yang ditandai dengan Project: Apollo.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey"
],
"Resource": [
"*"
],
"Condition": {
"StringEqualsIgnoreCase": {
"kms:tag/Project": [
"Apollo"
]
}
}
}
]
}Batasi akses berdasarkan alamat IP
Mengizinkan semua operasi KMS hanya dari Blok CIDR 192.168.0.0/16 dan alamat IP 172.16.215.218.
{
"Version": "1",
"Statement": [{
"Effect": "Allow",
"Action": [
"kms:*"
],
"Resource": [
"*"
],
"Condition": {
"IpAddress": {
"acs:SourceIp": [
"192.168.0.0/16",
"172.16.215.218"
]
}
}
}]
}Berikan akses read-only ke secret
Mengizinkan pendaftaran dan pengkuerian secret, pengambilan nilai secret, serta pembuatan kata sandi acak.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:List*", "kms:Describe*",
"kms:GetSecretValue", "kms:Decrypt", "kms:GetRandomPassword"
],
"Resource": [
"*"
]
}
]
}Berikan akses read-only ke sertifikat
Mengizinkan pendaftaran, deskripsi, dan pengambilan detail sertifikat.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:List*",
"kms:Describe*",
"kms:Get*"
],
"Resource": [
"*"
]
}
]
}Berikan izin tanda tangan digital untuk sertifikat tertentu
Mengizinkan pembuatan dan verifikasi tanda tangan digital menggunakan sertifikat yang ditentukan.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:CertificatePrivateKeySign",
"kms:CertificatePublicKeyVerify"
],
"Resource": [
"*"
]
}
]
}