Límites de permisos para las entidades de IAM
AWS admite límites de permisos para las entidades de IAM (usuarios o roles). Un límite de permisos es una característica avanzada para utilizar una política administrada con el fin de definir los permisos máximos que una política basada en identidad puede conceder a una entidad de IAM. Un límite de permisos para una entidad le posibilita realizar las acciones que le permitan tanto sus políticas basadas en identidad como sus límites de permisos.
Para obtener más información acerca de los tipos de políticas, consulte Tipos de políticas.
importante
No utilice instrucciones de política basadas en recursos que incluyan un elemento de política NotPrincipal
con un efecto Deny
para los usuarios o roles de IAM que tengan una política de límite de permisos adjunta. El elemento NotPrincipal
con efecto Deny
siempre denegará cualquier entidad principal de IAM que tenga una política de límite de permisos adjunta, independientemente de los valores especificados en el elemento NotPrincipal
. Esto provoca que algunos usuarios o roles de IAM que de otro modo tendrían acceso al recurso pierdan dicho acceso. Recomendamos cambiar las instrucciones de política basadas en recursos y utilizar el operador de condición ArnNotEquals con la clave de contexto aws:PrincipalArn para limitar el acceso en lugar del elemento NotPrincipal
. Para obtener más información sobre el elemento NotPrincipal
, consulte Elemento de la política de JSON de AWS: NotPrincipal.
Puede utilizar una política administrada de AWS o una política administrada por el cliente para configurar el límite para una entidad de IAM (usuario o rol). Esa política limita los permisos que puede tener el usuario o rol como máximo.
Por ejemplo, suponga que el usuario de IAM llamado ShirleyRodriguez
debe poder administrar únicamente Amazon S3, Amazon CloudWatch y Amazon EC2. Para aplicar esta regla, puede utilizar la siguiente política para configurar el límite de permisos para la usuaria ShirleyRodriguez
:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:*", "cloudwatch:*", "ec2:*" ], "Resource": "*" } ] }
Cuando se utiliza una política para configurar el límite de permisos para un usuario, limita los permisos del usuario, pero no proporciona permisos por sí misma. En este ejemplo, la política establece como permisos máximos de ShirleyRodriguez
todas las operaciones en Amazon S3, CloudWatch y Amazon EC2. Shirley nunca podrá realizar operaciones en ningún otro servicio, tampoco IAM, aunque tenga una política de permisos que lo permita. Por ejemplo, puede añadir la siguiente política a la usuaria ShirleyRodriguez
:
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "iam:CreateUser", "Resource": "*" } }
Esta política permite crear un usuario en IAM. Si asocia esta política de permisos a la usuaria ShirleyRodriguez
y Shirley intenta crear un usuario, se produce un error en la operación. Se produce un error porque el límite de permisos no permite la operación iam:CreateUser
. Dadas estas dos políticas, Shirley no tiene permisos para realizar ninguna operación en AWS. Debe agregar una política de permisos diferente para permitir acciones en otros servicios, como Amazon S3. También puede actualizar el límite de permisos para que pueda crear un usuario en IAM.
Evaluación de los permisos efectivos cuando se usan límites
El límite de permisos de una entidad de IAM (usuario o rol) establece los permisos máximos que esa entidad puede tener. Esto puede cambiar los permisos efectivos para ese usuario o rol. Los permisos efectivos de una entidad son los permisos que le conceden todas las políticas que afectan al usuario o rol. Dentro de una cuenta, los permisos de una entidad pueden verse afectados por políticas basadas en identidad, políticas basadas en recursos, los límites de permisos, SCP de Organizations o políticas de sesión. Para obtener más información sobre los distintos tipos de políticas, consulte Políticas y permisos en AWS Identity and Access Management.
Si cualquiera de estos tipos de políticas deniega de forma explícita el acceso para realizar una operación, la solicitud se deniega. Los permisos concedidos a una entidad por varios tipos de permisos son más complejos. Para obtener más información sobre el modo en que AWS evalúa las políticas, consulte Lógica de evaluación de políticas.
Políticas basadas en identidad con límites: las políticas basadas en identidad son políticas insertadas o administradas asociadas a un usuario, a un grupo de usuarios o a un rol. Las políticas basadas en identidad conceden permisos a la entidad, mientras que los límites de permisos restringen esos permisos. Los permisos efectivos son la intersección de ambos tipos de políticas. Una denegación explícita en una de estas políticas anulará el permiso.
Políticas basadas en recursos: las políticas basadas en recursos controlan la forma en que la entidad principal especificada tiene acceso al recurso al que la política está asociada.
- Políticas basadas en recursos para los usuarios de IAM
-
Dentro de la misma cuenta, las políticas basadas en recursos que otorgan permisos a un ARN de usuario de IAM (que no es una sesión de usuario federado) no están limitadas por una denegación implícita en una política basada en identidad o en un límite de permisos.
- Políticas basadas en recursos para los roles de IAM
-
Rol de IAM: las políticas basadas en recursos que otorgan permisos a un ARN de rol de IAM están limitadas por una denegación implícita en un límite de permisos o una política de sesión.
Sesión de rol de IAM: dentro de la misma cuenta, las políticas basadas en recursos que otorgan permisos a un ARN de sesión de rol de IAM otorgan permisos directamente a la sesión de rol asumida. Los permisos otorgados directamente a una sesión no están limitados por una denegación implícita en una política basada en la identidad, un límite de permisos ni una política de sesión. Cuando asume un rol y realiza una solicitud, la entidad principal que realiza la solicitud es el ARN de sesión de rol de IAM y no el ARN del rol en sí.
- Políticas basadas en recursos para las sesiones de usuarios federados de IAM
-
Sesiones de usuarios federados de IAM: una sesión de usuario federado de IAM es una sesión creada mediante la llamada a GetFederationToken. Cuando un usuario federado realiza una solicitud, la entidad principal que realiza la solicitud es el ARN de usuario federado y no el ARN del usuario de IAM que se federó. En la misma cuenta, las políticas basadas en recursos que otorgan permisos a un ARN de usuario federado otorgan permisos directamente a la sesión. Los permisos otorgados directamente a una sesión no están limitados por una denegación implícita en una política basada en la identidad, un límite de permisos ni una política de sesión.
Sin embargo, si una política basada en recursos concede permiso al ARN del usuario de IAM que se federó, las solicitudes realizadas por el usuario federado durante la sesión están limitadas por una denegación implícita en un límite de permisos o una política de sesión.
SCP de Organizaciones: las SCP se aplican a toda una cuenta de Cuenta de AWS. Limitan los permisos de todas las solicitudes que realice alguna entidad principal dentro de la cuenta. Una entidad de IAM (usuario o rol) puede realizar una solicitud que se ve afectada por una SCP, un límite de permisos y una política basada en identidad. En este caso, la solicitud se permite solo si los tres tipos de políticas lo permiten. Los permisos efectivos son la intersección de los tres tipos de políticas. Una denegación explícita en cualquiera de estas políticas anulará el permiso.
Puede saber si su cuenta es miembro de una organización en AWS Organizations. Los miembros de la organización podrían verse afectados por una SCP. Para ver estos datos a través del comando AWS CLI u operación de la API de AWS, debe tener permisos para la acción organizations:DescribeOrganization
para su entidad de Organizations. Debe tener permisos adicionales para realizar la operación en la consola Organizations. Para saber si una SCP deniega el acceso a una solicitud específica o para cambiar los permisos efectivos, póngase en contacto con su administrador de AWS Organizations.
Políticas de sesión: las políticas de sesión son políticas avanzadas que se pasan como parámetro cuando se crea una sesión temporal mediante programación para un rol o un usuario federado. Los permisos de una sesión proceden de la entidad de IAM (usuario o rol) usada para crear la sesión y de la política de sesión. Los permisos que concede la política basada en identidad de la entidad están limitados por la política de sesión y por el límite de permisos. Los permisos efectivos para este conjunto de tipos de políticas son la intersección de los tres tipos de políticas. Una denegación explícita en cualquiera de estas políticas anulará el permiso. Para obtener más información sobre las políticas de sesión, consulte Políticas de sesión.
Delegación de responsabilidades en otras personas mediante el uso de límites de permisos
Puede utilizar los límites de permisos para delegar tareas de administración de permisos, como, por ejemplo, la creación de usuarios, en los usuarios de IAM de su cuenta. Esto permite que otros puedan realizar tareas en su nombre dentro de un límite de permisos específico.
Por ejemplo, supongamos que María es la administradora de la cuenta de Cuenta de AWS de la empresa X. María quiere delegar las tareas de creación de usuarios en Zhang. Sin embargo, debe asegurarse de que Zhang crea los usuarios ateniéndose a las siguientes reglas de la empresa:
-
Los usuarios no pueden utilizar IAM para crear ni administrar usuarios, grupos, roles ni políticas.
-
A los usuarios se les deniega el acceso al bucket
logs
de Amazon S3 y no pueden tener acceso a la instancia de Amazon EC2i-1234567890abcdef0
. -
Los usuarios no pueden eliminar sus propias políticas de límites.
Para aplicar estas reglas, María realiza las tareas siguientes, cuyos detalles se incluyen a continuación:
-
María crea la política administrada
XCompanyBoundaries
para utilizarla como límite de permisos para todos los usuarios nuevos de la cuenta. -
María crea la política administrada
DelegatedUserBoundary
y se la asigna a Zhang como límite de permisos. Maria toma nota del ARN del usuario administrador de y lo usa en la política para evitar que Zhang obtenga acceso a él. -
María crea la política administrada
DelegatedUserPermissions
y se la asocia a Zhang como política de permisos. -
María informa a Zhang sobre sus nuevas responsabilidades y limitaciones.
Tarea 1: María primero debe crear una política administrada para definir los límites para los nuevos usuarios. María permitirá a Zhang que proporcione a los usuarios las políticas de permisos que necesitan, pero desea que los usuarios estén restringidos. Para ello, crea la siguiente política administrada por el cliente denominada XCompanyBoundaries
. Esta política hace lo siguiente:
-
Otorga a los usuarios acceso completo a varios servicios
-
Permite acceso de autoadministración limitado en la consola de IAM. Esto significa que pueden cambiar su contraseña después de iniciar sesión en la consola. No pueden establecer su contraseña inicial. Si desea permitirlo, añada la acción
"*LoginProfile"
a la instrucciónAllowManageOwnPasswordAndAccessKeys
. -
Deniega a los usuarios el acceso al bucket de registros de Amazon S3 o a la Instancia de Amazon EC2 de
i-1234567890abcdef0
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ServiceBoundaries", "Effect": "Allow", "Action": [ "s3:*", "cloudwatch:*", "ec2:*", "dynamodb:*" ], "Resource": "*" }, { "Sid": "AllowIAMConsoleForCredentials", "Effect": "Allow", "Action": [ "iam:ListUsers", "iam:GetAccountPasswordPolicy" ], "Resource": "*" }, { "Sid": "AllowManageOwnPasswordAndAccessKeys", "Effect": "Allow", "Action": [ "iam:*AccessKey*", "iam:ChangePassword", "iam:GetUser", "iam:*ServiceSpecificCredential*", "iam:*SigningCertificate*" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "DenyS3Logs", "Effect": "Deny", "Action": "s3:*", "Resource": [ "arn:aws:s3:::logs", "arn:aws:s3:::logs/*" ] }, { "Sid": "DenyEC2Production", "Effect": "Deny", "Action": "ec2:*", "Resource": "arn:aws:ec2:*:*:instance/i-1234567890abcdef0" } ] }
Cada instrucción tiene una finalidad específica:
-
La instrucción
ServiceBoundaries
de esta política permite acceso completo a los servicios de AWS especificados. Esto significa que las acciones de un usuario nuevo en estos servicios solamente están limitadas por las políticas de permisos que se han asociado al usuario. -
La instrucción
AllowIAMConsoleForCredentials
permite el acceso para obtener una lista de todos los usuarios de IAM. Este acceso es necesario para recorrer la página Users (Usuarios) de la AWS Management Console. También permite ver los requisitos de la contraseña de la cuenta, lo que es necesario para cambiar su propia contraseña. -
La instrucción
AllowManageOwnPasswordAndAccessKeys
les permite a los usuarios administrar únicamente su propia contraseña de la consola y las claves de acceso mediante programación. Esto es importante si Zhang u otro administrador le asigna a un usuario nuevo una política de permisos con acceso completo a IAM. En tal caso, este usuario podría cambiar sus propios permisos o los de otros usuarios. Esta instrucción impide que eso ocurra. -
La instrucción
DenyS3Logs
deniega explícitamente el acceso al bucketlogs
. -
La instrucción
DenyEC2Production
deniega explícitamente el acceso a la instanciai-1234567890abcdef0
.
Tarea 2: María desea permitir que Zhang cree todos los usuarios de X-Company, pero solo con el límite de permisos XCompanyBoundaries
. Crea la siguiente política administrada por el cliente denominada DelegatedUserBoundary
. Esta política define los permisos que Zhang puede tener como máximo.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateOrChangeOnlyWithBoundary", "Effect": "Allow", "Action": [ "iam:AttachUserPolicy", "iam:CreateUser", "iam:DeleteUserPolicy", "iam:DetachUserPolicy", "iam:PutUserPermissionsBoundary", "iam:PutUserPolicy" ], "Resource": "*", "Condition": { "StringEquals": { "iam:PermissionsBoundary": "arn:aws:iam::123456789012:policy/XCompanyBoundaries" } } }, { "Sid": "CloudWatchAndOtherIAMTasks", "Effect": "Allow", "Action": [ "cloudwatch:*", "iam:CreateAccessKey", "iam:CreateGroup", "iam:CreateLoginProfile", "iam:CreatePolicy", "iam:DeleteGroup", "iam:DeletePolicy", "iam:DeletePolicyVersion", "iam:DeleteUser", "iam:GetAccountPasswordPolicy", "iam:GetGroup", "iam:GetLoginProfile", "iam:GetPolicy", "iam:GetPolicyVersion", "iam:GetRolePolicy", "iam:GetUser", "iam:GetUserPolicy", "iam:ListAccessKeys", "iam:ListAttachedRolePolicies", "iam:ListAttachedUserPolicies", "iam:ListEntitiesForPolicy", "iam:ListGroups", "iam:ListGroupsForUser", "iam:ListMFADevices", "iam:ListPolicies", "iam:ListPolicyVersions", "iam:ListRolePolicies", "iam:ListSSHPublicKeys", "iam:ListServiceSpecificCredentials", "iam:ListSigningCertificates", "iam:ListUserPolicies", "iam:ListUsers", "iam:SetDefaultPolicyVersion", "iam:SimulateCustomPolicy", "iam:SimulatePrincipalPolicy", "iam:UpdateGroup", "iam:UpdateLoginProfile", "iam:UpdateUser" ], "NotResource": "arn:aws:iam::123456789012:user/Maria" }, { "Sid": "NoBoundaryPolicyEdit", "Effect": "Deny", "Action": [ "iam:CreatePolicyVersion", "iam:DeletePolicy", "iam:DeletePolicyVersion", "iam:SetDefaultPolicyVersion" ], "Resource": [ "arn:aws:iam::123456789012:policy/XCompanyBoundaries", "arn:aws:iam::123456789012:policy/DelegatedUserBoundary" ] }, { "Sid": "NoBoundaryUserDelete", "Effect": "Deny", "Action": "iam:DeleteUserPermissionsBoundary", "Resource": "*" } ] }
Cada instrucción tiene una finalidad específica:
-
La instrucción
CreateOrChangeOnlyWithBoundary
permite a Zhang crear usuarios de IAM pero solo si utiliza la políticaXCompanyBoundaries
para establecer el límite de permisos. Esta instrucción también le permite configurar el límite de permisos de los usuarios existentes, pero únicamente si utiliza esa misma política. Por último, esta instrucción permite a Zhang administrar las políticas de permisos de los usuarios que tienen configurado este límite de permisos. -
La instrucción
CloudWatchAndOtherIAMTasks
permite a Zhang realizar otras tareas de administración de usuarios, grupos y políticas. Él tiene permisos para restablecer contraseñas y crear claves de acceso para cualquier usuario de IAM que no aparezca en el elemento de políticaNotResource
. Esto le permite ayudar a los usuarios con problemas de inicio de sesión. -
La instrucción
NoBoundaryPolicyEdit
deniega a Zhang el acceso para actualizar la políticaXCompanyBoundaries
. No se le permite modificar ninguna política que se utilice para configurar el límite de permisos para sí mismo ni para los demás usuarios. -
La instrucción
NoBoundaryUserDelete
deniega a Zhang acceso de eliminación del límite de permisos para sí mismo y para los demás usuarios.
A continuación, María asigna la política DelegatedUserBoundary
como límite de permisos para el usuario Zhang
.
Tarea 3: debido a que el límite de permisos limita los permisos máximos, pero no concede acceso por sí solo, María debe crear una política de permisos para Zhang. Crea la siguiente política denominada DelegatedUserPermissions
. Esta política define las operaciones que Zhang puede realizar, dentro del límite definido.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAM", "Effect": "Allow", "Action": "iam:*", "Resource": "*" }, { "Sid": "CloudWatchLimited", "Effect": "Allow", "Action": [ "cloudwatch:GetDashboard", "cloudwatch:GetMetricData", "cloudwatch:ListDashboards", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics" ], "Resource": "*" }, { "Sid": "S3BucketContents", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::ZhangBucket" } ] }
Cada instrucción tiene una finalidad específica:
-
La instrucción
IAM
de la política permite a Zhang acceso completo a IAM. No obstante, puesto que su límite de permisos permite únicamente algunas operaciones de IAM, sus permisos efectivos de IAM solamente se ven limitados por dicho límite de permisos. -
La instrucción
CloudWatchLimited
permite a Zhang realizar cinco acciones en CloudWatch. Su límite de permisos permite todas las acciones de CloudWatch, por lo que sus permisos efectivos de CloudWatch solamente se ven limitados por su política de permisos. -
La instrucción
S3BucketContents
permite a Zhang mostrar el bucket de Amazon S3ZhangBucket
. Sin embargo, como su límite de permisos no permite realizar ninguna acción de Amazon S3, no puede realizar operaciones de S3, independientemente de su política de permisos.nota
Las políticas de Zhang le permiten crear un usuario que pueda obtener acceso a recursos de Amazon S3 a los que él no tiene acceso. Al delegar estas acciones administrativas, Maria establece una relación de confianza con Zhang con acceso a Amazon S3.
A continuación, María asocia la política DelegatedUserPermissions
como política de permisos para el usuario Zhang
.
Tarea 4: proporciona a Zhang instrucciones para crear usuarios. Le indica que puede crear usuarios con los permisos que necesiten, pero que debe asignarles la política XCompanyBoundaries
como límite de permisos.
Zhang realiza las tareas siguientes:
-
Zhang crea un usuario con la AWS Management Console. Escribe el nombre de usuario
Nikhil
y le concede acceso a la consola. Desmarque la casilla de verificación situada junto a Requiere restablecimiento de contraseña, ya que las políticas anteriores solo permiten cambiar las contraseñas a los usuarios después de haber iniciado sesión en la consola de IAM. -
En la página Set permissions (Establecer permisos), Zhang elige las políticas de permisos IAMFullAccess y AmazonS3ReadOnlyAccess que permiten a Nikhil hacer su trabajo.
-
Zhang omite la sección Set permissions boundary (Configurar límite de permisos), olvidando las instrucciones de María.
-
Zhang revisa los detalles del usuario y elige Create user (Crear usuario).
Se produce un error en la operación y se deniega el acceso. El límite de permisos
DelegatedUserBoundary
de Zhang requiere que cualquier usuario que cree utilice la políticaXCompanyBoundaries
como límite de permisos. -
Zhang vuelve a la página anterior. En la sección, Set permissions boundary (Configurar límite de permisos) elige la política
XCompanyBoundaries
. -
Zhang revisa los detalles del usuario y elige Create user (Crear usuario).
El usuario se crea.
Cuando Nikhil inicia sesión, tiene acceso a IAM y a Amazon S3, salvo para las operaciones denegadas por el límite de permisos. Por ejemplo, puede cambiar su propia contraseña en IAM, pero no puede crear otro usuario ni editar sus políticas. Nikhil tiene acceso de solo lectura a Amazon S3.
Si alguien añade una política basada en recursos al bucket de logs
que permite que Nikhil coloque un objeto en el bucket, aun así no puede obtener acceso al bucket. El motivo es que el límite de permisos deniega explícitamente cualquier acción sobre el bucket de logs
. Una denegación explícita en cualquier tipo de política hace que la solicitud se deniegue. Sin embargo, si una política basada en recursos asociada a un secreto de Secrets Manager permite a Nikhil ejecutar la acción secretsmanager:GetSecretValue
, entonces Nikhil podrá obtener y descifrar el secreto. Esto se debe a que el límite de permisos no deniega explícitamente las operaciones de Secrets Manager, y las denegaciones implícitas de los límites de permisos no restringen las políticas basadas en recursos.