KMS プロバイダー
項目一覧
Overview
キー管理システム( KMS )プロバイダーの 使用中の暗号化 サポートの詳細について説明します。
リモート キー管理システムを使用する理由
リモート キー管理システムを使用してカスタマー マスター キーを管理するには、ローカル ファイルシステムを使用してカスタマー マスター キーをホストする場合よりも次の利点があります。
アクセス監査を使用してキーを安全にストレージ
アクセス権限の問題のリスク軽減
リモート クライアントへのキーの可用性と配布
キーのバックアップと復元の自動化
一元化された暗号化キーのライフサイクル管理
さらに、次のKMSプロバイダーの場合、 KMSはデータ暗号化キーをリモートで暗号化および復号化し、カスタマー マスター キーが Queryable Encryption または CSFLE 対応アプリケーションに公開されないようにします。
Amazon Web Services KMS
Azure Key Vault
Google Cloud KMS
キー管理システムのタスク
使用中の暗号化では、キー管理システムは次のようになります。
CMK の作成と暗号化
アプリケーションによって作成されたデータ暗号化キーを暗号化します
データ暗号化キーの復号化
カスタマー マスター キーとデータ暗号化キーの詳細については、 暗号化キーとキーヴォールトを参照してください。
CMK の作成と保存
カスタマー マスター キーを作成するには、次のように、カスタマー マスター キーを生成するようにキー管理システムを設定します。
CMKを作成して希望のKMSに保存する方法のチュートリアルを表示するには、 Queryable Encryption 自動暗号化チュートリアルまたはCSFLE 自動暗号化チュートリアル を参照してください。
データ暗号化キーの作成と暗号化
データ暗号化キーを作成するには、次の手順に従います。
Queryable Encryption または CSFLE が有効なアプリケーションで
ClientEncryption
インスタンスをインスタンス化します。アプリケーションがKMSプロバイダーで認証するために使用する認証情報を指定する
kmsProviders
オブジェクトを提供します。
アプリケーション内の
ClientEncryption
オブジェクトのCreateDataKey
メソッドを使用して、データ暗号化キーを作成します。KMSが新しいデータ暗号化キーを暗号化するキーを指定する
dataKeyOpts
オブジェクトを指定します。
データ暗号化キーの作成および暗号化方法のチュートリアル デモは、次のリソースを参照してください。
サポートされているすべての KMS プロバイダーの オブジェクトと オブジェクトの構造を表示するには、kmsProviders
dataKeyOpts
サポートされているキー管理サービスを参照してください。
サポートされているキー管理サービス
このページの次のセクションには、すべてのキー管理システム プロバイダーに関する次の情報が表示されます。
使用中の暗号化が有効なクライアントのアーキテクチャ
kmsProviders
オブジェクトの構造dataKeyOpts
オブジェクトの構造
Queryable Encryption と CSFLE はどちらも次のキー管理システム プロバイダーをサポートしています。
Amazon Web Services KMS
このセクションでは、 の使用に関連する情報を提供します。 または が有効なアプリケーションの場合Amazon Web ServicesKMSQueryable EncryptionCSFLE
アプリケーションでAmazon Web Services KMSを使用する方法のチュートリアルを表示するには、「概要: Queryable Encryptionの有効化 」または「 Amazon Web Servicesでの自動クライアント側フィールドレベル暗号化の使用 」を参照してください。
アーキテクチャ
Queryable Encryption次の図は、 を使用してAmazon Web ServicesKMS が有効なアプリケーションのアーキテクチャを説明します。
注意
クライアントが CMK にアクセスできません
上記のキー管理システムを使用している場合、Queryable Encryption 対応アプリケーションは CMK にアクセスできません。
kmsProviders オブジェクト
次の表は、 Amazon Web Services KMSの kmsProviders
オブジェクトの構造を示しています。
フィールド | IAM ユーザーに必要 | IAM ロールに必要 | 説明 |
---|---|---|---|
アクセスキー ID | はい | はい | アカウント ユーザーを識別します。 |
シークレット アクセス キー | はい | はい | アカウント ユーザーの認証情報が含まれています。 |
Session Token | No | はい | Amazon Web Services Security Token Service(STS)から取得したトークンが含まれます。 |
dataKeyOps オブジェクト
次の表は、 Amazon Web Services KMSの dataKeyOpts
オブジェクトの構造を示しています。
フィールド | 必須 | 説明 |
---|---|---|
キー | はい | Amazon リソース番号(ARN) のマスター キー。 |
リージョン | No | マスターキーのAmazon Web Servicesのリージョン(例: "us-west-2" ) ARN で指定されていない場合にのみ必要です。 |
エンドポイント | No | アカウントに設定されている場合は、 Amazon Web Servicesエンドポイントのカスタムホスト名。 |
Azure Key Vault
このセクションでは、 Azure Key Vault の使用に関連する情報を提供します。 Queryable Encryption または CSFLE が有効なアプリケーションの場合
アプリケーションで Azure Key Vault を使用する方法のチュートリアルを表示するには、「概要: Queryable Encryptionの有効化 」または「 Azure で自動クライアント側フィールド レベル暗号化を使用する 」を参照してください。
アーキテクチャ
次の図では、Azure Key Vault を使用した Queryable Encryption 対応アプリケーションのアーキテクチャを説明します。
注意
クライアントが CMK にアクセスできません
上記のキー管理システムを使用している場合、Queryable Encryption 対応アプリケーションは CMK にアクセスできません。
kmsProviders オブジェクト
次の表は、Azure Key Vault のkmsProviders
オブジェクトの構造を示しています。
フィールド | 必須 | 説明 |
---|---|---|
azure.tenantId | はい | アカウントの組織を識別します。 |
azure.clientId | はい | 登録されたアプリケーションを認証するために clientId を識別します。 |
azure.clientSecret | はい | 登録されたアプリケーションを認証するために使用されます。 |
azure. identityPlatformEndpoint | No | 認証サーバーのホスト名とポート番号を指定します。 デフォルトは login.Microsoftonline.com で、政府や中国のアカウントなど、非営利の Azure インスタンスにのみ必要です。 |
dataKeyOps オブジェクト
次の表は、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 KMS
Google Cloud Platformこのセクションでは、 キー管理 の使用に関連する情報を提供しますQueryable Encryption またはCSFLE が有効なアプリケーションの場合
アプリケーションで GCP KMS を使用する方法のチュートリアルを表示するには、「概要: Queryable Encryptionの有効化 」または「 GCP によるクライアント側フィールド レベル暗号化の使用 」を参照してください。
アーキテクチャ
以下の図では、GCP KMS を使用した Queryable Encryption 有効アプリケーションのアーキテクチャが説明されています。
注意
クライアントが CMK にアクセスできません
上記のキー管理システムを使用している場合、Queryable Encryption 対応アプリケーションは CMK にアクセスできません。
kmsProviders オブジェクト
次の表は、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:
The value you would specify for this field is:
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
:
| |||
エンドポイント | No | 認証サーバーのホスト名とポート番号を指定します。 デフォルトは opth2.googleapis.com です。 |
dataKeyOps オブジェクト
次の表は、GCP KMS のdataKeyOpts
オブジェクトの構造を示しています。
フィールド | 必須 | 説明 |
---|---|---|
projectId | はい | キーを作成したプロジェクトの識別子。 |
ロケーション | はい | キーに指定されたリージョン。 |
keyRing | はい | キーが属するキーのグループの識別子。 |
keyName | はい | 対称マスターキーの識別子。 |
keyVersion | No | 名前付きキーのバージョンを指定します。 指定しない場合、キーのデフォルトのバージョンが使用されます。 |
エンドポイント | No | Cloud KMS のホストとオプション ポートを指定します。 デフォルトは cloudkms.googleapis.com です。 |
KMIP
このセクションでは、 KMIP の使用に関する情報を提供します Queryable Encryption または CSFLE が有効なアプリケーションの キー管理システム に準拠している。
HashiCorp Vault で KMIP を設定する方法については、 「 MongoDB CSFLE または Queryable Encryption で HashiCorp Vault KMIP Secrets Engine を設定する方法 」ブログ記事を参照してください。
アーキテクチャ
次の図は、 KMIP準拠のキー プロバイダーを使用して Queryable Encryption が有効なアプリケーションのアーキテクチャを説明します。
重要
クライアントが CMK にアクセス
Queryable Encryptionを有効にしたアプリケーションで、 オプションを指定せずに KMIPdelegated
準拠のキープロバイダーを使用する場合、アプリケーションはカスタマー マスター キーに直接アクセスします。CMK delegated
に直接アクセスしないようにするには、true
dataKeyOpsオブジェクトで オプションを に設定します。
kmsProviders オブジェクト
次の表は、KMIP 準拠のキー管理システムのkmsProviders
オブジェクトの構造を示しています。
注意
TLS/SSL による認証
Queryable Encryption が有効なアプリケーションは、KMIP を使用する場合、 TLS/SSL経由で認証されます。
フィールド | 必須 | 説明 |
---|---|---|
エンドポイント | はい | 認証サーバーのホスト名とポート番号を指定します。 |
dataKeyOps オブジェクト
次の表は、KMIP 準拠のキー管理システムのdataKeyOpts
オブジェクトの構造を示しています。
フィールド | 必須 | 説明 |
---|---|---|
keyId | No | バイト の シークレット データ マネージド KMIP準拠のキープロバイダーに送信する |
エンドポイント | はい | KMIP準拠のキー プロバイダーの URI 。 |
委任された | No | このオプションを
重要: |
ローカル キー プロバイダー
このセクションでは、 Queryable Encryptionまたは CSFLE が有効なアプリケーションでローカル キー プロバイダーを使用する方法に関連する情報を提供します。
警告
本番環境でローカルキーファイルを保護する
ローカル キー プロバイダーを使用して Queryable Encryption をテストする方法のチュートリアル デモは、「 Queryable Encryption クイック スタート」または「CSFLE クイック スタート」を参照してください。
アーキテクチャ
ローカル キー プロバイダーをテストに使用すると、アプリケーションは実行されるコンピューターから CMK を検索します。 本番環境でローカルキープロバイダーを使用するには、ファイルシステムにキーを保存しないアプローチを使用します。 例、サイドカーを介してクライアントプロセスにキーを挿入できます。
以下の図は、ローカル キー プロバイダーを使用するQueryable Encryption対応アプリケーションのアーキテクチャを説明します。
kmsProviders オブジェクト
次の表は、ローカル キー プロバイダーのkmsProviders
オブジェクトの構造を示しています。
フィールド | 必須 | 説明 |
---|---|---|
キー | はい | データキーを暗号化および復号化するために使用されるマスターキー。 マスターキーは base64 でエンコードされたstringとして渡されます。 |
dataKeyOps オブジェクト
ローカル キー プロバイダーを使用する場合は、 kmsProviders
オブジェクトを通じてカスタマー マスター キーを指定します。