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

ApsaraDB RDS:EncJDBC から Always-Confidential データベースに KMS を接続する

最終更新日:Mar 05, 2025

Always-Confidential データベース機能が有効になっている ApsaraDB RDS for MySQL インスタンスのセキュリティは、必要なマスター暗号鍵(MEK)の管理によって異なります。Alibaba Cloud Key Management Service(KMS)を使用すると、MEK を便利かつ安全に取得および管理できます。このトピックでは、EncJDBC から Always-Confidential データベースに Alibaba Cloud KMS を接続する方法と、RDS インスタンスの MEK を管理する方法について説明します。

背景情報

Always-Confidential データベース機能が有効になっている RDS インスタンスの MEK は、安全な非対称暗号化プロトコルを使用してクライアントからサーバーに送信されます。この場合、クライアントとサーバーは同じ鍵を使用し、データは安全な方法で対称暗号化を使用してクライアントとサーバー間で送信できます。Always-Confidential データベース機能が有効になっている RDS インスタンスのセキュリティを確保するには、MEK を安全な方法で保存および管理する必要があります。Alibaba Cloud KMS を使用して MEK を取得および管理することをお勧めします。

Alibaba Cloud KMS は、クラウドでのデータ暗号化要件を満たすように設計された暗号化サービスです。KMS は、鍵管理やシークレット管理などの機能を提供します。Secrets Manager を使用して、Always-Confidential データベース機能が有効になっている RDS インスタンスの MEK を管理できます。これにより、ハードコードされたシークレットによるデータ漏洩を防ぎ、データセキュリティを向上させます。

前提条件

影響

KMS が使用できない場合、クライアントドライバー EncJDBC も使用できません。

課金ルール

EncJDBC から Always-Confidential データベースに KMS を接続する場合、ApsaraDB RDS による課金は発生しません。ただし、KMS による Secrets Manager の使用に対して課金されます。詳細については、「課金」をご参照ください。

手順

EncJDBC から Always-Confidential データベースに Alibaba Cloud KMS を接続するには、次の手順を実行します。

  1. MEK を生成します。

    説明

    MEK は 128 ビットキーです。OpenSSL や Alibaba Cloud KMS など、さまざまなツールを使用して MEK を生成できます。

  2. Secrets Manager を使用して、Alibaba Cloud KMS で MEK を管理します。

  3. 必要な Always-Confidential データベースに KMS を接続できる EncJDBC を構成します。

ステップ 1:MEK を生成する

32 ビットの 16 進数文字列で表される 128 ビットキーを取得する必要があります。例:00112233445566778899aabbccddeeff。

OpenSSL を使用するか、KMS の GenerateDataKey オペレーションを呼び出して、MEK を生成できます。

  • OpenSSL

    • Linux:OpenSSL はプリインストールされています。openssl rand -hex 16 コマンドを実行してキーを生成できます。

    • Windows:OpenSSL パッケージをインストールする必要があります。

  • GenerateDataKey

    GenerateDataKey オペレーションを呼び出すときは、KMS でカスタマーマスターキー(CMK)の ID を指定し、NumberOfBytes パラメーターを 16 に設定する必要があります。NumberOfBytes パラメーターは、生成する MEK の長さを指定します。

    image

    レスポンスに表示される Plaintext パラメーターは、ランダムに生成された Base64 エンコードされた 128 ビット MEK を示します。後で使用するために、Plaintext パラメーターの値を 16 進数文字列に変換する必要があります。

ステップ 2:KMS で MEK を管理する

KMS コンソールで、または KMS API オペレーションを呼び出すことによって、MEK を管理できます。

重要

MEK を管理する前に、MEK が 16 桁の 16 進数文字列であることを確認してください。

  • KMS コンソール

    1. KMS コンソールの シークレット ページに移動します。

    2. [シークレットの作成] をクリックします。表示されるダイアログボックスで、[汎用シークレット] をクリックし、[シークレット名] パラメーターを構成し、[プレーンテキスト] パラメーターの右側にある [プレーンテキスト] をクリックして、生成された MEK を入力します。「Secret InitVersion」パラメーターの値を選択するか、デフォルト値を保持できます。

    3. [次へ] をクリックし、次に [次へ] をクリックします。

    4. [OK] をクリックします。

      説明

      MEK は暗号化され、Alibaba Cloud KMS に安全に保存されます。作成するシークレットの名前とバージョンは機密にしておく必要があります。この情報は、後続の操作で MEK を EnJDBC にインポートするときに必要になります。

  • KMS API オペレーション

    CreateSecret オペレーションを呼び出して、Alibaba Cloud KMS で MEK を管理できます。

ステップ 3:EncJDBC から Always-Confidential データベースに KMS を接続する

  1. pom.xml ファイルに依存関係を追加します。

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>alibabacloud-kms20160120</artifactId>
        <version>1.0.5</version>
    </dependency>
  2. MEK を構成します。

    EncJDBC に記載されている手順に従って、MEK を構成できます。このセクションでは、Alibaba Cloud KMS を使用して MEK を構成する方法について説明します。

    構成時には、次のパラメーターが必要です: ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRETKMS_SECRET_NAMEKMS_REGION_ID、および KMS_SECRET_VERSION。上記の各パラメーターの値は次のとおりです: Alibaba Cloud アカウントの アクセスキー ID、Alibaba Cloud アカウントの アクセスキー シークレット作成されたシークレットの名前KMS インスタンスが存在するリージョンの ID、および 作成されたシークレットのバージョンKMS_SECRET_VERSION パラメーターはオプションです。デフォルトでは、作成したシークレットの最新バージョンが使用されます。

    次の方法を使用して MEK を構成できます。例:

    • JDBC プロパティ

      props.setProperty("ALIBABA_CLOUD_ACCESS_KEY_ID", "xxx");
      props.setProperty("ALIBABA_CLOUD_ACCESS_KEY_SECRET", "xxx");
      props.setProperty("KMS_SECRET_NAME", "confidential-mysql");
      props.setProperty("KMS_REGION_ID", "hangzhou");
      props.setProperty("KMS_SECRET_VERSION", "v1"); // オプション
    • 構成ファイル設定

      ALIBABA_CLOUD_ACCESS_KEY_ID=xxx
      ALIBABA_CLOUD_ACCESS_KEY_SECRET=xxx
      KMS_SECRET_NAME=confidential-mysql
      KMS_REGION_ID=cn-hangzhou
      KMS_SECRET_VERSION=v1 # オプション

      上記の設定が完了すると、MEK が構成されます。

      MEK=001122334455566778899aabbccddeeff
    • URL 設定

      この方法を使用する場合は、元の URL に次の情報を追加する必要があります。

      ALIBABA_CLOUD_ACCESS_KEY_ID=xxx&ALIBABA_CLOUD_ACCESS_KEY_SECRET=xxx&KMS_SECRET_NAME=confidential-mysql&KMS_REGION_ID=hangzhou

      例:

      jdbc:mysql:encdb://ホスト名:ポート/db?ALIBABA_CLOUD_ACCESS_KEY_ID=xxx&ALIBABA_CLOUD_ACCESS_KEY_SECRET=xxx&KMS_SECRET_NAME=confidential-mysql&KMS_REGION_ID=hangzhou

上記のいずれかの方法を使用して MEK を構成すると、MEK を手動で管理する必要がなくなります。MEK は Alibaba Cloud KMS の Secrets Manager によって管理されます。

関連情報

EncJDBC