Regras de controle de acesso com base em função (RBAC) - Amazon ElastiCache (RedisOSS)

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Regras de controle de acesso com base em função (RBAC)

Em vez de autenticar usuários com o comando Redis OSS AUTH, conforme descrito emAutenticação com o comando Redis OSS AUTH, no Redis OSS 6.0 em diante, você pode usar um recurso chamado Controle de Acesso Baseado em Função (RBAC). O RBAC também é a única maneira de controlar o acesso a caches sem servidor.

Ao contrário do Redis OSS AUTH, em que todos os clientes autenticados têm acesso total ao cache se o token for autenticado, o RBAC permite que você controle o acesso ao cache por meio de grupos de usuários. Esses grupos de usuários foram projetados como uma maneira de organizar o acesso a caches.

Com o RBAC, você cria usuários e atribui a eles permissões específicas usando uma cadeia de acesso, conforme descrito a seguir. Você atribui os usuários a grupos de usuários alinhados com uma função específica (administradores, recursos humanos) que são então implantados em um ou mais caches ElastiCache (Redis OSS). Ao fazer isso, você pode estabelecer limites de segurança entre clientes usando o mesmo cache ou caches do Redis OSS e impedir que os clientes acessem os dados uns dos outros.

O RBAC foi projetado para oferecer suporte à introdução do Redis OSS ACL no Redis OSS 6. Quando você usa o RBAC com seu cache ElastiCache (Redis OSS), há algumas limitações:

  • Não é possível especificar senhas em uma string de acesso. Você define senhas com CreateUsernossas ModifyUserchamadas.

  • Para direitos de usuário, você passa on e off como parte da string de acesso. Se nenhum deles for especificado na string de acesso, o usuário receberá off e não terá direitos de acesso ao cache.

  • Você não pode usar comandos proibidos e renomeados. Se você especificar um comando proibido ou renomeado, será emitida uma exceção. Se você quiser usar listas de controle de acesso (ACLs) para um comando renomeado, especifique o nome original do comando, ou seja, o nome do comando antes de ele ser renomeado.

  • Não é possível usar o comando reset como parte de uma string de acesso. Você especifica senhas com parâmetros de API e ElastiCache (Redis OSS) gerencia senhas. Assim, você não pode usar reset porque ele removeria todas as senhas de um usuário.

  • O Redis OSS 6 apresenta o comando ACL LIST. Esse comando retorna uma lista de usuários junto com as regras de ACL aplicadas a cada usuário. ElastiCache (Redis OSS) suporta o ACL LIST comando, mas não inclui suporte para hashes de senha, como faz o Redis OSS. Com o ElastiCache (Redis OSS), você pode usar a operação describe-users para obter informações semelhantes, incluindo as regras contidas na string de acesso. No entanto, describe-users não recupera uma senha de usuário.

    Outros comandos somente para leitura suportados pelo ElastiCache (Redis OSS) incluem ACL WHOAMI, ACL USERS e ACL CAT. ElastiCache (Redis OSS) não oferece suporte a nenhum outro comando ACL baseado em gravação.

  • As limitações a seguir aplicam-se:

    Recurso Máximo permitido
    Usuários por grupo de usuários 100
    Número de DPUs 1000
    Número de grupos de usuários 100

O uso do RBAC com ElastiCache (Redis OSS) é descrito em mais detalhes a seguir.

Especificação de permissões usando uma string de acesso

Para especificar permissões para um cache ElastiCache (Redis OSS), você cria uma string de acesso e a atribui a um usuário, usando o AWS CLI ou. AWS Management Console

As strings de acesso são definidas como uma lista de regras delimitadas por espaço que são aplicadas ao usuário. Eles definem quais comandos um usuário pode executar e em quais chaves um usuário pode operar. Para executar um comando, um usuário deve ter acesso ao comando que está sendo executado e todas as chaves que estão sendo acessadas pelo comando. Regras são aplicadas da esquerda para a direita cumulativamente, e uma string mais simples pode ser usada em vez da fornecida se houver redundâncias na string fornecida.

