Acceso a Azure Key Vault desde Azure Cosmos DB mediante una identidad administrada

SE APLICA A: SQL API Cassandra API Gremlin API Table API Azure Cosmos DB API para MongoDB

Es posible que Azure Cosmos DB tenga que leer datos de secretos y claves desde Azure Key Vault. Por ejemplo, es posible que la instancia de Azure Cosmos DB necesite una clave administrada por el cliente almacenada en Azure Key Vault. Para ello, Azure Cosmos DB se debe configurar con una identidad administrada y, después, una directiva de acceso de Azure Key Vault debe conceder acceso a la identidad administrada.

Prerrequisitos

Comprobación de requisitos previos

  1. En una ventana de terminal o comando, almacene los nombres del recurso de Azure Key Vault, la cuenta de Azure Cosmos DB y el grupo de recursos como variables de shell denominadas keyVaultName, cosmosName y resourceGroupName.

    # Variable for function app name
    keyVaultName="msdocs-keyvault"
    
    # Variable for Cosmos DB account name
    cosmosName="msdocs-cosmos-app"
    
    # Variable for resource group name
    resourceGroupName="msdocs-cosmos-keyvault-identity"
    

    Nota:

    Estas variables se volverán a usar en pasos posteriores. En este ejemplo se supone que el nombre de la cuenta de Azure Cosmos DB es msdocs-cosmos-app, el nombre del almacén de claves es msdocs-keyvault y el nombre del grupo de recursos es msdocs-cosmos-keyvault-identity.

Creación de una identidad administrada asignada por el sistema en Azure Cosmos DB

En primer lugar, cree una identidad administrada asignada por el sistema para la cuenta existente de Azure Cosmos DB.

Importante

En esta guía paso a paso se supone que usa una identidad administrada asignada por el sistema. Muchos de los pasos son similares a los del uso de una identidad administrada asignada por el usuario.

  1. Ejecute az cosmosdb identity assign para crear una identidad administrada asignada por el sistema.

    az cosmosdb identity assign \
        --resource-group $resourceGroupName \
        --name $cosmosName 
    
  2. Recupere los metadatos de la identidad administrada asignada por el sistema mediante az cosmosdb identity show, filtre para devolver simplemente la propiedad principalId mediante el parámetro query y almacene el resultado en una variable de shell denominada principal.

    principal=$(
        az cosmosdb identity show \
            --resource-group $resourceGroupName \
            --name $cosmosName \
            --query principalId \
            --output tsv
    )
    
    echo $principal
    

    Nota:

    Esta variable se volverá a usar en un paso posterior.

Creación de una directiva de acceso de Azure Key Vault

En este paso, creará una directiva de acceso en Azure Key Vault mediante la identidad administrada anteriormente.

  1. Use el comando az keyvault set-policy para crear una directiva de acceso en Azure Key Vault que proporcione permiso a la identidad administrada de Azure Cosmos DB para acceder a Key Vault. En concreto, la directiva usará los parámetros key-permissions para conceder permisos a las claves get, listy import.

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

Pasos siguientes