Compartilhar via


Integrar o Azure Cosmos DB for NoSQL com o conector de serviço

Esta página mostra os métodos de autenticação e clientes com suporte, além de exibir um código de exemplo que você pode usar para conectar o Azure Cosmos DB for NoSQL a outros serviços de nuvem utilizando o Service Connector. Você ainda poderá se conectar ao Azure Cosmos DB for NoSQL em outras linguagens de programação sem usar o Service Connector. Esta página também mostra nomes e valores da variável de ambiente padrão (ou configuração do Spring Boot) que você obtém ao criar a conexão de serviço.

Serviço de computação com suporte

O Service Connector pode ser usado para conectar os seguintes serviços de computação ao Azure Cosmos DB for NoSQL:

  • Serviço de Aplicativo do Azure
  • Aplicativos de Contêiner do Azure
  • Azure Functions
  • AKS (Serviço de Kubernetes do Azure)
  • Azure Spring Apps

Tipos de autenticação e tipos de cliente com suporte

A tabela abaixo mostra quais combinações de tipos de cliente e métodos de autenticação têm suporte para conectar seu serviço de computação ao Azure Cosmos DB for NoSQL usando o Service Connector. “Sim” indica que a combinação tem suporte e “Não” indica que ela não tem.

Tipo de cliente Identidade gerenciada atribuída pelo sistema Identidade gerenciada atribuída pelo usuário Cadeia de conexão/segredo Entidade de serviço
.NET Sim Sim Sim Sim
Java Sim Sim Sim Yes
Java – Spring Boot Sim Sim Sim Sim
Node.js Sim Sim Sim Sim
Python Sim Sim Sim Yes
Go Sim Sim Sim Yes
Nenhum Sim Sim Sim Yes

Essa tabela indica que todas as combinações de tipos de clientes e métodos de autenticação na tabela têm suporte. Todos os tipos de cliente podem usar qualquer um dos métodos de autenticação para se conectar ao Azure Cosmos DB for NoSQL usando o Service Connector.

Nomes de variáveis de ambiente padrão ou propriedades de aplicativo e código de exemplo

Use os detalhes de conexão abaixo para conectar seus serviços de computação ao Azure Cosmos DB for NoSQL. Para cada exemplo abaixo, substitua os textos de espaço reservado <database-server>, <database-name>,<account-key>, <resource-group-name>, <subscription-ID>, <client-ID>, <SQL-server>, <client-secret>, <tenant-id> e <access-key> por suas informações. Para saber mais sobre as convenções de nomenclatura, confira o artigo Detalhes internos no conector de serviço.

Identidade gerenciada atribuída pelo sistema

Tipo de cliente SpringBoot

O uso de uma identidade gerenciada atribuída pelo sistema como o tipo de autenticação só está disponível para a versão 4.0 ou superior do Spring Cloud Azure.

Nome da variável de ambiente padrão Descrição Valor de exemplo
spring.cloud.azure.cosmos.credential.managed-identity-enabled Indica se a identidade gerenciada deve ser habilitada true
spring.cloud.azure.cosmos.database O banco de dados https://management.azure.com/.default
spring.cloud.azure.cosmos.endpoint O ponto de extremidade do seu recurso https://<database-server>.documents.azure.com:443/

Outros tipos de clientes

Nome da variável de ambiente padrão Descrição Valor de exemplo
AZURE_COSMOS_LISTCONNECTIONSTRINGURL A URL para obter a cadeia de conexão https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<database-server>/listConnectionStrings?api-version=2021-04-15
AZURE_COSMOS_SCOPE O escopo de sua identidade gerenciada https://management.azure.com/.default
AZURE_COSMOS_RESOURCEENDPOINT O ponto de extremidade do seu recurso https://<database-server>.documents.azure.com:443/

Código de exemplo