Para obter informações sobre a sintaxe das regras ACL, consulte ACL.

No exemplo a seguir, a string de acesso representa um usuário ativo com acesso a todas as chaves e comandos disponíveis.

on ~* +@all

A sintaxe da cadeia de acesso é dividida da seguinte forma:

  • on: o usuário é um usuário ativo.

  • ~*: o acesso é dado a todas as chaves disponíveis.

  • +@all: o acesso é dado a todos os comandos disponíveis.

As configurações anteriores são as menos restritivas. Você pode modificar essas configurações para torná-las mais seguras.

No exemplo a seguir, a string de acesso representa um usuário com acesso restrito ao acesso de leitura em chaves que começam com o keyspace "app::"

on ~app::* -@all +@read

Você pode refinar mais essas permissões listando comandos aos quais o usuário tem acesso:

+command1: o acesso do usuário aos comandos é limitado a command1.

+@category: o acesso do usuário é limitado a uma categoria de comandos.

Para obter informações sobre como atribuir uma string de acesso a um usuário, consulte Criação de usuários e grupos de usuários com o console e a CLI.

Se você estiver migrando uma carga de trabalho existente para ElastiCache, poderá recuperar a string de acesso chamandoACL LIST, excluindo o usuário e quaisquer hashes de senha.

Para o Redis OSS versão 6.2 e superior, a seguinte sintaxe de string de acesso também é suportada:

  • &*: o acesso é dado a todos os canais disponíveis.

Para o Redis OSS versão 7.0 e superior, a seguinte sintaxe de cadeia de caracteres de acesso também é suportada:

  • |: ´pode ser usado para bloquear subcomandos (por exemplo, "-config|set").

  • %R~<pattern>: adicione o padrão de chave de leitura especificado. Comporta-se de forma semelhante ao padrão de chave normal, mas só concede permissão para ler chaves que correspondam ao padrão fornecido. Para obter mais informações, consulte permissões de chave.

  • %W~<pattern>: adicione o padrão de chave de gravação especificado. Comporta-se de forma semelhante ao padrão de chave normal, mas só concede permissão para gravar em chaves que correspondam ao padrão fornecido. Para obter mais informações, consulte permissões de chave.

  • %RW~<pattern>: alias para ~<pattern>.

  • (<rule list>): crie um novo seletor para combinar as regras. Os seletores são avaliados após as permissões do usuário e são avaliados de acordo com a ordem em que são definidos. Se um comando corresponder às permissões do usuário ou a qualquer seletor, ele será permitido. Para obter mais informações, consulte Seletores de ACL.

  • clearselectors: exclua todos os seletores associados ao usuário.

Aplicando o RBAC a um cache para ElastiCache (Redis OSS)

Para usar o RBAC ElastiCache (Redis OSS), siga as seguintes etapas:

  1. Crie um ou mais usuários.

  2. Crie um grupo de usuários e adicione usuários ao grupo.

  3. Atribua o grupo de usuários a um cache que tenha criptografia em trânsito habilitada.

Essas etapas estão descritas em detalhes a seguir.

Criação de usuários e grupos de usuários com o console e a CLI

As informações de usuário para usuários do RBAC são um ID de usuário, nome de usuário e, opcionalmente, uma senha e uma string de acesso. A string de acesso fornece o nível de permissão em chaves e comandos. O ID de usuário é exclusivo para o usuário e o nome de usuário é o que é passado para o mecanismo.

Certifique-se de que as permissões do usuário fornecidas fazem sentido com a finalidade pretendida do grupo de utilizadores. Por exemplo, se você criar um grupo de usuários chamado Administrators, qualquer usuário que você adicionar a esse grupo deve ter sua string de acesso definida para acesso total a chaves e comandos. Para usuários em um grupo de usuários e-commerce, você pode definir suas cadeias de acesso para acesso somente leitura.

