Compartilhar via


Integrar o Cache do Azure para Redis com o Conector de serviço

Você pode conectar o Cache do Azure para Redis a outros serviços de nuvem usando o Service Connector. Este artigo descreve os métodos e clientes de autenticação com suporte e fornece código de exemplo. Ele também revela valores e nomes de variáveis 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

Você pode usar o Service Connector para conectar os seguintes serviços de computação ao Cache do Azure para Redis:

  • 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 cliente e autenticação com suporte

A tabela a seguir mostra quais combinações de métodos de autenticação e clientes têm suporte para conectar o seu serviço de computação ao Cache do Azure para Redis usando o Service Connector. "Sim" significa que a combinação tem suporte. "Não" significa que não há suporte.

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 Yes
Go Não No Sim Não
Java Sim Sim Sim Yes
Java – Spring Boot Não No Sim No
Node.js Sim Sim Sim Sim
Python Sim Sim Sim Yes
Nenhum Sim Sim Sim Sim

Todos os tipos de cliente, exceto Go e Java – Spring Boot, podem usar qualquer um dos métodos de autenticação referenciados na tabela para se conectar ao Cache do Azure para Redis usando o Service Connector. Os únicos métodos de autenticação com suporte para Go e Java – Spring Boot são segredo/cadeia de conexão ou entidade de serviço.

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

Use os seguintes nomes de variáveis de ambiente e propriedades de aplicativo para conectar serviços de computação ao servidor Redis. Para saber mais sobre convenções de nomenclatura, confira o artigo Normas internas do Service Connector.

Identidade gerenciada atribuída pelo sistema

Nome da variável de ambiente padrão Descrição Valor de exemplo
AZURE_REDIS_HOST Ponto de extremidade Redis <RedisName>.redis.cache.windows.net

Código de exemplo

As etapas e o código a seguir mostram como usar uma identidade gerenciada atribuída pelo sistema para se conectar ao Redis.

  1. Instale as dependências.

    dotnet add package Microsoft.Azure.StackExchangeRedis --version 3.2.0
    
  2. Adicione a lógica de autenticação com variáveis de ambiente definidas pelo Service Connector. Para obter mais informações, consulte a Extensão Microsoft.Azure.StackExchangeRedis.

    using StackExchange.Redis;
    var cacheHostName = Environment.GetEnvironmentVariable("AZURE_REDIS_HOST");
    var configurationOptions = ConfigurationOptions.Parse($"{cacheHostName}:6380");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
    
    // For user-assigned identity.
    // var managedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // await configurationOptions.ConfigureForAzureWithUserAssignedManagedIdentityAsync(managedIdentityClientId);
    
    // Service principal secret.
    // var clientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_REDIS_TENANTID");
    // var secret = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTSECRET");
    // await configurationOptions.ConfigureForAzureWithServicePrincipalAsync(clientId, tenantId, secret);
    
    
    var connectionMultiplexer = await ConnectionMultiplexer.ConnectAsync(configurationOptions);
    

Identidade gerenciada atribuída pelo usuário

Nome da variável de ambiente padrão Descrição Valor de exemplo
AZURE_REDIS_HOST Ponto de extremidade Redis <RedisName>.redis.cache.windows.net
AZURE_REDIS_CLIENTID ID do cliente de identidade gerenciada <client-ID>

Código de exemplo

As etapas e o código a seguir mostram como usar uma identidade gerenciada atribuída pelo usuário para se conectar ao Redis.

  1. Instale as dependências.

    dotnet add package Microsoft.Azure.StackExchangeRedis --version 3.2.0
    
  2. Adicione a lógica de autenticação com variáveis de ambiente definidas pelo Service Connector. Para obter mais informações, consulte a Extensão Microsoft.Azure.StackExchangeRedis.

    using StackExchange.Redis;
    var cacheHostName = Environment.GetEnvironmentVariable("AZURE_REDIS_HOST");
    var configurationOptions = ConfigurationOptions.Parse($"{cacheHostName}:6380");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
    
    // For user-assigned identity.
    // var managedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // await configurationOptions.ConfigureForAzureWithUserAssignedManagedIdentityAsync(managedIdentityClientId);
    
    // Service principal secret.
    // var clientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_REDIS_TENANTID");
    // var secret = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTSECRET");
    // await configurationOptions.ConfigureForAzureWithServicePrincipalAsync(clientId, tenantId, secret);
    
    
    var connectionMultiplexer = await ConnectionMultiplexer.ConnectAsync(configurationOptions);
    

Cadeia de conexão

Aviso

Recomendamos que você use o fluxo de autenticação mais seguro disponível. O fluxo de autenticação descrito aqui requer um alto grau de confiança no aplicativo e carrega riscos que não estão presentes em outros fluxos. Você deve usar esse fluxo somente quando fluxos mais seguros, como identidades gerenciadas, não forem viáveis.

Nome da variável de ambiente padrão Descrição Valor de exemplo
AZURE_REDIS_CONNECTIONSTRING Cadeia de conexão StackExchange.Redis <redis-server-name>.redis.cache.windows.net:6380,password=<redis-key>,ssl=True,defaultDatabase=0

Código de exemplo

As etapas e o código a seguir mostram como usar uma cadeia de conexão para se conectar ao Cache do Azure para Redis.

  1. Instale as dependências.

    dotnet add package StackExchange.Redis --version 2.6.122
    
  2. Obtenha a cadeia de conexão por meio da variável de ambiente adicionada pelo Conector de Serviço.

    using StackExchange.Redis;
    var connectionString = Environment.GetEnvironmentVariable("AZURE_REDIS_CONNECTIONSTRING");
    var _redisConnection = await RedisConnection.InitializeAsync(connectionString: connectionString);
    

Entidade de serviço

Nome da variável de ambiente padrão Descrição Valor de exemplo
AZURE_REDIS_HOST Ponto de extremidade Redis <RedisName>.redis.cache.windows.net
AZURE_REDIS_CLIENTID A ID do cliente da entidade de serviço <client-ID>
AZURE_REDIS_CLIENTSECRET Segredo da entidade de serviço <client-secret>
AZURE_REDIS_TENANTID ID do locatário da entidade de serviço <tenant-id>

Código de exemplo

As etapas e o código a seguir mostram como usar uma entidade de serviço para se conectar ao Redis.

  1. Instale as dependências.

    dotnet add package Microsoft.Azure.StackExchangeRedis --version 3.2.0
    
  2. Adicione a lógica de autenticação com variáveis de ambiente definidas pelo Service Connector. Para obter mais informações, consulte a Extensão Microsoft.Azure.StackExchangeRedis.

    using StackExchange.Redis;
    var cacheHostName = Environment.GetEnvironmentVariable("AZURE_REDIS_HOST");
    var configurationOptions = ConfigurationOptions.Parse($"{cacheHostName}:6380");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
    
    // For user-assigned identity.
    // var managedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // await configurationOptions.ConfigureForAzureWithUserAssignedManagedIdentityAsync(managedIdentityClientId);
    
    // Service principal secret.
    // var clientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_REDIS_TENANTID");
    // var secret = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTSECRET");
    // await configurationOptions.ConfigureForAzureWithServicePrincipalAsync(clientId, tenantId, secret);
    
    
    var connectionMultiplexer = await ConnectionMultiplexer.ConnectAsync(configurationOptions);