Como impor a autenticação por MFA para usuários do IAM que usam o Console de Gerenciamento da AWS e a AWS CLI?

3 minuto de leitura
0

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

AWS OFICIAL
AWS OFICIALAtualizada há 7 meses