Controle de acesso com o IAM

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

roles/owner

Proprietário

redis.*

Acesso e controle completos a todos os recursos do Google Cloud ; gerenciar o acesso de usuários

roles/editor

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)

roles/viewer

Leitor

redis.*.get redis.*.list

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.

roles/redis.admin

Administrador do Redis

redis.*

Controle total de todos os recursos do Memorystore para Redis.

roles/redis.editor

Editor do Redis Todas as permissões redis, exceto

redis.instances.getAuthString

Gerencie instâncias do Memorystore para Redis. Não é possível criar ou excluir instâncias.

roles/redis.viewer

Visualizador do Redis Todas as permissões redis, exceto

redis.instances.create redis.instances.delete redis.instances.update redis.instances.upgrade redis.instances.import redis.instances.export redis.instances.updateAuth redis.instances.getAuthString redis.operations.delete

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

redis.instances.list

Administrador do Redis
Editor do Redis
Visualizador do Redis
Leitor

redis.instances.get

Administrador do Redis
Editor do Redis
Visualizador do Redis
Leitor

redis.instances.create

Administrador do Redis Gravador

redis.instances.update

Administrador do Redis
Editor do Redis
Gravador

redis.instances.updateAuth

Administrador do Redis Editor

redis.instances.getAuthString

Administrador do Redis Editor

redis.instances.delete

Administrador do Redis Editor

redis.instances.upgrade

Administrador do Redis Editor

redis.instances.import

Administrador do Redis Editor

redis.instances.export

Administrador do Redis Gravador

redis.locations.list

Administrador do Redis
Editor do Redis
Visualizador do Redis
Leitor

redis.locations.get

Administrador do Redis
Editor do Redis
Visualizador do Redis
Leitor

redis.operations.list

Administrador do Redis
Editor do Redis
Visualizador do Redis
Leitor

redis.operations.get

Administrador do Redis
Editor do Redis
Visualizador do Redis
Leitor

redis.operations.delete

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

redis.instances.get
redis.instances.list

Criar e editar uma instância

redis.instances.create
redis.instances.get
redis.instances.list
compute.networks.list

Excluir uma instância

redis.instances.delete
redis.instances.get
redis.instances.list

Conectar-se a uma instância pelo Cloud Shell

redis.instances.get
redis.instances.list
redis.instances.update

Ver informações da instância

redis.instances.get
monitoring.timeSeries.list

Importar e exportar arquivos de backup RDB

redis.instances.import
redis.instances.export

Fazer upgrade da versão do Redis de uma instância

redis.instances.upgrade

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

redis.instances.updateAuth
redis.instances.getAuthString

gcloud redis instances create

redis.instances.get
redis.instances.create

gcloud redis instances delete

redis.instances.delete

gcloud redis instances update

redis.instances.get
redis.instances.update

gcloud redis instances list

redis.instances.list

gcloud redis instances describe

redis.instances.get

gcloud redis instances import

redis.instances.import

gcloud redis instances export

redis.instances.export

gcloud redis instances upgrade

redis.instances.upgrade

gcloud redis operations list

redis.operations.list

gcloud redis operations describe

redis.operations.get

gcloud redis regions list

redis.locations.list

gcloud redis regions describe

redis.locations.get

gcloud redis zones list

redis.locations.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

locations.get

redis.locations.get

locations.list

redis.locations.list

instances.create

redis.instances.create

instances.delete

redis.instances.delete

instances.get

redis.instances.get

instances.list

redis.instances.list

instances.patch

redis.instances.update

instances.import

redis.instances.import

instances.export

redis.instances.export

instances.upgrade

redis.instances.upgrade

operations.get

redis.operations.get

operations.list

redis.operations.list

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