AWS Identity and Access Management
Guía del usuario

AWS: permite a los usuarios de IAM autenticados por MFA administrar sus propias credenciales en la página My Security Credentials (Mis credenciales de seguridad)

En este ejemplo se muestra cómo crear una política que permite a los usuarios de IAM que se autentican mediante la autenticación multifactor (MFA) administrar sus propias credenciales en la página My Security Credentials (Mis credenciales de seguridad). Esta página de la Consola de administración de AWS muestra información de la cuenta, como el ID de cuenta y el ID de usuario canónico. Los usuarios también pueden ver y editar sus propias contraseñas, claves de acceso, dispositivos MFA, certificados X.509, claves SSH y credenciales de Git. Esta política de ejemplo incluye los permisos necesarios para ver y editar toda la información de la página. También requiere que el usuario se configure y autentique con MFA para poder realizar cualquier otra operación en AWS. Para permitir a los usuarios administrar sus propias credenciales sin usar MFA, consulte AWS: permite a los usuarios de IAM administrar sus propias credenciales en la página My Security Credentials (Mis credenciales de seguridad).

Para obtener información acerca de cómo pueden acceder los usuarios a la página My Security Credentials (Mis credenciales de seguridad), consulte Cómo cambian los usuarios de IAM su propia contraseña (consola).

nota

Este ejemplo de política no permite a los usuarios restablecer una contraseña al iniciar sesión. Los nuevos usuarios y los usuarios que tengan una contraseña caducada podrían intentar hacerlo. Puede permitir esto añadiendo iam:ChangePassword a la instrucción DenyAllExceptListedIfNoMFA. Sin embargo, IAM no recomienda esto. Permitir a los usuarios cambiar su contraseña sin MFA puede entrañar un riesgo para la seguridad.

¿Qué hace esta política?

  • La instrucción AllowViewAccountInfo permite al usuario ver la información de nivel de cuenta. Estos permisos deben estar en su propia instrucción, ya que no admiten o no requieren un ARN de recurso. En lugar de ello, los permisos especifican "Resource" : "*". Esta instrucción incluye las siguientes acciones que permiten al usuario ver información específica:

    • GetAccountSummary: ver el ID de cuenta y el ID de usuario canónico de la cuenta.

    • GetAccountPasswordPolicy: ver los requisitos de contraseña de la cuenta y cambiar la contraseña de su propio usuario de IAM.

    • ListVirtualMFADevices: ver información detallada de un dispositivo MFA virtual que está habilitado para el usuario.

  • La instrucción AllowManageOwnPasswords permite al usuario cambiar su propia contraseña. Esta instrucción incluye también la acción GetUser, que es necesaria para ver la mayor parte de la información de la página My Security Credentials (Mis credenciales de seguridad).

  • La instrucción AllowManageOwnAccessKeys permite al usuario crear, actualizar y eliminar sus propias claves de acceso.

  • La instrucción AllowManageOwnSigningCertificates permite al usuario cargar, actualizar y eliminar sus propios certificados de firma.

  • La instrucción AllowManageOwnSSHPublicKeys permite al usuario cargar, actualizar y eliminar sus propias claves públicas SSH de CodeCommit.

  • La instrucción AllowManageOwnGitCredentials permite al usuario cargar, crear y eliminar sus propias credenciales de Git de CodeCommit.

  • La instrucción AllowManageOwnVirtualMFADevice permite al usuario crear, actualizar y eliminar su propio dispositivo MFA virtual. El ARN de recurso de esta instrucción permite el acceso únicamente a un dispositivo MFA que tenga el mismo nombre que el usuario que ha iniciado sesión en ese momento. Los usuarios no pueden crear ni eliminar ningún dispositivo MFA virtual distinto del suyo.

  • La instrucción AllowManageOwnUserMFA permite al usuario ver o administrar el dispositivo MFA o U2F virtual o físico de su propio usuario. El ARN de recurso de esta instrucción permite el acceso únicamente al propio usuario de IAM. Los usuarios no pueden ver ni administrar el dispositivo MFA de otros usuarios.

  • La instrucción DenyAllExceptListedIfNoMFA deniega el acceso a todas las acciones de todos los servicios de AWS, salvo algunas acciones indicadas, pero solo si el usuario no ha iniciado sesión con MFA. La instrucción utiliza una combinación de "Deny" y "NotAction" para denegar explícitamente el acceso a las acciones que no se indican en la lista. Esta instrucción no deniega ni permite los elementos enumerados. Son otras instrucciones de la política las que permiten las acciones. Para obtener más información acerca de la lógica de esta instrucción, consulte NotAction con Deny. Si el usuario ha iniciado sesión con MFA, la prueba Condition no se cumple y esta instrucción no deniega ninguna acción. En este caso, otras políticas o instrucciones determinan los permisos del usuario.

    Esta instrucción garantiza que cuando el usuario no ha iniciado sesión con MFA únicamente pueda realizar las acciones que se muestran. Además, puede realizar las acciones mostradas solo si otra instrucción o política permite el acceso a estas acciones. Esto no permite a un usuario crear una contraseña durante el inicio de sesión, ya que la acción iam:ChangePassword no debe permitirse sin autorización de MFA.

    La versión ...IfExists del operador Bool garantiza que si falta la clave aws:MultiFactorAuthPresent, la condición devuelve el valor verdadero. Esto significa que a un usuario que accede a una API con credenciales a largo plazo, como una clave de acceso, se le deniega el acceso a las operaciones de la API que no son de IAM.

Esta política no permite a los usuarios ver la página Users (Usuarios) de la consola de IAM ni utilizar esa página para obtener acceso a su propia información de usuario. Para permitir esto, añada la acción iam:ListUsers a la instrucción AllowViewAccountInfo y a la instrucción DenyAllExceptListedIfNoMFA. Tampoco permite a los usuarios cambiar su contraseña en su propia página de usuario. Si desea permitirlo, añada las acciones iam:CreateLoginProfile, iam:DeleteLoginProfile, iam:GetLoginProfile e iam:UpdateLoginProfile a la instrucción AllowManageOwnPasswords. Para permitir también que un usuario cambie su contraseña desde su propia página de usuario sin iniciar sesión con MFA, añada la acción iam:CreateLoginProfile a la instrucción DenyAllExceptListedIfNoMFA.

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