Esta página apresenta instruções sobre tarefas comuns para o recurso de autenticação do IAM no Memorystore para Redis Cluster. Para mais detalhes sobre o recurso, consulte Sobre a autenticação do IAM.
Criar uma instância com a autenticação do IAM
Para criar uma instância do Memorystore para Redis Cluster que usa a autenticação do IAM, execute o comando create
:
gcloud redis clusters create INSTANCE_ID --region=REGION_ID --network=NETWORK --node-type=NODE_TYPE --shard-count=SHARD_COUNT --auth-mode=iam-auth
Substitua:
INSTANCE_ID é o ID da instância do cluster do Memorystore para Redis que você está criando. O ID da instância precisa ter de 1 a 63 caracteres e usar apenas letras minúsculas, números ou hifens. Ele precisa começar com uma letra minúscula e terminar com uma letra minúscula ou um número.
REGION_ID é a região em que você quer colocar a instância.
NETWORK é a rede usada para criar a instância. Ele precisa usar o formato:
projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID
. O ID da rede usado aqui precisa corresponder ao ID usado pela política de conexão de serviço. Caso contrário, a operaçãocreate
falhará. Para mais detalhes, consulte Rede.NODE_TYPE é o tipo de nó escolhido. Os valores aceitos são:
redis-shared-core-nano
redis-standard-small
redis-highmem-medium
redis-highmem-xlarge
SHARD_COUNT determina o número de fragmentos na sua instância. A contagem de fragmentos determina a capacidade total de memória para armazenar dados do cluster. Para mais detalhes sobre a especificação do cluster, consulte Especificação de cluster e nó.
Conceder permissões para autenticação do IAM
Para conceder um acesso do IAM, atribua ao principal o papel
roles/redis.dbConnectionUser
usando as instruções para conceder papel do IAM.
Por padrão, conceder a um principal o papel roles/redis.dbConnectionUser
permite que ele acesse todas as instâncias do projeto.
Criar uma função de administrador limitado do IAM para uma instância
Talvez você queira criar um papel que possa modificar as permissões do IAM de conexão de instância sem conceder acesso total de administrador do IAM. Isso pode ser feito criando um administrador limitado do IAM para a função
roles/redis.dbConnectionUser
. Para mais detalhes, acesse Criar administradores limitados do IAM.
Conectar-se a uma instância que usa a autenticação do IAM
Se você ainda não tem uma VM do Compute Engine que usa a mesma rede autorizada que seu cluster do Redis, crie uma e conecte-se a ela seguindo o Guia de início rápido sobre como usar uma VM do Linux.
No seu projeto, ative o escopo da API Cloud Platform. Para mais informações sobre como ativar esse escopo de acesso, consulte Anexar a conta de serviço e atualizar o escopo de acesso. Para mais informações sobre práticas recomendadas para esse escopo, consulte Práticas recomendadas de escopos.
Ative a API Memorystore para Redis no seu projeto.
Instale o redis-cli na VM do Compute Engine executando o seguinte comando no terminal SSH do Compute Engine:
sudo apt-get install redis-tools
Execute o comando a seguir para receber um token de acesso para seu usuário do IAM:
gcloud auth print-access-token
Conecte-se ao endpoint de descoberta da instância:
redis-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
Substitua:
NETWORK_ADDRESS é o endereço de rede da instância. Para conferir o endereço de rede, consulte Ver informações da instância.
PORT é o número da porta das instâncias. Para conferir o número da porta, consulte Visualizar informações da instância.
ACCESS_TOKEN é o token de acesso do IAM recuperado nas etapas anteriores.
Execute o comando
CLUSTER SHARDS
para conferir a topologia do cluster. Anote um dos endereços IP e números de porta do nó.Para usar
redis-cli
na autenticação e conexão com o nó, use o seguinte comando:redis-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
Substitua:
- NODE_IP_ADDRESS: o endereço IP do nó que você encontrou na etapa anterior
- NODE_PORT: o número da porta do nó que você encontrou na etapa anterior.
- ACCESS_TOKEN: o token de acesso do IAM que você recuperou nas etapas anteriores
Para verificar se você tem uma conexão autenticada com o nó, execute um comando
SET
eGET
do Redis.Exclua a VM do Compute Engine usada para se conectar ao cluster do Redis. Isso ajuda a evitar cobranças na sua conta do Cloud Billing.
Automatizar a recuperação de tokens de acesso
(Opcional) Se ainda não tiver feito isso, crie uma conta de serviço para seu aplicativo. Consulte Como criar e gerenciar uma conta de serviço.
gcloud iam service-accounts create SA_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Substitua:
- SA_NAME é o nome da conta de serviço.
- DESCRIPTION é uma descrição opcional da conta de serviço.
- DISPLAY_NAME é um nome de conta de serviço a ser exibido no console Google Cloud .
Conceda à sua conta de serviço a permissão
redis.dbConnectionUser
no projeto.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="ROLE_NAME"
Substitua:
- PROJECT_ID: o ID do projeto;
- SA_NAME: o nome da conta de serviço.
- ROLE_NAME: um nome de papel, como
redis.dbConnectionUser
Autentique seu aplicativo como a conta de serviço especificada. Para mais informações, consulte Contas de serviço.
Exemplo de código para se conectar a uma instância que usa a autenticação do IAM
Confira um exemplo de código que mostra como autenticar seu aplicativo usando bibliotecas de cliente conhecidas. Além disso, você pode conferir como usar esse exemplo de código para se conectar a uma instância que usa a autenticação do IAM.
Como resolver mensagens de erro com a autenticação do IAM
Mensagem de erro | Ação recomendada | Descrição |
---|---|---|
|
Verifique o nome de usuário e o token de acesso fornecidos ao servidor do Memorystore para Redis Cluster. | O nome de usuário ou o token de acesso fornecido é inválido. "default" é o único nome de usuário aceito. Se o aplicativo já estiver usando o nome de usuário "padrão", verifique se o token de acesso não expirou e se foi recuperado seguindo as instruções em Conectar-se a uma instância que usa a autenticação do IAM. As permissões do IAM podem levar alguns minutos para serem propagadas se foram alteradas recentemente. |
|
Verifique se o aplicativo está configurado para fornecer um token de acesso do IAM ao servidor do Memorystore para Redis Cluster. | O aplicativo não está fornecendo um token de acesso ao servidor do Memorystore for Redis Cluster. Verifique se o aplicativo está configurado para fornecer um token de acesso seguindo as instruções em Conectar-se a uma instância que usa a autenticação do IAM. |
|
Tentar novamente com a espera exponencial. | O back-end do IAM está sobrecarregado e retornou um erro de cota excedida para o servidor do Memorystore for Redis Cluster. Os aplicativos precisam tentar repetir esse erro com espera exponencial para evitar mais falhas de conexão. |
|
Tentar novamente com a espera exponencial. | O back-end do IAM retornou um erro temporário para o servidor do Memorystore for Redis Cluster. Os aplicativos precisam tentar repetir esse erro com espera exponencial para evitar mais falhas de conexão. |