Proteger o acesso aos clusters usando políticas de ACL

Ao usar políticas de lista de controle de acesso (ACL) no Memorystore para Redis Cluster, é possível proteger o acesso aos seus clusters. É possível ativar a segurança refinada restringindo o acesso de usuários e serviços a chaves, comandos e canais do Pub/Sub específicos.

Confira a seguir exemplos de casos de uso de políticas de ACL para proteger o acesso a clusters:

  • Forneça controle de acesso baseado em função (RBAC): crie perfis de usuário distintos para diferentes componentes dos seus aplicativos. Por exemplo, um front-end da Web pode ter acesso somente leitura, enquanto um serviço de trabalho em segundo plano tem acesso de leitura e gravação. Isso evita vazamentos ou adulterações acidentais de dados.
  • Evite comandos destrutivos: restrinja comandos perigosos, como FLUSHALL, FLUSHDB, ou CONFIG apenas a administradores de alto nível. Isso protege a integridade dos dados contra bugs de software ou erros manuais.
  • Forneça segurança de aplicativos multilocatários: use usuários de ACL separados para diferentes microsserviços ou parceiros externos. Isso garante que os usuários de um serviço não possam ler ou modificar chaves de propriedade de outro serviço.

    O Memorystore for Redis Cluster não oferece multitenancy no nível do recurso. Mesmo que os keyspaces sejam divididos, um serviço pode consumir uma quantidade desproporcional de memória ou CPU.

  • Realizar análises e monitoramento somente leitura: atribua um usuário dedicado que possa usar apenas GET ou outros comandos somente leitura (por exemplo, SCAN ou TYPE) para mecanismos de análise ou aplicativos de painel. Isso evita gravações ou exclusões de dados acidentais.

  • Chaves de banco de dados seguras: restringem a interação dos aplicativos apenas com chaves que correspondem a padrões específicos (por exemplo, app1:*). Isso fornece a separação lógica de dados em um cluster.

  • Desativar scripts Lua: use políticas de ACL para gerenciar os recursos de script Lua dos seus clusters. Desativar ou restringir scripts Lua pode ser útil para ajustar o desempenho, simplificar a funcionalidade dos clusters ou obedecer às diretrizes de segurança da sua organização.

Antes de começar

Antes de começar a usar as políticas de ACL, siga as instruções nesta seção.

Usar o console Google Cloud , a Google Cloud CLI e as APIs

Para usar o console Google Cloud , a Google Cloud CLI e as APIs, faça o seguinte:

  1. No console do Google Cloud , na página do seletor de projetos, selecione ou crie um projeto do Google Cloud .

    Observação:se você não pretende manter os recursos criados neste procedimento, crie um projeto em vez de selecionar um que já existe. Depois de concluir essas etapas, é possível excluir o projeto. Para fazer isso, basta remover todos os recursos associados a ele.


    Acessar o seletor de projetos
  2. Verifique se o faturamento foi ativado para o projeto. Saiba como verificar se o faturamento está ativado em um projeto.
  3. Instale e inicialize a Google Cloud CLI.

    Observação:se você já instalou a CLI gcloud anteriormente, execute gcloud components update para verificar se você tem a versão mais recente. É necessário ter pelo menos a versão 440.0.0 da CLI gcloud para acessar os comandos da CLI gcloud do Memorystore para Redis Cluster.

  4. Ative a API Memorystore para Redis.
    Memorystore para Redis
  5. Ative a API Network Connectivity.
    API Network Connectivity
  6. Ative a API Service Consumer Management.
    API Service Consumer Management

Atribuir papéis do Memorystore for Redis Cluster

Confira se você ou a conta de usuário que está usando têm as permissões necessárias para a ação que você precisa realizar.

Para realizar todas as operações de política de ACL, use as funções Administrador do Redis (roles/redis.admin) e Editor do Redis (roles/redis.editor). Para visualizar apenas políticas de ACL, use o papel Leitor do Redis (roles/redis.viewer).

