MaxCompute SQL, verilerinizi güvence altına almak için şifreleme ve şifre çözme işlevleri sağlar. Bu konuda şifreleme işlevlerinin sözdizimi, parametreleri ve örnekleri ayrıntılı olarak açıklanmaktadır.
MaxCompute'da veri şifreleme
-
Tek anahtarlı şifreleme: Belirli sütunları rastgele şifrelemek veya şifresini çözmek için tek bir anahtar oluşturmanıza olanak tanır. Oluşturulan anahtarı depolamak sizin sorumluluğunuzdadır.

Aşağıdaki tabloda MaxCompute SQL'deki tek anahtarlı şifreleme ve şifre çözme işlevleri açıklanmıştır.
İşlev
Açıklama
Belirtilen, rastgele şifrelenmiş bir sütunun şifresini çözer ve düz metni BINARY türünde döndürür.
Belirtilen bir sütunu rastgele şifreler ve şifreli metni BINARY türünde döndürür. -
Çok anahtarlı şifreleme: Anahtar kümesi (keyset), MaxCompute'ta bir veya daha fazla anahtar tutabilen bir anahtar yönetimi nesnesidir. Bir anahtar kümesine manuel olarak anahtar ekleyebilir, anahtar rotasyonu yapabilir ve orijinal anahtarları görüntüleyebilirsiniz.

Aşağıdaki tabloda MaxCompute SQL'deki çok anahtarlı şifreleme ve şifre çözme işlevleri açıklanmıştır.
İşlev
Açıklama
Belirtilen algoritma türüne göre bir anahtar kümesi oluşturur.
Bir anahtar kümesine yeni bir anahtar ekler ve bunu ana anahtar olarak ayarlar.
BINARY türündeki bir anahtar kümesini, ayrıntılarını görüntülemenize olanak tanıyan okunabilir bir JSON biçimine dönüştürür.
JSON biçimindeki bir anahtar kümesi dizesini BINARY türüne dönüştürür.
Yeni bir anahtar oluşturur ve bunu ana anahtar olarak ayarlar. -
KMS entegrasyonlu çok anahtarlı şifreleme: MaxCompute, veri şifreleme için KMS ile entegre olur. MaxCompute temel bir anahtar kümesi oluşturur ve bunu KMS'den alınan bir müşteri ana anahtarı (CMK) ile şifreleyerek sarmalanmış bir anahtar kümesi oluşturur. Bu sarmalanmış anahtar kümesini depolamak sizin sorumluluğunuzdadır. Verilerin şifresini çözmek için sarmalanmış anahtar kümesini sağlamanız gerekir. MaxCompute ardından KMS CMK'yı kullanarak sarmalanmış anahtar kümesinin şifresini çözer ve temel anahtar kümesine dönüştürür; bu temel anahtar kümesini de verilerin şifresini çözmek için kullanır.

