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á.
Migração da autenticação baseada em senha (AUTH) para a autenticação do IAM
Este guia descreve como migrar seu cluster ElastiCache baseado em nós da Amazon ou cache sem servidor da autenticação baseada em senha (AUTH) para a autenticação (IAM) sem interrupção do serviço. AWS Identity and Access Management
nota
Recomendamos testar essa migração em um ambiente que não seja de produção antes de aplicar as alterações em seu ambiente de produção.
Visão geral do
A autenticação do IAM fornece segurança aprimorada ao eliminar a necessidade de senhas duradouras. Em vez disso, os aplicativos geram tokens de autenticação de curta duração (válidos por até 15 minutos) usando o processo de AWS assinatura Signature Version 4.
Pré-requisitos
Antes de começar, verifique o seguinte:
-
Seu cache está executando o Redis OSS 7.0 ou posterior, ou o Valkey. A autenticação do IAM não é compatível com versões anteriores do mecanismo.
-
In-transit a criptografia (TLS) está ativada em seu cache. A autenticação do IAM requer TLS. Para obter mais informações, consulte ElastiCache criptografia em trânsito (TLS).
-
Você tem as permissões do IAM necessárias para criar usuários e modificar grupos de usuários. Para obter mais informações, consulte Como a Amazon ElastiCache trabalha com o IAM.
-
A função ou o usuário do IAM que seu aplicativo usa tem uma política do IAM que permite a
elasticache:Connectação para o cache de destino e o usuário do IAM. Para obter mais informações, consulte Autenticação com o IAM. -
Nenhuma limitação adicional de autenticação do IAM se aplica ao seu aplicativo. Para obter a lista completa de limitações, consulteAutenticação com o IAM.
Processo de migração
O processo de migração envolve a criação de uma senha e de um IAM-authenticated usuário, a verificação da conectividade e, em seguida, a transição dos aplicativos para a autenticação do IAM.
Etapa 1: criar usuários
Crie dois ElastiCache usuários para que seu cache ofereça suporte à autenticação baseada em senha e ao IAM durante o período de migração.
Crie um usuário de autenticação baseado em senha
nota
Se você já tem um usuário baseado em senha configurado, pode pular a criação de um novo e usar o usuário existente.
Use o AWS CLI comando a seguir para criar um usuário baseado em senha.
Para Linux, macOS ou Unix:
aws elasticache create-user \ --user-id<user-id>\ --user-name default \ --engine<engine>\ --passwords "<your-existing-auth-password>" \ --access-string "on ~* +@all"
Para Windows:
aws elasticache create-user ^ --user-id<user-id>^ --user-name default ^ --engine<engine>^ --passwords "<your-existing-auth-password>" ^ --access-string "on ~* +@all"
Substitua:
<user-id>— Um ID exclusivo para esse usuário.<engine>— O mecanismo que seu cache usa:valkeyouredis.<your-existing-auth-password>— O token AUTH atualmente configurado em seu cache.
Criar um IAM-authenticated usuário
Use o AWS CLI comando a seguir para criar um IAM-authenticated usuário.
Para Linux, macOS ou Unix:
aws elasticache create-user \ --user-id<iam-user-id>\ --user-name<iam-user-name>\ --authentication-mode Type=iam \ --engine<engine>\ --access-string "on ~* +@all"
Para Windows:
aws elasticache create-user ^ --user-id<iam-user-id>^ --user-name<iam-user-name>^ --authentication-mode Type=iam ^ --engine<engine>^ --access-string "on ~* +@all"
Substitua:
<iam-user-id>— Um ID exclusivo para o usuário do IAM.<iam-user-name>— O nome de usuário do usuário do IAM.<engine>— O mecanismo que seu cache usa:valkeyouredis.
Etapa 2: criar e anexar um grupo de usuários
Se você já tiver um grupo de usuários contendo seu usuário baseado em senha, adicione o IAM-authenticated usuário a esse grupo existente:
Para Linux, macOS ou Unix:
aws elasticache modify-user-group \ --user-group-id<user-group-id>\ --user-ids-to-add<iam-user-id>
Para Windows:
aws elasticache modify-user-group ^ --user-group-id<user-group-id>^ --user-ids-to-add<iam-user-id>
Substitua:
<user-group-id>— O ID do seu grupo de usuários existente.<iam-user-id>— O ID do IAM-authenticated usuário criado na Etapa 1.
Em seguida, vá para Etapa 3: verificar os dois métodos de autenticação.
Caso contrário, crie um novo grupo de usuários, adicione os dois usuários e anexe o grupo ao seu cache.
Use os AWS CLI comandos a seguir para criar um grupo de usuários com os dois usuários:
Para Linux, macOS ou Unix:
aws elasticache create-user-group \ --user-group-id<user-group-id>\ --engine<engine>\ --user-ids<user-id><iam-user-id>
Para Windows:
aws elasticache create-user-group ^ --user-group-id<user-group-id>^ --engine<engine>^ --user-ids<user-id><iam-user-id>
Substitua:
<user-group-id>— Um ID exclusivo para o grupo de usuários.<engine>— O mecanismo que seu cache usa:valkeyouredis.<user-id>,<iam-user-id>— Os IDs de usuário criados na Etapa 1.
Em seguida, modifique seu cache para usar o novo grupo de usuários.
Para clusters baseados em nós:
Para Linux, macOS ou Unix:
aws elasticache modify-replication-group \ --replication-group-id<replication-group-id>\ --auth-token-update-strategy DELETE \ --user-group-ids-to-add<user-group-id>
Para Windows:
aws elasticache modify-replication-group ^ --replication-group-id<replication-group-id>^ --auth-token-update-strategy DELETE ^ --user-group-ids-to-add<user-group-id>
Substitua:
<replication-group-id>— O ID do seu grupo de replicação.<user-group-id>— O ID do grupo de usuários que você criou acima.
Para caches sem servidor:
Para Linux, macOS ou Unix:
aws elasticache modify-serverless-cache \ --serverless-cache-name<serverless-cache-name>\ --user-group-id<user-group-id>
Para Windows:
aws elasticache modify-serverless-cache ^ --serverless-cache-name<serverless-cache-name>^ --user-group-id<user-group-id>
Substitua:
<serverless-cache-name>— O nome do seu cache sem servidor.<user-group-id>— O ID do grupo de usuários que você criou acima.
Etapa 3: verificar os dois métodos de autenticação
Depois de concluir a Etapa 2, seu cache suporta os dois métodos de autenticação. Verifique se os aplicativos podem se conectar usando os dois métodos antes de continuar.
-
Os aplicativos que usam autenticação baseada em senha podem continuar se conectando com a senha.
-
Os aplicativos configurados para autenticação do IAM podem se conectar usando tokens do IAM.
Etapa 4: Conecte-se com o IAM
Gere um token de autenticação do IAM
Gere um token de autenticação IAM de curta duração usando uma solicitação AWS pré-assinada SigV4. O exemplo de Python a seguir demonstra a geração de tokens.
import boto3 from botocore.auth import SigV4QueryAuth from botocore.awsrequest import AWSRequest cache_name = "<cache-name>" user = "<username>" region = "<region>" expires = 900 session = boto3.Session() credentials = session.get_credentials().get_frozen_credentials() req = AWSRequest( method="GET", url=f"http://{cache_name}/", params={"Action": "connect", "User": user} ) SigV4QueryAuth(credentials, "elasticache", region, expires=expires).add_auth(req) token = req.url.replace("http://", "") print(token)
nota
O token gerado é válido por até 15 minutos a partir da criação.
Conecte-se usando valkey-cli
Conecte-se ao seu ElastiCache cache usando o token gerado. Você pode usar um valkey-cli ou redis-cli para se conectar aos clusters Valkey. Para clusters Redis OSS, use. redis-cli
valkey-cli -h<host>-p 6379 --tls
Para clusters habilitados para o modo de cluster, adicione o --cluster sinalizador:
valkey-cli -h<host>-p 6379 --tls --cluster
Em seguida, autentique-se com o seguinte comando:
AUTH<username><token>
Substitua:
<host>— O endpoint do seu cache.<username>— O nome de usuário do IAM-authenticated usuário.<token>— O token de autenticação do IAM que você gerou.
Saída esperada:
OK
Execute o comando a seguir para validar o nome de usuário:
ACL WHOAMI
Etapa 5: integração de aplicativos
Para aplicativos Java, use a cadeia de fornecedores de AWS credenciais padrão para gerar credenciais de segurança temporárias. Para obter mais informações, consulte Autenticação com o IAM. Para outras linguagens, gere o token de autenticação do IAM usando o processo de AWS assinatura Signature versão 4 e passe-o como senha no AUTH comando do seu cliente.
Concluindo a migração
Depois que seus aplicativos puderem se conectar usando a autenticação do IAM, conclua as etapas a seguir para finalizar a migração.
Etapa 1: configurar a autenticação do IAM com fallback
Antes de remover o usuário baseado em senha, atualize o código do aplicativo para usar a autenticação do IAM como método principal, mantendo o usuário baseado em senha como substituto.
No código do seu aplicativo:
-
Configure seu cliente para se autenticar usando IAM-generated tokens como método principal.
-
Adicione um mecanismo alternativo para que, se a autenticação do IAM falhar (por exemplo, devido à expiração do token ou a um erro de geração), o cliente tente novamente usando a credencial AUTH baseada em senha.
-
Registre todas as tentativas de autenticação, incluindo alternativas e novas tentativas, para que você possa monitorar se alguma conexão está voltando para a autenticação baseada em senha.
Etapa 2: monitorar e verificar
Analise os registros do seu aplicativo IamAuthenticationExpirations e as CloudWatch métricas da IamAuthenticationThrottling Amazon por pelo menos 24 a 48 horas para confirmar que todas as conexões são feitas por meio do IAM.
Um valor diferente de zero para qualquer métrica justifica a investigação:
-
IamAuthenticationExpirations— Uma conexão autenticada pelo IAM é automaticamente desconectada após 12 horas. A conexão pode ser prolongada enviando umHELLOcomandoAUTHor com um novo token de autenticação do IAM. -
IamAuthenticationThrottling— Indica muitas solicitações de autenticação, o que pode significar que seu aplicativo está gerando tokens de forma muito agressiva ou tem problemas de pool de conexão.
Para clusters baseados em nós, você pode realizar verificações adicionais no nível do mecanismo:
-
ACL LOG— Verifique se há tentativas de autenticação malsucedidas. Procure entradas comreason=auth. -
CLIENT LIST— Verifique os usuários conectados. Verifique ouser=campo para confirmar se os clientes estão usando o usuário do IAM.
ACL LOGe CLIENT LIST estão disponíveis somente em clusters baseados em nós. Para implantações ElastiCache sem servidor, confie no registro no lado do aplicativo e nas métricas da Amazon. CloudWatch
Etapa 3: remover o usuário baseado em senha
Depois de confirmar que todos os aplicativos usam a autenticação do IAM, remova o usuário baseado em senha do grupo de usuários.
Caches do Vale
Remova diretamente o usuário baseado em senha:
Para Linux, macOS ou Unix:
aws elasticache modify-user-group \ --user-group-id<user-group-id>\ --user-ids-to-remove<password-user-id>
Para Windows:
aws elasticache modify-user-group ^ --user-group-id<user-group-id>^ --user-ids-to-remove<password-user-id>
Caches do Redis OSS
Para caches do Redis OSS, o grupo de usuários deve sempre conter um usuário com o nome de usuário. default Se o usuário baseado em senha que você criou na Etapa 1 tiver o nome de usuáriodefault, você deverá criar um usuário de espaço reservado desativado para substituí-lo antes de removê-lo:
Para Linux, macOS ou Unix:
aws elasticache create-user \ --user-id<disabled-default-id>\ --user-name default \ --engine redis \ --no-password-required \ --access-string "off ~* -@all"
Para Windows:
aws elasticache create-user ^ --user-id<disabled-default-id>^ --user-name default ^ --engine redis ^ --no-password-required ^ --access-string "off ~* -@all"
Em seguida, adicione o usuário desativado ao grupo e remova o usuário baseado em senha:
Para Linux, macOS ou Unix:
aws elasticache modify-user-group \ --user-group-id<user-group-id>\ --user-ids-to-add<disabled-default-id>\ --user-ids-to-remove<password-user-id>
Para Windows:
aws elasticache modify-user-group ^ --user-group-id<user-group-id>^ --user-ids-to-add<disabled-default-id>^ --user-ids-to-remove<password-user-id>
Se o usuário baseado em senha que você criou na Etapa 1 não tiver o nome de usuáriodefault, você poderá removê-lo diretamente usando o mesmo comando mostrado para os caches do Valkey acima.
Substitua:
<disabled-default-id>— Um ID exclusivo para o usuário de espaço reservado com deficiência (somente Redis OSS).<user-group-id>— O ID do grupo de usuários associado ao seu cache.<password-user-id>— O ID do usuário baseado em senha a ser removido.
nota
Não exclua o usuário baseado em senha depois de removê-lo do grupo de usuários. Mantenha-o disponível caso você precise reverter para a autenticação baseada em senha.
Etapa 4: Confirme a pós-remoção
Depois de remover o usuário baseado em senha do grupo de usuários, monitore a métrica da AmazonAuthenticationFailures. CloudWatch Um valor sustentado de zero confirma que nenhuma falha de autenticação está ocorrendo, incluindo quaisquer tentativas residuais baseadas em senha. Defina um CloudWatch alarme nessa métrica para detectar tentativas inesperadas.
Para clusters baseados em nós, você também pode verificar usando e. ACL LOG CLIENT LIST Para caches sem servidor, confie no registro e nas métricas do lado do aplicativo. CloudWatch
Procedimento de reversão
Re-add o usuário baseado em senha para o grupo de usuários e, em seguida, restaure a autenticação baseada em senha em seu aplicativo enquanto você investiga.
Para caches do Valkey:
Para Linux, macOS ou Unix:
aws elasticache modify-user-group \ --user-group-id<user-group-id>\ --user-ids-to-add<password-user-id>
Para Windows:
aws elasticache modify-user-group ^ --user-group-id<user-group-id>^ --user-ids-to-add<password-user-id>
Para caches do Redis OSS em que o usuário baseado em senha não tem o nome de usuáriodefault, use o mesmo comando acima.
Para caches do Redis OSS em que você criou um usuário de espaço reservado desativadoEtapa 3: remover o usuário baseado em senha, adicione o usuário baseado em senha e remova o usuário de espaço reservado desativado em uma única operação:
Para Linux, macOS ou Unix:
aws elasticache modify-user-group \ --user-group-id<user-group-id>\ --user-ids-to-add<password-user-id>\ --user-ids-to-remove<disabled-default-id>
Para Windows:
aws elasticache modify-user-group ^ --user-group-id<user-group-id>^ --user-ids-to-add<password-user-id>^ --user-ids-to-remove<disabled-default-id>
Substitua:
<user-group-id>— O ID do grupo de usuários associado ao seu cache.<password-user-id>— O ID do usuário baseado em senha a ser adicionado novamente.<disabled-default-id>— O ID de usuário do usuário de espaço reservado desativado (somente Redis OSS).