Atribuir permissões do Memorystore for Redis Cluster

Além das funções de administrador, editor e leitor do Redis, para usar políticas de ACL no Memorystore for Redis Cluster, você precisa das seguintes permissões:

Ação Permissão
Criar uma política de ACL redis.aclPolicies.create
Atribuir uma política de ACL a um cluster redis.clusters.update
Conferir informações sobre políticas de ACL redis.aclPolicies.list
Conferir informações sobre uma política de ACL redis.aclPolicies.get
Conferir informações sobre revisões da política de ACL redis.aclPolicyRevisions.list
Ver informações sobre uma revisão da política de ACL redis.aclPolicyRevisions.get
Modificar uma política de ACL redis.aclPolicies.update
Remover uma política de ACL de um cluster redis.clusters.update
Excluir uma política de ACL redis.aclPolicies.delete

Criar uma política de ACL

Ao criar políticas de ACL no Memorystore for Redis Cluster, você aumenta a segurança dos seus clusters restringindo o acesso do usuário a chaves, comandos e canais do Pub/Sub específicos.

É possível criar uma política de ACL usando a CLI gcloud.

gcloud

Para criar uma política de ACL, use o comando gcloud redis acl-policies create.

gcloud redis acl-policies create ACL_POLICY_NAME \
--region=REGION \
--rules=rule="on ~* +@all",username="lucian" \
--rules=rule="on +get",username="taylor"

Faça as seguintes substituições:

  • ACL_POLICY_NAME: o nome da política de ACL que você está criando. O nome da política só pode ter letras minúsculas, números e hífens. Ele também precisa começar com uma letra e ser exclusivo na região.
  • REGION: a região em que você quer que a política de ACL esteja localizada.

Essa política usa autenticação básica baseada em token e tem regras que executam as seguintes ações:

  • A primeira regra concede a lucian a permissão ~* +@all. Essa permissão permite que o usuário acesse todas as chaves e execute todos os comandos.
  • A segunda regra concede a permissão get a taylor. Essa permissão permite que o usuário recupere os valores associados às chaves. Ele restringe o acesso do usuário a operações de dados somente leitura e impede que ele modifique chaves.

Para criar regras para uma política de ACL que usa a autenticação do Identity and Access Management (IAM), recomendamos usar principais do IAM para os nomes de usuário (por exemplo, os endereços de e-mail dos usuários).

gcloud redis acl-policies create ACL_POLICY_NAME \
--region=REGION \
--rules=rule="on ~* +@all",username="lucian@example.com" \
--rules=rule="on +get",username="taylor@example.com"

Para criar uma regra para uma política de ACL que não usa autenticação, o usuário precisa ser o usuário default.

gcloud redis acl-policies create ACL_POLICY_NAME \
--region=REGION \
--rules=rule="on ~* +@all",username="default"

Para mais informações sobre a autenticação básica baseada em token e a autenticação do IAM, consulte Proteger o acesso aos clusters usando a autenticação básica baseada em token e Sobre a autenticação do IAM.

Para mais informações sobre outras regras e políticas de ACL que você pode criar, consulte ACL na documentação do Redis.

Atribuir uma política de ACL a um cluster

Ao atribuir uma política de ACL a um cluster ou substituir uma política atribuída, você permite que o Memorystore para Redis Cluster aplique as regras da política ao cluster. Como resultado, você restringe o acesso do usuário a chaves, comandos e canais do Pub/Sub específicos.

É possível atribuir uma política de ACL a um cluster usando a CLI gcloud.

Atribuir uma política a um novo cluster

Para criar um cluster e atribuir uma política de ACL a ele, consulte Criar instâncias.

Atribuir uma política a um cluster atual

Para aumentar a segurança de um cluster atual, atribua uma política de ACL a ele.

gcloud

Para atribuir uma política de ACL a um cluster atual, use o comando gcloud redis clusters update.

gcloud redis clusters update CLUSTER_ID \
--update_mask=acl_policy \
--acl-policy=ACL_POLICY_NAME \
--region=REGION