Aşağıdaki tabloda MaxCompute SQL'deki KMS entegrasyonlu çok anahtarlı şifreleme ve şifre çözme işlevleri açıklanmıştır.
İşlev
Açıklama
Yeni bir sarmalanmış anahtar kümesi oluşturur. Bu işlem, bir KMS müşteri ana anahtarını (CMK) kullanma iznine sahip bir rol gerektirir (role_arnile belirtilir). İsteğe bağlı olarak, diğer Alibaba Cloud hesaplarının anahtar kümesinin şifresini çözmesine izin vermek için bir rol zinciri (role_chainile belirtilir) belirtebilirsiniz.
Sarmalanmış bir anahtar kümesini belirtilen bir KMS anahtarı kullanarak yeniden şifreler.
Mevcut bir sarmalanmış anahtar kümesinin şifresini çözer, içindeki anahtarlarda anahtar rotasyonu gerçekleştirir ve ardından bunu orijinal KMS anahtarıyla yeniden şifreler.
Sarmalanmış bir anahtar kümesinin şifresini çözerek, şifreleme veya şifre çözme işlevlerinde parametre olarak kullanılmak üzere temel bir anahtar kümesine dönüştürür. Bakım amacıyla sarmalanmış anahtar kümesinin meta verilerini görüntülemek için de bu işlevi kullanabilirsiniz.
Belirtilen bir anahtar kümesi kullanarak verileri şifreler.
Belirtilen bir anahtar kümesi kullanarak verilerin şifresini çözer.
Notlar
MaxCompute 2.0'a yükselttikten sonra bazı işlevler genişletilmiştir. Yeni veri türlerini (TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP veya BINARY) içeren işlevleri kullanmak için aşağıdaki deyimi çalıştırarak yeni veri türü sistemini etkinleştirin:
Oturum düzeyinde: Yeni veri türlerini kullanmak için SQL deyiminizden önce
set odps.sql.type.system.odps2=true;ifadesini ekleyin ve her ikisini birlikte gönderin.-
Proje düzeyinde: Proje sahibi bu ayarı gerektiği şekilde yapılandırabilir. Yapılandırmanın etkili olması 10 ila 15 dakika sürer. Aşağıdaki komutu kullanın:
setproject odps.sql.type.system.odps2=true;setprojecthakkında daha fazla bilgi için bkz. Proje komutları. Proje düzeyinde veri türlerini etkinleştirme ile ilgili notlar için bkz. Veri türü sürüm kılavuzu.
SYM_DECRYPT
-
Sözdizimi
binary sym_decrypt(binary <value_to_decrypt>, binary <key> [,string <encryption_method> , [ string <additional_authenticated_data> ] ] ) -
Açıklama
Belirtilen bir tablo sütunundaki rastgele şifrelenmiş verilerin şifresini çözer.
-
Parametreler
value_to_decrypt: Zorunludur. Şifresi çözülecek veridir ve
BINARYtüründe olmalıdır.key: Zorunludur. Şifre çözme anahtarıdır. 256 bitlik bir
BINARYdeğeri olmalıdır.encryption_method: İsteğe bağlıdır. Şifreleme yöntemi. Verileri şifrelemek için kullanılan yöntemle aynı yöntemi belirtmeniz gerekir.
additional_authenticated_data: İsteğe bağlıdır. Verilerin kimliğini ve bütünlüğünü doğrulamak için ek kimlik doğrulama verisi (AAD). Şifreleme sırasında AAD sağladıysanız, şifre çözme için de bunu sağlamalısınız.
-
Dönüş değeri
Düz metni
BINARYtüründe döndürür. GerektiğindeCASTişlevini kullanarakBINARYverileriSTRINGtürüne dönüştürebilirsiniz. -
Örnekler
Aşağıdaki örneklerde, SYM_ENCRYPT işleviyle şifrelenen bir tablodaki verilerin şifresinin nasıl çözüleceği gösterilmektedir.
-
Örnek 1: Düz metin anahtarıyla şifrelenen verilerin şifresini çözün.
-- Decrypt the id_card_no column. INSERT OVERWRITE TABLE mf_user_info SELECT id, name, gender, CAST(sym_decrypt(unbase64(id_card_no), CAST('b75585cf321cdcad42451690cdb7bfc4' AS BINARY) ) AS STRING) AS id_card_no, tel FROM mf_user_info; -- Query the decrypted data. SELECT * FROM mf_user_info; -
Örnek 2: Anahtar tablosuyla şifrelenen verilerin şifresini çözün.
-- Decrypt the id_card_no column with AAD verification. INSERT OVERWRITE TABLE mf_user_info SELECT id, name, gender, CAST(sym_decrypt(unbase64(id_card_no), CAST('b75585cf321cdcad42451690cdb7bfc4' AS BINARY), 'AES-GCM-256', 'test' ) AS STRING) AS id_card_no, tel FROM mf_user_info; -- Query the decrypted data. SELECT * FROM mf_user_info;Komut aşağıdaki sonucu döndürür:
+------------+------+--------+------------+-------------+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+-------------+ | 1 | bob | male | 0001 | 13900001234 | | 2 | allen| male | 0011 | 13900001111 | | 3 | kate | female | 0111 | 13900002222 | | 4 | annie| female | 1111 | 13900003333 | +------------+------+--------+------------+-------------+
-
SYM_ENCRYPT
-
Sözdizimi
binary sym_encrypt(string|binary <value_to_encrypt>, binary <key> [,string <encryption_method> , [ string <additional_authenticated_data> ] ] ) -
Açıklama
Belirtilen bir sütunu rastgele şifreleme kullanarak şifreler.
-
Parametreler
value_to_encrypt: Zorunludur. Şifrelenecek veridir. Yalnızca STRING ve BINARY türleri desteklenir.
key: Zorunludur. Şifreleme anahtarıdır. 256 bit uzunluğunda ve BINARY türünde olmalıdır.
encryption_method: İsteğe bağlıdır. Şifreleme yöntemi. Desteklenen tek algoritma AES-GCM-256'dır ve varsayılan değer budur.
additional_authenticated_data: İsteğe bağlıdır. Verilerin kimliğini ve bütünlüğünü doğrulamak için kullanılan ek kimlik doğrulama verisi (AAD). Bu parametre yalnızca İlişkili Verilerle Kimliği Doğrulanmış Şifreleme (AEAD) algoritmaları tarafından desteklenir (örneğin AES-GCM).
-
Dönüş değeri
Şifreli metni BINARY değeri olarak döndürür.
Dönüş değeri sırasıyla başlatma vektörü (IV), şifreli metin ve AEAD etiketini içerir.
İşlev deterministik değildir; yani aynı düz metin ve anahtarla bile her şifrelemede farklı bir şifreli metin döndürür.
-
Örnek veriler
-- Create the table. create table mf_user_info(id bigint, name string, gender string, id_card_no string, tel string); -- Insert sample data. insert overwrite table mf_user_info values(1,"bob","male","0001","13900001234"), (2,"allen","male","0011","13900001111"), (3,"kate","female","0111","13900002222"), (4,"annie","female","1111","13900003333"); -- Query the table. select * from mf_user_info; -
Örnek 1: Düz metin anahtarı kullanarak verileri şifreleyin
Örnek verilere dayanarak
mf_user_infotablosundaki sütunları şifreleyin. Aşağıdaki komutu çalıştırın:-
AES-GCM-256 ile şifreleme (AAD yok)
-- Encrypt the id_card_no column. insert overwrite table mf_user_info select id, name, gender, base64(sym_encrypt(id_card_no, cast('b75585cf321cdcad42451690cdb7bfc4' as binary) )) as id_card_no, tel from mf_user_info; select * from mf_user_info;Sonuç:
+------------+------+--------+------------+-----+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+-----+ | 1 | bob | male | frgJZAEAQMeEuHqpS8lK9VxQhgPYpZ317V+oUla/xEc= | 13900001234| | 2 | allen| male | frgJZAIAQMeEuHqpLeXQfETsFSLJxBwHhPx6tpzWUg4= | 13900001111| | 3 | kate | female | frgJZAMAQMeEuHqpdphXAU6iWelWenlDnVy+R0HMvAY= | 13900002222| | 4 | annie| female | frgJZAQAQMeEuHqpR5c8bj21dYCeM0C25bLRZIrP71c= | 13900003333| +------------+------+--------+------------+-----+ -
AES-GCM-256 ve AAD ile şifreleme
Şifreli metni belirli bir bağlama bağlamak için bir AAD değeri iletin. AAD eşleşmezse şifre çözme başarısız olur.
-- Encrypt the id_card_no column with AAD. insert overwrite table mf_user_info select id, name, gender, base64(sym_encrypt(id_card_no, cast('b75585cf321cdcad42451690cdb7bfc4' as binary), 'AES-GCM-256', 'test' )) as id_card_no, tel from mf_user_info; select * from mf_user_info;Sonuç:
+------------+------+--------+------------+-----+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+-----+ | 1 | bob | male | gJ0QaAEAoGGWVw90H/zETg... | 13900001234| | 2 | allen| male | gJ0QaAIAoGGWVw90TpNFC0... | 13900001111| | 3 | kate | female | gJ0QaAMAoGGWVw90KaQ8Vm... | 13900002222| | 4 | annie| female | gJ0QaAQAoGGWVw90nYCAS1... | 13900003333| +------------+------+--------+------------+-----+
-
-
Örnek 2: Anahtar tablosu kullanarak verileri şifreleyin
SQL'de düz metin anahtarları geçirmekten kaçınmak için anahtarları bir MaxCompute tablosunda saklayın ve şifreleme sırasında hedef tabloyla birleştirin.
Anahtar yönetimi notları:
Anahtarları oluşturmak ve yönetmek sizin sorumluluğunuzdadır. MaxCompute anahtarları veya anahtarlarla şifreli metin arasındaki eşlemeyi saklamaz. Bir anahtar kaybolursa şifrelenmiş veriler kurtarılamaz.
Anahtarların açığa çıkmasını önlemek için anahtar tablosuna doğrudan erişim izni vermeyin. Bunun yerine, şifre çözme işlevini çağıran güvenli bir görünüm oluşturun; kullanıcılar düz metin anahtarını hiç görmeden verilere görünüm üzerinden erişir.
Şifrelenecek veriler BINARY türündeyse MaxCompute V2.0 veri türü sürümünü etkinleştirmek için
set odps.sql.type.system.odps2=true;komutunu çalıştırın.
-- Create a key table. create table mf_id_key(id bigint, key binary); -- Insert a key. insert overwrite table mf_id_key values (1, cast('b75585cf321cdcad42451690cdb7bfc4' as binary)); -- Verify the key table. select * from mf_id_key;Sonuç:
+------------+----------------------------------+ | id | key | +------------+----------------------------------+ | 1 | b75585cf321cdcad42451690cdb7bfc4 | +------------+----------------------------------+-- Encrypt the id_card_no column using the key table. insert overwrite table mf_user_info select /*+mapjoin(b)*/ a.id, a.name, a.gender, base64(sym_encrypt(a.id_card_no, b.key)) as id_card_no, a.tel from mf_user_info as a join mf_id_key as b on a.id >= b.id; -- Query the encrypted result. select * from mf_user_info;Sonuç:
+------------+------+--------+------------+-----+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+-----+ | 1 | bob | male | 9esKZAEAoBquXVJo3ZptvoI09XuM4bSFTqF1mXH1BO4= | 13900001234| | 2 | allen| male | 9esKZAIAoBquXVJoJYqnXieAANih7FR59luePvdHB9U= | 13900001111| | 3 | kate | female | 9esKZAMAoBquXVJoppwxgVwPYBnvjIMklWLmJ/sU0Y8= | 13900002222| | 4 | annie| female | 9esKZAQAoBquXVJoB85RUFCLMbdyEBSz7LdS4M3Guvk= | 13900003333| +------------+------+--------+------------+-----+
NEW_KEYSET
-
Sözdizimi
binary NEW_KEYSET(string <key_type>, [string <description>]) -
Açıklama
Belirtilen algoritma türüne göre bir anahtar kümesi oluşturur.
-
Parametreler
key_type: Zorunludur. Bir veri anahtarı oluşturmak için kullanılan algoritma türüdür. Desteklenen algoritmalar arasında AES-GCM-256, AES-SIV-CMAC-128 ve AES-SIV-CMAC-256 bulunur.
description: İsteğe bağlıdır. Veri anahtarının açıklamasıdır.
-
Dönüş değeri
BINARY türünde bir anahtar kümesi döndürür.
-
Örnek
select hex(NEW_KEYSET('AES-GCM-256', 'hello world'));Aşağıdaki sonuç döndürülür.
+------------+ | _c0 | +------------+ | 0A10577567735A514541554D42776E684C4212580A330A0B4145532D47434D2D323536122017F7A430B9D4B59B55454FD4B486216059F1B748CE0502D901EBEACEAB6569191801200210011A10577567735A514541554D42776E684C4220022A0B68656C6C6F20776F726C64 | +------------+
ADD_KEY_TO_KEYSET
-
Sözdizimi
binary ADD_KEY_TO_KEYSET(binary <keyset>, string <key_type>, binary <raw_key>, [string <description>]) -
Açıklama
Bir anahtar kümesine anahtar ekler ve anahtarı ana anahtar olarak yapılandırır.
-
Parametreler
keyset: zorunludur. Bu parametre, BINARY türünde mevcut bir anahtar kümesini belirtir.
key_type: zorunludur. Bu parametre, eklemek istediğiniz anahtarın algoritma türünü belirtir. Geçerli değerler: AES-GCM-256, AES-SIV-CMAC-128 ve AES-SIV-CMAC-256.
raw_key: zorunludur. Bu parametre, eklemek ve ana anahtar olarak yapılandırmak istediğiniz anahtarı belirtir. Anahtar BINARY türündedir.
description: isteğe bağlıdır. Bu parametre, veri anahtarının açıklamasını sağlar.
-
Dönüş değeri
BINARY anahtar kümesi döndürür.
-
Örnek
select hex(ADD_KEY_TO_KEYSET(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64'), 'AES-SIV-CMAC-128', unhex('b75585cf321cdcad42451690cdb7bfc49c26092f60f854e72d43244c55620a3d'),'description') );Aşağıdaki sonuç döndürülür:
+------------+ | _c0 | +------------+ | 0A10596530735A5145414150447273424C4212580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64125D0A380A104145532D5349562D434D41432D3132381220B75585CF321CDCAD42451690CDB7BFC49C26092F60F854E72D43244C55620A3D1801200110011A10596530735A5145414150447273424C4220022A0B6465736372697074696F6E | +------------+
KEYSET_FROM_JSON
-
Sözdizimi
BINARY KEYSET_FROM_JSON(STRING <json_keyset>) -
Açıklama
KEYSET_FROM_JSON işlevi, JSON biçimindeki bir anahtar kümesi dizesini BINARY türüne dönüştürür.
-
Parametreler
json_keyset: Zorunludur. STRING. JSON biçiminde bir anahtar kümesi dizesi.
-
Dönüş değeri
Anahtar kümesini BINARY değeri olarak döndürür.
-
Örnek
SELECT HEX(KEYSET_FROM_JSON('{ "key": [{ "description": "hello world", "key_id": "r8MqZAEA8PDd3QSL", "key_meta_data": { "key_material_origin": "Origin_ALIYUN_MAXCOMPUTE", "key_material_type": "SYMMETRIC", "type": "AES-GCM-256", "value": "Jqj7ESbfT1td0DwYDmkZVl13FsuykYFe+1u/MPi++a8="}, "output_prefix_type": "PREFIX_ALIYUN_MAXCOMPUTE", "status": "ENABLED"}], "primary_key_id": "r8MqZAEA8PDd3QSL"}')) ;Sorgu aşağıdakileri döndürür:
+------------+ | _c0 | +------------+ | 0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64 | +------------+
KEYSET_TO_JSON
-
Sözdizimi
STRING KEYSET_TO_JSON(BINARY <keyset>) -
Açıklama
BINARY türündeki bir anahtar kümesini okunabilir bir JSON dizesine dönüştürür. Dönüşümden sonra anahtar kümesinin ayrıntılarını görüntüleyebilirsiniz.
-
Parametreler
keyset: zorunludur. BINARY türünde bir değerdir. Bu parametre mevcut bir anahtar kümesini belirtir.
-
Dönüş değeri
JSON biçiminde bir anahtar kümesi döndürülür. Parametre açıklaması:
key_id: anahtarın kimliğidir.
key_material_origin: anahtarın kaynağıdır.
key_material_type: anahtarın şifreleme türüdür.
type: anahtarın algoritma türüdür.
value: anahtarın değeridir.
output_prefix_type: şifrelemeden sonraki şifreli metin biçimidir.
-
Örnekler
SELECT KEYSET_TO_JSON(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64')) ;Aşağıdaki sonuç döndürülür:
+------------+ | _c0 | +------------+ | { "key": [{ "description": "hello world", "key_id": "r8MqZAEA8PDd3QSL", "key_meta_data": { "key_material_origin": "Origin_ALIYUN_MAXCOMPUTE", "key_material_type": "SYMMETRIC", "type": "AES-GCM-256", "value": "Jqj7ESbfT1td0DwYDmkZVl13FsuykYFe+1u/MPi++a8="}, "output_prefix_type": "PREFIX_ALIYUN_MAXCOMPUTE", "status": "ENABLED"}], "primary_key_id": "r8MqZAEA8PDd3QSL"} | +------------+
ROTATE_KEYSET
-
Sözdizimi
binary ROTATE_KEYSET(binary <keyset>, string <key_type>, [string <description> ]) -
Açıklama
Sistemin otomatik olarak yeni bir anahtar üretmesine olanak tanır ve yeni anahtarı ana anahtar olarak yapılandırır.
-
Parametreler
keyset: zorunludur. BINARY türünde bir değerdir. Bu parametre, güncellemek istediğiniz anahtar kümesini belirtir.
key_type: zorunludur. Bu parametre, yeni anahtarın algoritma türünü belirtir. Geçerli değerler: AES-GCM-256, AES-SIV-CMAC-128 ve AES-SIV-CMAC-256.
description: isteğe bağlıdır. Bu parametre, yeni veri anahtarının açıklamasını sağlar.
-
Dönüş değeri
BINARY anahtar kümesi döndürür.
-
Örnek
select ROTATE_KEYSET(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64'), 'AES-SIV-CMAC-256', 'hello world') ;Aşağıdaki sonuç döndürülür:
+------------+ | _c0 | +------------+ | =0A=10BVIuZQEAcHHPLfn1=12X=0A3=0A=0BAES-GCM-256=12=20&=A8=FB=11&=DFO[]=D0<=18=0Ei=19V]w=16=CB=B2=91=81^=FB[=BF0=F8=BE=F9=AF=18=01=20=02=10=01=1A=10r8MqZAEA8PDd3QSL=20=02*=0Bhello=20world=12}=0AX=0A=10AES-SIV-CMAC-256=12@=9D=AD=B7=D6=AF=01=B2=9D=CE=C3=02y=A9=DB=E1=17q>'F=DC=F5=EF=FFI=7F=F0w)=95F=07>=9C=EDqn=DF=0E=1E=16bP&=D3=7F>gV=CBl=8AGJCm=93=FF=F9=96=AD=1A=C0=BC=18=01=20=02=10=01=1A=10BVIuZQEAcHHPLfn1=20=02*=0Bhello=20world | +-----------
NEW_WRAPPED_KEYSET
-
Sözdizimi
binary NEW_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <key_type> [, string <description>, [string <role_chain>]]) -
Açıklama
Anahtarları yönetmek için MaxCompute'u KMS ile birlikte kullanabilirsiniz. Bir KMS anahtarına dayalı olarak bir anahtar kümesini şifreleyerek sarmalanmış bir anahtar kümesi oluşturabilirsiniz. Sarmalanmış bir anahtar kümesi oluşturduktan sonra, KMS anahtarlarına dayalı olarak sonraki veri şifreleme ve şifre çözme işlemleri için sarmalanmış anahtar kümesini manuel olarak kaydetmeniz ve depolamanız gerekir. Şifreleme veya şifre çözme sürecinde tüm anahtarlar sistem tarafından otomatik olarak oluşturulur. Şifreleme ve şifre çözme için kullanılan orijinal anahtarı görüntüleyemezsiniz. Bu sayede veriler daha güvenli bir şekilde şifrelenir veya şifresi çözülür.
NEW_WRAPPED_KEYSETişlevi, KMS müşteri ana anahtarı (CMK) ARN'lerini kullanarak sarmalanmış bir anahtar kümesi oluşturmak için MaxCompute'a atanan bir rolün Alibaba Cloud Resource Name (ARN) değerini üstlenir. Rol ARN'i role_arn ile belirtilir. KMS CMK ARN'i kms_cmk_arn ile belirtilir. İşlev, role_chain'e dayalı olarak diğer Alibaba Cloud hesaplarına sarmalanmış anahtar kümelerini kullanma izinleri vermek için de kullanılır.NEW_WRAPPED_KEYSETişlevini kullanmadan önce aşağıdaki ön koşulların karşılandığından emin olun:KMS etkinleştirilmiş ve bir KMS örneği oluşturulmuştur.
Bir KMS anahtarı oluşturulmuş ve kms_cmk_arn ile belirtilen anahtar ARN'i alınmıştır.
Bir RAM rolü oluşturulmuş ve MaxCompute'un KMS'ye erişmesine izin verilmiştir. RAM rolünün ARN'i alınmıştır. Rol ARN'i role_arn ile belirtilir.
Daha fazla bilgi için bkz. KMS'yi etkinleştirin ve izinleri yapılandırın bölümündeki "KMS'yi etkinleştirin ve KMS üzerinde izinler verin" kısmı.
-
Parametreler
-
kms_cmk_arn: zorunludur. Bu parametre, bir anahtar kümesini şifrelemek için kullanılan KMS CMK'sinin ARN'ini belirtir. Parametre değeri
'acs:kms:<RegionId>:<UserId>:key/<CmkId>'biçimindedir. RegionId bölge kimliğini, UserId kullanıcı kimliğini ve CmkId CMK kimliğini belirtir. ARN'i KMS konsolu içindeki Anahtar Ayrıntıları sayfasından alabilirsiniz. role_arn: zorunludur. Bu parametre, KMS üzerinde izinlere sahip RAM rolünün ARN'ini belirtir. Rolün MaxCompute tarafından üstlenilmesi gerekir. Parametre değeri
'acs:ram:${<userAID>}:role/${<roleName>}'biçimindedir. userAID kullanıcı kimliğini ve roleName rol adını belirtir.key_type: zorunludur. Bu parametre, yeni oluşturulan anahtar kümesindeki anahtarın algoritma türünü belirtir. Geçerli değerler: AES-GCM-256, AES-SIV-CMAC-128 ve AES-SIV-CMAC-256.
description: isteğe bağlıdır. Bu parametre, anahtarın açıklamasını sağlar.
role_chain: isteğe bağlıdır. Bu parametre, kullanıcı yetkilendirmesi için rol zincirini belirtir. Parametre değeri
'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'biçimindedir. Rol zincirlerini kullanarak Alibaba Cloud hesapları arasında sarmalanmış anahtar kümelerini çağırabilirsiniz.
-
-
Dönüş değeri
BINARY türünde sarmalanmış bir anahtar kümesi döndürülür. İş ihtiyaçlarınıza göre BINARY türündeki sarmalanmış anahtar kümesini STRING türünde bir anahtar kümesine dönüştürmek için HEX işlevini kullanabilirsiniz. HEX işlevi hakkında daha fazla bilgi için bkz. HEX.
-
Örnekler
-
Sarmalanmış bir anahtar kümesi oluşturun.
select hex(NEW_WRAPPED_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t','acs:ram::1**************7:role/kms', 'AES-GCM-256', 'hello'));Aşağıdaki sonuç döndürülür:
+-----+ | _c0 | +-----+ | 613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78434A373434582F54756C5A547A4E69337562786F4B3543412F616655573262786D345A41306B464C674A2F5758324F4E514E346746306F303236376D35335A6471797237366E57565A6836387A52687A4A673945784B6E677568794A376E6F4A68573677684B5A555A42786E4A383742536C4D46326A374F71474F4C414A6B665779694557394D58664876576E306C6D49777052746A77325643707A4259517277327944354343396C50586F31346A4351506253612F3044394C4C6E6E622F747A6B57316E4F564A6C5359354B35526130537565584F33507856773D | +-----+ -
Sarmalanmış bir anahtar kümesi oluşturun ve diğer rollerin sarmalanmış anahtar kümesini çağırmasına izin verin.
select hex(NEW_WRAPPED_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t','acs:ram::1**************7:role/kms', 'AES-GCM-256', 'hello','acs:ram::1**************7:role/kms1'));Aşağıdaki sonuç döndürülür:
+-----+ | _c0 | +-----+ | 613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D784D59716D4C767954716B3562444779574C7A387965774966432F516B4A59616F57623648364A546A62434F7A7A42634F517A687A6E526F36543866714E4E63555546566874696C4A3947713556667A2F7851757A55686467504C517A2B6C433337485A535449744B53714E396B6639587666487A4D7957643842334D3179392F67423774726835437A556F786A74614571612F5A3543447668524A7731426566525647796A77574974476243475A4E594550714E767963532B333432743347396B714777626C54336F57706939706E437A667A4E4D6F4C63714F453D | +-----+
-
REWRAP_KEYSET
-
Sözdizimi
binary REWRAP_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset>, [string <role_chain>]) -
Açıklama
MaxCompute, anahtarları yönetmek için KMS ile entegre olur. Bir KMS anahtarı, oluşturulan bir anahtar kümesini şifreleyerek sarmalanmış bir anahtar kümesi oluşturur.
REWRAP_KEYSETişlevi,NEW_WRAPPED_KEYSETişlevi tarafından oluşturulan sarmalanmış bir anahtar kümesini yeni bir KMS anahtarıyla yeniden şifreler.REWRAP_KEYSETişlevini kullanmadan önce aşağıdaki görevleri tamamlayın:NEW_WRAPPED_KEYSETişlevi tarafından oluşturulmuş kapsüllenmiş bir anahtar kümeniz vardır. Daha fazla bilgi için bkz. NEW_WRAPPED_KEYSET.Yeni bir KMS anahtarı oluşturun ve Alibaba Cloud Resource Name (ARN) değerini (kms_cmk_arn) alın. RAM rolüne yeni anahtarı kullanma izni verin. Daha fazla bilgi için bkz. KMS'yi etkinleştirin ve yapılandırmayı tamamlayın.
-
Parametreler
-
kms_cmk_arn: Zorunludur.
Anahtar kümesini yeniden şifrelemek için kullanılan KMS müşteri ana anahtarının (CMK) ARN'idir. Biçim
'acs:kms:<RegionId>:<UserId>:key/<CmkId>'şeklindedir. ARN, bölge kimliğini, kullanıcı kimliğini ve CMK kimliğini içerir. ARN'i Key Management Service konsolundan anahtar ayrıntıları sayfasında alın. Daha fazla bilgi için bkz. KMS'yi etkinleştirin ve yapılandırmayı tamamlayın. -
role_arn: Zorunludur.
Hem eski hem de yeni KMS anahtarları üzerinde izinlere sahip RAM rolünün ARN'idir. Bu rol MaxCompute'a atanmalıdır. Biçim
'acs:ram:${<userAID>}:role/${<roleName>}'şeklindedir. ARN, kullanıcı kimliğini ve rol adını içerir. ARN'i almak için bkz. KMS'yi etkinleştirin ve yapılandırmayı tamamlayın. -
wrapped_keyset: Zorunludur.
Yeniden şifrelenecek sarmalanmış anahtar kümesi.
role_chain: isteğe bağlıdır. Bu parametre, kullanıcı yetkilendirmesi için rol zincirini belirtir. Parametre değeri
'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'biçimindedir. Rol zincirlerini kullanarak Alibaba Cloud hesapları arasında sarmalanmış anahtar kümelerini çağırabilirsiniz.
-
-
Dönüş değeri
BINARY türünde sarmalanmış bir anahtar kümesi döndürülür. İş ihtiyaçlarınıza göre BINARY türündeki sarmalanmış anahtar kümesini STRING türünde bir anahtar kümesine dönüştürmek için HEX işlevini kullanabilirsiniz. HEX işlevi hakkında daha fazla bilgi için bkz. HEX.
-
Örnekler
NotAşağıdaki örnek kodu, değişkenler içeren kod düzenleyicide çalıştırabilir veya değişkenleri SQL deyimine satır içi olarak ekleyebilirsiniz. MaxCompute, SQL deyimleri arasında değişken kapsamını desteklemez.
-
Sarmalanmış bir anahtar kümesini yeniden şifreleyin:
SELECT hex(REWRAP_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz******************', 'acs:ram::1**************7:role/kms', unhex('<wrapped_keyset>'))); -
Sarmalanmış bir anahtar kümesini yeniden şifreleyin ve diğer Alibaba Cloud hesaplarının rollerinin bunu çağırmasına izin verin:
SELECT hex(REWRAP_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz******************', 'acs:ram:${<UserId>}:role/${<roleName>}', unhex('<wrapped_keyset>'), 'acs:ram:${<UserAId>}:role/${<roleName2>},acs:ram:${<UserBId>}:role/${<roleName3>}')));
-
ROTATE_WRAPPED_KEYSET
-
Sözdizimi
binary ROTATE_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset>,string <key_type> [,string description,[string <role_chain>]]) -
Açıklama
Anahtarları yönetmek için MaxCompute'u KMS ile birlikte kullanabilirsiniz. Bir KMS anahtarına dayalı olarak bir anahtar kümesini şifreleyerek sarmalanmış bir anahtar kümesi oluşturabilirsiniz.
ROTATE_WRAPPED_KEYSETişlevi,NEW_WRAPPED_KEYSETişlevi kullanılarak oluşturulan sarmalanmış bir anahtar kümesini yeni bir KMS anahtarı ve yeni bir anahtar algoritması kullanarak yeniden şifreler.REWRAP_KEYSETişleviyle karşılaştırıldığında,ROTATE_WRAPPED_KEYSETişlevi yeniden şifreleme için yeni bir anahtar algoritması kullanabilir.ROTATE_WRAPPED_KEYSETişlevini kullanmadan önce aşağıdaki ön koşulların karşılandığından emin olun:NEW_WRAPPED_KEYSETişlevi kullanılarak sarmalanmış bir anahtar kümesi oluşturulmuştur. Daha fazla bilgi için bkz. NEW_WRAPPED_KEYSET.Bir KMS anahtarı oluşturulmuş ve kms_cmk_arn ile belirtilen anahtar ARN'i alınmıştır. RAM rolüne yeni anahtarı kullanma izni verilmiştir.
-
Parametreler
kms_cmk_arn: zorunludur. Bu parametre, sarmalanmış bir anahtar kümesini yeniden şifrelemek için kullanmak istediğiniz KMS müşteri ana anahtarının (CMK) ARN'ini belirtir. Parametre değeri
'acs:kms:<RegionId>:<UserId>:key/<CmkId>'biçimindedir. RegionId bölge kimliğini, UserId kullanıcı kimliğini ve CmkId CMK kimliğini belirtir. ARN'i KMS konsolu içindeki Anahtar Ayrıntıları sayfasından alabilirsiniz.role_arn: zorunludur. Bu parametre, hem eski hem de yeni KMS anahtarları üzerinde izinlere sahip RAM rolünün ARN'ini belirtir. Parametre değeri
'acs:ram:${<userAID>}:role/${<roleName>}'biçimindedir. userAID kullanıcı kimliğini ve roleName rol adını belirtir.wrapped_keyset: zorunludur. Bu parametre, yeniden şifrelemek istediğiniz sarmalanmış anahtar kümesini belirtir.
key_type: zorunludur. Bu parametre, yeni oluşturulan anahtar kümesindeki anahtarın algoritma türünü belirtir. Geçerli değerler: AES-GCM-256, AES-SIV-CMAC-128 ve AES-SIV-CMAC-256.
description: isteğe bağlıdır. Bu parametre, anahtarın açıklamasını sağlar.
role_chain: isteğe bağlıdır. Bu parametre, kullanıcı yetkilendirmesi için rol zincirini belirtir. Parametre değeri
'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'biçimindedir. Rol zincirlerini kullanarak Alibaba Cloud hesapları arasında sarmalanmış anahtar kümelerini çağırabilirsiniz.
-
Dönüş değeri
BINARY türünde sarmalanmış bir anahtar kümesi döndürülür. İş ihtiyaçlarınıza göre BINARY türündeki sarmalanmış anahtar kümesini STRING türünde bir anahtar kümesine dönüştürmek için HEX işlevini kullanabilirsiniz. HEX işlevi hakkında daha fazla bilgi için bkz. HEX.
-
Örnekler
NotAşağıdaki örnek kodu, değişkenler içeren kod düzenleyicide çalıştırabilir veya değişkenleri SQL deyimine satır içi olarak ekleyebilirsiniz. MaxCompute, SQL deyimleri arasında değişken kapsamını desteklemez.
-
Sarmalanmış bir anahtar kümesini yeniden şifreleyin.
@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')); -
Sarmalanmış bir anahtar kümesini yeniden şifreleyin ve diğer rollerin sarmalanmış anahtar kümesini çağırmasına izin verin.
@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));
-
USE_WRAPPED_KEYSET
-
Sözdizimi
binary USE_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset> [,string <role_chain>]) -
Açıklama
Anahtarları yönetmek için MaxCompute'u KMS ile birlikte kullanabilirsiniz. Mevcut bir anahtar kümesini bir KMS anahtarına dayalı olarak şifreleyerek sarmalanmış bir anahtar kümesi oluşturabilirsiniz.
USE_WRAPPED_KEYSETişlevi,NEW_WRAPPED_KEYSETişlevi kullanılarak oluşturulan sarmalanmış bir anahtar kümesini temel bir anahtar kümesine dönüştürür. Temel anahtar kümesi, verileri şifrelemek veya şifresini çözmek için şifreleme veya şifre çözme işlevinde parametre olarak kullanılır. USE_WRAPPED_KEYSET işlevini kullanarak sarmalanmış bir anahtar kümesi hakkındaki bilgileri alabilir ve sonraki bakım için bu bilgileri kaydedebilirsiniz.USE_WRAPPED_KEYSETişlevini kullanmadan önce aşağıdaki ön koşulların karşılandığından emin olun:NEW_WRAPPED_KEYSETişlevi kullanılarak sarmalanmış bir anahtar kümesi oluşturulmuştur. Daha fazla bilgi için bkz. NEW_WRAPPED_KEYSET.Bir KMS anahtarı oluşturulmuş ve anahtarın Alibaba Cloud Resource Name (ARN) değeri alınmıştır. Anahtar ARN'i kms_cmk_arn ile belirtilir. RAM rolüne yeni anahtarı kullanma izni verilmiştir.
-
Parametreler
kms_cmk_arn: zorunludur. Bu parametre, şifrelemek istediğiniz anahtar kümesinin KMS müşteri ana anahtarı (CMK) ARN'ini belirtir. Parametre değeri
'acs:kms:<RegionId>:<UserId>:key/<CmkId>'biçimindedir. RegionId bölge kimliğini, UserId kullanıcı kimliğini ve CmkId CMK kimliğini belirtir. ARN'i KMS konsolu içindeki Anahtar Ayrıntıları sayfasından alabilirsiniz.role_arn: zorunludur. Bu parametre, KMS üzerinde izinlere sahip RAM rolünün ARN'ini belirtir. Rolün MaxCompute tarafından üstlenilmesi gerekir. Parametre değeri
'acs:ram:${<userAID>}:role/${<roleName>}'biçimindedir. userAID kullanıcı kimliğini ve roleName rol adını belirtir.wrapped_keyset: zorunludur. Bu parametre mevcut bir sarmalanmış anahtar kümesini belirtir.
role_chain: isteğe bağlıdır. Bu parametre, kullanıcı yetkilendirmesi için rol zincirini belirtir. Parametre değeri
'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3>},...'biçimindedir. Rol zincirlerini kullanarak Alibaba Cloud hesapları arasında sarmalanmış anahtar kümelerini çağırabilirsiniz.
-
Dönüş değeri
STRUCT türünde maskelenmiş bir anahtar kümesi döndürülür. İş ihtiyaçlarınıza göre anahtar kümesiyle ilgili alanları almak için
get_json_objectişlevini kullanabilirsiniz. -
Örnek
NotAşağıdaki örnek kodu, değişkenler içeren kod düzenleyicide çalıştırabilir veya değişkenleri SQL deyimine satır içi olarak ekleyebilirsiniz. MaxCompute, SQL deyimleri arasında değişken kapsamını desteklemez.
Sarmalanmış bir anahtar kümesinin anahtar algoritması bilgilerini alın.
@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');Aşağıdaki sonuç döndürülür:
+-----+ | _c0 | +-----+ | AES-GCM-256 | +-----+
ENHANCED_SYM_ENCRYPT
-
Sözdizimi
binary ENHANCED_SYM_ENCRYPT(binary <keyset> , string|binary <plaintext> [,string <additional_data>]) -
Açıklama
MaxCompute, belirtilen bir temel anahtar kümesi veya sarmalanmış anahtar kümesi kullanarak verileri şifrelemek için
ENHANCED_SYM_ENCRYPTişlevini kullanmanıza olanak tanır. Mevcut bir anahtar kümesini Key Management Service (KMS) anahtarına dayalı olarak şifreleyerek sarmalanmış bir anahtar kümesi oluşturabilirsiniz. Temel anahtar kümeleriyle karşılaştırıldığında, sarmalanmış anahtar kümelerini KMS ile kullanarak anahtarları daha güvenli bir şekilde yönetebilirsiniz.ENHANCED_SYM_ENCRYPTişlevini kullanmadan önce aşağıdaki ön koşulların karşılandığından emin olun:NEW_KEYSETveyaNEW_WRAPPED_KEYSETişlevi kullanılarak bir temel anahtar kümesi veya sarmalanmış anahtar kümesi oluşturulmuştur. Daha fazla bilgi için bkz. NEW_KEYSET veya NEW_WRAPPED_KEYSETUSE_WRAPPED_KEYSETişlevi kullanılarak sarmalanmış bir anahtar kümesinden bir temel anahtar kümesi alınmıştır. Verileri şifrelemek için sarmalanmış bir anahtar kümesi kullanmak istiyorsanız bu ön koşulun karşılanması gerekir. Temel anahtar kümesi, verileri şifrelemek içinENHANCED_SYM_ENCRYPTişlevinde parametre olarak kullanılır. Ayrıca, hesabınıza sarmalanmış anahtar kümesini kullanma izinlerine sahip rol atanmıştır.
-
Parametreler
keyset: zorunludur. Bu parametre, BINARY türünde bir temel anahtar kümesi veya STRUCT türünde bir sarmalanmış anahtar kümesi belirtir.
plaintext: zorunludur. Bu parametre, şifrelemek istediğiniz STRING veya BINARY türündeki düz metni belirtir.
additional_data: isteğe bağlıdır. Bu parametre, algoritma tarafından desteklenen doğrulama bilgilerini belirtir. Doğrulama bilgileri STRING türündedir.
-
Dönüş değeri
BINARY türünde şifreli metin döndürülür.
-
Örnek veriler
-- Create a table. create table mf_user_info(id bigint, name string, gender string, id_card_no string, tel string); -- Insert data into the table. insert overwrite table mf_user_info values(1,"bob","male","0001","13900001234"), (2,"allen","male","0011","13900001111"), (3,"kate","female","0111","13900002222"), (4,"annie","female","1111","13900003333"); -- Query data from the table. select * from mf_user_info; +------------+------+--------+------------+------------+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+------------+ | 1 | bob | male | 0001 | 13900001234| | 2 | allen| male | 0011 | 13900001111| | 3 | kate | female | 0111 | 13900002222| | 4 | annie| female | 1111 | 13900003333| +------------+------+--------+------------+------------+ -
Örnekler
-
Bir temel anahtar kümesi kullanarak
mf_user_infotablosundakiid_card_nosütununu şifreleyin.insert overwrite table mf_user_info select id, name, gender, base64(ENHANCED_SYM_ENCRYPT(unhex ('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64'), id_card_no ))as id_card_no, tel from mf_user_info;Aşağıdaki örnek deyim şifreleme sonucunu sorgular:
select * from mf_user_info; -- The following result is returned: +------------+------+--------+------------+-----+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+-----+ | 1 | bob | male | nLcdDFdjO2T4aATtirvDMVeBD8oSuu4BfM3t+Y8ny0kwQjJlAQAwkVhYOocPQll8LmdzSwkRf3v2iTow+TAmnQ== | 13900001234 | | 2 | allen | male | nLcdDFdjO2T4aATtirvDMVeBD8oSuu4BfM3t+Y8ny0kwQjJlAQBgj1hYOodIPdnyZ0ijZ9RmT+50xbxXh5cwcg== | 13900001111 | | 3 | kate | female | nLcdDFdjO2T4aATtirvDMVeBD8oSuu4BfM3t+Y8ny0kwQjJlAQCwp1hYOoentQgkfUqctPbmX96k9eD018xg9Q== | 13900002222 | | 4 | annie | female | nLcdDFdjO2T4aATtirvDMVeBD8oSuu4BfM3t+Y8ny0kwQjJlAQDQqFhYOodexhRmfh6VieEwePZscC4nUVTJXQ== | 13900003333 | +------------+------+--------+------------+-----+ -
Bir sarmalanmış anahtar kümesi kullanarak
mf_user_infotablosundakitelsütununu şifreleyin.-
Sarmalanmış bir anahtar kümesi oluşturun ve bunu bir tabloya yazın.
-- Create a table. create table mf_keyset_kms (id string,ks binary); -- Create a wrapped keyset and write it to the table. insert into mf_keyset_kms select '1', NEW_WRAPPED_KEYSET( 'acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t', 'acs:ram::1**************7:role/kms', 'AES-GCM-256', 'description'); -- Query data from the table. select id,hex(ks) from mf_keyset_kms; -- The following result is returned: +----+-----+ | id | _c1 | +----+-----+ | 1 | 613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78447654524C4632635077766E74554654584579715242583953724167446D2F397131786F57456E6F5474516739633853766242674456773565736674714A4D5435524455382F6F6A2B4E61766D774344494C734B6A416B6B675A42496F5568656F566D38564C4F30506D4778767137646956517453447A5467395147775639533161305A464A6D6A45562B6742722F56386653444D6E424D2B71493779784668303866594E6D336578775744423949726B645A3469784F2B532B476E6750523854524A58326E5768666478347034473468687248684A514D615071332F526C342B67427652773D3D | +----+-----+ -
Sarmalanmış anahtar kümesini kullanarak
telsütununu şifreleyin.select /*+ MAPJOIN(a) */ id, name, gender, id_card_no, ENHANCED_SYM_ENCRYPT( USE_WRAPPED_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t', 'acs:ram::1**************7:role/kms', unhex('613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78447654524C4632635077766E74554654584579715242583953724167446D2F397131786F57456E6F5474516739633853766242674456773565736674714A4D5435524455382F6F6A2B4E61766D774344494C734B6A416B6B675A42496F5568656F566D38564C4F30506D4778767137646956517453447A5467395147775639533161305A464A6D6A45562B6742722F56386653444D6E424D2B71493779784668303866594E6D336578775744423949726B645A3469784F2B532B476E6750523854524A58326E5768666478347034473468687248684A514D615071332F526C342B67427652773D3D') ), tel ) as tel FROM mf_user_info;Aşağıdaki sonuç döndürülür:
+------------+------+--------+------------+------+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+------+ | 1 | bob | male | 0001 | =F1=EEa=13V9=CCsB=90=E7=F3fl=D2=CB=F31=D8=3D=88=B7=F7=0CnG=E3\R=FC)=F2=10=3D2e=01=00=90=86=05=94z;=18=A6j=1CN=E5=9F=AC)=8D=D6=D8=0D=A2Y{kq=EE=F4~=C4=A7=9BS=A1w | | 2 | allen | male | 0011 | =F1=EEa=13V9=CCsB=90=E7=F3fl=D2=CB=F31=D8=3D=88=B7=F7=0CnG=E3\R=FC)=F2=10=3D2e=01=00=20=AA=05=94z;=85=D8=08a=A2]=02d=20=B1=C3=AE=AF=1C{=EB=EA=C4=81=B5A=15=1BR=F7g=9B | | 3 | kate | female | 0111 | =F1=EEa=13V9=CCsB=90=E7=F3fl=D2=CB=F31=D8=3D=88=B7=F7=0CnG=E3\R=FC)=F2=10=3D2e=01=00=20=B6=05=94z;[C=12=81=8B<=C1=9D=E2=CF=CE=BC=AE=A7=84=0F[=7CI=B9=B7=9D=DD=89=A8=FD! | | 4 | annie | female | 1111 | =F1=EEa=13V9=CCsB=90=E7=F3fl=D2=CB=F31=D8=3D=88=B7=F7=0CnG=E3\R=FC)=F2=10=3D2e=01=00=00=A2=05=94z;E=03A=BC=7C=88=CFJ=14=B9=BD=A1=BF=ED=20=11=A3=A6/+%=0Fe=DD=C7=C8=0A | +------------+------+--------+------------+------+
-
-
ENHANCED_SYM_DECRYPT
-
Sözdizimi
BINARY ENHANCED_SYM_DECRYPT(BINARY <keyset> , BINARY <ciphertext> [,string <additional_data>]) -
Açıklama
MaxCompute'ta belirtilen bir temel veya sarmalanmış anahtar kümesiyle verilerin şifresini çözmek için
ENHANCED_SYM_DECRYPTişlevini kullanabilirsiniz. Şifre çözme için kullanılan anahtar kümesi, şifreleme için kullanılanla aynı olmalıdır. Sarmalanmış bir anahtar kümesi, mevcut bir anahtar kümesinin Key Management Service (KMS) anahtarıyla şifrelenmesiyle oluşturulur. Sarmalanmış anahtar kümelerini KMS ile kullanarak anahtarları temel anahtar kümelerine göre daha güvenli bir şekilde yönetebilirsiniz.ENHANCED_SYM_DECRYPTişlevini kullanmadan önce aşağıdaki işlemleri tamamlayın:NEW_KEYSETveyaNEW_WRAPPED_KEYSETişlevini kullanarak bir temel anahtar kümesi veya sarmalanmış anahtar kümesi oluşturun. Daha fazla bilgi için bkz. NEW_KEYSET ve NEW_WRAPPED_KEYSET.Verilerin şifresini çözmek için sarmalanmış bir anahtar kümesi kullanıyorsanız, sarmalanmış anahtar kümesiyle ilişkili rol için izinlere sahip olmanız gerekir. Daha fazla bilgi için bkz. KMS'yi etkinleştirin ve yapılandırmaları tamamlayın.
-
Parametreler
keyset: Zorunludur. Kullanıcı anahtar kümesidir ve BINARY veya STRUCT türünde olabilir.
ÖnemliŞifre çözme için kullanılan temel veya sarmalanmış anahtar kümesi, şifreleme için kullanılanla aynı olmalıdır.
ciphertext: Zorunludur. Şifresi çözülecek BINARY türündeki şifreli metindir. Şifreli metin, belirtilen anahtar kümesiyle şifrelenmiş olmalıdır.
additional_data: isteğe bağlıdır. Bu parametre, algoritma tarafından desteklenen doğrulama bilgilerini belirtir. Doğrulama bilgileri STRING türündedir.
-
Dönüş değeri
BINARY türünde düz metin döndürür.
-
Örnek veriler
-- Create a table. create table mf_user_info(id bigint, name string, gender string, id_card_no string, tel string); -- Insert data into the table. insert overwrite table mf_user_info values(1,"bob","male","0001","13900001234"), (2,"allen","male","0011","13900001111"), (3,"kate","female","0111","13900002222"), (4,"annie","female","1111","13900003333"); -- Query data from the table. select * from mf_user_info; +------------+------+--------+------------+------------+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+------------+ | 1 | bob | male | 0001 | 13900001234| | 2 | allen| male | 0011 | 13900001111| | 3 | kate | female | 0111 | 13900002222| | 4 | annie| female | 1111 | 13900003333| +------------+------+--------+------------+------------+ -
Örnekler
-
Düz bir anahtar kümesi kullanarak
mf_user_infotablosundakiid_card_nosütununun şifresini çözün:ÖnemliVerilerin şifresini çözmeden önce şifrelendiğinden emin olun. Şifre çözme için kullanılan temel veya sarmalanmış anahtar kümesi, şifreleme için kullanılanla aynı olmalıdır. Şifreleme işlemi örneği için bkz. ENHANCED_SYM_ENCRYPT.
INSERT OVERWRITE TABLE mf_user_info SELECT id, name, gender, CAST(ENHANCED_SYM_DECRYPT(unhex('0A1072384D715A414541385044643351534C12580A330A0B4145532D47434D2D323536122026A8FB1126DF4F5B5DD03C180E6919565D7716CBB291815EFB5BBF30F8BEF9AF1801200210011A1072384D715A414541385044643351534C20022A0B68656C6C6F20776F726C64'), UNBASE64(id_card_no)) AS STRING) AS id_card_no, tel FROM mf_user_info;Aşağıdaki sonuç döndürülür:
SELECT * FROM mf_user_info; -- Sample result +------------+------+--------+------------+------------+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+------------+ | 1 | bob | male | 0001 | 13900001234| | 2 | allen| male | 0011 | 13900001111| | 3 | kate | female | 0111 | 13900002222| | 4 | annie| female | 1111 | 13900003333| +------------+------+--------+------------+------------+ -
Sarmalanmış bir anahtar kümesi kullanarak
teltablosundaki şifrelenmişmf_user_infosütununun şifresini çözün:SELECT /*+ MAPJOIN(a) */ id, name, gender, id_card_no, ENHANCED_SYM_DECRYPT( USE_WRAPPED_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t', 'acs:ram::1**************7:role/kms', unhex('613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78447654524C4632635077766E74554654584579715242583953724167446D2F397131786F57456E6F5474516739633853766242674456773565736674714A4D5435524455382F6F6A2B4E61766D774344494C734B6A416B6B675A42496F5568656F566D38564C4F30506D4778767137646956517453447A5467395147775639533161305A464A6D6A45562B6742722F56386653444D6E424D2B71493779784668303866594E6D336578775744423949726B645A3469784F2B532B476E6750523854524A58326E5768666478347034473468687248684A514D615071332F526C342B67427652773D3D') ), ENHANCED_SYM_ENCRYPT( USE_WRAPPED_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz****************1t', 'acs:ram::1**************7:role/kms', unhex('613256354C576836656A59314D6D59344E7A6B7A624452754D6D3434627A49786443317A655859786358426F4E6A4D78447654524C4632635077766E74554654584579715242583953724167446D2F397131786F57456E6F5474516739633853766242674456773565736674714A4D5435524455382F6F6A2B4E61766D774344494C734B6A416B6B675A42496F5568656F566D38564C4F30506D4778767137646956517453447A5467395147775639533161305A464A6D6A45562B6742722F56386653444D6E424D2B71493779784668303866594E6D336578775744423949726B645A3469784F2B532B476E6750523854524A58326E5768666478347034473468687248684A514D615071332F526C342B67427652773D3D') ), tel ), '' ) AS tel FROM mf_user_info;Aşağıdaki sonuç döndürülür:
+------------+------+--------+------------+------+ | id | name | gender | id_card_no | tel | +------------+------+--------+------------+------+ | 1 | bob | male | 0001 | 13900001234 | | 2 | allen | male | 0011 | 13900001111 | | 3 | kate | female | 0111 | 13900002222 | | 4 | annie | female | 1111 | 13900003333 | +------------+------+--------+------------+------+
-