Autenticação de usuários com listas de controle de acesso (ACLs) - Amazon MemoryDB

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

Autenticação de usuários com listas de controle de acesso (ACLs)

Você pode autenticar usuários com listas de controle de acesso (ACLs).

As ACLs permitem que você controle o acesso ao cluster agrupando usuários. Essas listas de controle de acesso são projetadas como uma maneira de organizar o acesso aos clusters.

Com as ACLs, você cria usuários e atribui a eles permissões específicas usando uma string de acesso, conforme descrito na próxima seção. Você atribui os usuários a listas de controle de acesso alinhadas a uma função específica (administradores, recursos humanos) que, em seguida, são implantadas em um ou mais clusters do MemoryDB. Ao fazer isso, você pode estabelecer limites de segurança entre clientes usando o mesmo cluster ou clusters do MemoryDB e impedir que os clientes acessem os dados uns dos outros.

As ACLs foram projetadas para oferecer suporte à introdução da Redis ACL no Redis OSS 6. Quando você usa ACLs com o cluster do MemoryDB, há algumas limitações:

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

  • 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 é atribuído com off e não tem direitos de acesso ao cluster.

  • Você não pode usar comandos proibidos. Se você especificar um comando proibido, será emitida uma exceção. Para obter uma lista desses comandos, consulte Comandos restritos do Redis OSS.

  • Não é possível usar o comando reset como parte de uma string de acesso. Você especifica as senhas com parâmetros de API e o MemoryDB gerencia as 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 da ACL aplicadas a cada usuário. O MemoryDB suporta o ACL LIST comando, mas não inclui suporte para hashes de senha, como faz o Redis OSS. Com o MemoryDB, você pode usar a DescribeUsersoperação para obter informações semelhantes, incluindo as regras contidas na string de acesso. No entanto, DescribeUsersnão recupera a senha do usuário.

    Outros comandos somente de leitura compatíveis com o MemoryDB incluem ACL WHOAMI, ACL USERS e ACL CAT. O MemoryDB não oferece suporte a nenhum outro comando ACL baseado em gravação.

O uso de ACLs com o MemoryDB é descrito em mais detalhes a seguir.

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

Para especificar permissões para um cluster MemoryDB, 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. As 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.

  • &*— O acesso é concedido a todos os canais do pubsub.

  • +@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 listas de controle de acesso com o console e a CLI.

Se você estiver migrando uma workload existente para o MemoryDB, poderá recuperar a string de acesso chamando ACL LIST, excluindo o usuário e quaisquer hashes de senha.

Recursos de pesquisa vetorial

nota

Esse recurso está na versão prévia do MemoryDB e está sujeito a alterações.

Para a Pesquisa vetorial, todos os comandos de pesquisa pertencem à categoria @search, e as categorias @read, @write, @fast e @slow existentes são atualizadas para incluir comandos de pesquisa. Se um usuário não tiver acesso a uma categoria, ele não terá acesso aos comandos dentro dela. Por exemplo, se ele não tiver acesso a @search, não poderá executar comandos relacionados a pesquisas.

A tabela a seguir indica o mapeamento de comandos de pesquisa as categorias apropriadas.

Comandos do VSS @read @write @fast @slow
FT.CREATE Y Y
FT.DROPINDEX Y Y
FT.LIST Y Y
FT.INFO Y Y
FT.SEARCH Y Y
FT.AGGREGATE Y Y
FT.PROFILE Y Y
FT.ALIASADD Y Y
FT.ALIASDEL Y Y
FT.ALIASUPDATE Y Y
FT._ALIASLIST Y Y
FT.EXPLAIN Y Y
FT.EXPLAINCLI Y Y
FT.CONFIG Y Y

Aplicação de ACLs a um cluster para MemoryDB

Para usar as ACLs do MemoryDB, siga as etapas a seguir:

  1. Crie um ou mais usuários.

  2. Crie uma ACL e adicione usuários à lista.

  3. Atribua a ACL a um cluster.

Essas etapas estão descritas em detalhes a seguir.

Criação de usuários e listas de controle de acesso com o console e a CLI

As informações de usuário para as ACLs são um 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 nome é exclusivo para o usuário e é passado para o mecanismo.

Verifique se as permissões do usuário fornecidas fazem sentido com a finalidade pretendida da ACL. Por exemplo, se você criar uma ACL chamada 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 uma ACL de e-commerce, você pode definir suas strings de acesso para somente leitura.

