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 を管理できます。これにより、ハードコードされたシークレットによるデータ漏洩を防ぎ、データセキュリティを向上させます。
前提条件
Always-Confidential 機能が有効になっていること。詳細については、「Always-Confidential データベース機能を有効にする」をご参照ください。
EncJDBC から Always-Confidential データベースに KMS を接続するための構成が完了していること。詳細については、「EncJDBC」をご参照ください。
EncJDBC 1.0.6 以降がインストールされていること。
KMS インスタンスが作成されていること。詳細については、「KMS インスタンスを購入して有効にする」をご参照ください。
影響
KMS が使用できない場合、クライアントドライバー EncJDBC も使用できません。
課金ルール
EncJDBC から Always-Confidential データベースに KMS を接続する場合、ApsaraDB RDS による課金は発生しません。ただし、KMS による Secrets Manager の使用に対して課金されます。詳細については、「課金」をご参照ください。
手順
EncJDBC から Always-Confidential データベースに Alibaba Cloud KMS を接続するには、次の手順を実行します。
MEK を生成します。
説明MEK は 128 ビットキーです。OpenSSL や Alibaba Cloud KMS など、さまざまなツールを使用して MEK を生成できます。
Secrets Manager を使用して、Alibaba Cloud KMS で MEK を管理します。
必要な Always-Confidential データベースに KMS を接続できる EncJDBC を構成します。
ステップ 1:MEK を生成する
32 ビットの 16 進数文字列で表される 128 ビットキーを取得する必要があります。例:00112233445566778899aabbccddeeff。
OpenSSL を使用するか、KMS の GenerateDataKey オペレーションを呼び出して、MEK を生成できます。
OpenSSL
Linux:OpenSSL はプリインストールされています。
openssl rand -hex 16
コマンドを実行してキーを生成できます。Windows:OpenSSL パッケージをインストールする必要があります。
GenerateDataKey オペレーションを呼び出すときは、KMS でカスタマーマスターキー(CMK)の ID を指定し、NumberOfBytes パラメーターを 16 に設定する必要があります。NumberOfBytes パラメーターは、生成する MEK の長さを指定します。
レスポンスに表示される Plaintext パラメーターは、ランダムに生成された Base64 エンコードされた 128 ビット MEK を示します。後で使用するために、Plaintext パラメーターの値を 16 進数文字列に変換する必要があります。
ステップ 2:KMS で MEK を管理する
KMS コンソールで、または KMS API オペレーションを呼び出すことによって、MEK を管理できます。
MEK を管理する前に、MEK が 16 桁の 16 進数文字列であることを確認してください。
KMS コンソール
KMS コンソールの シークレット ページに移動します。
[シークレットの作成] をクリックします。表示されるダイアログボックスで、[汎用シークレット] をクリックし、[シークレット名] パラメーターを構成し、[プレーンテキスト] パラメーターの右側にある [プレーンテキスト] をクリックして、生成された MEK を入力します。「Secret InitVersion」パラメーターの値を選択するか、デフォルト値を保持できます。
[次へ] をクリックし、次に [次へ] をクリックします。
[OK] をクリックします。
説明MEK は暗号化され、Alibaba Cloud KMS に安全に保存されます。作成するシークレットの名前とバージョンは機密にしておく必要があります。この情報は、後続の操作で MEK を EnJDBC にインポートするときに必要になります。
KMS API オペレーション
CreateSecret オペレーションを呼び出して、Alibaba Cloud KMS で MEK を管理できます。
ステップ 3:EncJDBC から Always-Confidential データベースに KMS を接続する
pom.xml ファイルに依存関係を追加します。
<dependency> <groupId>com.aliyun</groupId> <artifactId>alibabacloud-kms20160120</artifactId> <version>1.0.5</version> </dependency>
MEK を構成します。
EncJDBC に記載されている手順に従って、MEK を構成できます。このセクションでは、Alibaba Cloud KMS を使用して MEK を構成する方法について説明します。
構成時には、次のパラメーターが必要です:
ALIBABA_CLOUD_ACCESS_KEY_ID
、ALIBABA_CLOUD_ACCESS_KEY_SECRET
、KMS_SECRET_NAME
、KMS_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 によって管理されます。