ElastiCache configura automaticamente um usuário padrão com ID de usuário e nome de usuário "default" e o adiciona a todos os grupos de usuários. Você não pode excluir ou modificar esse usuário. Esse usuário se destina à compatibilidade com o comportamento padrão das versões anteriores do Redis OSS e tem uma string de acesso que permite chamar todos os comandos e acessar todas as chaves.

Para adicionar um controle de acesso indicado a um cache, substitua esse usuário padrão por um novo que não esteja habilitado ou use uma senha forte. Para alterar o usuário padrão, crie um novo usuário com o nome de usuário definido como default. Em seguida, você pode trocá-lo pelo usuário padrão original.

Os seguintes procedimentos mostram como trocar o usuário default original por outro usuário default que tem uma string de acesso modificada.

Para modificar o usuário padrão no console
  1. Faça login no AWS Management Console e abra o ElastiCache console da Amazon em https://console.aws.amazon.com/elasticache/.

  2. Escolha Gerenciamento de grupos de usuários no painel de navegação.

  3. Em ID do grupo de usuários, escolha o ID que você deseja modificar. Verifique se você escolheu o link e não a caixa de seleção.

  4. Escolha Modificar.

  5. Na janela Modificar, escolha Gerenciar e selecione o usuário que você deseja como o usuário padrão com o Nome do usuário como o padrão.

  6. Selecione Escolher.

  7. Escolha Modificar. Quando você fizer isso, todas as conexões existentes com um cache que o usuário padrão original tiver serão encerradas.

Para modificar o usuário padrão com o AWS CLI
  1. Criar um novo usuário com o nome de usuário default usando os seguintes comandos.

    Para Linux, macOS ou Unix:

    aws elasticache create-user \ --user-id "new-default-user" \ --user-name "default" \ --engine "REDIS" \ --passwords "a-str0ng-pa))word" \ --access-string "off +get ~keys*"

    Para Windows:

    aws elasticache create-user ^ --user-id "new-default-user" ^ --user-name "default" ^ --engine "REDIS" ^ --passwords "a-str0ng-pa))word" ^ --access-string "off +get ~keys*"
  2. Crie um grupo de usuários e adicione o usuário que você criou anteriormente.

    Para Linux, macOS ou Unix:

    aws elasticache create-user-group \ --user-group-id "new-group-2" \ --engine "REDIS" \ --user-ids "new-default-user"

    Para Windows:

    aws elasticache create-user-group ^ --user-group-id "new-group-2" ^ --engine "REDIS" ^ --user-ids "new-default-user"
  3. Troque o novo usuário default pelo usuário original default.

    Para Linux, macOS ou Unix:

    aws elasticache modify-user-group \ --user-group-id test-group \ --user-ids-to-add "new-default-user" \ --user-ids-to-remove "default"

    Para Windows:

    aws elasticache modify-user-group ^ --user-group-id test-group ^ --user-ids-to-add "new-default-user" ^ --user-ids-to-remove "default"

    Quando essa operação de modificação é chamada, todas as conexões existentes com um cache que o usuário padrão original tenha são encerradas.

Ao criar um usuário, você pode configurar até duas senhas. Quando você modifica uma senha, todas as conexões existentes com os caches são mantidas.

Em particular, esteja ciente dessas restrições de senha de usuário ao usar o RBAC para ElastiCache (Redis OSS):

  • As senhas devem ter de 16 a 128 caracteres imprimíveis.

  • Os seguintes caracteres não alfanuméricos não são permitidos: , "" / @.

Gerenciamento de usuários com o console e a CLI

Use o procedimento a seguir para gerenciar usuários no console.

Para gerenciar usuários no console
  1. Faça login no AWS Management Console e abra o ElastiCache console da Amazon em https://console.aws.amazon.com/elasticache/.

  2. No ElastiCache painel da Amazon, escolha Gerenciamento de usuários. As seguintes opções estão disponíveis:

    • Criar usuário: ao criar um usuário, você insere um ID de usuário, um nome de usuário, um modo de autenticação e uma string de acesso. A string de acesso define o nível de permissão para quais chaves e comandos o usuário é permitido.

      Ao criar um usuário, você pode configurar até duas senhas. Quando você modifica uma senha, todas as conexões existentes com os caches são mantidas.

    • Modificar usuário: permite a você atualizar as configurações de um usuário ou alterar a string de acesso.

    • Excluir usuário: a conta de usuário será removida de todos os grupos de usuários aos quais ela pertence.

