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).
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"
}
}
}
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 erros ao executar comandos da AWS CLI, consulte Solucionar erros 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 booleano, 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 valor de chave 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": "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": {
"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 o acesso negado e devem usar a 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