Consulte as etapas e o código abaixo para se conectar ao Azure Cosmos DB for NoSQL usando uma identidade atribuída pelo sistema.

  1. Instale as dependências.

    dotnet add package Microsoft.Azure.Cosmos
    dotnet add package Azure.Identity
    
  2. Autentique usando o pacote NuGet Azure.Identity e obtenha o URL do ponto de extremidade da variável de ambiente adicionada pelo Service Connector. Ao usar o código abaixo, descompacte a parte do snippet de código para o tipo de autenticação que você deseja usar.

    using Microsoft.Azure.Cosmos;
    using Azure.Core;
    using Azure.Identity;
    using System; 
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // TokenCredential credential = new DefaultAzureCredential();
    
    // For user-assigned identity.
    // TokenCredential credential = new DefaultAzureCredential(
    //     new DefaultAzureCredentialOptions
    //     {
    //         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    //     }
    // );
    
    // For service principal.
    // TokenCredential credential = new ClientSecretCredential(
    //     tenantId: Environment.GetEnvironmentVariable("AZURE_COSMOS_TENANTID")!,
    //     clientId: Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID")!,
    //     clientSecret: Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTSECRET")!,
    //     options: new TokenCredentialOptions()
    // );
    
    // Create a new instance of CosmosClient using the credential above
    using CosmosClient client = new(
        accountEndpoint: Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT")!,
        tokenCredential: credential
    );
    

Identidade gerenciada atribuída pelo usuário

Tipo de cliente SpringBoot

O uso de uma identidade gerenciada atribuída pelo usuário como o tipo de autenticação só está disponível para o Spring Cloud Azure versão 4.0 ou superior.

Nome da variável de ambiente padrão Descrição Valor de exemplo
spring.cloud.azure.cosmos.credential.managed-identity-enabled Indica se a identidade gerenciada deve ser habilitada true
spring.cloud.azure.cosmos.database O banco de dados https://management.azure.com/.default
spring.cloud.azure.cosmos.endpoint O ponto de extremidade do seu recurso https://<database-server>.documents.azure.com:443/
spring.cloud.azure.cosmos.credential.client-id Sua ID de cliente <client-ID>

Outros tipos de clientes

Nome da variável de ambiente padrão Descrição Valor de exemplo
AZURE_COSMOS_LISTCONNECTIONSTRINGURL A URL para obter a cadeia de conexão https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<database-server>/listConnectionStrings?api-version=2021-04-15
AZURE_COSMOS_SCOPE O escopo de sua identidade gerenciada https://management.azure.com/.default
AZURE_COSMOS_CLIENTID Sua ID de cliente <client-ID>
AZURE_COSMOS_RESOURCEENDPOINT O ponto de extremidade do seu recurso https://<database-server>.documents.azure.com:443/

Código de exemplo

Consulte as etapas e o código abaixo para se conectar ao Azure Cosmos DB for NoSQL usando uma identidade atribuída pelo usuário.

  1. Instale as dependências.

    dotnet add package Microsoft.Azure.Cosmos
    dotnet add package Azure.Identity
    
  2. Autentique usando o pacote NuGet Azure.Identity e obtenha o URL do ponto de extremidade da variável de ambiente adicionada pelo Service Connector. Ao usar o código abaixo, descompacte a parte do snippet de código para o tipo de autenticação que você deseja usar.

    using Microsoft.Azure.Cosmos;
    using Azure.Core;
    using Azure.Identity;
    using System; 
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // TokenCredential credential = new DefaultAzureCredential();
    
    // For user-assigned identity.
    // TokenCredential credential = new DefaultAzureCredential(
    //     new DefaultAzureCredentialOptions
    //     {
    //         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    //     }
    // );
    
    // For service principal.
    // TokenCredential credential = new ClientSecretCredential(
    //     tenantId: Environment.GetEnvironmentVariable("AZURE_COSMOS_TENANTID")!,
    //     clientId: Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID")!,
    //     clientSecret: Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTSECRET")!,
    //     options: new TokenCredentialOptions()
    // );
    
    // Create a new instance of CosmosClient using the credential above
    using CosmosClient client = new(
        accountEndpoint: Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT")!,
        tokenCredential: credential
    );
    

Cadeia de conexão

Aviso

A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. O fluxo de autenticação descrito neste procedimento exige um grau muito alto de confiança no aplicativo e traz riscos que não estão presentes em outros fluxos. Você só deve usar esse fluxo quando outros fluxos mais seguros, como identidades gerenciadas, não forem viáveis.

Tipo de cliente SpringBoot

Nome da variável de ambiente padrão Descrição Valor de exemplo
azure.cosmos.key A chave de acesso do banco de dados para a versão anterior a 4.0 do Spring Cloud Azure <access-key>
azure.cosmos.database Seu banco de dados para a versão anterior a 4.0 do Spring Cloud Azure <database-name>
azure.cosmos.uri Seu URI do banco de dados para a versão anterior a 4.0 do Spring Cloud Azure https://<database-server>.documents.azure.com:443/
spring.cloud.azure.cosmos.key A chave de acesso do banco de dados para a versão superior a 4.0 do Spring Cloud Azure <access-key>
spring.cloud.azure.cosmos.database Seu banco de dados para a versão superior a 4.0 do Spring Cloud Azure <database-name>
spring.cloud.azure.cosmos.endpoint Seu URI do banco de dados para a versão superior a 4.0 do Spring Cloud Azure https://<database-server>.documents.azure.com:443/