Faça as seguintes substituições:

  • CLUSTER_ID: o ID do cluster ao qual você está atribuindo a política de ACL.
  • ACL_POLICY_NAME: o nome da política de ACL
  • REGION: a região em que o cluster está localizado.

Conferir informações sobre políticas de ACL

Ver informações sobre políticas de ACL no Memorystore para Redis Cluster ajuda a manter a segurança, garante a estabilidade operacional do seu ambiente e permite auditar dados na memória. Essas políticas definem quais usuários podem ler ou modificar padrões de chave específicos, executar comandos específicos ou acessar canais do Pub/Sub específicos.

É possível conferir informações sobre políticas de ACL usando a CLI gcloud.

gcloud

Para conferir informações sobre políticas de ACL, use o comando gcloud redis acl-policies list.

gcloud redis acl-policies list
--region=REGION

Substitua REGION pela região em que a política de ACL está localizada.

Conferir informações sobre uma política de ACL

Ao visualizar informações sobre uma política de ACL no Memorystore for Redis Cluster, é possível realizar auditorias de segurança, resolver problemas de acesso e aplicar o princípio do menor privilégio verificando comandos do usuário, permissões de chave e acesso a canais do Pub/Sub. Além disso, os administradores podem conferir uma política de ACL para garantir que os aplicativos tenham o acesso adequado e detectar regras permissivas demais.

É possível conferir informações sobre uma política de ACL usando a CLI gcloud. Para ver essas informações, use o comando gcloud redis acl-policies describe.

gcloud redis acl-policies describe ACL_POLICY_NAME \
--region=REGION

Faça as seguintes substituições:

  • ACL_POLICY_NAME: o nome da política de ACL sobre a qual você quer ver informações.
  • REGION: a região onde a política de ACL está localizada.

Conferir informações sobre revisões da política de ACL

Quando você cria uma política de ACL, o Memorystore for Redis Cluster cria uma versão (revisão) para a política. Cada vez que você modifica a política, o Memorystore for Redis Cluster cria uma revisão subsequente.

Como o Memorystore para Redis Cluster gera essas revisões automaticamente, é possível usá-las para fins de rastreamento e auditoria internos. Além disso, ao visualizar as revisões, você pode conferir o conteúdo exato da política de ACL em cada versão histórica.

Ao usar revisões de políticas de ACL, é possível acompanhar quais clusters estão usando qual revisão de uma política. Isso ajuda você a manter a visibilidade e garantir que os clusters estejam usando a versão correta durante períodos de consistência posterior após uma atualização da política.

É possível conferir informações sobre revisões de políticas de ACL usando a CLI gcloud.

gcloud

Para conferir informações sobre revisões da política de ACL, use o comando gcloud redis acl-policies revisions list.

gcloud redis acl-policies revisions list \
--acl-policy=ACL_POLICY_NAME \
--region=REGION

Faça as seguintes substituições:

  • ACL_POLICY_NAME: o nome da política de ACL que contém revisões sobre as quais você quer ver informações.
  • REGION: a região onde a política de ACL está localizada.

Na saída, anote os IDs de revisão. Você precisa desses IDs para conferir informações sobre revisões específicas da política de ACL.

Ver informações sobre uma revisão da política de ACL

Ao visualizar uma revisão da política de ACL, você pode conferir as regras, os metadados e uma lista de todos os clusters anexados. É possível conferir informações sobre uma revisão da política de ACL usando a CLI gcloud.

gcloud

Para conferir informações sobre uma revisão de política de ACL, use o comando gcloud redis acl-policies revisions describe.

gcloud redis acl-policies revisions describe ACL_POLICY_REVISION_ID \
--acl-policy=ACL_POLICY_NAME \
--region=REGION

Faça as seguintes substituições:

  • ACL_POLICY_REVISION_ID: o ID da revisão da política de ACL sobre a qual você quer ver informações. Você anotou esse ID ao consultar informações sobre revisões da política de ACL.
  • ACL_POLICY_NAME: o nome da política de ACL que contém a revisão.
  • REGION: a região em que a política de ACL está localizada.