O MemoryDB configura automaticamente um usuário padrão por conta com um nome de usuário "default". Ele não será associado a nenhum cluster, a menos que seja explicitamente adicionado a uma ACL. 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.

Uma ACL imutável de “acesso aberto” será criada para cada conta que contém o usuário padrão. Essa é a única ACL da qual o usuário padrão pode se tornar membro. Ao criar um cluster, você deve selecionar uma ACL para associar ao cluster. Embora você tenha a opção de aplicar a ACL de “acesso aberto” com o usuário padrão, é altamente recomendável criar uma ACL com usuários que tenham permissões restritas às suas necessidades comerciais.

Os clusters que não têm o TLS ativado devem usar a ACL de “acesso aberto” para fornecer uma autenticação aberta.

As ACLs podem ser criadas sem usuários. Uma ACL vazia não teria acesso a um cluster e só pode ser associada a clusters habilitados para TLS.

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

Em particular, esteja ciente dessas restrições de senha de usuário ao usar as ACLs com o MemoryDB:

  • 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

Para criar usuários no console
  1. Faça login AWS Management Console e abra o console do MemoryDB em https://console.aws.amazon.com/memorydb/.

  2. No painel de navegação à esquerda, escolha Usuários.

  3. Escolha Criar usuário

  4. Na página Criar usuário, insira um Nome.

    As restrições de nomenclatura de cluster são as seguintes:

    • Devem conter 1 a 40 caracteres alfanuméricos ou hifens.

    • Deve começar com uma letra.

    • Não podem conter dois hifens consecutivos.

    • Não podem terminar com um hífen.

  5. Em Senhas, você pode inserir até duas senhas.

  6. Em String de acesso, insira uma cadeia de caracteres de acesso. A string de acesso define o nível de permissão para quais chaves e comandos o usuário é permitido.

  7. Para tags, você pode, opcionalmente, aplicar tags para pesquisar e filtrar seus usuários ou monitorar seus AWS custos.

  8. Escolha Criar.

Para criar um usuário usando a CLI
  • Use o comando create-user para criar um usuário.

    Para Linux, macOS ou Unix:

    aws memorydb create-user \ --user-name user-name-1 \ --access-string "~objects:* ~items:* ~public:*" \ --authentication-mode \ Passwords="abc",Type=password

    Para Windows:

    aws memorydb create-user ^ --user-name user-name-1 ^ --access-string "~objects:* ~items:* ~public:*" ^ --authentication-mode \ Passwords="abc",Type=password
Para modificar usuários no console
  1. Faça login AWS Management Console e abra o console do MemoryDB em https://console.aws.amazon.com/memorydb/.

  2. No painel de navegação à esquerda, escolha Usuários.

  3. Escolha o botão de opção ao lado do usuário que você deseja modificar e escolha Ações->Modificar

  4. Se você quiser modificar uma senha, escolha o botão de opção Modificar senhas. Observe que, se você tiver duas senhas, deverá inserir as duas ao modificar uma delas.

  5. Se você estiver atualizando a string de acesso, insira a nova.

  6. Escolha Modificar.

Para modificar um usuário usando a CLI
  1. Use o comando update-user para modificar um usuário.

  2. Quando um usuário é modificado, as listas de controle de acesso associadas ao usuário são atualizadas, juntamente com quaisquer clusters associados à ACL. Todas as conexões existentes são mantidas. Veja os exemplos a seguir.

    Para Linux, macOS ou Unix:

    aws memorydb update-user \ --user-name user-name-1 \ --access-string "~objects:* ~items:* ~public:*"

    Para Windows:

    aws memorydb update-user ^ --user-name user-name-1 ^ --access-string "~objects:* ~items:* ~public:*"
Para visualizar os detalhes do usuário no console
  1. Faça login AWS Management Console e abra o console do MemoryDB em https://console.aws.amazon.com/memorydb/.

  2. No painel de navegação à esquerda, escolha Usuários.

  3. Escolha o usuário em Nome de usuário ou use a caixa de pesquisa para localizar o usuário.

  4. Em Configurações do usuário, você pode revisar a string de acesso, a contagem de senhas, o status e o nome do recurso da Amazon (ARN) do usuário.

  5. Em Listas de controle de acesso (ACL), você pode revisar a ACL à qual o usuário pertence.

  6. Em Tags, você pode revisar todas as tags associadas ao usuário.