Outros tipos de clientes

Nome da variável de ambiente padrão Descrição Valor de exemplo
AZURE_COSMOS_CONNECTIONSTRING Cadeia de conexão do Azure Cosmos DB for NoSQL AccountEndpoint=https://<database-server>.documents.azure.com:443/;AccountKey=<account-key>

Código de exemplo

Consulte as etapas e o código abaixo para se conectar ao Azure Cosmos DB for NoSQL usando uma cadeia de conexão.

  1. Instale a dependência.

    dotnet add package Microsoft.Azure.Cosmos
    
  2. Obtenha a cadeia de conexão por meio da variável de ambiente adicionada pelo Conector de Serviço.

    using Microsoft.Azure.Cosmos;
    using System; 
    
    // Create a new instance of CosmosClient using a connection string
    using CosmosClient client = new(
        connectionString: Environment.GetEnvironmentVariable("AZURE_COSMOS_CONNECTIONSTRING")!
    );
    

Entidade de serviço

Tipo de cliente SpringBoot

Nome da variável de ambiente padrão Descrição Valor de exemplo
spring.cloud.azure.cosmos.credential.client-id Sua ID de cliente <client-ID>
spring.cloud.azure.cosmos.credential.client-secret Seu segredo do cliente <client-secret>
spring.cloud.azure.cosmos.profile.tenant-id Sua ID de locatário <tenant-ID>
spring.cloud.azure.cosmos.database O banco de dados <database-name>
spring.cloud.azure.cosmos.endpoint O ponto de extremidade do seu recurso https://<database-server>.documents.azure.com:443/

Outros tipos de clientes

Nome da variável de ambiente padrão Descrição Valor de exemplo
AZURE_COSMOS_LISTCONNECTIONSTRINGURL A URL para obter a cadeia de conexão https://management.azure.com/subscriptions/<subscription-ID>/resourceGroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<database-server>/listConnectionStrings?api-version=2021-04-15
AZURE_COSMOS_SCOPE O escopo de sua identidade gerenciada https://management.azure.com/.default
AZURE_COSMOS_CLIENTID Sua ID do segredo do cliente <client-ID>
AZURE_COSMOS_CLIENTSECRET Seu segredo do cliente <client-secret>
AZURE_COSMOS_TENANTID Sua ID de locatário <tenant-ID>
AZURE_COSMOS_RESOURCEENDPOINT O ponto de extremidade do seu recurso https://<database-server>.documents.azure.com:443/

Código de exemplo

Consulte as etapas e o código abaixo para se conectar ao Azure Cosmos DB for NoSQL usando uma entidade de serviço.

  1. Instale as dependências.

    dotnet add package Microsoft.Azure.Cosmos
    dotnet add package Azure.Identity
    
  2. Autentique usando o pacote NuGet Azure.Identity e obtenha o URL do ponto de extremidade da variável de ambiente adicionada pelo Service Connector. Ao usar o código abaixo, descompacte a parte do snippet de código para o tipo de autenticação que você deseja usar.

    using Microsoft.Azure.Cosmos;
    using Azure.Core;
    using Azure.Identity;
    using System; 
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // TokenCredential credential = new DefaultAzureCredential();
    
    // For user-assigned identity.
    // TokenCredential credential = new DefaultAzureCredential(
    //     new DefaultAzureCredentialOptions
    //     {
    //         ManagedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID");
    //     }
    // );
    
    // For service principal.
    // TokenCredential credential = new ClientSecretCredential(
    //     tenantId: Environment.GetEnvironmentVariable("AZURE_COSMOS_TENANTID")!,
    //     clientId: Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTID")!,
    //     clientSecret: Environment.GetEnvironmentVariable("AZURE_COSMOS_CLIENTSECRET")!,
    //     options: new TokenCredentialOptions()
    // );
    
    // Create a new instance of CosmosClient using the credential above
    using CosmosClient client = new(
        accountEndpoint: Environment.GetEnvironmentVariable("AZURE_COSMOS_RESOURCEENDPOINT")!,
        tokenCredential: credential
    );
    

Próximas etapas

Siga os tutoriais listados abaixo para saber mais sobre o Conector de Serviço.