プライベートエンドポイントにわたる Azure Key Vault を使用したカスタマーキーの管理
項目一覧
注意
AKV(Azure Key Vault)のカスタマー マネージド キー(CMK)を使用して、Atlas で保管中のデータをさらに暗号化できます。 Azure Private Link を使用して、 AKVへのすべてのトラフィックを構成することもできます。
このページでは、Atlas Administration API を使用してAKVで Azure Private Link を自動的に設定し、Atlas とAKV間のすべてのトラフィックがAzureのプライベート ネットワーク インターフェイスを介して行われるようにする方法について説明します。
Considerations
プライベートエンドポイントでAKVを使用して保管時の暗号化を有効にする前に、次のユースケース、利点、制限、前提条件を確認してください。
ユースケース
Atlas は 1 つのクラウド サービス プロバイダーに配置されているとします。 AKVへのすべてのアクセスは、クラウドプロバイダーのプライベート ネットワーク インフラストラクチャ経由で発生する必要があります。 このページでは、Atlas プロジェクトでプライベートエンドポイント接続を有効にする手順について説明します。
メリット
Atlas Administration API を使用して、Atlas が プライベートエンドポイント を使用してAKVで保管時の暗号化を構成できるようにします。 これにより、 AKVへのすべてのトラフィックはプライベートエンドポイントのセットを通過し、 AKVがパブリックインターネットまたはパブリック IP アドレスに公開されるのを回避できます。 すべてのAKVトラフィックをAzureのプライベート ネットワーク内に保持することで、データのセキュリティを強化しながら、許可された IP アドレスを維持する必要がなくなります。
制限
Atlas では、マルチクラウド配置のプライベートエンドポイント経由でCMKを使用した保管時の暗号化はサポートされていません。 マルチクラウド クラスターを含む既存のプロジェクトで Azure Private Link 経由でCMKを使用して保管時の暗号化を有効にすると、Atlas はプロジェクト内のマルチクラウド クラスターを無効にします。
Atlas では、 INACTIVE
状態のプロジェクトで、プライベートエンドポイント経由でCMKを使用した保管時の暗号化はサポートされていません。
は、Atlas またはAmazon Web Services クラスターのプライベートネットワーク経由での AKVGoogle Cloud Platform アクセスをサポートしていません。
前提条件
MongoDB プロジェクトでAKVを使用してカスタマー マネージド キーを有効にするには、次の手順を実行する必要があります。
M10 以上のクラスターを使用します。
Azureアカウントと Key Vault の認証情報と、暗号化のキーのキー識別子をAKVに用意します。
アカウントには、クライアント ID、テナント ID、およびシークレットが必要です。
キーヴォールトには、サブスクリプション ID、リソース グループ名、およびキーヴォールト名が必要です。
これらの Azure コンポーネントの構成方法については、 Azure ドキュメント を参照してください。
Atlas は、Atlas プロジェクト内のクラスターの保管時の暗号化を有効にするときにこれらのリソースを使用します。
App registrationsが条件付きアクセス ポリシーを使用する場合は、Atlas Control Plane のIPアドレス からのリクエストを許可する必要があります。キーヴォールトへのパブリック アクセスを有効にする必要はありません。
注意
Azure サブスクライブリソースプロバイダーに Microsoft .Network を登録する必要があります。詳しくは、 Azureのドキュメント を参照してください。
手順
プロジェクトでのカスタマー マネージド キーの有効化
プロジェクト内のクラスターで CMK を有効にする前に、プロジェクトでCMKを有効にする必要があります。 Atlas UI と Atlas Administration API からプロジェクトでCMKを有効にできます。
AtlasGoAdvancedAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Security見出しの下のAdvancedをクリックします。
詳細ページが表示されます。
Account Credentials を入力します。
clientId | Azure アプリケーションのClient ID (またはApplication ID )を入力します。 Active Directory ApplicationにはAzure key Vault Readerのロールが割り当てられている必要があります。 |
テナント ID | Active Directory テナントのTenant ID (またはDirectory ID )を入力します。 |
シークレット | Active Directory テナントに関連付けられているアプリケーションの有効期限が切れていないクライアント シークレットの 1 つを入力します。 |
Azure 環境 | Active Directory テナントが存在する Azure クラウドを選択します。 |
Encryption Key を入力します。
キー識別子 | Key Vault で作成されたキーの完全なURLを入力します。 重要: キー識別子は、完全な Azure一般形式 で指定する必要があります。
|
(任意) AKV へのプライベートエンドポイント接続を構成します。
詳細については、 「 プロジェクトでのプライベートエンドポイント接続の有効化と設定」を参照してください
ネットワーク設定を確認します。
Azure Private Link を使用してAtlas Administration API を使用して Atlas を構成し、Atlas と Key Vault 間のすべてのトラフィックがAzureのプライベート ネットワーク インターフェースで行われるようにした場合、Atlas はRequire Private NetworkingステータスをActiveに設定します。 ステータスがInactive の場合、Atlas で AKV へのプライベートエンドポイント接続を使用する場合 は、プロジェクトのプライベートエンドポイント接続の有効化と設定 の手順を完了できます。
注意
プライベートエンドポイント経由でAKVを使用した保管時の暗号化 機能は、リクエストによって利用できます。 Atlas 配置でこの機能をリクエストするには、アカウント マネージャーに問い合わせてください。
PATCH
encryptionAtRest
エンドポイント に リクエストを送信します。
例
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/vnd.atlas.2024-05-30+json" \ --header "Content-Type: application/vnd.atlas.2024-05-30+json" \ --request PATCH "https://cloud.mongodb.com/api/atlas/v2/groups/66c9e8f1dd6c9960802420e9/encryptionAtRest" \ --data ' { "azureKeyVault": { "azureEnvironment": "AZURE", "clientID": "b054a9ff-b60a-4cb6-8df6-20726eaefce6", "enabled": true, "keyIdentifier": "https://test-tf-export.vault.azure.net/keys/test/78b9134f9bc94fda8027a32b4715bf3f", "keyVaultName": "test-tf-export", "resourceGroupName": "test-tf-export", "secret": "", "subscriptionID": "009774e0-124f-4a69-83e0-ca8cd8acb4e2", "tenantID": "1f6ef922-9303-402a-bae2-cc68810b023c" } }'
プロジェクトの CMK を使用した保管時の暗号化の構成を確認します。
AKVを使用して管理するキーを使用して保管時の暗号化を有効化および構成するリクエストを確認するには、 GET
リクエストをencryptionAtRest
エンドポイントに送信します。
例
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/vnd.atlas.2024-05-30+json" \ --header "Content-Type: application/vnd.atlas.2024-05-30+json" \ --include \ --request GET "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/encryptionAtRest"
{ "azureKeyVault": { "azureEnvironment": "AZURE", "clientID": "632ff709-32a8-48a3-8224-30d2386fadaf", "enabled": true, "keyIdentifier": "https://EXAMPLEKeyVault.vault.azure.net/keys/EXAMPLEKey/d891821e3d364e9eb88fbd3d11807b86", "keyVaultName": "string", "requirePrivateNetworking": false, "resourceGroupName": "string", "subscriptionID": "a39012fb-d604-4cd1-8841-77f705f3e6d5", "tenantID": "ee46317d-36a3-4472-a3dd-6549e901da0b", "valid": true } }
プロジェクトでCMKを使用して保管時の暗号化を正常に有効にしている場合、レスポンスではenabled
はtrue
になります。 プライベートネットワークを設定して 、Atlasと Key Vault 間のすべてのトラフィックがAzureのプライベートネットワークインターフェイスを介して行われるようにすることができます。 詳細については、 「 プロジェクトでのプライベートエンドポイント接続の有効化と設定 」を参照してください。
プロジェクトでのプライベートエンドポイント接続の有効化と設定
プライベートエンドポイントを有効にして設定できるのは、Atlas Administration API のみです。 プライベートネットワークを有効にして、 AKVにプライベートエンドポイントを設定するには、次の手順を実行する必要があります。
プライベートネットワークを有効にします。
エンドポイントにPATCH
リクエストを送信し、 requirePrivateNetworking
フラグの値をtrue
に設定します。
例
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/vnd.atlas.2023-01-01+json" \ --header "Content-Type: application/vnd.atlas.2023-01-01+json" \ --include \ --request PATCH "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/encryptionAtRest/" \ --data ' { "azureKeyVault": { "azureEnvironment": "AZURE", "clientID": "632ff709-32a8-48a3-8224-30d2386fadaf", "enabled": true, "keyIdentifier": "https://EXAMPLEKeyVault.vault.azure.net/keys/EXAMPLEKey/d891821e3d364e9eb88fbd3d11807b86", "keyVaultName": "string", "requirePrivateNetworking": true, "resourceGroupName": "string", "secret": "string", "subscriptionID": "a39012fb-d604-4cd1-8841-77f705f3e6d5", "tenantID": "ee46317d-36a3-4472-a3dd-6549e901da0b" } }'
プライベートエンドポイントを作成します。
Atlas Administration API を使用して、 AKVと通信するためのプライベートエンドポイントを作成します。
POST
Atlas でプライベートエンドポイントを作成する Azure リージョンを含む エンドポイント に リクエストを送信します。Atlas でプライベートエンドポイントを作成するリージョンごとに個別のリクエストを送信する必要があります。
例
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/vnd.atlas.2023-01-01+json" \ --header "Content-Type: application/vnd.atlas.2023-01-01+json" \ --include \ --request POST "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/encryptionAtRest/AZURE/privateEndpoints" \ --data ' { "regionName": "US_CENTRAL" }'
プライベートエンドポイントを承認すると、次の制限が適用されます。
Atlas は、承認されたプライベートエンドポイントを持つリージョンにのみすべての新しいクラスターを作成します。
Atlas は、承認されたプライベートエンドポイントを持つリージョンにのみ既存のクラスターに追加のノードを配置します。
AKV へのプライベートエンドポイント接続を承認します。
Azure UI を使用できます 、 CLI 、または Terraform を使用してプライベートエンドポイント接続を承認します。
承認すると、Atlas は、パブリック インターネットを使用した接続を許可する既存のクラスターを含む、カスタマー マネージド キーを有効にしたすべてのクラスターを、プライベートエンドポイント接続のみを使用するように自動的に移行します。 オプションで、クラスターをプライベートエンドポイント接続を使用するように移行した後に、 AKVへのパブリックインターネットアクセスを無効にすることができます。 Azure上のすべての新しい Atlas クラスターは、デフォルトでは、アクティブなプライベートエンドポイント接続のみを使用します。
リクエストのステータスを確認します。
プライベートエンドポイントのステータスを確認するには、 encryptionAtRest
エンドポイントにGET
リクエストを送信します。
例
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/vnd.atlas.2023-01-01+json" \ --header "Content-Type: application/vnd.atlas.2023-01-01+json" \ --include \ --request GET "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/encryptionAtRest/AZURE/privateEndpoints"
{ "links": [ { "href": "https://cloud.mongodb.com/api/atlas", "rel": "self" } ], "results": [ { "cloudProvider": "AZURE", "errorMessage": "string", "id": "24-hexadecimal-digit-string", "regionName": "string", "status": "INITIATING", "privateEndpointConnectionName": "string" } ], "totalCount": 0 }
プライベートエンドポイントを承認してから、プライベートエンドポイントの現在のステータスが Atlas に反映されるまでに最大 3 分かかります。 プライベートエンドポイントは、次のいずれかのステータスになります。
初期化 | Atlas がプライベートエンドポイントを作成しているプロセス中であることを示します。 |
PENDING_ACCe使用 | プライベートエンドポイントがまだ承認されていないことを示します。 Atlas がプライベートエンドポイントを使用できるようにするには、プライベートエンドポイントを受け入れる必要があります。 |
アクティブ | プライベートエンドポイントが承認され、Atlas が または として使用していることを示します。 |
PENDING_RECREATION | プライベートエンドポイントが拒否または削除され、Atlas が同じリージョンに新しいプライベートエンドポイントを作成するプロセス中であることを示します。 |
失敗 | プライベートエンドポイントの作成が失敗したことを示します。 |
Deleting | Atlas がプライベートエンドポイントの削除プロセス中であることを示します。 |
プロジェクトで CMK を使用した保管時の暗号化(オーバープライベート ネットワーク)を有効にしたら、プロジェクト内の各 Atlas クラスターに対して CMK を使用した保管 時の暗号化を 有効にできます。
Atlas クラスターのカスタマー キー管理の有効化
プロジェクトでカスタマー マネージド キーを有効 にした後、暗号化するデータを含む各 Atlas クラスターに対してカスタマー キー マネジメントを有効にする必要があります。 Atlas プロジェクトにプライベートエンドポイント接続を構成した場合、Atlas は、パブリック インターネットを使用した接続を許可する既存のクラスターを含む、カスタマー マネージド キーをすでに有効にしたすべてのクラスターを、プライベートエンドポイント接続のみを使用するように自動的に移行します。
注意
該当プロジェクト内のクラスターのカスタマー キー管理を有効にするには、Project Owner
ロールが必要です。
新しいクラスターの場合は、クラスターを作成するときに、 独自の暗号化キーの管理設定 をYesに切り替えます(まだ有効になっていない場合)。
既存クラスターの場合:
AtlasGoClustersAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー
まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。
まだ表示されていない場合は、サイドバーの [Clusters] をクリックします。
[ Clusters (クラスター) ] ページが表示されます。
プロジェクトのカスタマー マネージド キーの無効化
プロジェクトの CMK を無効にするには、まず、状態に関係なく、プロジェクトに関連付けられているすべてのプライベートエンドポイントを削除する必要があります。アクティブなプライベートエンドポイントに関連付けられているプロジェクトの CMK を無効にしようとすると、Atlas にエラーが表示されます。
プロジェクトのすべてのプライベートエンドポイントを削除した後、プロジェクトの機能を無効にする前に、プロジェクト内の各クラスターでカスタマー キー管理を無効にする必要があります。
警告
Atlas プロジェクト内でカスタマー キー管理を無効にする前に、Atlas プロジェクト内のいずれかのクラスターが使用する AKV キーを無効にしたり削除したりし ない でください。Atlas がAKVキーにアクセスできない場合、キーが暗号化したデータにアクセスできなくなります。
プライベートエンドポイント接続の拒否または削除
DELETE
プライベートエンドポイントを正常に削除するには、Atlas Administration APIエンドポイントに GET
リクエストを送信し、削除するプロジェクトとプライベートエンドポイントのIDを指定します。削除するプライベートエンドポイントのIDは、Atlas Administration API 1 つのプロバイダーの 1 つのプライベートエンドポイント サービスを返す リクエストを送信することで取得できます。
例
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/vnd.atlas.2024-10-23+json" \\ or a different version of the Atlas Admin API --header "Content-Type: application/json" \ --include \ --request DELETE "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/encryptionAtRest/AZURE/privateEndpoints/{endpointId}" \ --data ' { "cloudProvider": "AZURE", "regions": [ "string" ] }'
Atlas Administration API を使用してプライベートエンドポイントを削除すると、プライベートエンドポイントはDELETING
ステータスに移行し、Atlas がプライベートエンドポイントを削除します。
Azure UI からアクティブなプライベートエンドポイントを削除または拒否すると、Atlas は同じリージョンに新しいプライベートエンドポイントの再作成を自動的に試行します。 プライベートエンドポイントのステータスを確認するには、Atlas Administration API encryptionAtRest
GET
すべてのエンドポイントまたは1 つのエンドポイントを取得します。このパスにはプライベートエンドポイントの ID を指定する必要があります。
例
1 つのプロジェクトのすべてのプライベートエンドポイントを返す
curl --user "{PUBLIC-KEY}:{PRIVATE-KEY}" --digest \ --header "Accept: application/vnd.atlas.2024-10-23+json" \\ or a different version of the Atlas Admin API --header "Content-Type: application/json" \ --include \ --request GET "https://cloud.mongodb.com/api/atlas/v2/groups/{groupId}/encryptionAtRest/AZURE/privateEndpoints/"
Atlas が新しいプライベートエンドポイントを作成しようとしている間に、拒否または削除したプライベートエンドポイントのステータスはPENDING_RECREATION
に移行し、Atlas が作成しようとする新しいエンドポイントはINITIATING
状態になります。 新しいプライベートエンドポイントは、作成後に承認する必要があります。
プロジェクトのプライベートエンドポイント接続の無効化
プロジェクトのプライベートエンドポイント接続を無効にするには、まずプロジェクトに関連付けられているすべてのプライベートエンドポイントを削除する必要があります。 Atlas は、プロジェクトのプライベートエンドポイント接続を無効にしません。
プロジェクトのすべてのプライベートエンドポイントを削除した後、Atlas Administration API を使用してプロジェクトのプライベートエンドポイント接続を無効にできます。 プライベートエンドポイント接続を無効にするには、 requirePrivateNetworking
ブール値フラグ値をfalse
に設定して、エンドポイントにPATCH
リクエストを送信します。
例
{ "azureKeyVault": { "azureEnvironment": "AZURE", "clientID": "632ff709-32a8-48a3-8224-30d2386fadaf", "enabled": true, "keyIdentifier": "https://EXAMPLEKeyVault.vault.azure.net/keys/EXAMPLEKey/d891821e3d364e9eb88fbd3d11807b86", "keyVaultName": "string", "requirePrivateNetworking": false, "resourceGroupName": "string", "secret": "string", "subscriptionID": "a39012fb-d604-4cd1-8841-77f705f3e6d5", "tenantID": "ee46317d-36a3-4472-a3dd-6549e901da0b" } }
暗号化のキーへのアクセスを取り消す
AKV内から Atlas の暗号化のキーへのアクセスを取り消して、データを固定できます。 暗号化のキーへのアクセスを取り消すと、Atlas はクラスターを自動的に一時停止します。
Azure Key 識別子のローテーション
注意
開始する前に、 「 Azure キー識別子のローテーションについて 」を参照してください。
Atlas プロジェクトに関連付けられたAKVに新しいキーを作成する必要があります。 次の手順では、Atlas で新しいキー識別子を指定して、Atlas プロジェクト キー識別子をローテーションする方法を説明します。
AtlasGoAdvancedAtlas で、プロジェクトの ページにGoします。
まだ表示されていない場合は、プロジェクトを含む組織をナビゲーション バーの Organizations メニューで選択します。
まだ表示されていない場合は、ナビゲーション バーの Projects メニューからプロジェクトを選択します。
サイドバーで、 Security見出しの下のAdvancedをクリックします。
詳細ページが表示されます。
Azure 認証情報を更新します。
Azure Key Vaultセレクターがまだアクティブでない場合は、 Azure Key Vaultをクリックします。
Encryption Keyセレクターがまだアクティブでない場合は、 Encryption Keyをクリックします。
Key Identifierフィールドに Azure キー識別子を入力します。
新しい暗号化キー識別子への完全なURLを含めます。 例:
https://mykeyvault.vault.azure.net/keys/AtlasKMSKey/a241124e3d364e9eb99fbd3e11124b23 重要
暗号化のキーは、プロジェクト用に構成されたキーヴォールトに属している必要があります。 プロジェクトに現在構成されているキーヴォールトを表示するには、 Key Vaultセクションをクリックします。
[Update Credentials] をクリックします。
Atlas は、キー識別子のローテーション プロセス中に Atlas UI にバナーを表示します。 変更がデプロイされるまで、元のキー識別子を削除したり無効にしたり しない でください。
クラスターが クラスターのバックアップを使用する場合は、スナップショットが暗号化にそのキーを使用していないことを検証するまで、元のキー識別子を削除したり無効にしたり しないでください。
関連トピック
Atlas クラスターの配置時にキー管理を使用して保管時の暗号化を有効にするには、「独自の暗号化キーの管理 」を参照してください。
既存の Atlas クラスターでキー管理を使用して保管時の暗号化を有効にするには、 「 保管時の暗号化の有効化 」を参照してください。
Atlas でキー管理を使用した保管時の暗号化の詳細については、「 カスタマー キー管理を使用した保管時の暗号化 」を参照してください。
MongoDB の保存時の暗号化の詳細については、MongoDB サーバーのドキュメントの「保存時の暗号化」を参照してください。
クラウドバックアップによる保管時の暗号化について詳しくは、「ストレージ エンジンとクラウドバックアップの暗号化」を参照してください。