Modificar uma política de ACL

Ao modificar uma política de ACL no Memorystore for Redis Cluster, você pode aumentar a segurança, aplicar o acesso com privilégio mínimo e gerenciar a segurança operacional. É possível modificar uma política usando a CLI gcloud.

Adicionar uma regra a uma política de ACL

Para aumentar a segurança de uma política de ACL, adicione uma regra a ela.

gcloud

Para adicionar uma regra a uma política de ACL, use o comando gcloud redis acl-policies update.

gcloud redis acl-policies update ACL_POLICY_NAME \
--region=REGION \
--add-rules=rule="on ~list:*",username="lucian"

Faça as seguintes substituições:

  • ACL_POLICY_NAME: o nome da política de ACL a que você quer adicionar uma regra de ACL
  • REGION: a região onde a política de ACL está localizada.

Essa regra concede ao lucian acesso a todas as chaves que começam com list:.

Substituir as regras de uma política de ACL

Substituir as regras de uma política de lista de controle de acesso (ACL, na sigla em inglês) oferece mais segurança, melhora a segurança operacional e aumenta o controle granular de acesso do usuário. Por exemplo, é possível revogar permissões durante uma resposta a incidentes ou ativar o acesso temporário para fins de depuração.

gcloud

Para substituir as regras de uma política de ACL, use o comando gcloud redis acl-policies update.

gcloud redis acl-policies update ACL_POLICY_NAME \
--region=REGION \
--rules=rule="on ~c*che",username="lucian"

Faça as seguintes substituições:

  • ACL_POLICY_NAME: o nome da política de ACL em que você quer substituir as regras de ACL.
  • REGION: a região onde a política de ACL está localizada.

A regra que você está substituindo na política concede acesso de lucian a todas as chaves que correspondem ao padrão c*che. Por exemplo: cache, caache e ceche.

Remover uma regra de uma política de ACL

Se uma regra de ACL não se aplicar mais a uma política de ACL, você poderá removê-la.

gcloud

Para remover uma regra de uma política de ACL, use o comando gcloud redis acl-policies update.

gcloud redis acl-policies update ACL_POLICY_NAME \
--region=REGION \
--remove-rules=rule="on ~set",username="lucian"

Faça as seguintes substituições:

  • ACL_POLICY_NAME: o nome da política de ACL de que você quer remover uma regra de ACL
  • REGION: a região onde a política de ACL está localizada.

A remoção dessa regra revoga as permissões associadas a ela para lucian. Para acessar o cluster, lucian agora precisa se conectar como o usuário default e está sujeito às permissões desse usuário.

Remover uma política de ACL de um cluster

Se uma política de ACL não se aplicar mais a um cluster no Memorystore for Redis Cluster, você poderá removê-la. É possível remover uma política usando a CLI gcloud.

gcloud

Para remover uma política de ACL de um cluster, use o comando gcloud redis clusters update.

gcloud redis clusters update CLUSTER_ID \
--acl-policy="" \
--region=REGION

Faça as seguintes substituições:

  • CLUSTER_ID: o ID do cluster de que você está removendo a política de ACL.
  • REGION: a região em que o cluster está localizado.

O valor "" do parâmetro acl-policy é uma string vazia. Isso indica que você quer remover a política de ACL do cluster.

Excluir uma política de ACL

Se você não precisar mais de uma política de ACL, poderá excluí-la. É possível excluir uma política usando a CLI gcloud.

gcloud

Para excluir uma política de ACL, use o comando gcloud redis acl-policies delete.

gcloud redis acl-policies delete ACL_POLICY_NAME \
--region=REGION

Faça as seguintes substituições:

  • ACL_POLICY_NAME: o nome da política de ACL que você quer excluir
  • REGION: a região onde a política de ACL está localizada.

Desativar scripts Lua