Use o procedimento a seguir para gerenciar usuários na AWS CLI.

Para modificar um usuário usando a CLI
  • Use o comando modify-user para atualizar a senha ou senhas de um usuário ou alterar as permissões de acesso de um usuário.

    Quando um usuário é modificado, os grupos de usuários associados ao usuário são atualizados com todos os caches associados ao grupo de usuários. Todas as conexões existentes são mantidas. Veja os exemplos a seguir.

    Para Linux, macOS ou Unix:

    aws elasticache modify-user \ --user-id user-id-1 \ --access-string "~objects:* ~items:* ~public:*" \ --no-password-required

    Para Windows:

    aws elasticache modify-user ^ --user-id user-id-1 ^ --access-string "~objects:* ~items:* ~public:*" ^ --no-password-required
nota

Não recomendamos usar a opção nopass. Se o fizer, recomendamos definir as permissões do usuário como somente de leitura, com acesso a um conjunto limitado de chaves.

Para excluir um usuário usando a CLI
  • Use o comando delete-user para excluir um usuário. A conta é excluída e removida de todos os grupos de usuários aos quais pertence. Veja um exemplo a seguir.

    Para Linux, macOS ou Unix:

    aws elasticache delete-user \ --user-id user-id-2

    Para Windows:

    aws elasticache delete-user ^ --user-id user-id-2

Para ver uma lista de usuários, execute a operação describe-users.

aws elasticache describe-users

Gerenciamento de grupos de usuários com o console e a CLI

É possível criar grupos de usuários para organizar e controlar o acesso de usuários a um ou mais caches, conforme mostrado a seguir.

Use o procedimento a seguir para gerenciar grupos de usuários no console.

Como gerenciar grupos de usuários usando o console
  1. Faça login no AWS Management Console e abra o ElastiCache console da Amazon em https://console.aws.amazon.com/elasticache/.

  2. No ElastiCache painel da Amazon, escolha Gerenciamento de grupos de usuários.

    As operações a seguir estão disponíveis para criar novos grupos de usuários:

    • Criar: ao criar um grupo de usuários, você adiciona usuários e, em seguida, atribui os grupos de usuários a caches. Por exemplo, é possível criar um grupo de usuários Admin para usuários que tenham funções administrativas em um cache.

      Importante

      Ao criar um grupo de usuários, você precisa incluir o usuário padrão.

    • Add Users (Adicionar usuários): adiciona usuários ao grupo de usuários.

    • Remove Users (Remover usuários): remove usuários do grupo de usuários. Quando os usuários são removidos de um grupo de usuários, todas as conexões existentes que eles têm com um cache são encerradas.

    • Delete (Excluir): use para excluir um grupo de usuários. Observe que o próprio grupo de usuários, e não os usuários pertencentes ao grupo, serão excluídos.

    Para grupos de usuários existentes, você pode fazer o seguinte:

    • Add Users (Adicionar usuários): adiciona usuários existentes ao grupo de usuários.

    • Delete Users (Excluir usuários): remove usuários existentes do grupo de usuários.

      nota

      Os usuários são removidos do grupo de usuários, mas não excluídos do sistema.

Use os procedimentos a seguir para gerenciar grupos de usuários na CLI.

Para criar um novo grupo de usuários e adicionar um usuário usando a CLI
  • Use o comando create-user-group, conforme mostrado a seguir.

    Para Linux, macOS ou Unix:

    aws elasticache create-user-group \ --user-group-id "new-group-1" \ --engine "REDIS" \ --user-ids user-id-1, user-id-2

    Para Windows:

    aws elasticache create-user-group ^ --user-group-id "new-group-1" ^ --engine "REDIS" ^ --user-ids user-id-1, user-id-2
