マネージド ID を使用して Azure Cosmos DB から Azure Key Vault にアクセスする
適用対象: NoSQL MongoDB Cassandra Gremlin Table
Azure Cosmos DB では、Azure Key Vault からシークレット/キー データを読み取る必要がある場合があります。 たとえば、Azure Cosmos DB では、Azure Key Vault に格納されているカスタマー マネージド キーが必要になる場合があります。 これを行うには、Azure Cosmos DB をマネージド ID で構成し、その後 Azure Key Vault アクセス ポリシーからマネージド ID アクセスの許可を得る必要があります。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
- 既存の Azure Cosmos DB API for NoSQL アカウント。 Azure Cosmos DB API for NoSQL アカウントを作成する
- 既存の Azure Key Vault リソース。 Azure CLI を使用してキー コンテナーを作成する
- この記事の手順を実行するには、Azure CLI をインストールして、Azure にサインインします。
前提条件のチェック
ターミナルまたはコマンド ウィンドウで、Azure Key Vault リソース、Azure Cosmos DB アカウント、リソース グループの名前を、
keyVaultName
、cosmosName
、resourceGroupName
という名前のシェル変数として保存します。# Variable for function app name keyVaultName="msdocs-keyvault" # Variable for Azure Cosmos DB account name cosmosName="msdocs-cosmos-app" # Variable for resource group name resourceGroupName="msdocs-cosmos-keyvault-identity"
注意
これらの変数は、後の手順で再利用します。 この例では、Azure Cosmos DB アカウント名が
msdocs-cosmos-app
、キー コンテナー名がmsdocs-keyvault
、リソース グループ名がmsdocs-cosmos-keyvault-identity
であることを前提としています。
Azure Cosmos DB でシステム割り当てマネージド ID を作成する
まず、既存の Azure Cosmos DB アカウントのシステム割り当てマネージド ID を作成します。
重要
この攻略ガイドでは、システム割り当てマネージド ID を使用していることを前提としています。 手順の多くは、ユーザー割り当てマネージド ID を使用している場合と同様です。
az cosmosdb identity assign
を実行して、新しいシステム割り当てマネージド ID を作成します。az cosmosdb identity assign \ --resource-group $resourceGroupName \ --name $cosmosName
az cosmosdb identity show
を使用してシステム割り当てマネージド ID のメタデータを取得し、principalId
プロパティを返すようにクエリ パラメーターを使用してフィルター処理を行い、その結果をprincipal
という名前のシェル変数に保存します。principal=$( az cosmosdb identity show \ --resource-group $resourceGroupName \ --name $cosmosName \ --query principalId \ --output tsv ) echo $principal
注意
この変数は、後の手順で再利用します。
Azure Key Vault アクセス ポリシーを作成する
この手順では、以前のマネージド ID を使用して Azure Key Vault にアクセス ポリシーを作成します。
az keyvault set-policy
コマンドを使用して、Azure Key Vault にアクセス ポリシーを作成します。これにより、Key Vault に対するアクセス許可が Azure Cosmos DB マネージド ID に付与されます。 具体的には、ポリシーでは key-permissions パラメーターを使用して、キーのget
、list
、import
に対するアクセス許可を付与します。az keyvault set-policy \ --name $keyVaultName \ --object-id $principal \ --key-permissions get list import
次のステップ
- Azure Cosmos DB アカウントで Azure Key Vault のカスタマー マネージド キーを使用するには、カスタマー マネージド キーの構成に関する記事を参照してください
- Azure Key Vault を使用してシークレットを管理するには、資格情報のセキュリティ保護に関する記事を参照してください。