Docs Menu
Docs Home
/
MongoDBマニュアル
/ / / /

KMS プロバイダー

項目一覧

  • Overview
  • リモート キー管理システムを使用する理由
  • キー管理システムのタスク
  • CMK の作成と保存
  • データ暗号化キーの作成と暗号化
  • サポートされているキー管理サービス
  • Amazon Web Services KMS
  • Azure Key Vault
  • Google Cloud Platform KMS
  • KMIP
  • ローカル キー プロバイダー

キー管理システム( KMS )プロバイダーの 使用中の暗号化 サポートの詳細について説明します。

リモート キー管理システムを使用してカスタマー マスター キーを管理するには、ローカル ファイルシステムを使用してカスタマー マスター キーをホストする場合よりも次の利点があります。

  • アクセス監査を使用してキーを安全にストレージ

  • アクセス権限の問題のリスク軽減

  • リモート クライアントへのキーの可用性と配布

  • キーのバックアップと復元の自動化

  • 一元化された暗号化キーのライフサイクル管理

さらに、次のKMSプロバイダーの場合、 KMSはデータ暗号化キーをリモートで暗号化および復号化し、カスタマー マスター キーが Queryable Encryption または CSFLE 対応アプリケーションに公開されないようにします。

  • Amazon Web Services KMS

  • Azure Key Vault

  • Google Cloud KMS

使用中の暗号化では、キー管理システムは次のようになります。

  • 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 ServicesKMSQueryable EncryptionCSFLE

アプリケーションでAmazon Web Services KMSを使用する方法のチュートリアルを表示するには、「概要: Queryable Encryptionの有効化 」または「 Amazon Web Servicesでの自動クライアント側フィールドレベル暗号化の使用 」を参照してください。

Queryable Encryption次の図は、 を使用してAmazon Web ServicesKMS が有効なアプリケーションのアーキテクチャを説明します。

図の KMS

注意

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

上記のキー管理システムを使用している場合、Queryable Encryption 対応アプリケーションは 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 の使用に関連する情報を提供します。 Queryable Encryption または CSFLE が有効なアプリケーションの場合

アプリケーションで Azure Key Vault を使用する方法のチュートリアルを表示するには、「概要: Queryable Encryptionの有効化 」または「 Azure で自動クライアント側フィールド レベル暗号化を使用する 」を参照してください。

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

図の KMS

注意

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

上記のキー管理システムを使用している場合、Queryable Encryption 対応アプリケーションは 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このセクションでは、 キー管理 の使用に関連する情報を提供しますQueryable Encryption またはCSFLE が有効なアプリケーションの場合

アプリケーションで GCP KMS を使用する方法のチュートリアルを表示するには、「概要: Queryable Encryptionの有効化 」または「 GCP によるクライアント側フィールド レベル暗号化の使用 」を参照してください。

以下の図では、GCP KMS を使用した Queryable Encryption 有効アプリケーションのアーキテクチャが説明されています。

図の KMS

注意

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

上記のキー管理システムを使用している場合、Queryable Encryption 対応アプリケーションは 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 の使用に関する情報を提供します 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オブジェクトで オプションを に設定します。

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

注意

TLS/SSL による認証

Queryable Encryption が有効なアプリケーションは、KMIP を使用する場合、 TLS/SSL経由で認証されます。

フィールド
必須
説明
エンドポイント
はい
認証サーバーのホスト名とポート番号を指定します。

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

フィールド
必須
説明
keyId
No

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

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

エンドポイント
はい
KMIP準拠のキー プロバイダーの URI 。
委任された
No

このオプションをtrue に設定すると、DEK の暗号化と復号化を KMIP 準拠のキープロバイダーに委任します。これらを KMIP 準拠のキー プロバイダーに委任すると、 CMK に直接アクセスできなくなります。

delegated オプションを true に設定しない場合、アプリケーションは KMIP プロバイダーから直接アクセスし、カスタマー マスター キーを転送します。

重要: delegatedオプションはRuby、 Go、またはC++ドライバーでは使用できません。

このセクションでは、 Queryable Encryptionまたは CSFLE が有効なアプリケーションでローカル キー プロバイダーを使用する方法に関連する情報を提供します。

警告

本番環境でローカルキーファイルを保護する

CMK はリモート キー管理システム に保存することをお勧めします ( KMS )。Queryable Encryptionの実装でリモートKMSを使用する方法については、チュートリアルガイドを参照してください。

本番環境でローカルキー プロバイダーを使用する場合は、十分に注意し、ファイルシステムに保存しないようにしてください。 サイドカー プロセスを使用してクライアントアプリケーションにキーを挿入するか、キーを安全に保つ別のアプローチを使用することを検討してください。

ローカル キー プロバイダーを使用して Queryable Encryption をテストする方法のチュートリアル デモは、「 Queryable Encryption クイック スタート」または「CSFLE クイック スタート」を参照してください。

ローカル キー プロバイダーをテストに使用すると、アプリケーションは実行されるコンピューターから CMK を検索します。 本番環境でローカルキープロバイダーを使用するには、ファイルシステムにキーを保存しないアプローチを使用します。 例、サイドカーを介してクライアントプロセスにキーを挿入できます。

以下の図は、ローカル キー プロバイダーを使用するQueryable Encryption対応アプリケーションのアーキテクチャを説明します。

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

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

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

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

戻る

キーとキー ボールト