MaxCompute with Key Management Service (KMS) を使用してキーを管理できます。 このトピックでは、REWRAP_KEYSET関数を使用して、指定されたKMSキーを使用してラップされたキーセットを再暗号化する方法について説明します。
背景情報と前提条件
MaxComputeとKMSを使用してキーを管理できます。 KMSキーに基づいてキーセットを暗号化することで、ラップされたキーセットを生成できます。 REWRAP_KEYSET関数は、新しいKMSキーを使用して、NEW_WRAPPED_keyset関数を使用して生成されたラップされたキーセットを再暗号化します。
REWRAP_KEYSET関数を使用する前に、次の前提条件が満たされていることを確認してください。
ラップされたキーセットは、
NEW_WRAPPED_keyset関数を使用して生成されます。 詳細については、「NEW_WRAPPED_KEYSET」をご参照ください。KMSキーが作成され、kms_cmk_arnで指定されたキーARNが取得されます。 RAMロールには、新しいキーを使用する権限が付与されます。
構文
binary REWRAP_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset>, [string <role_chain>])Parameters
kms_cmk_arn: 必須です。 このパラメーターには、ラップされたキーセットを再暗号化するために使用するKMSカスタマーマスターキー (CMK) のARNを指定します。 パラメーター値の形式は
'acs:kms:<RegionId >:< UserId>:key/<CmkId>'です。 RegionIdはリージョンIDを指定し、UserIdはユーザーIDを指定し、CmkIdはCMK IDを指定します。 ARNは、KMSコンソールの [キーの詳細] ページから取得できます。role_arn: 必須です。 このパラメーターには、古いKMSキーと新しいKMSキーの両方に対する権限を持つRAMロールのARNを指定します。 RAMロールはMaxComputeによって引き受けられる必要があります。 パラメーター値の形式は
'acs:ram :${< userAID >}: role/${< roleName>}'です。 userAIDはユーザーIDを指定し、roleNameはロール名を指定します。wrapp_keyset: 必須です。 このパラメーターは、再暗号化するラップされたキーセットを指定します。
role_chain: オプションです。 このパラメーターには、ユーザー権限付与の役割チェーンを指定します。 パラメータ値は、
'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3 >},...'の形式である。 ロールチェーンを使用して、Alibaba Cloudアカウント全体でラップされたキーセットを呼び出すことができます。
戻り値
BINARY型のラップされたキーセットが返されます。 HEX関数を使用して、ビジネス要件に基づいて、BINARY型のラップされたキーセットをSTRING型のキーセットに変換できます。 HEX関数の詳細については、「HEX」をご参照ください。
例
次のサンプルコードには変数が含まれています。 スクリプトモードでコードを実行するか、SQL文の変数を実際の値に置き換える必要があります。
ラップされたキーセットを再暗号化します。
@origin_key := unhex('<wrapped_keyset>'); select hex(REWRAP_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz******************', 'acs:ram::1**************7:role/kms', @origin_key));ラップされたキーセットを再暗号化し、他のAlibaba Cloudアカウントがラップされたキーセットを呼び出すことを許可します。
@origin_key := unhex('<wrapped_keyset>'); @role_chain := 'acs:ram:${<UserAId>}:role/${<roleName2>},acs:ram:${<UserBId>}:role/${<roleName3>}'; select hex(REWRAP_KEYSET('acs:kms:cn-hangzhou:1**************7:key/key-hzz******************', 'acs:ram:${<UserId>}:role/${<roleName>}', @origin_key, @role_chain));