¿Cómo exijo que los usuarios de otras cuentas de AWS usen MFA para acceder a mis buckets de Amazon S3?

3 minutos de lectura
0

Quiero solicitar a otros usuarios que utilicen un dispositivo de autenticación multifactor (MFA) para acceder a mis buckets de Amazon Simple Storage Service (Amazon S3). ¿Cómo puedo hacerlo?

Resolución

Añada condiciones relacionadas con MFA a su política de bucket que exijan que los usuarios de otras cuentas de AWS se autentiquen mediante un dispositivo de MFA.

Antes de empezar, los usuarios de otras cuentas de AWS deben cumplir los siguientes requisitos:

  • Deben tener permisos para acceder a Amazon S3. Por ejemplo, los usuarios cumplen este requisito si tienen la política administrada de AWS de AmazonS3FullAccess incluida en sus políticas de AWS Identity and Access Management (IAM).
  • Deben tener una política de IAM adjunta que les permita llamar a GetSessionToken.
  • Deben tener un dispositivo MFA configurado para usarlo con su identidad de IAM.

A continuación, cree una política de bucket que utilice las condiciones aws:MultiFactorAuthPresent o aws:MultiFactorAuthAge. Estas condiciones determinan si el usuario se ha autenticado con un dispositivo MFA.

Por ejemplo, suponga que desea impedir que un usuario realice determinadas acciones a menos que se autentique mediante un dispositivo MFA. Puede escribir una política de bucket en dos partes:

  1. La primera parte puede denegar explícitamente esas acciones cuando el usuario no se autentica usando MFA (se cumple la condición «aws:MultiFactorAuthPresent»: «false»), similar a la siguiente:
{
    "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"
                }
            }
        },
...

En este ejemplo, estamos negando al usuario la posibilidad de realizar las acciones s3:PutObject, s3:PutObjectAcl y s3:DeleteObject.

  1. La segunda parte de la política puede permitir explícitamente esas acciones cuando el usuario se autentica usando MFA (no se cumple la condición «aws:MultiFactorAuthPresent»: «false»):
...
        {
            "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/*"
            ]
        }
    ]
}

Tras añadir una política de bucket similar a su bucket, los usuarios pueden ejecutar el comando de la interfaz de la línea de comandos de AWS (AWS CLI) get-session-token. El comando get-session-token obtiene las credenciales necesarias para acceder a los recursos de su bucket. Este comando requiere que el usuario proporcione lo siguiente:

  • El código temporal generado por el dispositivo MFA
  • El número de serie del dispositivo para un dispositivo de MFA de hardware o el nombre de recurso de Amazon (ARN) para un dispositivo de MFA de software

Nota: Si recibe errores al ejecutar los comandos de la AWS CLI, asegúrese de utilizar la versión más reciente de la AWS CLI.

Como otra opción para obtener credenciales, los usuarios pueden optar por exportar las credenciales temporales como variables de entorno.


Información relacionada

Ejemplos de políticas de bucket

Configuración de la AWS CLI

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años