Docs Menu

CSFLE KMSプロバイダー

キー管理システム( KMS )プロバイダーのクライアント側フィールドレベル暗号化(CSFLE)サポートの詳細について説明します。

CSFLE では、キー管理システムは次のタスクを実行します。

カスタマー マスター キーとデータ暗号化キーの詳細については、「キーとキーヴォールト 」を参照してください。

カスタマー マスター キーを作成するには、次のように、カスタマー マスター キーを生成するようにキー管理システムを構成する必要があります。

図

CMKを作成して希望のKMSに保存する方法のチュートリアル デモは、「チュートリアル 」を参照してください。

データ暗号化キーを作成するときは、次のアクションを実行する必要があります。

  • CSFLE 対応アプリケーションで ClientEncryptionインスタンスをインスタンス化します。

    • CSFLE 対応アプリケーションがKMSプロバイダーで認証するために使用する認証情報を指定するkmsProvidersオブジェクトを提供します。

  • CSFLE 対応アプリケーションのClientEncryptionオブジェクトのCreateDataKeyメソッドを使用して、データ暗号化キーを作成します。

    • KMSが新しいデータ暗号化キーを暗号化するキーを指定するdataKeyOptsオブジェクトを指定します。

データ暗号化キーの作成および暗号化方法のチュートリアル デモは、次のリソースを参照してください。

サポートされているすべての KMS プロバイダーの オブジェクトと オブジェクトの構造を表示するには、kmsProvidersdataKeyOpts サポートされているキー管理サービス」 を参照してください。

このページの次のセクションには、すべてのキー管理システム プロバイダーに関する次の情報が表示されます。

  • CSFLE 対応クライアントのアーキテクチャ

  • kmsProvidersオブジェクトの構造

  • dataKeyOptsオブジェクトの構造

CSFLE は、次のキー管理システム プロバイダーをサポートしています。

このセクションでは、 の使用に関連する情報を提供します。 CSFLEAmazon Web ServicesKMS 対応アプリケーションの場合

CSFLE 対応アプリケーションでAmazon Web Services KMSを使用する方法のチュートリアルを表示するには、「 Amazon Web Services でのAmazon Web Servicesクライアント側フィールドレベル暗号化の使用 」を参照してください。

次の図は、 Amazon Web Services KMSを使用して CSFLE 対応アプリケーションのアーキテクチャを説明します。

図の KMS

注意

クライアントが CMK にアクセスできません

上記のキー管理システムを使用している場合、CSFLE 対応のアプリケーションは CMK にアクセスできません。

次の表は、 Amazon Web Services KMSの kmsProviders オブジェクトの構造を示しています。

フィールド
IAM ユーザーに必要
IAM ロールに必要
説明

アクセスキー ID

はい

はい

アカウント ユーザーを識別します。

シークレット アクセス キー

はい

はい

アカウント ユーザーの認証情報が含まれています。

Session Token

No

はい

Amazon Web Services Security Token Service(STS)から取得したトークンが含まれます。

次の表は、 Amazon Web Services KMSの dataKeyOpts オブジェクトの構造を示しています。

フィールド
必須
説明

キー

はい

Amazon リソース番号(ARN) のマスター キー。

リージョン

No

マスターキーのAmazon Web Servicesのリージョン(例: "us-west-2" ) ARN で指定されていない場合にのみ必要です。

エンドポイント

No

アカウントに設定されている場合は、 Amazon Web Servicesエンドポイントのカスタムホスト名。

このセクションでは、 Azure Key Vault の使用に関連する情報を提供します。 CSFLE 対応アプリケーションの場合

CSFLE 対応アプリケーションで Azure Key Vault を使用する方法のチュートリアル デモは、「 Azure での自動クライアント側フィールド レベル暗号化の使用」 を参照してください。

次の図では、Azure Key Vault を使用した CSFLE 対応アプリケーションのアーキテクチャを説明します。

図の KMS

注意

クライアントが CMK にアクセスできません

上記のキー管理システムを使用している場合、CSFLE 対応のアプリケーションは CMK にアクセスできません。

次の表は、Azure Key Vault のkmsProvidersオブジェクトの構造を示しています。

フィールド
必須
説明

azure.tenantId

はい

アカウントの組織を識別します。

azure.clientId

はい

登録されたアプリケーションを認証するために clientId を識別します。

azure.clientSecret

はい

登録されたアプリケーションを認証するために使用されます。

azure. identityPlatformEndpoint

No

認証サーバーのホスト名とポート番号を指定します。 デフォルトは login.Microsoftonline.com で、政府や中国のアカウントなど、非営利の Azure インスタンスにのみ必要です。

次の表は、Azure Key Vault のdataKeyOptsオブジェクトの構造を示しています。

フィールド
必須
説明

keyName

はい

マスターキーの名前

keyVersion

いいえ、ただし強く推奨

マスターキーのバージョン

keyVaultEndpoint

はい

キーヴォールトの URL。 Eg myVaultName.vault.azure.net

警告

keyVersionフィールドを含めない場合、Azure Key Vault は最新の CMK を使用してデータ暗号化キーの復号を試行します。 CMKをローテーションするが、 データ暗号化キーを新しいマスターキーで再ラップしない場合、既存のDEKの復号化試行は失敗します。これは、 DEKが以前のバージョンのCMKで暗号化されているためです。