É possível usar políticas de ACL para gerenciar recursos de programação em Lua nos clusters. Desativar ou restringir scripts Lua pode ser útil para ajustar a performance, simplificar a funcionalidade dos clusters ou obedecer às diretrizes de segurança da sua organização.

Desativar comandos de script para usuários

Para desativar os scripts Lua e impedir que os usuários os executem, use políticas de ACL e remova as permissões dos comandos de script da string da regra de ACL do usuário.

O Redis categoriza os comandos em grupos. A programação em Lua se enquadra na categoria @scripting. Os principais comandos para os quais você precisa remover as permissões de usuário são:

É possível desativar todos os comandos de script ou um comando específico para os usuários. Para desativar comandos de script, use a CLI gcloud e adicione um sinal de menos (-) antes do comando ou da categoria.

Desativar todos os comandos de script para um usuário

Para desativar todos os comandos de script de um usuário, crie uma política de ACL e atribua a um cluster ou modifique uma política de ACL atribuída a um cluster.

Criar uma política

Para criar uma política de ACL que desative todos os comandos de script para um usuário chamado lucian, use o comando gcloud redis acl-policies create.

gcloud redis acl-policies create POLICY_NAME \
--region=REGION \
--rules=rule="on ~* +@all -@scripting",username=lucian

Faça as seguintes substituições:

  • POLICY_NAME: o nome da política de ACL
  • REGION: a região em que você quer que a política de ACL esteja localizada.

Depois de criar a política, atribua-a a um cluster novo ou existente.

Modificar uma política

Para modificar uma política de ACL e desativar todos os comandos de script para lucian, use o comando gcloud redis acl-policies update.

gcloud redis acl-policies update POLICY_NAME \
--region=REGION \
--rules=rule="on ~* +@all -@scripting",username=lucian

Faça as seguintes substituições:

  • POLICY_NAME: o nome da política de ACL
  • REGION: a região onde a política de ACL está localizada.

Se você quiser conceder apenas as permissões específicas de que um usuário precisa, mude o valor de +@all. Por exemplo, se você quiser que o usuário tenha acesso apenas a comandos somente leitura, mude +@all para +@read. Para mais informações sobre as permissões de usuário que podem ser definidas, consulte a documentação da ACL do Redis.

Desativar um comando de script para um usuário

É possível segmentar comandos específicos para desativar para um usuário. Por exemplo, é possível permitir que o usuário execute todos os comandos de script, exceto o SCRIPT FLUSH. Para desativar um comando de script para um usuário, crie uma política de ACL e atribua a um cluster ou modifique uma política de ACL atribuída a um cluster.

É possível desativar qualquer comando de script. Para os exemplos nesta seção, desative o comando SCRIPT FLUSH para o usuário. Para ver uma lista de comandos de script, consulte Desativar comandos de script para usuários.

Criar uma política

Para criar uma política de ACL que desative o comando de script SCRIPT FLUSH para lucian, use o comando gcloud redis acl-policies create.

gcloud redis acl-policies create POLICY_NAME \
--region=REGION \
--rules=rule="on ~* -script|flush",username=lucian

Faça as seguintes substituições:

  • POLICY_NAME: o nome da política de ACL
  • REGION: a região em que você quer que a política de ACL esteja localizada.

Depois de criar a política, atribua-a a um cluster novo ou existente.

Modificar uma política

Para modificar uma política de ACL e desativar todos os comandos de script para lucian, use o comando gcloud redis acl-policies update.

gcloud redis acl-policies update POLICY_NAME \
--region=REGION \
--rules=rule="on ~* -script|flush",username=lucian

Faça as seguintes substituições:

  • POLICY_NAME: o nome da política de ACL
  • REGION: a região onde a política de ACL está localizada.

Se você quiser conceder apenas as permissões específicas de que um usuário precisa, mude o valor de +@all. Por exemplo, se você quiser que o usuário tenha acesso apenas a comandos somente leitura, mude +@all para +@read. Para mais informações sobre as permissões de usuário que podem ser definidas, consulte a documentação da ACL do Redis.

Proteger o usuário padrão