Para modificar um grupo de usuários adicionando novos usuários ou removendo membros atuais usando a CLI
  • Use o comando modify-user-group, conforme mostrado a seguir.

    Para Linux, macOS ou Unix:

    aws elasticache modify-user-group --user-group-id new-group-1 \ --user-ids-to-add user-id-3 \ --user-ids-to-remove user-id-2

    Para Windows:

    aws elasticache modify-user-group --user-group-id new-group-1 ^ --user-ids-to-add userid-3 ^ --user-ids-to-removere user-id-2
nota

Quaisquer conexões abertas pertencentes a um usuário removido de um grupo de usuários são encerradas por este comando.

Para excluir um grupo de usuários usando a CLI
  • Use o comando delete-user-group, conforme mostrado a seguir. O grupo de usuários em si, não os usuários pertencentes ao grupo, é excluído.

    Para Linux, macOS ou Unix:

    aws elasticache delete-user-group / --user-group-id

    Para Windows:

    aws elasticache delete-user-group ^ --user-group-id

Para ver uma lista de grupos de usuários, você pode chamar a describe-user-groupsoperação.

aws elasticache describe-user-groups \ --user-group-id test-group

Atribuição de grupos de usuários a caches sem servidor

Depois que você tiver criado um grupo de usuários e adicionado usuários, a etapa final na implementação do RBAC será atribuir o grupo de usuários a um cache sem servidor.

Atribuição de grupos de usuários a caches sem servidor usando o console

Para adicionar um grupo de usuários a um cache sem servidor usando o AWS Management Console, faça o seguinte:

Atribuindo grupos de usuários a caches sem servidor usando o AWS CLI

A AWS CLI operação a seguir cria um cache sem servidor usando o user-group-id parâmetro com o valor. my-user-group-id Substitua o grupo de sub-redes sng-test por um grupo de sub-redes que exista.

Principais parâmetros
  • --engine: deve ser redis.

  • --user-group-id: este valor fornece o ID do grupo de usuários, composto de usuários com permissões de acesso especificadas para o cache.

Para Linux, macOS ou Unix:

aws elasticache create-serverless-cache \ --serverless-cache-name "new-serverless-cache" \ --description "new-serverless-cache" \ --engine "redis" \ --user-group-id "new-group-1"

Para Windows:

aws elasticache create-serverless-cache ^ --serverless-cache-name "new-serverless-cache" ^ --description "new-serverless-cache" ^ --engine "redis" ^ --user-group-id "new-group-1"

A AWS CLI operação a seguir modifica um cache sem servidor com o user-group-id parâmetro com o valor. my-user-group-id

Para Linux, macOS ou Unix:

aws elasticache modify-serverless-cache \ --serverless-cache-name serverless-cache-1 \ --user-group-id "new-group-2"

Para Windows:

aws elasticache modify-serverless-cache ^ --serverless-cache-name serverless-cache-1 ^ --user-group-id "new-group-2"

Eventuais modificações feitas em um cache são atualizadas de maneira assíncrona. Você pode monitorar este progresso visualizando os eventos. Para ter mais informações, consulte Visualização de eventos do ElastiCache.

Atribuição de grupos de usuários a grupos de replicação

Depois de criar um grupo de usuários e adicionar usuários, a etapa final na implementação do RBAC é atribuir o grupo de usuários a um grupo de replicação.

Atribuição de grupos de usuários a grupos de replicação usando o console

Para adicionar um grupo de usuários a uma replicação usando o AWS Management Console, faça o seguinte:

Atribuindo grupos de usuários a grupos de replicação usando o AWS CLI

A AWS CLI operação a seguir cria um grupo de replicação com a criptografia em trânsito (TLS) ativada e o user-group-ids parâmetro com o valor. my-user-group-id Substitua o grupo de sub-redes sng-test por um grupo de sub-redes que exista.

