すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:ROTATE_WRAPPED_KEYSET

最終更新日:Jan 17, 2025

MaxCompute with Key Management Service (KMS) を使用してキーを管理できます。 このトピックでは、ROTATE_WRAPPED_KEYSET関数を使用してラップされたキーセットを復号し、キーローテーションを実装し、新しいキーを使用してデータを暗号化する方法について説明します。

背景情報と前提条件

MaxComputeとKMSを使用してキーを管理できます。 KMSキーに基づいてキーセットを暗号化することで、ラップされたキーセットを生成できます。 ROTATE_WRAPPED_KEYSET関数は、新しいKMSキーと新しいキーアルゴリズムを使用して、NEW_WRAPPED_keyset関数を使用して生成されたラップされたキーセットを再暗号化します。 REWRAP_KEYSET関数と比較して、ROTATE_WRAPPED_KEYSET関数は、再暗号化のために新しい鍵アルゴリズムを使用することができる。

ROTATE_WRAPPED_KEYSET関数を使用する前に、次の前提条件が満たされていることを確認してください。

  • ラップされたキーセットは、NEW_WRAPPED_keyset関数を使用して生成されます。 詳細については、「NEW_WRAPPED_KEYSET」をご参照ください。

  • KMSキーが作成され、kms_cmk_arnで指定されたキーARNが取得されます。 RAMロールには、新しいキーを使用する権限が付与されます。

構文

binary ROTATE_WRAPPED_KEYSET(string <kms_cmk_arn> , string <role-arn>, string <wrapped_keyset>,string <key_type> [,string description,[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を指定します。 パラメーター値の形式は 'acs:ram :${< userAID >}: role/${< roleName>}' です。 userAIDはユーザーIDを指定し、roleNameはロール名を指定します。

  • wrapp_keyset: 必須です。 このパラメーターは、再暗号化するラップされたキーセットを指定します。

  • key_type: 必須です。 このパラメータは、新しく生成されたキーセット内のキーのアルゴリズムタイプを指定します。 有効な値: AES-GCM-256AES-SIV-CMAC-128、およびAES-SIV-CMAC-256

  • description: オプション。 このパラメーターは、キーの説明を提供します。

  • role_chain: オプションです。 このパラメーターには、ユーザー権限付与の役割チェーンを指定します。 パラメータ値は、'acs:ram:<userAID>:role/<roleName2>,acs:ram:<userBID>:role/<roleName3 >},...' の形式である。 ロールチェーンを使用して、Alibaba Cloudアカウント全体でラップされたキーセットを呼び出すことができます。

戻り値

BINARY型のラップされたキーセットが返されます。 HEX関数を使用して、ビジネス要件に基づいて、BINARY型のラップされたキーセットをSTRING型のキーセットに変換できます。 HEX関数の詳細については、「HEX」をご参照ください。

説明

次のサンプルコードには変数が含まれています。 スクリプトモードでコードを実行するか、SQL文の変数を実際の値に置き換える必要があります。

  • ラップされたキーセットを再暗号化します。

    @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'));
  • ラップされたキーセットを再暗号化し、他のロールがラップされたキーセットを呼び出すことを許可します。

    @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));