AWS: permite a los usuarios de IAM autenticados por MFA administrar sus propias credenciales en la página Credenciales de seguridad - AWS Identity and Access Management

AWS: permite a los usuarios de IAM autenticados por MFA administrar sus propias credenciales en la página Credenciales de seguridad

En este ejemplo, se muestra cómo podría crear una política basada en identidad que permita a los usuarios de IAM autenticados mediante autenticación multifactor (MFA) administrar sus propias credenciales en la página Credenciales de seguridad. En esta página de la AWS Management Console, se 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 utilizar MFA, consulte AWS: permite a los usuarios de IAM administrar sus propias credenciales en la página Credenciales de seguridad.

Para información sobre el acceso a la página 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 en la AWS Management Console por primera vez. Recomendamos que no conceda permisos a los nuevos usuarios hasta después de que inicien sesión. Para obtener más información, consulte ¿Cómo puedo crear usuarios de IAM de forma segura?. Esto también impide que los usuarios con una contraseña vencida restablezcan su contraseña durante el inicio de sesión. Puede permitir esto añadiendo iam:ChangePassword y iam:GetAccountPasswordPolicy a la instrucción DenyAllExceptListedIfNoMFA. No obstante, no lo recomendamos porque permitir a los usuarios cambiar su contraseña sin MFA puede ser un riesgo para la seguridad.

  • Si tiene la intención de utilizar esta política para el acceso programático, debe llamar al GetSessionToken para autenticarse con MFA. Para obtener más información, consulte Acceso seguro a la API con MFA.

¿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:

    • 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. El usuario también puede recuperar información acerca de cuándo se utilizó por última vez la clave de acceso especificada.

  • 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 declaración AllowManageOwnVirtualMFADevice permite al usuario crear su propio dispositivo MFA virtual. El recurso de ARN de esta declaración permite al usuario crear un dispositivo MFA con cualquier nombre, pero las otras declaraciones en la política solo permiten al usuario adjuntar el dispositivo al usuario actualmente conectado.

  • 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 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, agregue las acciones 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:UpdateLoginProfile a la instrucción DenyAllExceptListedIfNoMFA.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowViewAccountInfo", "Effect": "Allow", "Action": [ "iam:GetAccountPasswordPolicy", "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", "iam:GetAccessKeyLastUsed" ], "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" ], "Resource": "arn:aws:iam::*:mfa/*" }, { "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:GetMFADevice", "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "sts:GetSessionToken" ], "Resource": "*", "Condition": { "BoolIfExists": { "aws:MultiFactorAuthPresent": "false" } } } ] }