Anda dapat menggunakan MaxCompute dengan Key Management Service (KMS) untuk mengelola kunci. Topik ini menjelaskan fungsi USE_WRAPPED_KEYSET, yang mengonversi set kunci terbungkus menjadi set kunci dasar untuk digunakan sebagai parameter dalam fungsi enkripsi atau dekripsi guna mengenkripsi atau mendekripsi data.
Informasi latar belakang dan prasyarat
Anda dapat menggunakan MaxCompute dengan KMS untuk mengelola kunci. Set kunci terbungkus dihasilkan dengan mengenkripsi set kunci yang ada berdasarkan kunci KMS. Fungsi USE_WRAPPED_KEYSET mengonversi set kunci terbungkus yang dihasilkan oleh fungsi NEW_WRAPPED_KEYSET menjadi set kunci dasar, yang digunakan sebagai parameter dalam fungsi enkripsi atau dekripsi. Anda juga dapat menggunakan fungsi ini untuk mendapatkan informasi tentang set kunci terbungkus dan menyimpannya untuk pemeliharaan selanjutnya.
Sebelum menggunakan fungsi USE_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 Alibaba Cloud Resource Name (ARN) dari kunci tersebut diperoleh. ARN kunci ditentukan oleh kms_cmk_arn. Peran RAM harus memiliki izin untuk menggunakan kunci baru.
Sintaksis
binary USE_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset> [,string <role_chain>])Parameter
kms_cmk_arn: Wajib. Parameter ini menentukan ARN kunci master pelanggan (CMK) KMS dari set kunci yang ingin Anda enkripsi. Nilai parameter ini dalam format
'acs:kms:<RegionId>:<UserId>:key/<CmkId>', di mana RegionId adalah ID wilayah, UserId adalah ID pengguna, dan CmkId adalah ID CMK. Anda dapat memperoleh ARN dari halaman Detail Kunci di Konsol KMS.role_arn: Wajib. Parameter ini menentukan ARN peran RAM yang memiliki izin pada KMS. Peran ini harus diasumsikan oleh MaxCompute. Nilai parameter ini dalam format
'acs:ram:${<userAID>}:role/${<roleName>}', di mana userAID adalah ID pengguna, dan roleName adalah nama peran.wrapped_keyset: Wajib. Parameter ini menentukan set kunci terbungkus yang ada.
role_chain: Opsional. Parameter ini menentukan rantai peran untuk otorisasi pengguna. Nilai parameter ini dalam format
'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'. Anda dapat menggunakan rantai peran untuk memanggil set kunci terbungkus di seluruh akun Alibaba Cloud.
Nilai kembali
Fungsi ini mengembalikan set kunci yang disensitifkan dalam tipe STRUCT. Anda dapat menggunakan fungsi get_json_object untuk mendapatkan bidang terkait set kunci sesuai kebutuhan bisnis Anda.
Contoh
Kode sampel berikut berisi variabel. Anda harus menjalankan kode dalam mode skrip atau mengganti variabel dengan nilai sebenarnya dalam pernyataan SQL.
Mendapatkan informasi algoritma kunci dari 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>}';
@use_keyset_new := USE_WRAPPED_KEYSET(@kms_resource_keyId, @role_arn, @origin_key, @role_chain);
select get_json_object(get_json_object(use_keyset_new.wrapped_keyset_info,'$.masked_keyset'), '$.key[0].key_meta_data.type');Hasil berikut dikembalikan:
+-----+
| _c0 |
+-----+
| AES-GCM-256 |
+-----+