Esta página fornece instruções sobre tarefas comuns para a funcionalidade de autenticação do IAM para o Memorystore for Redis Cluster. Para mais detalhes sobre a funcionalidade, consulte o artigo Acerca da autenticação do IAM.
Crie uma instância com autenticação IAM
Para criar uma instância do Memorystore for Redis Cluster que use a autenticação 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 o seguinte:
INSTANCE_ID é o ID da instância do Memorystore for Redis Cluster que está a criar. O ID da instância tem de ter entre 1 e 63 carateres e usar apenas letras minúsculas, números ou hífenes. Tem de começar com uma letra minúscula e terminar com uma letra minúscula ou um número.
REGION_ID é a região onde quer colocar a instância.
NETWORK é a rede usada para criar a sua instância. Tem de usar o formato:
projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID
. O ID da rede usado aqui tem de corresponder ao ID da rede usado pela política de ligação de serviços. Caso contrário, a operaçãocreate
falha. Para mais detalhes, consulte a secção Redes.NODE_TYPE é o tipo de nó escolhido. Os valores aceites 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 ver mais detalhes sobre a especificação de clusters, consulte o artigo Especificação de clusters e nós.
Conceda autorizações para a autenticação IAM
Para conceder acesso à IAM, conceda ao principal a função roles/redis.dbConnectionUser
através das instruções para conceder funções da IAM.
Por predefinição, a atribuição da função roles/redis.dbConnectionUser
a um principal permite
que o principal aceda a todas as instâncias no seu projeto.
Crie uma função de administrador do IAM limitada para uma instância
Pode criar uma função que possa modificar as autorizações de IAM de ligação de instâncias sem conceder acesso total de administrador de IAM. Isto pode ser feito através da criação de um administrador de IAM limitado para a função roles/redis.dbConnectionUser
` Para mais detalhes, consulte o artigo Crie administradores do IAM limitados.
Estabeleça ligação a uma instância que usa a autenticação IAM
Se ainda não tiver uma VM do Compute Engine que use a mesma rede autorizada que o cluster Redis, crie uma e ligue-se a ela seguindo o Início rápido com uma VM Linux.
Para o seu projeto, ative o âmbito da API Cloud Platform. Para mais informações sobre como ativar este âmbito de acesso, consulte Anexe a conta de serviço e atualize o âmbito de acesso. Para mais informações acerca das práticas recomendadas para este âmbito, consulte Práticas recomendadas de âmbitos.
Para o seu projeto, ative a API Memorystore for Redis.
Instale o redis-cli na VM do Compute Engine executando o seguinte comando a partir do terminal SSH do Compute Engine:
sudo apt-get install redis-tools
Execute o seguinte comando para obter um token de acesso para o seu utilizador do IAM:
gcloud auth print-access-token
Ligue-se ao ponto final de deteção da sua instância:
redis-cli -h NETWORK_ADDRESS -p PORT -a ACCESS_TOKEN -c
Substitua o seguinte:
NETWORK_ADDRESS é o endereço de rede da instância. Para ver o endereço de rede, consulte Ver informações da instância.
PORT é o número da porta das instâncias. Para ver o número da porta, consulte o artigo Ver informações da instância.
ACCESS_TOKEN é o token de acesso da IAM obtido nos passos anteriores.
Execute o comando
CLUSTER SHARDS
para ver a topologia do cluster. Tome nota de um dos endereços IP e números de porta do nó.Para usar o
redis-cli
para autenticar e estabelecer ligação ao seu nó, use o seguinte comando:redis-cli -h NODE_IP_ADDRESS -p NODE_PORT -a ACCESS_TOKEN -c
Substitua o seguinte:
- NODE_IP_ADDRESS: o endereço IP do nó que encontrou no passo anterior
- NODE_PORT: o número da porta do nó que encontrou no passo anterior
- ACCESS_TOKEN: o token de acesso do IAM que obteve nos passos anteriores
Para verificar se tem uma ligação autenticada ao seu nó, execute um comando Redis
SET
eGET
.Elimine a VM do Compute Engine que usou para se ligar ao cluster Redis. Isto ajuda a evitar incorrer em custos na sua conta de faturação do Google Cloud.
Automatize a obtenção de tokens de acesso
(Opcional) Se ainda não o fez, crie uma conta de serviço para a sua aplicação (consulte o artigo Criar e gerir uma conta de serviço).
gcloud iam service-accounts create SA_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
Substitua o seguinte:
- 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 apresentar na consolaGoogle Cloud .
Conceda à sua conta de serviço a autorização
redis.dbConnectionUser
no seu projeto.gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role="ROLE_NAME"
Substitua o seguinte:
- PROJECT_ID: o ID do projeto
- SA_NAME: o nome da conta de serviço
- ROLE_NAME: um nome de função, como
redis.dbConnectionUser
Autentique a sua aplicação como a conta de serviço fornecida. Para mais informações, consulte o artigo Contas de serviço.
Exemplo de código para estabelecer ligação a uma instância que usa a autenticação IAM
Pode ver um exemplo de código que mostra como pode autenticar a sua aplicação através de bibliotecas cliente populares. Além disso, pode ver como usar este exemplo de código para se ligar a uma instância que usa a autenticação da IAM.
Resolução de problemas de mensagens de erro com a autenticação da IAM
Mensagem de erro | Ação recomendada | Descrição |
---|---|---|
|
Valide o nome de utilizador e o token de acesso fornecidos ao servidor do Memorystore for Redis Cluster | O nome de utilizador ou o token de acesso fornecido é inválido. "default" é o único nome de utilizador suportado. Se a sua aplicação já estiver a usar o nome de utilizador "predefinição", verifique se o token de acesso não expirou e se é obtido seguindo as instruções em Estabeleça ligação a uma instância que use a autenticação IAM. As autorizações de IAM podem demorar alguns minutos a propagar-se se tiverem sido alteradas recentemente. |
|
Verifique se a aplicação está configurada para fornecer um token de acesso do IAM ao servidor do Memorystore for Redis Cluster | A aplicação não está a fornecer um token de acesso ao servidor do Memorystore for Redis Cluster. Verifique se a aplicação está configurada para fornecer um token de acesso seguindo as instruções em Estabeleça ligação a uma instância que use a autenticação IAM |
|
Tente novamente com retirada exponencial | O back-end do IAM está sobrecarregado e devolveu um erro de quota excedida ao servidor do Memorystore for Redis Cluster. As aplicações devem tentar novamente este erro com retirada exponencial para evitar mais falhas de ligação. |
|
Tente novamente com retirada exponencial | O back-end do IAM devolveu um erro temporário ao servidor do Memorystore for Redis Cluster. As aplicações devem tentar novamente este erro com retirada exponencial para evitar mais falhas de ligação. |