Anda dapat menggunakan MaxCompute dengan Key Management Service (KMS) untuk mengelola kunci. Topik ini menjelaskan cara menggunakan fungsi ROTATE_WRAPPED_KEYSET untuk mendekripsi set kunci terbungkus, menerapkan rotasi kunci, dan menggunakan kunci baru untuk mengenkripsi data.
Informasi latar belakang dan prasyarat
MaxCompute dapat digunakan bersama KMS untuk mengelola kunci. Anda dapat menghasilkan set kunci terbungkus dengan mengenkripsi set kunci berdasarkan kunci KMS. Fungsi ROTATE_WRAPPED_KEYSET menggunakan kunci KMS baru dan algoritma kunci baru untuk mengenkripsi ulang set kunci terbungkus yang dihasilkan menggunakan fungsi NEW_WRAPPED_KEYSET. Dibandingkan dengan fungsi REWRAP_KEYSET, fungsi ROTATE_WRAPPED_KEYSET mendukung penggunaan algoritma kunci baru dalam proses enkripsi ulang.
Sebelum menggunakan fungsi ROTATE_WRAPPED_KEYSET, pastikan prasyarat berikut telah dipenuhi:
Set kunci terbungkus harus dihasilkan menggunakan fungsi
NEW_WRAPPED_KEYSET. Untuk informasi lebih lanjut, lihat NEW_WRAPPED_KEYSET.Kunci KMS harus dibuat, dan ARN kunci yang ditentukan oleh kms_cmk_arn harus diperoleh. Peran RAM juga harus memiliki izin untuk menggunakan kunci baru.
Sintaksis
binary ROTATE_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset>,string <key_type> [,string description,[string <role_chain>]])Parameter
kms_cmk_arn: Wajib. Menentukan ARN dari kunci utama pelanggan KMS (CMK) yang digunakan untuk mengenkripsi ulang set kunci terbungkus. Format nilai parameter ini adalah
'acs:kms:<RegionId>:<UserId>:key/<CmkId>', di mana RegionId menentukan ID wilayah, UserId menentukan ID pengguna, dan CmkId menentukan ID CMK. ARN dapat diperoleh dari halaman Detail Kunci di Konsol KMS.role_arn: Wajib. Menentukan ARN dari peran RAM yang memiliki izin pada kunci KMS lama dan baru. Format nilai parameter ini adalah
'acs:ram:${<userAID>}:role/${<roleName>}', di mana userAID menentukan ID pengguna, dan roleName menentukan nama peran.wrapped_keyset: Wajib. Menentukan set kunci terbungkus yang ingin dienkripsi ulang.
key_type: Wajib. Menentukan tipe algoritma kunci dalam set kunci yang baru dihasilkan. Nilai valid meliputi: AES-GCM-256, AES-SIV-CMAC-128, dan AES-SIV-CMAC-256.
description: Opsional. Memberikan deskripsi untuk kunci.
role_chain: Opsional. Menentukan rantai peran untuk otorisasi pengguna. Format nilai parameter ini adalah
'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'. Rantai peran dapat digunakan untuk memanggil set kunci terbungkus di seluruh akun Alibaba Cloud.
Nilai kembali
Fungsi ini mengembalikan set kunci terbungkus bertipe BINARY. Anda dapat menggunakan fungsi HEX untuk mengonversi set kunci terbungkus bertipe BINARY menjadi set kunci bertipe STRING sesuai kebutuhan bisnis Anda. Untuk informasi lebih lanjut tentang fungsi HEX, lihat HEX.
Contoh
Kode sampel berikut berisi variabel. Anda harus menjalankan kode dalam mode skrip atau mengganti variabel dengan nilai aktual dalam pernyataan SQL.
Mengenkripsi ulang set kunci terbungkus.
@kms_resource_keyId := 'acs:kms:${<RegionId>}:${<UserId>}:key/${<CmkId>}'; @role_arn := 'acs:ram:${<UserId>}:role/${<roleName>}'; @origin_key := unhex('<wrapped_keyset>'); select hex(ROTATE_WRAPPED_KEYSET(@kms_resource_keyId, @role_arn, @origin_key, 'AES-GCM-256', 'hello world'));Mengenkripsi ulang set kunci terbungkus, serta mengizinkan peran lain untuk memanggil set kunci terbungkus.
@kms_resource_keyId := 'acs:kms:${<RegionId>}:${<UserId>}:key/${<CmkId>}'; @role_arn := 'acs:ram:${<UserId>}:role/${<roleName>}'; @origin_key := unhex('<wrapped_keyset>'); @role_chain := 'acs:ram:${<UserAId>}:role/${<roleName2>},acs:ram:${<UserBId>}:role/${<roleName3>}'; select hex(ROTATE_WRAPPED_KEYSET(@kms_resource_keyId, @role_arn, @origin_key, 'AES-GCM-256', 'hello world', @role_chain));