Use o comando describe-users para ver os detalhes de um usuário.

aws memorydb describe-users \ --user-name my-user-name
Para excluir usuários no console
  1. Faça login AWS Management Console e abra o console do MemoryDB em https://console.aws.amazon.com/memorydb/.

  2. No painel de navegação à esquerda, escolha Usuários.

  3. Escolha o botão de opção ao lado do usuário que você deseja modificar e escolha Ações->Excluir

  4. Para confirmar, digite delete na caixa de texto de confirmação e, em seguida, selecione Excluir.

  5. Para cancelar, escolha Cancelar.

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 todas as listas de controle de acesso às quais pertence. Veja um exemplo a seguir.

    Para Linux, macOS ou Unix:

    aws memorydb delete-user \ --user-name user-name-2

    Para Windows:

    aws memorydb delete-user ^ --user-name user-name-2

Gerenciamento de listas de controle de acesso com o console e a CLI

Você pode criar listas de controle de acesso para organizar e controlar o acesso de usuários a um ou mais clusters, conforme mostrado a seguir.

Use o procedimento a seguir para gerenciar as listas de controle de acesso usando o console.

Como criar uma Lista de controle de acesso usando o console
  1. Faça login AWS Management Console e abra o console do MemoryDB em https://console.aws.amazon.com/memorydb/.

  2. No painel de navegação à esquerda, escolha Listas de controle de acesso (ACL).

  3. Escolha Criar ACL.

  4. Na página Criar lista de controle de acesso (ACL), insira o nome da ACL.

    As restrições de nomenclatura de cluster são as seguintes:

    • Devem conter 1 a 40 caracteres alfanuméricos ou hifens.

    • Deve começar com uma letra.

    • Não podem conter dois hifens consecutivos.

    • Não podem terminar com um hífen.

  5. Em Usuários selecionados, siga um destes procedimentos:

    1. Crie um novo usuário selecionando Criar usuário

    2. Adicione usuários escolhendo Gerenciar e, em seguida, selecionando usuários na caixa de diálogo Gerenciar usuários, depois selecione Escolher.

  6. Para tags, você pode, opcionalmente, aplicar tags para pesquisar e filtrar suas ACLs ou monitorar seus AWS custos.

  7. Escolha Criar.

Use os procedimentos a seguir para criar uma lista de controle de acesso usando a CLI.

Para criar uma nova ACL e adicionar um usuário usando a CLI
  • Use o comando create-acl para criar uma ACL.

    Para Linux, macOS ou Unix:

    aws memorydb create-acl \ --acl-name "new-acl-1" \ --user-names "user-name-1" "user-name-2"

    Para Windows:

    aws memorydb create-acl ^ --acl-name "new-acl-1" ^ --user-names "user-name-1" "user-name-2"
Para modificar uma lista de controle de acesso usando o console
  1. Faça login AWS Management Console e abra o console do MemoryDB em https://console.aws.amazon.com/memorydb/.

  2. No painel de navegação à esquerda, escolha Listas de controle de acesso (ACL).

  3. Escolha a ACL que você deseja modificar e escolha Modificar

  4. Na página Modificar, em Usuários selecionados, faça o seguinte:

    1. Crie um novo usuário escolhendo Criar usuário para adicionar à ACL.

    2. Adicione ou remova usuários escolhendo Gerenciar e, em seguida, selecionando ou desmarcando usuários na caixa de diálogo Gerenciar usuários e depois, selecionando Escolher.

  5. Na página Criar lista de controle de acesso (ACL), insira o nome da ACL.

    As restrições de nomenclatura de cluster são as seguintes:

    • Devem conter 1 a 40 caracteres alfanuméricos ou hifens.

    • Deve começar com uma letra.

    • Não podem conter dois hifens consecutivos.

    • Não podem terminar com um hífen.

  6. Em Usuários selecionados, siga um destes procedimentos:

    1. Crie um novo usuário selecionando Criar usuário

    2. Adicione usuários escolhendo Gerenciar e, em seguida, selecionando usuários na caixa de diálogo Gerenciar usuários, depois selecione Escolher.

  7. Escolha Modificar para salvar suas alterações ou Cancelar para descartá-las.