Google Cloud Platformこのセクションでは、 キー管理 の使用に関連する情報を提供します CSFLE 対応アプリケーションの場合

CSFLE 対応アプリケーションで GCP KMS を使用する方法のチュートリアルを表示するには、「 GCP で自動クライアント側フィールド レベル暗号化を使用する 」を参照してください。

以下の図では、GCP KMS を使用した CSFLE 対応アプリケーションのアーキテクチャを示します。

図の KMS

注意

クライアントが CMK にアクセスできません

上記のキー管理システムを使用している場合、CSFLE 対応のアプリケーションは CMK にアクセスできません。

次の表は、GCP KMS のkmsProvidersオブジェクトの構造を示しています。

フィールド
必須
説明

メールアドレス

はい

サービス アカウントのメール アドレスを識別します。

privateKey

はい

Identifies your service account private key in either base64 string or Binary subtype 0 format without the prefix and suffix markers.

Suppose your service account private key value is as follows:
-----BEGIN PRIVATE KEY-----\nyour-private-key\n-----END PRIVATE KEY-----\n
The value you would specify for this field is:
your-private-key
If you have a user-key.json credential file, you can extract the string by executing the following command in a bash or similar shell. The following command requires that you install OpenSSL:
cat user-key.json | jq -r .private_key | openssl pkcs8 -topk8 -nocrypt -inform PEM -outform DER | base64 -w 0

エンドポイント

No

認証サーバーのホスト名とポート番号を指定します。 デフォルトは opth2.googleapis.com です。

次の表は、GCP KMS のdataKeyOptsオブジェクトの構造を示しています。

フィールド
必須
説明

projectId

はい

キーを作成したプロジェクトの識別子。

ロケーション

はい

キーに指定されたリージョン。

keyRing

はい

キーが属するキーのグループの識別子。

keyName

はい

対称マスターキーの識別子。

keyVersion

No

名前付きキーのバージョンを指定します。 指定しない場合、キーのデフォルトのバージョンが使用されます。

エンドポイント

No

Cloud KMS のホストとオプション ポートを指定します。 デフォルトはcloudkms.googleapis.comです。

このセクションでは、 KMIP の使用に関する情報を提供します CSFLE 対応アプリケーションで、キー管理システムに準拠している必要があります。

CSFLE 対応アプリケーションで KMIP 準拠のキー管理システムを使用する方法のチュートリアル デモは、「 KMIP を使用した自動クライアント側フィールド レベル暗号化の使用 」を参照してください。

以下の図では、KMIP 準拠のキー プロバイダーを使用するCSFLE対応アプリケーションのアーキテクチャを示します。

図

重要

クライアントが CMK にアクセス

CSFLE 対応のアプリケーションがKMIP準拠のキープロバイダーを使用する場合、アプリケーションはカスタマー マスター キーに直接アクセスします。

次の表は、 KMIP準拠のキー プロバイダーのkmsProvidersオブジェクトの構造を示しています。

注意

TLS/SSL による認証

CSFLE 対応のアプリケーションは、KMIP を使用する場合、 TLS/SSL経由で認証されます。

フィールド
必須
説明

エンドポイント

はい

認証サーバーのホスト名とポート番号を指定します。

次の表は、KMIP 準拠のキー管理システムのdataKeyOptsオブジェクトの構造を示しています。

フィールド
必須
説明

keyId

No

バイト シークレット データ マネージドkeyId オブジェクト の フィールド KMIP 準拠のキー プロバイダーに保存されている場合96

KMIP準拠のキープロバイダーに送信するmasterKeyドキュメントにkeyIdフィールドを指定しない場合、ドライバーはKMIP準拠のキープロバイダーに新しい 96 バイトの秘密データ管理オブジェクトを作成し、マスターキーとして機能します。

エンドポイント

はい

KMIP準拠のキー プロバイダーの URI 。

このセクションでは、CSFLE 対応アプリケーションでローカル キー プロバイダー(ファイルシステム)の使用に関連する情報を提供します。

警告

本番環境ではローカルキー プロバイダーを使用しない

ローカルキー プロバイダーは安全なストレージ メソッドであり、本番には推奨されません。 代わりに、CMK をリモート キー管理システム に保存する必要があります (KMS)。

CSFLE 実装でリモート KMS を使用する方法については、チュートリアルのガイドを参照してください。

ローカル キー プロバイダーを使用してクライアント側のフィールドレベル暗号化をテストする方法のチュートリアル デモは、「クイック スタート 」を参照してください。

CSFLE 対応アプリケーションでローカル キー プロバイダーを使用すると、アプリケーションは、アプリケーションが実行されているコンピューターのファイルシステムから CMK を検索します。

以下の図では、ローカル キー プロバイダーを使用した CSFLE 対応アプリケーションのアーキテクチャを示します。

ローカル キー プロバイダーのアーキテクチャ図。

次の表は、ローカル キー プロバイダーのkmsProvidersオブジェクトの構造を示しています。

フィールド
必須
説明

キー

はい

データキーを暗号化および復号化するために使用されるマスターキー。 マスターキーは base64 でエンコードされたstringとして渡されます。

ローカル キー プロバイダーを使用する場合は、 kmsProvidersオブジェクトを通じてカスタマー マスター キーを指定します。