Nesta página, descrevemos como controlar o acesso e as permissões a projetos do Memorystore para Redis usando o gerenciamento de identidade e acesso (IAM, na sigla em inglês).
Visão geral
OGoogle Cloud oferece o IAM, que permite a concessão de acesso mais granular a recursos específicos do Google Cloud e impede o acesso indesejado a outros recursos. Nesta página, descrevemos os papéis e as permissões do IAM do Memorystore para Redis. Para uma descrição detalhada de papéis e permissões, consulte a documentação do IAM.
O Memorystore para Redis fornece um conjunto de papéis predefinidos projetados para ajudar a controlar facilmente o acesso aos recursos do Redis. Se os papéis predefinidos não fornecerem os conjuntos de permissões necessárias, você poderá criar seus próprios papéis personalizados. Além disso, os papéis básicos mais antigos (Editor, Leitor e Proprietário) também estão disponíveis, embora não forneçam o mesmo controle granular que os papéis do Memorystore para Redis. Em especial, os papéis básicos fornecem acesso a recursos noGoogle Cloud, e não apenas no Memorystore for Redis. Para mais informações, consulte Papéis básicos.
Permissões e papéis
Nesta seção, apresentamos um resumo das permissões e papéis compatíveis com o Memorystore para Redis.
Papéis predefinidos
O Memorystore para Redis fornece alguns papéis predefinidos que podem ser usados para fornecer permissões mais refinadas aos principais. O papel concedido a um principal controla quais ações ele pode tomar. Os principais podem ser indivíduos, grupos ou contas de serviço.
É possível conceder vários papéis ao mesmo principal. Se você tiver permissões para isso, poderá alterar os papéis concedidos a um principal a qualquer momento.
Os papéis mais amplos incluem os definidos de maneira mais restrita. Por exemplo, no papel de editor do Redis estão todas as permissões do papel de leitor do Redis, mais as permissões do editor. Da mesma forma, no papel de administrador, estão todas as permissões do papel de editor, além das respectivas permissões adicionais.
Os papéis básicos (Proprietário, Editor, Leitor) fornecem permissões em Google Cloud. Os papéis específicos do Memorystore para Redis fornecem apenas permissões do Memorystore para Redis, exceto as permissões Google Cloud a seguir, que são necessárias para o uso geral do Google Cloud :
resourcemanager.projects.get
resourcemanager.projects.list
A tabela a seguir lista os papéis predefinidos disponíveis para o Memorystore para Redis, além das permissões do Memorystore para Redis:
| Papel | Nome | Permissões do Redis | Descrição |
|---|---|---|---|
|
Proprietário |
|
Acesso e controle completos a todos os recursos do Google Cloud ; gerenciar o acesso de usuários |
|
Editor | Todas as permissões redis , exceto *.getIamPolicy e
.setIamPolicy |
Acesso de leitura e gravação a todos os recursos do Google Cloud e do Redis (controle total, exceto a capacidade de modificar permissões) |
|
Leitor |
|
Acesso somente leitura a todos os recursos do Memorystore para Redis. No entanto, não é possível usar essa permissão para visualizar dados associados aos recursos. |
|
Administrador do Redis |
|
Controle total de todos os recursos do Memorystore para Redis. |
|
Editor do Redis | Todas as permissões redis, exceto
|
Gerencie instâncias do Memorystore para Redis. Não é possível criar ou excluir instâncias. |
|
Visualizador do Redis | Todas as permissões redis, exceto
|
Acesso somente leitura a todos os recursos do Memorystore para Redis. |
Permissões e respectivos papéis
A tabela a seguir lista cada permissão compatível com o Memorystore para Redis e os papéis do Memorystore para Redis que a incluem:
| Permissão | Papel Redis | Papel básico |
|---|---|---|
|
Administrador do Redis Editor do Redis Visualizador do Redis |
Leitor |
|
Administrador do Redis Editor do Redis Visualizador do Redis |
Leitor |
|
Administrador do Redis | Gravador |
|
Administrador do Redis Editor do Redis |
Gravador |
|
Administrador do Redis | Editor |
|
Administrador do Redis | Editor |
|
Administrador do Redis | Editor |
|
Administrador do Redis | Editor |
|
Administrador do Redis | Editor |
|
Administrador do Redis | Gravador |
|
Administrador do Redis Editor do Redis Visualizador do Redis |
Leitor |
|
Administrador do Redis Editor do Redis Visualizador do Redis |
Leitor |
|
Administrador do Redis Editor do Redis Visualizador do Redis |
Leitor |
|
Administrador do Redis Editor do Redis Visualizador do Redis |
Leitor |
|
Administrador do Redis | Gravador |
Papéis personalizados
Se os papéis predefinidos não atenderem aos requisitos exclusivos de sua empresa, defina papéis personalizados próprios e especifique as respectivas permissões. Para isso,
o IAM oferece papéis personalizados. Ao criar papéis personalizados
para o Memorystore para Redis, inclua resourcemanager.projects.get e resourcemanager.projects.list.
Caso contrário, o console do Google Cloud não vai funcionar corretamente
para o Memorystore para Redis. Para mais informações, consulte
Dependências de permissão.
Para saber como criar um papel personalizado, consulte Como criar um papel personalizado.
Permissões necessárias para tarefas comuns no console do Google Cloud
Para permitir que um usuário trabalhe com o Memorystore para Redis usando
o console do Google Cloud , o papel do usuário precisa incluir as permissões
resourcemanager.projects.get e
resourcemanager.projects.list.
A tabela a seguir mostra as outras permissões necessárias para algumas tarefas comuns no console do Google Cloud :
| Tarefa | Permissões adicionais necessárias |
|---|---|
| Exibir a página de listagem de instâncias |
|
| Criar e editar uma instância |
|
| Excluir uma instância |
|
| Conectar-se a uma instância pelo Cloud Shell |
|
| Ver informações da instância |
|
| Importar e exportar arquivos de backup RDB |
|
| Fazer upgrade da versão do Redis de uma instância |
|
Permissões necessárias para comandos gcloud
Para permitir que um usuário trabalhe com o Memorystore para Redis
usando comandos gcloud, o papel do usuário precisa
incluir as permissões resourcemanager.projects.get e resourcemanager.projects.list.
Na tabela a seguir, listamos as permissões que o usuário que invoca um comando
gcloud precisa ter para cada subcomando gcloud redis:
| Comando | Permissões necessárias |
|---|---|
gcloud redis instances auth |
|
gcloud redis instances create |
|
gcloud redis instances delete |
|
gcloud redis instances update |
|
gcloud redis instances list |
|
gcloud redis instances describe |
|
gcloud redis instances import |
|
gcloud redis instances export |
|
gcloud redis instances upgrade |
|
gcloud redis operations list |
|
gcloud redis operations describe |
|
gcloud redis regions list |
|
gcloud redis regions describe |
|
gcloud redis zones list |
|
Permissões necessárias para métodos de API
A tabela a seguir lista as permissões que o autor da chamada precisa ter para chamar cada método na API Memorystore para Redis ou para executar tarefas usando ferramentas do Google Cloud que utilizam a API (como o console do Google Cloud ou a ferramenta de linha de comando gcloud):
| Método | Permissões necessárias |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A conta de serviço do Memorystore para Redis
Cada instância do Memorystore para Redis tem uma conta de serviço que é usada para se comunicar com outros recursos do Google Cloud .
Às vezes, como ao exportar ou usar CMEK, é necessário conceder papéis ou permissões específicos à conta de serviço.
Formato da conta de serviço do Memorystore para Redis
A conta de serviço da instância usa um de dois formatos diferentes, dependendo de quando foi criada.
O primeiro formato é:
PROJECT_NUMBER-compute@O segundo formato é:
service-PROJECT_NUMBER@cloud-redis.
Problemas conhecidos
Às vezes, uma conta de serviço que usa o formato [PROJECT_NUMBER]-compute@
pode entrar em conflito com a política da organização. Para mais informações e
etapas para resolver esses problemas, consulte Problemas com a política da organização de compartilhamento restrito de domínio.
Ver a conta de serviço da instância
Para ver a conta de serviço da instância, execute o comando a seguir e anote a conta de serviço listada em persistenceIamIdentity:
gcloud redis instances describe [INSTANCE_ID] --region=[REGION]
Permissões do Redis AUTH
A tabela a seguir mostra as permissões mínimas que um usuário precisa para concluir algumas tarefas básicas de AUTH do Memorystore para Redis.
| Permissões necessárias | Criar uma instância do Memorystore com o Redis AUTH ativado | Ativar / desativar o AUTH em uma instância existente do Redis | Ver a string AUTH | Ver se o AUTH está ativado / desativado para uma instância do Redis |
|---|---|---|---|---|
redis.instances.create
|
✓ | X | X | X |
redis.instances.update
|
X | ✓ | X | X |
redis.instances.get
|
X | X | X | ✓ |
redis.instances.updateAuth
|
✓ | ✓ | X | X |
redis.instances.getAuthString
|
X | X | ✓ | X |
Permissões de criptografia em trânsito
A tabela abaixo mostra as permissões necessárias para ativar e gerenciar a criptografia em trânsito do Memorystore para Redis.
| Permissões necessárias | Criar uma instância do Memorystore com criptografia em trânsito | Fazer o download da autoridade de certificação |
|---|---|---|
redis.instances.create
|
✓ | X |
redis.instances.get
|
X | ✓ |
Permissões da política de manutenção
A tabela abaixo mostra as permissões necessárias para gerenciar a política de manutenção do Memorystore para Redis.
| Permissões necessárias | Criar uma instância do Memorystore com uma política de manutenção ativada | Criar ou modificar políticas de manutenção em uma instância do Memorystore | Ver as configurações da política de manutenção | Reprogramar manutenção |
|---|---|---|---|---|
redis.instances.create
|
✓ | X | X | X |
redis.instances.update
|
X | ✓ | X | X |
redis.instances.get
|
X | X | ✓ | X |
redis.instances.rescheduleMaintenance
|
X | X | X | ✓ |
Permissões necessárias para importação e exportação
Para usar papéis personalizados para importação e exportação, são necessários dois papéis personalizados separados. Um papel personalizado para o usuário e outro para a conta de serviço da instância do Redis. O papel personalizado da conta de serviço usa permissões no nível do bucket do Cloud Storage.
Para encontrar a conta de serviço da sua instância, consulte Ver a conta de serviço da sua instância.
Permissões para a conta de serviço
Observe que você só precisa conceder permissões de armazenamento à conta de serviço no nível do intervalo, não ao projeto inteiro. Para instruções, consulte Como adicionar um principal a uma política no nível do intervalo.
Depois de conceder permissões no nível do bucket à conta de serviço, ignore a mensagem que diz "O Memorystore não pode verificar se a conta de serviço xxxx@xxxx. tem as permissões necessárias para importar/exportar. Se você precisar de ajuda para verificar ou atualizar as permissões, entre em contato com o administrador do projeto. Para as permissões necessárias, consulte a documentação de permissões de importação/exportação." Se você aplicar as permissões listadas abaixo aos papéis personalizados da conta de usuário e da conta de serviço, a importação/exportação será bem-sucedida.
| Permissões para o papel personalizado da conta de serviço | Importar com gcloud | Exportar com gcloud | Importar com o console do Google Cloud | Exportar com o console do Google Cloud |
|---|---|---|---|---|
storage.buckets.get |
✓ | ✓ | ✓ | ✓ |
storage.objects.get |
✓ | X | ✓ | X |
storage.objects.create |
X | ✓ | X | ✓ |
storage.objects.delete |
X | Opcional. Concede permissão para substituir o arquivo RDB atual. |
X | Opcional. Concede permissão para substituir o arquivo RDB atual. |
Permissões para a conta de usuário
| Permissões para o papel personalizado da conta de usuário | Importar com gcloud | Exportar com gcloud | Importar com o console do Google Cloud | Exportar com o console do Google Cloud |
|---|---|---|---|---|
resourcemanager.projects.get |
X | X | ✓ | ✓ |
redis.instances.get |
✓ | ✓ | ✓ | ✓ |
redis.instances.list |
X | X | X | X |
redis.instances.import |
✓ | X | ✓ | X |
redis.instances.export |
X | ✓ | X | ✓ |
redis.operations.get |
X | ✓ | ✓ | ✓ |
redis.operations.list |
X | X | ✓ | ✓ |
redis.operations.cancel |
✓ | ✓ | ✓ | ✓ |
storage.buckets.list |
X | X | ✓ | ✓ |
storage.buckets.get |
X | X | ✓ | ✓ |
storage.objects.list |
X | X | ✓ | ✓ |
storage.objects.get |
X | X | ✓ | ✓ |
A seguir
- Saiba como conceder e revogar acesso.
- Saiba mais sobre IAM.
- Saiba mais sobre papéis personalizados.