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 (AWS IAM). A política funciona com o Console de gerenciamento da AWS, mas não com a AWS Command Line Interface (AWS CLI).
Breve descrição
O exemplo de política do IAM a seguir exige que os usuários do IAM usem 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:GetUser",
"iam:GetLoginProfile",
"iam:ListAccountAliases",
"iam:ListUsers",
"iam:ListSSHPublicKeys",
"iam:ListAccessKeys",
"iam:ListServiceSpecificCredentials",
"iam:ListMFADevices",
"iam:GetAccountSummary",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
Na política anterior, os usuários do IAM que usam o Console de gerenciamento da AWS são solicitados a inserir credenciais de autenticação por MFA para acessar os serviços da AWS. No entanto, os usuários do IAM que usam a AWS CLI não são solicitados a inserir credenciais de autenticação por MFA para acessar os serviços da AWS.
Resolução
Observação: se você receber mensagens de erro ao executar comandos da AWS CLI, consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Como a chave aws:MultiFactorAuthPresent não existe em solicitações de credenciais de longo prazo, a chave não nega acesso às solicitações. Se a chave na política não estiver com o operador de condição booleana, os valores não corresponderão.
Os usuários do IAM que usam o Console de gerenciamento da AWS geram credenciais temporárias e permitem o acesso somente quando usam a MFA.
Para impor a autenticação por MFA com a AWS CLI, adicione o operador de condição IfExists para verificar se a chave MultiFactorAuthPresent está na solicitação. A condição booleana permite que você restrinja o acesso com um chave-valor definido como true ou false. Se a chave MultiFactorAuthPresent não estiver na solicitação, IfExists avaliará o elemento de condição como true.
Exemplo de política do IAM:
{
"Sid": "DenyAllExceptListedIfNoMFA",
"Effect": "Deny",
"NotAction": [
"iam:CreateVirtualMFADevice",
"iam:EnableMFADevice",
"iam:GetUser",
"iam:GetLoginProfile",
"iam:GetMFADevice",
"iam:ListMFADevices",
"iam:ListVirtualMFADevices",
"iam:ResyncMFADevice",
"sts:GetSessionToken"
],
"Resource": "*",
"Condition": {
"BoolIfExists": {
"aws:MultiFactorAuthPresent": "false"
}
}
}
Observação: os usuários do IAM que usam a AWS CLI com credenciais de longo prazo têm o acesso negado e devem usar MFA para se autenticar. Certifique-se de usar um token de MFA para autenticar sua sessão da CLI.
Informações relacionadas
Como exijo que usuários de outras contas da AWS usem o MFA para acessar meus buckets do Amazon S3?
Usar autenticação multifator
Atribua dispositivos MFA na AWS CLI ou API da AWS