Como exijo que usuários de outras contas da AWS usem o MFA para acessar meus buckets do Amazon S3?

3 minuto de leitura
0

Quero exigir que outros usuários usem um dispositivo de autenticação multifator (MFA) para obter acesso aos meus buckets do Amazon Simple Storage Service (Amazon S3). Como posso fazer isso?

Resolução

Adicione condições relacionadas à MFA à sua política de bucket que exijam que usuários de outras contas da AWS se autentiquem usando um dispositivo com MFA.

Antes de você começar, os usuários de outras contas da AWS devem atender aos seguintes requisitos:

  • Eles devem ter permissões para acessar o Amazon S3. Por exemplo, os usuários atendem a esse requisito se tiverem a política gerenciada pela AWS AmazonS3FullAccess incluída em suas políticas do AWS Identity and Access Management (IAM).
  • Eles devem ter uma política do IAM anexada que lhes permita chamar GetSessionToken.
  • Eles devem ter um dispositivo com MFA configurado para uso com suas identidades do IAM.

Em seguida, crie uma política de bucket que use as condições aws:MultiFactorAuthPresent ou aws:MultiFactorAuthAge. Essas condições determinam se o usuário se autenticou com um dispositivo com MFA.

Por exemplo, suponha que você queira impedir que um usuário realize determinadas ações, a menos que ele se autentique usando um dispositivo com MFA. Você pode escrever uma política de bucket em duas partes:

1.    A primeira parte pode negar explicitamente essas ações quando o usuário não se autentica usando o MFA (a condição "aws:MultiFactorAuthPresent": "false" é atendida), semelhante à seguinte:

{
    "Version": "2012-10-17",
    "Id": "Policy201612130001aa",
    "Statement": [
        {
            "Sid": "Stmt201612130001ab",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::example.accounta.bucket/*",
            "Condition": {
                "BoolIfExists": {
                    "aws:MultiFactorAuthPresent": "false"
                }
            }
        },
...

Neste exemplo, estamos impedindo que o usuário execute as ações s3:PutObject, s3:PutObjectAcl e s3:DeleteObject.

2.    A segunda parte da política pode permitir explicitamente essas ações quando o usuário se autentica usando a MFA (a condição "aws:MultiFactorAuthPresent": "false" não é atendida):

...
        {
            "Sid": "Stmt201612130001ac",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:root"
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::example.accounta.bucket",
                "arn:aws:s3:::example.accounta.bucket/*"
            ]
        }
    ]
}

Depois de adicionar uma política de bucket semelhante ao seu bucket, os usuários podem executar o comando get-session-token da AWS Command Line Interface (AWS CLI). O comando get-session-token obtém as credenciais necessárias para acessar os recursos no seu bucket. Esse comando exige que o usuário forneça o seguinte:

  • O código temporário gerado pelo dispositivo com MFA
  • O número de série do dispositivo para um dispositivo com MFA de hardware ou o nome do recurso da Amazon (ARN) para um dispositivo com MFA de software

Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar utilizando a versão mais recente da AWS CLI.

Como outra opção para obter credenciais, os usuários podem optar por exportar as credenciais temporárias como variáveis de ambiente.


Informações relacionadas

Exemplos de políticas de bucket

Como configurar a AWS CLI

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos