Eu criei uma política de condição de autenticação multifator (MFA) para restringir o acesso aos serviços da AWS para usuários do AWS Identity and Access Management (IAM). A política funciona com o Console de Gerenciamento da AWS, mas não com a AWS Command Line Interface (AWS CLI). Como posso usar a MFA com a AWS CLI?
Breve descrição
O exemplo de política do IAM a seguir exige que os usuários do IAM usem a MFA para acessar serviços específicos da AWS:
{
"Sid": "BlockMostAccessUnlessSignedInWithMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:DeleteVirtualMFADevice",
"iam:ListVirtualMFADevices",
"iam:EnableMFADevice",
"iam:ResyncMFADevice",
"iam:ListAccountAliases",
"iam:ListUsers",
"iam:ListSSHPublicKeys",
"iam:ListAccessKeys",
"iam:ListServiceSpecificCredentials",
"iam:ListMFADevices",
"iam:GetAccountSummary",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition": {
"Bool": {
"aws:MultiFactorAuthPresent": "false",
"aws:ViaAWSService": "false"
}
}
}
Os usuários do IAM com o Console de Gerenciamento da AWS são solicitados a inserir as credenciais de autenticação do MFA e, em seguida, podem acessar os serviços da AWS. No entanto, os usuários do IAM com a AWS CLI não são solicitados a inserir as credenciais de autenticação do MFA e podem acessar os serviços da AWS.
Resolução
Observação: se você receber erros ao executar comandos da AWS CLI,verifique se está usando a sua versão mais recente.
A chave MultiFactorAuthPresent não existe em solicitações feitas usando credenciais de longo prazo. Com o operador de condição booleana, se a chave na política não estiver presente, os valores não corresponderão. A chave MultiFactorAuthPresent não nega o acesso às solicitações feitas usando credenciais de longo prazo.
Os usuários do IAM que usam o Console de Gerenciamento da AWS geram credenciais temporárias e permitem o acesso somente se a MFA for usada.
A condição Booleana permite restringir o acesso com um valor de chave definido como verdadeiro ou falso. Você pode adicionar o operador de condição IfExists para verificar se a chave MultiFactorAuthPresent está presente na solicitação. Se a chave MultiFactorAuthPresent não estiver presente, IfExists avaliará o elemento de condição como verdadeiro, semelhante ao seguinte:
"Effect" : "Deny",
"Condition" : { "BoolIfExists" : { "aws:MultiFactorAuthPresent" : "false", "aws:ViaAWSService":"false"} }
Observação: os usuários do IAM que usam a AWS CLI com credenciais de longo prazo têm acesso negado e devem usar a MFA para se autenticar. Portanto, certifique-se de usar um token MFA para autenticar sua sessão da CLI.
Informações relacionadas
Uso da autenticação multifator
AssumeRole
Habilitação e gerenciamento de dispositivos virtuais de MFA (AWS CLI ou API da AWS)