Politica para forzar la configuracion de Multifactor de autenticación en usuarios IAM de AWS.

Politica para forzar la configuracion de Multifactor de autenticación en usuarios IAM de AWS.

La autenticación multifactor (MFA) es una capa adicional de seguridad para tus cuentas de AWS. Implementar MFA ayuda a proteger tus recursos al requerir no solo una contraseña, sino también un segundo factor de autenticación, como un código de una aplicación de autenticación. En este post, mostraremos cómo forzar el uso de MFA en los usuarios de IAM de AWS mediante una política de IAM asi garantizar que todos los usuarios activen esta funcionalidad.

Esta politica funciona independientemente de los permisos que tengan los usuarios, por ejemplo si un usuario solamente tiene un permiso de lectura en EC2 podra ingresar a IAM e ir a la opcion de “Añadir Multifactor de autenticación”

Requisitos:
Para los usuarios el unico requisito es contar con una aplicacion de Multifactor sea virtual o fisica.

Lo primero que realizaremos es crear la politica, para esta accion si se necesita que un usuario con permisos de administrador o permisos especificos en IAM para crear politicas.

A continuacion los pasos:

Ingresamos a la consola de aws

Ingresamos a IAM Identity and Access Management

Ingresamos a policies y damos click en Create Policy

El codigo de la politica es el siguiente

{
“Statement”: [
{
“Action”: [
“iam:GetAccountPasswordPolicy”,
“iam:GetAccountSummary”,
“iam:ListVirtualMFADevices”
],
“Effect”: “Allow”,
“Resource”: “*”,
“Sid”: “AllowViewAccountInfo”
},
{
“Action”: [
“iam:ChangePassword”,
“iam:GetUser”
],
“Effect”: “Allow”,
“Resource”: “arn:aws:iam::*:user/${aws:username}”,
“Sid”: “AllowManageOwnPasswords”
},
{
“Action”: [
“iam:CreateAccessKey”,
“iam:DeleteAccessKey”,
“iam:ListAccessKeys”,
“iam:UpdateAccessKey”
],
“Effect”: “Allow”,
“Resource”: “arn:aws:iam::*:user/${aws:username}”,
“Sid”: “AllowManageOwnAccessKeys”
},
{
“Action”: [
“iam:DeleteSigningCertificate”,
“iam:ListSigningCertificates”,
“iam:UpdateSigningCertificate”,
“iam:UploadSigningCertificate”
],
“Effect”: “Allow”,
“Resource”: “arn:aws:iam::*:user/${aws:username}”,
“Sid”: “AllowManageOwnSigningCertificates”
},
{
“Action”: [
“iam:DeleteSSHPublicKey”,
“iam:GetSSHPublicKey”,
“iam:ListSSHPublicKeys”,
“iam:UpdateSSHPublicKey”,
“iam:UploadSSHPublicKey”
],
“Effect”: “Allow”,
“Resource”: “arn:aws:iam::*:user/${aws:username}”,
“Sid”: “AllowManageOwnSSHPublicKeys”
},
{
“Action”: [
“iam:CreateServiceSpecificCredential”,
“iam:DeleteServiceSpecificCredential”,
“iam:ListServiceSpecificCredentials”,
“iam:ResetServiceSpecificCredential”,
“iam:UpdateServiceSpecificCredential”
],
“Effect”: “Allow”,
“Resource”: “arn:aws:iam::*:user/${aws:username}”,
“Sid”: “AllowManageOwnGitCredentials”
},
{
“Action”: [
“iam:CreateVirtualMFADevice”,
“iam:DeleteVirtualMFADevice”
],
“Effect”: “Allow”,
“Resource”: “arn:aws:iam::*:mfa/*”,
“Sid”: “AllowManageOwnVirtualMFADevice”
},
{
“Action”: [
“iam:DeactivateMFADevice”,
“iam:EnableMFADevice”,
“iam:ListMFADevices”,
“iam:ResyncMFADevice”
],
“Effect”: “Allow”,
“Resource”: “arn:aws:iam::*:user/${aws:username}”,
“Sid”: “AllowManageOwnUserMFA”
},
{
“Condition”: {
“BoolIfExists”: {
“aws:MultiFactorAuthPresent”: “false”
}
},
“Effect”: “Deny”,
“NotAction”: [
“iam:CreateVirtualMFADevice”,
“iam:EnableMFADevice”,
“iam:GetUser”,
“iam:ListMFADevices”,
“iam:ListVirtualMFADevices”,
“iam:ResyncMFADevice”,
“sts:GetSessionToken”,
“iam:ChangePassword”,
“iam:GetUser”
],
“Resource”: “*”,
“Sid”: “DenyAllExceptListedIfNoMFA”
}
],
“Version”: “2012-10-17”
}

Escogemos la opcion JSON y copiamos el codigo de la politica y damos click en Next.

Añadimos un nombre y una descripcion

Y damos click en Create Policy

Basicamente lo que hace esta politica es

Permite ver información general de la cuenta:

Ver la política de contraseñas de la cuenta
Ver el resumen de la cuenta
Listar dispositivos MFA virtuales

Permite a los usuarios gestionar sus propias credenciales:

Cambiar su propia contraseña
Gestionar sus propias claves de acceso (crear, eliminar, listar, actualizar)
Gestionar sus propios certificados de firma
Gestionar sus propias claves públicas SSH
Gestionar sus propias credenciales específicas de servicio (como para Git)

Permite a los usuarios gestionar sus propios dispositivos MFA:

Crear y eliminar dispositivos MFA virtuales
Activar, desactivar, listar y resincronizar dispositivos MFA

Implementa una política de seguridad estricta:

Deniega todas las acciones excepto las específicamente listadas si el MFA no está presente
Las únicas acciones permitidas sin MFA son las relacionadas con la configuración del MFA y el cambio de contraseña

Posterior lo que realizamos es la creación de un grupo y añadimos esta politica al grupo

Para esto ingresamos a IAM y escogemos la opcion de “user groups” y damos click en Create Group

Asignamos un nombre al grupo asi tambien como los usuarios a los que queremos aplicar esta politica.

asi tambien añadimos la politica a este grupo

Ahora podemos validar esta funcionalidad creando un usuario solo con acceso de lectura a Ec2

Para esto ingresamos a usuarios “create user”

Añadimos dos grupos al usuario uno en donde tiene el permiso de Ec2 y otro donde esta la politica que forza el uso de MFA

Para utilizar este acceso es preferible utilizar una ventana de incognito de tu navegador de preferencia

Ingreamos las credenciales y cambiamos la clave

Debido a que no tenemos permisos hasta activar el MFA se nos presenta toda la consola con error

El siguiente error explitico nos muestra en todos los recursos

You are not authorized to perform this operation. User: arn:aws:iam::XXXXXXX:user/pruebamfa is not authorized to perform: ec2:DescribeInstances with an explicit deny in an identity-based policy

Luego ingresamos a IAM y damos click en la opcion “Agregar MFA”

Realizamos la configuracion de mfa

Cerramos sesion y volvemos a ingresar y podemos ver las instancias en la cuenta de aws

De esta manera podemos garantizar que los usuarios activen el MFA y esta politica aplica tanto en el acceso de consola o via AWS CLI, en una proxima entrega veremos como usar el MFA usando AWS CLI.

Please follow and like us:
Pin Share