この記事では、Azure DocumentDB の保存データ暗号化用に カスタマー マネージド キー (CMK) を構成する方法について説明します。 このガイドの手順では、新しい Azure DocumentDB クラスター、レプリカ クラスター、または復元されたクラスターを構成します。 CMK のセットアップでは、Azure Key Vault に格納されているカスタマー マネージド キーとユーザー割り当てマネージド ID が使用されます。
[前提条件]
Azure サブスクリプション
- Azure サブスクリプションをお持ちでない場合は、無料アカウントを作成してください
ユーザー割り当てマネージド ID と Azure Key Vault を準備する
MonogDB クラスター用の Azure DocumentDB でカスタマー マネージド キー暗号化を構成するには、ユーザー割り当てマネージド ID、Azure Key Vault インスタンス、および適切に構成されたアクセス許可が必要です。
Important
CMK の構成に使用されるユーザー割り当てマネージド ID と Azure Key Vault インスタンスは、Azure DocumentDB クラスターがホストされ、すべて同じ Microsoft テナントに属している同じ Azure リージョンに存在する必要があります。
Azure portal を使用して以下を実行します。
クラスター リージョンにユーザー割り当てマネージド ID がまだない場合は、1 つ作成します。
キー ストアがまだ 1 つ作成されていない場合は、クラスター リージョンに 1 つの Azure Key Vault を作成します。
要件を満たしていることを確認します。 また、キー ストアを構成する前と、キーを作成して必要なアクセス許可をユーザー割り当てマネージド ID に割り当てる前に、 推奨事項 に従ってください。
キーストアにキーを 1 つ作成します。
要件で説明されているように、ユーザー割り当てマネージド ID のアクセス許可を Azure Key Vault インスタンス に付与します。
新しい Azure DocumentDB クラスターのプロビジョニング中に、[暗号化] タブでクラスター データ暗号化用のサービスマネージド キーまたはカスタマー マネージド キーが構成されます。データ暗号化のカスタマー マネージド キーを選択します。
[ ユーザー割り当てマネージド ID ] セクションで、[ ID の変更] を選択します。
ユーザー割り当てマネージド ID の一覧で、Azure Key Vault に格納されているデータ暗号化キーへのアクセスにクラスターで使用するものを選択します。
[] を選択し、[] を追加します。
キー の選択方法で、[ キーの選択 ] を選択します。
[ キー ] セクションで、[ キーの変更 ] を選択します。
[ キーの選択 ] ウィンドウで、 キー コンテナーの Azure Key Vault とキーの暗号化 キーを選択し、[ 選択] を選択して選択内容を確認します。
Important
選択した Azure Key Vault インスタンスは、Azure DocumentDB クラスターがホストされるのと同じ Azure リージョンに存在する必要があります。
選択したユーザー割り当てマネージド ID と暗号化キーを [ 暗号化 ] タブで確認し、[ 確認と作成 ] を選択してクラスターを作成します。
az rest コマンドを使用して、新しいクラスターのプロビジョニング中に、ユーザー割り当て暗号化キーを使用してデータ暗号化を有効にすることができます。
次の内容を含む JSON ファイルを作成します。
$記号で始まるプレースホルダーを実際の値に置き換え、ファイルを保存します。
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$userAssignedIdentityName": {}
}
},
"location": "$regionName",
"properties": {
"administrator": {
"userName": "$adminName",
"password": "$complexPassword"
},
"serverVersion": "8.0",
"storage": {
"sizeGb": 32
},
"compute": {
"tier": "M40"
},
"sharding": {
"shardCount": 1
},
"highAvailability": {
"targetMode": "ZoneRedundantPreferred"
},
"encryption": {
"customerManagedKeyEncryption": {
"keyEncryptionKeyIdentity": {
"identityType": "UserAssignedIdentity",
"userAssignedIdentityResourceId": "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$userAssignedIdentityName"
},
"keyEncryptionKeyUrl": "$encryptionKeyUrl"
}
}
}
}
注
keyEncryptionKeyUrlにはキー名を含める必要がありますが、特定のキー バージョンを含めることはできません。
次の Azure CLI コマンドを実行して REST API 呼び出しを行い、Azure DocumentDB クラスターを作成します。 variables セクションのプレースホルダーと、--body コマンド ラインのaz rest パラメーターのファイル名を実際の値に置き換えます。
# Define your variables
$randomIdentifier = (New-Guid).ToString().Substring(0,8)
$subscriptionId="00000000-0000-0000-0000-000000000000"
$resourceGroup="DocumentDB"
$mongoClustersName="msdocscr$randomIdentifier"
# Execute the az rest command to make REST API call
az rest --method "PUT" --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.DocumentDB/mongoClusters/${mongoClustersName}?api-version=2025-09-01 --body @jsonFileFromThePreviousStep.json
CMK を有効にしてクラスターのデータ暗号化設定を更新する
カスタマー マネージド キーを使用してデータ暗号化を使用してデプロイされた既存のクラスターでは、いくつかの構成変更を行うことができます。 暗号化キーが格納されているキー コンテナーと、カスタマー マネージド キーとして使用される暗号化キーを変更できます。 サービスによって使用されるユーザー割り当てマネージド ID を変更して、キー ストアに保持されている暗号化キーにアクセスすることもできます。
クラスターサイドバーの [設定]で、[ データ暗号化]を選択します。
[ ユーザー割り当てマネージド ID ] セクションで、[ ID の変更] を選択します。
ユーザー割り当てマネージド ID の一覧で、Azure Key Vault に格納されているデータ暗号化キーへのアクセスにクラスターで使用するものを選択します。
[] を選択し、[] を追加します。
キー の選択方法で、[ キーの選択 ] を選択します。
キーで、[キーの変更] を選択します。
[ キーの選択 ] ウィンドウで、 キー コンテナーの Azure Key Vault とキーの暗号化 キーを選択し、[ 選択] を選択して選択内容を確認します。
Important
選択した Azure Key Vault インスタンスは、Azure DocumentDB クラスターがホストされているのと同じ Azure リージョンに存在する必要があります。
[ データ暗号化 ] ページで選択したユーザー割り当てマネージド ID と暗号化キーを確認し、[ 保存] を選択して選択内容を確認し、レプリカ クラスターを作成します。
REST API 呼び出しを使用して、既存のクラスターでのデータ暗号化用のユーザー割り当てマネージド ID と暗号化キーを変更できます。
次の内容を含む JSON ファイルを作成します。
$記号で始まるプレースホルダーを実際の値に置き換え、ファイルを保存します。
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$userAssignedIdentityName": {}
}
},
"location": "$regionName",
"properties": {
"encryption": {
"customerManagedKeyEncryption": {
"keyEncryptionKeyIdentity": {
"identityType": "UserAssignedIdentity",
"userAssignedIdentityResourceId": "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$userAssignedIdentityName"
},
"keyEncryptionKeyUrl": "$encryptionKeyUrl"
}
}
}
}
注
keyEncryptionKeyUrlにはキー名を含める必要がありますが、特定のキー バージョンを含めることはできません。
次の Azure CLI コマンドを実行して REST API 呼び出しを行い、Azure DocumentDB クラスターを作成します。 variables セクションのプレースホルダーと、--body コマンド ラインのaz rest パラメーターのファイル名を実際の値に置き換えます。
# Define your variables
$subscriptionId="00000000-0000-0000-0000-000000000000"
$resourceGroup="resourceGroupName"
$mongoClustersName="clusterName"
# Execute the az rest command to make REST API call
az rest --method "PUT" --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.DocumentDB/mongoClusters/${mongoClustersName}?api-version=2025-09-01 --body @jsonFileFromThePreviousStep.json
キーへのアクセスに使用するユーザー割り当てマネージド ID のみを変更する場合でも、データ暗号化に使用するキーのみを変更する場合でも、両方を同時に変更する場合でも、JSON ファイルに一覧表示されているすべてのパラメーターを指定する必要があります。
指定されたキーまたはユーザー割り当てマネージド ID が存在しない場合は、エラーが発生します。
パラメーターとして渡された ID が存在し、有効な場合は、Azure DocumentDB クラスターに関連付けられているユーザー割り当てマネージド ID の一覧に自動的に追加されます。 これは、コマンドが後で他のエラーで失敗した場合でも当てはまる場合です。
既存のクラスターでデータ暗号化モードを変更する
データ暗号化にサービスマネージド キーまたはカスタマー マネージド キー (CMK) のどちらを使用するかを決定できる唯一のポイントは、クラスターの作成時です。 その決定を行い、クラスターを作成したら、2 つのオプションを切り替えることはできません。 別の暗号化オプションを使用して Azure DocumentDB クラスターのコピーを作成するには、レプリカ クラスターを作成するか、クラスターの復元を実行して、レプリカ クラスターまたは復元されたクラスターの作成時に新しい暗号化モードを選択します。
レプリカ クラスターの作成時にカスタマー マネージド キー (CMK) データ暗号化を有効または無効にする
CMK または SMK データ暗号化を使用してレプリカ クラスターを作成し、レプリカ クラスターで CMK を有効または無効にするには、次の手順に従います。
クラスターのサイドバーの [設定] で、[グローバル配布] を選びます。
[新しい読み取りレプリカの追加] を選択します。
[レプリカ名の 読み取り ] フィールドにレプリカ クラスター名を指定します。
読み取りレプリカリージョン内でリージョンを選択します。 レプリカ クラスターは、選択した Azure リージョンでホストされます。
注
レプリカ クラスターは常に、プライマリ (読み取り/書き込み) クラスターと同じ Azure サブスクリプションとリソース グループに作成されます。
[ データ暗号化 ] セクションで、 カスタマー マネージド キー を選択して、レプリカ クラスターで CMK または サービスマネージド キー を有効にして CMK を無効にします。
[ ユーザー割り当てマネージド ID ] セクションで、[ ID の変更] を選択します。
ユーザー割り当てマネージド ID の一覧で、Azure Key Vault に格納されているデータ暗号化キーへのアクセスにクラスターで使用するものを選択します。
[] を選択し、[] を追加します。
キー の選択方法で、[ キーの選択 ] を選択します。
キーで、[キーの変更] を選択します。
[ キーの選択 ] ウィンドウで、 キー コンテナーの Azure Key Vault とキーの暗号化 キーを選択し、[ 選択] を選択して選択内容を確認します。
[グローバル配布] ページで選択したユーザー割り当てマネージド ID と暗号化キーを確認し、[保存] を選択して選択内容を確認し、レプリカ クラスターを作成します。
同じリージョンで CMK が有効になっているレプリカ クラスターを作成するには、次の手順に従います。
次の内容を含む JSON ファイルを作成します。
$記号で始まるプレースホルダーを実際の値に置き換え、ファイルを保存します。
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$userAssignedIdentityName": {}
}
},
"location": "$targetRegionName",
"properties": {
"createMode": "GeoReplica",
"replicaParameters": {
"sourceResourceId": "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.DocumentDB/mongoClusters/$sourceClusterName",
"sourceLocation": "sourceRegionName"
},
"encryption": {
"customerManagedKeyEncryption": {
"keyEncryptionKeyIdentity": {
"identityType": "UserAssignedIdentity",
"userAssignedIdentityResourceId": "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$userAssignedIdentityName"
},
"keyEncryptionKeyUrl": "$encryptionKeyUrl"
}
}
}
}
注
keyEncryptionKeyUrlにはキー名を含める必要がありますが、特定のキー バージョンを含めることはできません。
次の Azure CLI コマンドを実行して REST API 呼び出しを行い、Azure DocumentDB クラスターを作成します。 variables セクションのプレースホルダーと、--body コマンド ラインのaz rest パラメーターのファイル名を実際の値に置き換えます。
# Define your variables
$subscriptionId="00000000-0000-0000-0000-000000000000"
$resourceGroup="resourceGroupName"
$mongoClustersName="clusterName"
# Execute the az rest command to make REST API call
az rest --method "PUT" --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.DocumentDB/mongoClusters/${mongoClustersName}?api-version=2025-09-01 --body @jsonFileFromThePreviousStep.json
クラスターの復元中にカスタマー マネージド キー (CMK) データ暗号化を有効または無効にする
復元プロセスでは、元の Azure リージョン、サブスクリプション、およびリソース グループと同じ構成で新しいクラスターが作成されます。 CMK または SMK を有効にして復元されたクラスターを作成するには、次の手順に従います。
既存の Azure DocumentDB クラスターを選択します。
クラスターサイドバーの [設定]で、[ ポイントインタイムリストア]を選択します。
日付を選択し、日時フィールドに時刻 (UTC タイム ゾーン) を指定します。
[復元先クラスター名] フィールドに クラスター名を 入力します。
[管理者ユーザー名] フィールドに、復元されたクラスターのクラスター 管理者名 を入力します。
[パスワード ] フィールドと [パスワードの確認] フィールドに、管理者ロールの パスワード を入力します。
[ データ暗号化 ] セクションで、 カスタマー マネージド キー を選択して CMK を有効にします。 復元されたクラスターで CMK を無効にする必要がある場合は、 サービスマネージド キーを選択します。
[ ユーザー割り当てマネージド ID ] セクションで、[ ID の変更] を選択します。
ユーザー割り当てマネージド ID の一覧で、Azure Key Vault に格納されているデータ暗号化キーへのアクセスにクラスターで使用するものを選択します。
[] を選択し、[] を追加します。
キー の選択方法で、[ キーの選択 ] を選択します。
キーで、[キーの変更] を選択します。
[ キーの選択 ] ウィンドウで、 キー コンテナーの Azure Key Vault とキーの暗号化 キーを選択し、[ 選択] を選択して選択内容を確認します。
[ 送信] を選択してクラスターの復元を開始します。
CMK が有効になっているクラスターを復元するには、次の手順に従います。
次の内容を含む JSON ファイルを作成します。
$記号で始まるプレースホルダーを実際の値に置き換え、ファイルを保存します。
{
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$userAssignedIdentityName": {}
}
},
"location": "$regionName",
"properties": {
"administrator": {
"userName": "$adminName"
},
"createMode": "PointInTimeRestore",
"restoreParameters": {
"pointInTimeUTC": "yyyy-mm-ddThh:mm:ssZ",
"sourceResourceId": "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.DocumentDB/mongoClusters/$restoredClusterName"
},
"encryption": {
"customerManagedKeyEncryption": {
"keyEncryptionKeyIdentity": {
"identityType": "UserAssignedIdentity",
"userAssignedIdentityResourceId": "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$userAssignedIdentityName"
},
"keyEncryptionKeyUrl": "$encryptionKeyUrl"
}
}
}
}
注
keyEncryptionKeyUrlにはキー名を含める必要がありますが、特定のキー バージョンを含めることはできません。
次の Azure CLI コマンドを実行して REST API 呼び出しを行い、Azure DocumentDB クラスターを作成します。 variables セクションのプレースホルダーと、--body コマンド ラインのaz rest パラメーターのファイル名を実際の値に置き換えます。
# Define your variables
$subscriptionId="00000000-0000-0000-0000-000000000000"
$resourceGroup="resourceGroupName"
$mongoClustersName="clusterName"
# Execute the az rest command to make REST API call
az rest --method "PUT" --url https://management.azure.com/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/Microsoft.DocumentDB/mongoClusters/${mongoClustersName}?api-version=2025-09-01 --body @jsonFileFromThePreviousStep.json
復元されたクラスターが作成されたら、 復元後のタスクの一覧を確認します。
関連コンテンツ