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).

Informações gerais

O Google Cloud oferece IAM, que permite conceder 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 dos 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 antigos (Editor, Visualizador e Proprietário) também estão disponíveis para você, embora não forneçam o mesmo controle refinado que os papéis do Memorystore para Redis. Em particular, os papéis básicos fornecem acesso a recursos no Google Cloud, e não apenas no Memorystore para Redis. Para mais informações sobre papéis básicos, 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, como Proprietário, Editor e leitor, fornecem permissões no Google Cloud. Os papéis específicos do Memorystore para Redis fornecem apenas permissões do Memorystore para Redis, exceto as permissões a seguir do Google Cloud, que são necessárias para o uso geral do Google Cloud:

resourcemanager.projects.get
resourcemanager.projects.list

Na tabela a seguir, listamos 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.*

Controle e acesso total a todos os recursos do Google Cloud, gerencie o acesso do usuário

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

Visualizador

redis.*.get redis.*.list

Acesso somente leitura a todos os recursos do Google Cloud, incluindo recursos do Redis

roles/redis.admin

Administrador do Redis

redis.*

Controle total de todos os recursos do Cloud Memorystore para Redis.

roles/redis.editor

Editor do Redis Todas as permissões de redis, exceto

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

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 de 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 Memorystore.

Permissões e respectivos papéis

Na tabela a seguir, listamos 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 funcionará corretamente no 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 fornece 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 do Cloud Shell

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

Como exibir informações da instância

redis.instances.get
monitoring.timeSeries.list

Como importar e exportar arquivos de backup do RDB

redis.instances.import
redis.instances.export

Como 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 usam 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 usada para se comunicar com outros recursos do Google Cloud.

Às vezes, como ao exporting ou usar CMEK, é preciso conceder papéis ou permissões específicas à conta de serviço.

Formato da conta de serviço do Memorystore para Redis

A conta de serviço da instância usa um dos dois formatos diferentes, dependendo de quando foi criada.

  • O primeiro formato é:

    [PROJECT_NUMBER]-compute@developer.gserviceaccount.com

  • O segundo formato é:

    service-[PROJECT_NUMBER]@cloud-redis.iam.gserviceaccount.com

Para verificar a fonte de verdade em que conta de serviço sua instância usa, consulte Veja a conta de serviço da instância.

Problemas conhecidos

Às vezes, uma conta de serviço que usa o formato [PROJECT_NUMBER]-compute@developer.gserviceaccount.com 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.

Veja a conta de serviço da instância:

Para ver a conta de serviço da sua 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 necessárias para um usuário concluir algumas tarefas básicas do Memorystore para Redis AUTH.

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 para o 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 Como visualizar as configurações da política de manutenção Como reprogramar uma 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

O uso de papéis personalizados para importação e exportação requer 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 da sua conta de serviço, ignore a mensagem "O Memorystore não conseguiu verificar se a conta de serviço xxxx@xxxx.gserviceaccount.com 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