Principais parâmetros
  • --engine: deve ser redis.

  • --engine-version: deve ser 6.0 ou posterior.

  • --transit-encryption-enabled: necessário para autenticação e para associar um grupo de usuários.

  • --user-group-ids: este valor fornece o ID do grupo de usuários, composto de usuários com permissões de acesso especificadas para o cache.

  • --cache-subnet-group: necessário para associar um grupo de usuários.

Para Linux, macOS ou Unix:

aws elasticache create-replication-group \ --replication-group-id "new-replication-group" \ --replication-group-description "new-replication-group" \ --engine "redis" \ --cache-node-type cache.m5.large \ --transit-encryption-enabled \ --user-group-ids "new-group-1" \ --cache-subnet-group "cache-subnet-group"

Para Windows:

aws elasticache create-replication-group ^ --replication-group-id "new-replication-group" ^ --replication-group-description "new-replication-group" ^ --engine "redis" ^ --cache-node-type cache.m5.large ^ --transit-encryption-enabled ^ --user-group-ids "new-group-1" ^ --cache-subnet-group "cache-subnet-group"

A AWS CLI operação a seguir modifica um grupo de replicação com a criptografia em trânsito (TLS) ativada e o user-group-ids parâmetro com o valor. my-user-group-id

Para Linux, macOS ou Unix:

aws elasticache modify-replication-group \ --replication-group-id replication-group-1 \ --user-group-ids-to-remove "new-group-1" \ --user-group-ids-to-add "new-group-2"

Para Windows:

aws elasticache modify-replication-group ^ --replication-group-id replication-group-1 ^ --user-group-ids-to-remove "new-group-1" ^ --user-group-ids-to-add "new-group-2"

Observe o PendingChanges na resposta. Eventuais modificações feitas em um cache são atualizadas de maneira assíncrona. Você pode monitorar este progresso visualizando os eventos. Para ter mais informações, consulte Visualização de eventos do ElastiCache.

Migração do Redis OSS AUTH para o RBAC

Se você estiver usando o Redis OSS AUTH conforme descrito em Autenticação com o comando Redis OSS AUTH e quiser migrar para o RBAC, use os procedimentos a seguir.

Use o procedimento a seguir para migrar do Redis OSS AUTH para o RBAC usando o console.

Para migrar do Redis OSS AUTH para o RBAC usando o console
  1. Faça login no AWS Management Console e abra o ElastiCache console em https://console.aws.amazon.com/elasticache/.

  2. Na lista no canto superior direito, escolha a AWS região em que o cache que você deseja modificar está localizado.

  3. No painel de navegação, escolha o mecanismo em execução no cache que você deseja modificar.

    Uma lista dos caches do mecanismo escolhido é exibida.

  4. Na lista de caches, para o cache que você deseja modificar, escolha o nome.

  5. Para Actions (Ações), escolha Modify (Modificar).

    A janela Modificar é exibida.

  6. Para Controle de acesso, escolha Lista de controle de acesso do grupo de usuários.

  7. Em Lista de controle de acesso do grupo de usuários, escolha um grupo de usuários.

  8. Escolha Previsualizar alterações e, na próxima tela, Modificar.

Use o procedimento a seguir para migrar do Redis OSS AUTH para o RBAC usando a CLI.

Para migrar do Redis OSS AUTH para o RBAC usando a CLI
  • Use o comando modify-replication-group, conforme mostrado a seguir.

    Para Linux, macOS ou Unix:

    aws elasticache modify-replication-group --replication-group-id test \ --auth-token-update-strategy DELETE \ --user-group-ids-to-add user-group-1

    Para Windows:

    aws elasticache modify-replication-group --replication-group-id test ^ --auth-token-update-strategy DELETE ^ --user-group-ids-to-add user-group-1

Migração do RBAC para o Redis OSS AUTH

Se você estiver usando o RBAC e quiser migrar para o Redis OSS AUTH, consulte. Migração do RBAC para o Redis OSS AUTH

nota

Se precisar desativar o controle de acesso em um ElastiCache cache, você precisará fazer isso por meio do AWS CLI. Para ter mais informações, consulte Desabilitando o controle de acesso em um cache ElastiCache Redis OSS.