MaxCompute'de anahtar kümesi, bir veya daha fazla şifreleme anahtarını yönetir. Anahtar rotasyonu için anahtar kümesine anahtar ekleyebilir ve orijinal anahtar materyalini inceleyebilirsiniz.
Notlar
Anahtar kümelerinizi ve şifre çözme parametrelerinizi güvenli bir şekilde saklamanız gerekir. Bunlar kaybolursa, anahtar kümesiyle şifrelenen veriler kalıcı olarak kurtarılamaz.
Verileri hazırlayın
mf_test_data adlı bir tablo oluşturun ve içine örnek veri ekleyin.
-- Create a table.
create table mf_test_data(id string,name string,tel string);
-- Insert data.
insert into mf_test_data values(1,'kyle','13900001234'),(2,'tom','13900001111');
-- Query the data.
select * from mf_test_data;
-- The following result is returned:
+----+------+-----+
| id | name | tel |
+----+------+-----+
| 1 | kyle | 13900001234 |
| 2 | tom | 13900001111 |
+----+------+-----+
Standart anahtar kümelerini kullanın
-
Örnek 1: Yeni bir anahtar kümesi oluşturun.
select NEW_KEYSET('AES-GCM-256', 'my first keyset');Sonuç aşağıdaki gibidir.
+------+ | _c0 | +------+ | =0A=10260nZQEAMAsSF7mB=12\=0A3=0A=0BAES-GCM-256=12=20=C4t=13+=8E=DD=9D=E8=A0=AA=B4=ED~1`=B7=C6=D0K=D3=FC=D4n=DF=DF=D4=C3)=E8=96=0E=17=18=01=20=02=10=01=1A=10260nZQEAMAsSF7mB=20=02*=0Fmy=20first=20keyset | +------+ -
Örnek 2: Bir anahtar kümesinin düz metin JSON temsilini görüntüleyin.
select KEYSET_TO_JSON(NEW_KEYSET('AES-GCM-256', 'my first keyset'));Sonuç aşağıdaki gibidir.
+-----+ | _c0 | +-----+ | { "key": [{ "description": "my first keyset", "key_id": "Ra4nZQEAoBuiGbmB", "key_meta_data": { "key_material_origin": "Origin_ALIYUN_MAXCOMPUTE", "key_material_type": "SYMMETRIC", "type": "AES-GCM-256", "value": "/LFKWhw18hz+OBO490YKmjQQDNVWJLOueaUAKKiem/k="}, "output_prefix_type": "PREFIX_ALIYUN_MAXCOMPUTE", "status": "ENABLED"}], "primary_key_id": "Ra4nZQEAoBuiGbmB"} | -
Örnek 3: Anahtar kümesine yeni bir anahtar ekleyin ve bunu birincil anahtar olarak ayarlayın.
-
Mevcut bir
AES-GCM-256anahtarı içeren anahtar kümesine birAES-SIV-CMAC-128anahtarı ekleyin.select KEYSET_TO_JSON( ADD_KEY_TO_KEYSET( NEW_KEYSET('AES-GCM-256', 'my first keyset'), 'AES-SIV-CMAC-128', unhex('b75585cf321cdcad42451690cdb7bfc49c26092f60f854e72d43244c55620a3d'), '' ) );Sonuç aşağıdaki gibidir.
+-----+ | _c0 | +-----+ | { "key": [{ "description": "my first keyset", "key_id": "+q8nZQEAgAMtJLmB", "key_meta_data": { "key_material_origin": "Origin_ALIYUN_MAXCOMPUTE", "key_material_type": "SYMMETRIC", "type": "AES-GCM-256", "value": "Hj//ZKxLE/t0Uq7XRJQoe2OYNwlauDdGmkaQbMfnZ80="}, "output_prefix_type": "PREFIX_ALIYUN_MAXCOMPUTE", "status": "ENABLED"}, { "description": "", "key_id": "+q8nZQEAML2VArmB", "key_meta_data": { "key_material_origin": "Origin_RAW", "key_material_type": "SYMMETRIC", "type": "AES-SIV-CMAC-128", "value": "t1WFzzIc3K1CRRaQzbe/xJwmCS9g+FTnLUMkTFViCj0="}, "output_prefix_type": "PREFIX_ALIYUN_MAXCOMPUTE", "status": "ENABLED"}], "primary_key_id": "+q8nZQEAML2VArmB"} | +-----+ -
Bu işlev otomatik olarak yeni bir anahtar oluşturur ve onu birincil anahtar olarak ayarlar.
select KEYSET_TO_JSON( ROTATE_KEYSET( NEW_KEYSET('AES-GCM-256', 'my first keyset'), 'AES-GCM-256') );Sonuç aşağıdaki gibidir.
+-----+ | _c0 | +-----+ | { "key": [{ "description": "my first keyset", "key_id": "TbEnZQEAUIEJC7mB", "key_meta_data": { "key_material_origin": "Origin_ALIYUN_MAXCOMPUTE", "key_material_type": "SYMMETRIC", "type": "AES-GCM-256", "value": "TLAKX8y0/aUbMAtElI+oicEw1fWSTJhZs1D2i3AAf40="}, "output_prefix_type": "PREFIX_ALIYUN_MAXCOMPUTE", "status": "ENABLED"}, { "key_id": "TbEnZQEAAIy0IrmB", "key_meta_data": { "key_material_origin": "Origin_ALIYUN_MAXCOMPUTE", "key_material_type": "SYMMETRIC", "type": "AES-GCM-256", "value": "jPewQsmbsajzM/gLNX9QFtENs2n9uvhgrgcrcGgl0A0="}, "output_prefix_type": "PREFIX_ALIYUN_MAXCOMPUTE", "status": "ENABLED"}], "primary_key_id": "TbEnZQEAAIy0IrmB"} | +-----+
-
-
Örnek 4: Verileri şifreleyin ve şifresini çözün.
-
mf_keysetadlı bir tablo oluşturun ve anahtar kümesini bu tabloya yazın.-- Create a table. create table mf_keyset (id string,ks binary); -- Create a keyset and insert it into the mf_keyset table. insert into mf_keyset select '1',NEW_KEYSET('AES-GCM-256', 'my first keyset'); -
mf_test_datatablosundaki tel sütununu şifreleyin ve şifresini çözün.-
mf_test_datatablosundaki tel sütununu şifreleyin.select id, name, ENHANCED_SYM_ENCRYPT(ks,tel) as tel from (SELECT id,name,tel FROM mf_test_data) JOIN (SELECT ks FROM mf_keyset WHERE id = '1') a ;Sonuç aşağıdaki gibidir.
+----+------+------+ | id | name | tel | +----+------+------+ | 1 | kyle | =0B=88=A5=0Ak=AD=E0=9A=B4=EC=CC=1F=F9=DEk\=16=0F=BD=F1=03=8B=95=F0@=88s=EE=1E=8A=D2=05=83=B5'e=01=00=A0=C5=0BXu=A5Z&<=01=F8=C5Q=89=A9=A6=80=E2=0F=1A)=02fa=CF=07'=1B'=EB=FD=CF=E9 | | 2 | tom | =0B=88=A5=0Ak=AD=E0=9A=B4=EC=CC=1F=F9=DEk\=16=0F=BD=F1=03=8B=95=F0@=88s=EE=1E=8A=D2=05=83=B5'e=01=00=10=FC=0BXu=A5+3=D5=1Fb=C0=88=AC=90=AA=FE!C=F0=99y&=9C=89=0E=9B=8FD=16=E0=96, | +----+------+------+ -
mf_test_datatablosundaki tel sütununun şifresini çözün.select id, name, ENHANCED_SYM_DECRYPT(ks, ENHANCED_SYM_ENCRYPT(ks,tel), '')as tel from (SELECT id,name,tel FROM mf_test_data) JOIN (SELECT ks FROM mf_keyset WHERE id = '1') a ;Sonuç aşağıdaki gibidir.
+----+------+------+ | id | name | tel | +----+------+------+ | 1 | kyle | 13900001234 | | 2 | tom | 13900001111 | +----+------+------+
-
-
KMS ile anahtar kümelerini kullanın
MaxCompute, veri şifrelemeyi geliştirmek için Key Management Service (KMS) ile entegre çalışır. Önce verileri şifrelemek ve şifresini çözmek için standart bir anahtar kümesi oluşturulur, ardından bu küme bir KMS anahtarıyla şifrelenerek kaydetmeniz gereken sarmalanmış bir anahtar kümesi oluşturulur. Verileri şifrelerken veya şifresini çözerken sarmalanmış anahtar kümesini sağlarsınız ve MaxCompute, işlem için orijinal anahtar kümesini geçici olarak geri yüklemek üzere KMS anahtarını kullanarak sarımı açar.
Aşağıdaki diyagram bu iş akışını göstermektedir.

KMS'yi etkinleştirin ve izinleri yapılandırın
KMS'yi etkinleştirin ve bir yazılım anahtar yönetimi örneği satın alın. Daha fazla bilgi için bkz. KMS örneği satın alma ve etkinleştirme.
-
Bir anahtar oluşturun ve ARN'sini Anahtar Ayrıntıları sayfasından edinin. Daha fazla bilgi için bkz. Anahtar Yönetimine Giriş.
Bu örnekte, oluşturulan anahtarın ARN değeri
acs:kms:cn-beijing:189273228874****:key/key-bjj6527b6c6465hsf****şeklindedir. -
MaxCompute'e şifreleme ve şifre çözme için gerekli KMS izinlerini verin.
NotBir MaxCompute anahtar kümesini KMS ile sarmaladıktan sonra, MaxCompute'e gerekli KMS izinlerini vermeniz gerekir. Aksi takdirde, sonraki şifreleme ve şifre çözme komutları başarısız olur.
Şu adımları izleyin:
Bir RAM rolü oluşturun. trusted entity type değerini Alibaba Cloud Service olarak, Trusted Service değerini ise MaxCompute olarak ayarlayın. Daha fazla bilgi için bkz. Güvenilen bir Alibaba Cloud hizmeti için RAM rolü oluşturma.
-
Oluşturduğunuz role, MaxCompute'e şifreleme ve şifre çözme için gerekli izinleri vermek amacıyla AliyunKMSCryptoUserAccess sistem ilkesini ekleyin. Daha fazla bilgi için bkz. RAM rolüne izin verme.
USER_A adlı bir Alibaba Cloud hesabı bu adımları gerçekleştirirse, anahtar kümesini şifreleyebilir.
Bu örnekte, RAM rolünün adı
mf-secrve ARN değeriacs:ram::189273228874****:role/mf-secrşeklindedir.
-
(İsteğe bağlı) Aynı hesaptaki (USER_A) veya başka bir hesaptaki (USER_B) bir RAM kullanıcısının şifreleme ve şifre çözme işlemlerini gerçekleştirmesine izin vermek için aşağıdaki izinleri vermeniz gerekir.
USER_A'nın RAM kullanıcısını kullanma
RAM kullanıcısının
mf-secrrolünü kullanmasına izin vermek için,mf-secrrolü üzerinderam:PassRoleizni veren bir ilke oluşturun ve bunu RAM kullanıcısına ekleyin. Daha fazla bilgi için bkz. RAM kullanıcısına izin verme. Aşağıdaki örnek kod, örnek bir ilke sağlar.{ "Statement": [ { "Effect": "Allow", "Action": "ram:PassRole", "Resource": "acs:ram:*:*:role/mf-secr" } ], "Version": "1" }USER_B ve RAM kullanıcılarını kullanma
ÖnemliHesaplar arası şifreleme ve şifre çözme için, ilgili işlevlerde
role_chainparametresini belirtmeniz gerekir. Aşağıdaki örnekteki rollere göre, parametre'acs:ram::188538605451****:role/b-secr,acs:ram::189273228874****:role/mf-secr2b'olacaktır.Şu adımları izleyin:
Alibaba Cloud hesabı USER_A'da yeni bir RAM rolü (örneğin,
mf-secr2b) oluşturun. trusted entity type değerini Alibaba Cloud Account olarak ayarlayın ve güvenilir hesap olarak USER_B'yi belirtin. Daha fazla bilgi için bkz. Güvenilen bir Alibaba Cloud hesabı için RAM rolü oluşturma.mf-secr2brolüne,mf-secrrolü üzerinderam:PassRoleizni verin. Örnek bir ilke için bkz. Şifreleme ve şifre çözme işlemlerini gerçekleştirmek için USER_A'nın RAM kullanıcısını kullanma.Alibaba Cloud hesabı USER_B'de yeni bir RAM rolü (örneğin,
b-secr) oluşturun. trusted entity type değerini Alibaba Cloud Service olarak, Trusted Service değerini ise MaxCompute olarak ayarlayın. Daha fazla bilgi için bkz. Güvenilen bir Alibaba Cloud hizmeti için RAM rolü oluşturma.-
b-secrrolüne,mf-secr2brolü üzerindests:AssumeRoleizni verin. Aşağıdaki örnek kod, örnek bir ilke sağlar.{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "acs:ram:*:189273228874****:role/mf-secr2b" } ] } -
(İsteğe bağlı) USER_B'nin bir RAM kullanıcısının şifreleme ve şifre çözme işlemlerini gerçekleştirmesi gerekiyorsa, bu kullanıcıya
b-secrrolü üzerinderam:PassRoleizni de vermeniz gerekir. Aşağıdaki örnek kod, örnek bir ilke sağlar.{ "Statement": [ { "Effect": "Allow", "Action": "ram:PassRole", "Resource": "acs:ram:*:*:role/b-secr" } ], "Version": "1"
KMS ile verileri şifreleyin ve şifresini çözün
-
Örnek 1: Yeni bir sarmalanmış anahtar kümesi oluşturun.
select hex(NEW_WRAPPED_KEYSET('acs:kms:cn-beijing:189273228874****:key/key-bjj6527b6c6465hsf****', 'acs:ram::189273228874****:role/mf-secr', 'AES-GCM-256', 'hello'));Sonuç aşağıdaki gibidir.
+-----+ | _c0 | +-----+ | 613256354C574A71616A59314D6A64694E6D4D324E44593161484E6D65576732595331315A586435646D4678596A6C36555437693738632B647070524B46334E5263497567384A6B36716C4E54354133734F6E4776376258453132524E6C4B6E5163703859787132536C6D794F6E4A6975797541745448374F6B5132412B4B6947502F4A7530756477694B736B503033576643726E45646D666F6F324D61774F7A452F4F55314A51643268397941384F6B425644665A59746D3968775576536E543744684276723773464A714A47394D7770765064484B6A457A6F4A3533716E57766F4339634639413348556E433641434A6438444170583275326B2B4177776941487668575279304941445031373461794A2F50773D3D | +-----+ -
Örnek 2: Sarmalanmış bir anahtar kümesini yeniden şifreleyin.
select REWRAP_KEYSET('acs:kms:cn-beijing:189273228874****:key/key-bjj6527b6c6465hsf****', 'acs:ram::189273228874****:role/mf-secr', unhex('613256354C574A71616A59314D6A64694E6D4D324E44593161484E6D65576732595331315A586435646D4678596A6C36555437693738632B647070524B46334E5263497567384A6B36716C4E54354133734F6E4776376258453132524E6C4B6E5163703859787132536C6D794F6E4A6975797541745448374F6B5132412B4B6947502F4A7530756477694B736B503033576643726E45646D666F6F324D61774F7A452F4F55314A51643268397941384F6B425644665A59746D3968775576536E543744684276723773464A714A47394D7770765064484B6A457A6F4A3533716E57766F4339634639413348556E433641434A6438444170583275326B2B4177776941487668575279304941445031373461794A2F50773D3D'));Sonuç aşağıdaki gibidir.
+------+ | _c0 | +------+ | a2V5LWJqajY1MjdiNmM2NDY1aHNmeWg2YS11ZXd5dmFxYjl60Kftgx5o1sQH4kkwRboFSYUmcVKjF1GKF+JU5gKSp3xOF1xjKdb6fGZyNuD4YSAzqNTD7x7j5fzTLW2+9a+8BmS1z3ZP1RjNL6Lp93FAC4NWg/jtggh6WOTXrVoG67/CfzdWro65YDTPZpe52K416gpfW18GXSOzu9q4swMti0UrScl/fTg6eOIMYgoPCfBh9qvXhNSR72J+qXU1vHcyYNQL6UewsBE2suVRFQ=3D=3D | -
Örnek 3: Anahtar rotasyonu yapın.
select ROTATE_WRAPPED_KEYSET('acs:kms:cn-beijing:189273228874****:key/key-bjj6527b6c6465hsf****', 'acs:ram::189273228874****:role/mf-secr', unhex('613256354C574A71616A59314D6A64694E6D4D324E44593161484E6D65576732595331315A586435646D4678596A6C36555437693738632B647070524B46334E5263497567384A6B36716C4E54354133734F6E4776376258453132524E6C4B6E5163703859787132536C6D794F6E4A6975797541745448374F6B5132412B4B6947502F4A7530756477694B736B503033576643726E45646D666F6F324D61774F7A452F4F55314A51643268397941384F6B425644665A59746D3968775576536E543744684276723773464A714A47394D7770765064484B6A457A6F4A3533716E57766F4339634639413348556E433641434A6438444170583275326B2B4177776941487668575279304941445031373461794A2F50773D3D'), 'AES-GCM-256', 'descrption');Sonuç aşağıdaki gibidir.
+------+ | _c0 | +------+ | a2V5LWJqajY1MjdiNmM2NDY1aHNmeWg2YS11ZXd5dmFxYjl67ZxGgfbQhsOududp3FuxLFW1qWt7fF2fT2mAqFekH3D/SoooVf1Jgj0dS/3kxHLQImthef+fCca5vRbVYbOeSsjhGI841WhJvYE1KzRuTpV04SpzVimCovlPPiYCm1649Vhkua1/zUu2W0ioCPnXzHIANhoOIXM2mAV+EfuRCjLUtcJhMdCnu+whHwkGXMYugtXmLxZIBHaJNvO9I3tntplTzxElVmj/LpDrAkg0mKahLJa7FhcJ8cn/JHjp9sk0MhHQc/5X14vHBJuulkYkukcF/kZ+AFVfWes5pZOMs8Og3pYEjCESMiiMONy/CpIrYepapgsKqRAmCGxRv/7aDOZyaAV5Jdz31NotMCBi/hrYBwyU0QdAq5pvsOEdXVIJyazViQ=3D=3D | +------+ -
Örnek 4: Verileri şifreleyin ve şifresini çözün.
-
mf_keyset_kmsadlı bir tablo oluşturun ve sarmalanmış anahtar kümesini bu tabloya yazın.-- Create a table. create table mf_keyset_kms (id string,ks binary); -- Generate a wrapped keyset and write it to the table. insert into mf_keyset_kms select '1', NEW_WRAPPED_KEYSET( 'acs:kms:cn-beijing:189273228874****:key/key-bjj6527b6c6465hsf****', 'acs:ram::189273228874****:role/mf-secr', 'AES-GCM-256', 'description');Anahtar kümesinin yazıldığını doğrulayın.
-- Query the table. select id,hex(ks) from mf_keyset_kms; -- The following result is returned: +----+------+ | id | ks | +----+------+ | 1 | 613256354C574A71616A59314D6A64694E6D4D324E44593161484E6D65576732595331315A586435646D4678596A6C36555437693738632B647070524B46334E5263497567384A6B36716C4E54354133734F6E4776376258453132524E6C4B6E5163703859787132536C6D794F6E4A6975797541745448374F6B5132412B4B6947502F4A7530756477694B736B503033576643726E45646D666F6F324D61774F7A452F4F55314A51643268397941384F6B425644665A59746D3968775576536E543744684276723773464A714A47394D7770765064484B6A457A6F4A3533716E57766F4339634639413348556E433641434A6438444170583275326B2B4177776941487668575279304941445031373461794A2F50773D3D | -
mf_test_datatablosundaki tel sütununu şifreleyin ve şifresini çözün.-
mf_test_datatablosundaki tel sütununu şifreleyin.-- Encrypt the tel column. The keyset must be provided as a constant. select id, name, ENHANCED_SYM_ENCRYPT( USE_WRAPPED_KEYSET('acs:kms:cn-beijing:189273228874****:key/key-bjj6527b6c6465hsf****', 'acs:ram::189273228874****:role/mf-secr', unhex('613256354C574A71616A59314D6A64694E6D4D324E44593161484E6D65576732595331315A586435646D4678596A6C36555437693738632B647070524B46334E5263497567384A6B36716C4E54354133734F6E4776376258453132524E6C4B6E5163703859787132536C6D794F6E4A6975797541745448374F6B5132412B4B6947502F4A7530756477694B736B503033576643726E45646D666F6F324D61774F7A452F4F55314A51643268397941384F6B425644665A59746D3968775576536E543744684276723773464A714A47394D7770765064484B6A457A6F4A3533716E57766F4339634639413348556E433641434A6438444170583275326B2B4177776941487668575279304941445031373461794A2F50773D3D') ), tel ) as tel FROM mf_test_data;Sonuç aşağıdaki gibidir.
+----+------+------+ | id | name | tel | +----+------+------+ | 1 | kyle | =1A=B88=F7=C5A=DF=DC=91=A6R=F8{=EB=A5_x=AD=AF=FF=9A=14=D81<=8BO=EB=F5=D3Jn=E8=0ESe=01=00=A0=AC=0D=C8=0De=B9=E4=84=AB=F0f=AE~Dt=C5W=FAx=A5=11=01t=95=DF=FA/-=BC7=C5G | | 2 | tom | =1A=B88=F7=C5A=DF=DC=91=A6R=F8{=EB=A5_x=AD=AF=FF=9A=14=D81<=8BO=EB=F5=D3Jn=E8=0ESe=01=00=B0=BF=0D=C8=0DejL{;.w0=80,=E6=86V@b=F3=AB=DEY=A6=02=07=001=E0[=E7V | +----+------+------+ -
mf_test_datatablosundaki tel sütununun şifresini çözün.select id, name, ENHANCED_SYM_DECRYPT( USE_WRAPPED_KEYSET('acs:kms:cn-beijing:189273228874****:key/key-bjj6527b6c6465hsf****', 'acs:ram::189273228874****:role/mf-secr', unhex('613256354C574A71616A59314D6A64694E6D4D324E44593161484E6D65576732595331315A586435646D4678596A6C36555437693738632B647070524B46334E5263497567384A6B36716C4E54354133734F6E4776376258453132524E6C4B6E5163703859787132536C6D794F6E4A6975797541745448374F6B5132412B4B6947502F4A7530756477694B736B503033576643726E45646D666F6F324D61774F7A452F4F55314A51643268397941384F6B425644665A59746D3968775576536E543744684276723773464A714A47394D7770765064484B6A457A6F4A3533716E57766F4339634639413348556E433641434A6438444170583275326B2B4177776941487668575279304941445031373461794A2F50773D3D') ), ENHANCED_SYM_ENCRYPT( USE_WRAPPED_KEYSET('acs:kms:cn-beijing:189273228874****:key/key-bjj6527b6c6465hsf****', 'acs:ram::189273228874****:role/mf-secr', unhex('613256354C574A71616A59314D6A64694E6D4D324E44593161484E6D65576732595331315A586435646D4678596A6C36555437693738632B647070524B46334E5263497567384A6B36716C4E54354133734F6E4776376258453132524E6C4B6E5163703859787132536C6D794F6E4A6975797541745448374F6B5132412B4B6947502F4A7530756477694B736B503033576643726E45646D666F6F324D61774F7A452F4F55314A51643268397941384F6B425644665A59746D3968775576536E543744684276723773464A714A47394D7770765064484B6A457A6F4A3533716E57766F4339634639413348556E433641434A6438444170583275326B2B4177776941487668575279304941445031373461794A2F50773D3D') ), tel ), '' ) as tel FROM mf_test_data;Sonuç aşağıdaki gibidir.
+----+------+------+ | id | name | tel | +----+------+------+ | 1 | kyle | 13900001234 | | 2 | tom | 13900001111 | +----+------+------+
-
-