Para modificar uma ACL adicionando novos usuários ou removendo membros atuais usando a CLI
  • Use o comando update-acl para modificar uma ACL.

    Para Linux, macOS ou Unix:

    aws memorydb update-acl --acl-name new-acl-1 \ --user-names-to-add user-name-3 \ --user-names-to-remove user-name-2

    Para Windows:

    aws memorydb update-acl --acl-name new-acl-1 ^ --user-names-to-add user-name-3 ^ --user-names-to-remove user-name-2
nota

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

Para ver os detalhes da ACL no console
  1. Faça login AWS Management Console e abra o console do MemoryDB em https://console.aws.amazon.com/memorydb/.

  2. No painel de navegação à esquerda, escolha Listas de controle de acesso (ACL).

  3. Escolha a ACL sob nome da ACL ou use a caixa de pesquisa para localizar a ACL.

  4. Em Usuários, você pode revisar a lista de usuários associados à ACL.

  5. Em Clusters associados, você pode revisar o cluster ao qual a ACL pertence.

  6. Em Tags, você pode revisar todas as tags associadas à ACL.

Use o comando describe-acls para ver detalhes de uma ACL.

aws memorydb describe-acls \ --acl-name test-group
Para excluir uma lista de controle de acesso usando o console
  1. Faça login AWS Management Console e abra o console do MemoryDB em https://console.aws.amazon.com/memorydb/.

  2. No painel de navegação à esquerda, escolha Listas de controle de acesso (ACL).

  3. Escolha a ACL que você deseja modificar e, em seguida, escolha Excluir

  4. Na página Excluir, insira delete na caixa de confirmação e escolha Excluir; ou Cancelar para evitar a exclusão da ACL.

A própria ACL, não os usuários pertencentes ao grupo, é excluída.

Para excluir uma ACL usando a CLI
  • Use o comando delete-acl para excluir uma ACL.

    Para Linux, macOS ou Unix:

    aws memorydb delete-acl / --acl-name

    Para Windows:

    aws memorydb delete-acl ^ --acl-name

    Os exemplos anteriores retornam a seguinte resposta.

    aws memorydb delete-acl --acl-name "new-acl-1" { "ACLName": "new-acl-1", "Status": "deleting", "EngineVersion": "6.2", "UserNames": [ "user-name-1", "user-name-3" ], "clusters": [], "ARN":"arn:aws:memorydb:us-east-1:493071037918:acl/new-acl-1" }

Atribuição de listas de controle de acesso a clusters

Depois de criar uma ACL e adicionar usuários, a etapa final na implementação de ACLs é atribuir a ACL a um cluster.

Atribuindo listas de controle de acesso a clusters usando o console

Para adicionar uma ACL a um cluster usando o AWS Management Console, consulteCriação de um cluster do MemoryDB.

Atribuindo listas de controle de acesso a clusters usando o AWS CLI

A AWS CLI operação a seguir cria um cluster com a criptografia em trânsito (TLS) ativada e o acl-name parâmetro com o valormy-acl-name. Substitua o grupo de sub-redes subnet-group por um grupo de sub-redes que exista.

Principais parâmetros
  • --engine-version: deve ser 6.2.

  • --tls-enabled: usado para autenticação e para associar uma ACL.

  • --acl-name: esse valor fornece listas de controle de acesso compostas por usuários com permissões de acesso especificadas para o cluster.

Para Linux, macOS ou Unix:

aws memorydb create-cluster \ --cluster-name "new-cluster" \ --description "new-cluster" \ --engine-version "6.2" \ --node-type db.r6g.large \ --tls-enabled \ --acl-name "new-acl-1" \ --subnet-group-name "subnet-group"

Para Windows:

aws memorydb create-cluster ^ --cluster-name "new-cluster" ^ --cluster-description "new-cluster" ^ --engine-version "6.2" ^ --node-type db.r6g.large ^ --tls-enabled ^ --acl-name "new-acl-1" ^ --subnet-group-name "subnet-group"

A AWS CLI operação a seguir modifica um cluster com a criptografia em trânsito (TLS) ativada e o acl-name parâmetro com o valor. new-acl-2

Para Linux, macOS ou Unix:

aws memorydb update-cluster \ --cluster-name cluster-1 \ --acl-name "new-acl-2"

Para Windows:

aws memorydb update-cluster ^ --cluster-name cluster-1 ^ --acl-name "new-acl-2"