Para desativar as permissões de script do superusuário default, crie uma política de ACL e atribua a um cluster ou modifique uma política de ACL atribuída a um cluster.

Criar uma política

Para criar uma política de ACL que desative todos os comandos de script para o usuário default, use o comando gcloud redis acl-policies create.

gcloud redis acl-policies create POLICY_NAME \
--region=REGION \
--rules=rule="on ~* +@all -@scripting",username=default

Faça as seguintes substituições:

  • POLICY_NAME: o nome da política de ACL
  • REGION: a região em que você quer que a política de ACL esteja localizada.

Depois de criar a política, atribua-a a um cluster novo ou existente.

Modificar uma política

Para modificar uma política de ACL e desativar todos os comandos de script para o usuário default, use o comando gcloud redis acl-policies update.

gcloud redis acl-policies update POLICY_NAME \
--region=REGION \
--rules=rule="on ~* +@all -@scripting",username=default

Faça as seguintes substituições:

  • POLICY_NAME: o nome da política de ACL
  • REGION: a região onde a política de ACL está localizada.

Se você quiser conceder apenas permissões específicas de que o usuário default precisa, mude o valor de +@all. Por exemplo, se você quiser que esse usuário tenha acesso apenas a comandos de leitura, mude +@all para +@read. Para mais informações sobre as permissões de usuário que podem ser definidas, consulte a documentação da ACL do Redis.

Resolver problemas

Esta seção lista as mensagens de erro que você pode receber ao usar políticas de ACL, os motivos dessas mensagens e dicas para resolver problemas relacionados a elas.

Mensagem de erro Causa Resolver problemas
username cannot be empty Você define uma string vazia ou uma string que contém apenas espaços em branco para um nome de usuário em uma política de ACL. Use um nome de usuário com caracteres alfanuméricos ou especiais. Em seguida, crie a política de ACL novamente.
duplicate username found in ACL policy Você tem nomes de usuários duplicados em uma política de ACL. Use os registros de erros para encontrar o nome de usuário duplicado. Modifique a solicitação de criação da política de ACL para especificar exatamente uma regra para o nome de usuário. Em seguida, crie a política de ACL novamente.
ACL rule token cannot contain token. use either IAM or Basic Auth features to enable authentication Não é possível usar caracteres de senha (por exemplo, <, >, # e !) ou comandos relacionados (por exemplo, nopass, resetpass e reset) em uma política de ACL. Remova todos os caracteres de senha e comandos relacionados das regras da política de ACL. Em seguida, crie a política de ACL novamente. Para configurar a autenticação, ative a autenticação básica ou a autenticação baseada no IAM.
passwords not allowed in ACL rules (token starts with char). use either IAM or Basic Auth features to enable authentication Não é possível usar caracteres de senha (por exemplo, <, >, # e !) ou comandos relacionados (por exemplo, nopass, resetpass e reset) em uma política de ACL. Remova todos os caracteres de senha e comandos relacionados das regras da política de ACL. Em seguida, crie a política de ACL novamente. Para configurar a autenticação, ative a autenticação básica ou a autenticação baseada no IAM.
invalid ACL rule syntax Você não formatou uma string de acesso corretamente em uma ou mais regras da política de ACL. Formate a string de acesso corretamente.
ACL policy is in DELETING state and cannot be used Você está tentando atribuir uma política de ACL a um cluster, mas ela tem um status DELETING. Atribua uma política de ACL diferente ao cluster.
ACL_POLICY_IN_USE: ACL policy is in use by 1 or more clusters Você está tentando excluir uma política de ACL atribuída a pelo menos um cluster. Antes de excluir uma política de ACL, é necessário removê-la de todos os clusters a que ela está atribuída. Para determinar quais clusters estão atribuídos a uma política, consulte Ver informações sobre políticas de ACL.
fast-failing the workflow as the resource is in DELETING state Você está tentando modificar uma política de ACL com status DELETING. Se uma política de ACL tiver o status DELETING, não será possível modificá-la.