マネージド 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 アクセスの許可を得る必要があります。

前提条件

前提条件のチェック

  1. ターミナルまたはコマンド ウィンドウで、Azure Key Vault リソース、Azure Cosmos DB アカウント、リソース グループの名前を、keyVaultNamecosmosNameresourceGroupName という名前のシェル変数として保存します。

    # 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 を使用している場合と同様です。

  1. az cosmosdb identity assign を実行して、新しいシステム割り当てマネージド ID を作成します。

    az cosmosdb identity assign \
        --resource-group $resourceGroupName \
        --name $cosmosName 
    
  2. 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 にアクセス ポリシーを作成します。

  1. az keyvault set-policy コマンドを使用して、Azure Key Vault にアクセス ポリシーを作成します。これにより、Key Vault に対するアクセス許可が Azure Cosmos DB マネージド ID に付与されます。 具体的には、ポリシーでは key-permissions パラメーターを使用して、キーの getlistimport に対するアクセス許可を付与します。

    az keyvault set-policy \
        --name $keyVaultName \
        --object-id $principal \
        --key-permissions get list import
    

次のステップ