

# Permisos obligatorios para obtener acceso a recursos de IAM
<a name="access_permissions-required"></a>

Los *recursos* son objetos dentro de un servicio. Los recursos de IAM incluyen grupos, usuarios, roles y políticas. Si inicia sesión con las credenciales de Usuario raíz de la cuenta de AWS, no tiene restricciones para administrar credenciales de IAM o recursos de IAM. Sin embargo, los usuarios de IAM deben conceder permisos explícitamente para administrar credenciales o recursos de IAM. Puede hacerlo, adjuntando una política basada en identidades al usuario.

**nota**  
En la documentación de AWS, cuando nos referimos a una política de IAM sin mencionar ninguna de las categorías específicas, nos referimos a una política administrada por el cliente basada en identidades. Para obtener información acerca de categorías de políticas, consulte [Políticas y permisos en AWS Identity and Access Management](access_policies.md).

## Permisos para administrar identidades de IAM
<a name="access_permissions-required-identities"></a>

Los permisos obligatorios para administrar grupos, usuarios, roles y credenciales de IAM normalmente corresponden a las acciones de la API para la tarea. Por ejemplo, con el fin de crear usuarios IAM, debe tener el permiso `iam:CreateUser` que tiene el comando de API correspondiente: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateUser.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateUser.html). Para permitir que un usuario de IAM cree otros usuarios de IAM, puede conectar una política de IAM como la siguiente a dicho usuario: 

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "iam:CreateUser",
    "Resource": "*"
  }
}
```

------

En una política, el valor del elemento `Resource` depende de la acción y de los recursos a los que la acción puede afectar. En el ejemplo anterior, la política permite a un usuario crear cualquier usuario (`*` es un comodín que coincide con todas las cadenas). En cambio, una política que permite a los usuarios cambiar únicamente sus propias claves de acceso (acciones de API [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html) y [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html)) normalmente tiene un elemento `Resource`. En este caso, el ARN incluye una variable (`${aws:username}`) que se resuelve en el nombre del usuario actual, como en el siguiente ejemplo: 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ListUsersForConsole",
            "Effect": "Allow",
            "Action": "iam:ListUsers",
            "Resource": "arn:aws:iam::*:*"
        },
        {
            "Sid": "ViewAndUpdateAccessKeys",
            "Effect": "Allow",
            "Action": [
                "iam:UpdateAccessKey",
                "iam:CreateAccessKey",
                "iam:ListAccessKeys"
            ],
            "Resource": "arn:aws:iam::*:user/${aws:username}"
        }
    ]
}
```

------

En el ejemplo anterior, `${aws:username}` es una variable que se resuelve en el nombre de usuario del usuario actual. Para obtener más información sobre las variables de las políticas, consulte [Elementos de la política de IAM: variables y etiquetas](reference_policies_variables.md). 

El uso de un comodín (`*`) en el nombre de acción a menudo facilita la concesión de permisos para todas las acciones relacionadas con una tarea específica. Por ejemplo, para permitir que los usuarios realicen cualquier acción de IAM, puede utilizar `iam:*` para la acción. Para permitir que los usuarios realicen cualquier acción relacionada solo con claves de acceso, puede utilizar `iam:*AccessKey*` en el elemento `Action` de la instrucción de una política. Esto da al usuario permiso para realizar las acciones [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html), [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteAccessKey.html), [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetAccessKeyLastUsed.html), [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAccessKeys.html) y [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html) (Si una acción se añade a IAM en el futuro con "AccessKey" en el nombre, si usa `iam:*AccessKey*` para el elemento `Action` también dará al usuario permiso para esa nueva acción). En el ejemplo siguiente se muestra una política que permite a los usuarios llevar a cabo todas las acciones que pertenecen a sus propias claves de acceso (se sustituye `account-id` por su ID de cuenta de Cuenta de AWS): 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "iam:*AccessKey*",
        "Resource": "arn:aws:iam::111122223333:user/${aws:username}"
    }
}
```

------

Algunas tareas, como, por ejemplo, eliminar un grupo, implican varias acciones: primero eliminar los usuarios del grupo, después separar o eliminar las políticas del grupo y, por último, eliminar el grupo. Si quiere que un usuario pueda eliminar un grupo, debe estar seguro de dar al usuario permisos para llevar a cabo todas las acciones relacionadas. 

## Permisos para trabajar en la . Consola de administración de AWS
<a name="Credentials-Permissions-overview-console"></a>

En los ejemplos anteriores se muestran políticas que permiten a un usuario realizar las acciones con la [AWS CLI](https://aws.amazon.com/cli/) o los [SDK de AWS](https://aws.amazon.com/tools/). 

A medida que los usuarios trabajan con la consola, esta genera solicitudes para IAM para enumerar grupos, usuarios, roles y políticas, y para obtener las políticas asociadas a un grupo, usuario o rol. La consola también envía solicitudes para obtener información de cuenta de Cuenta de AWS e información sobre la entidad principal. La entidad principal es el usuario que realiza solicitudes en la consola. 

En general, para realizar una acción, debe tener únicamente la acción coincidente incluida en una política. Para crear un usuario, necesita permiso para llamar a la acción `CreateUser`. A menudo, cuando utiliza la consola para realizar una acción, debe disponer de permisos para mostrar, enumerar, obtener o consultar recursos en la consola. Esto es necesario para que pueda navegar a través de la consola para realizar la acción especificada. Por ejemplo, si el usuario Jorge desea utilizar la consola para cambiar sus propias claves de acceso, va a la consola de IAM y elige **Users**. Esta acción hace que la consola genere una solicitud [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html). Si Jorge no tiene permiso para la acción `iam:ListUsers`, se deniega el acceso a la consola cuando esta intenta enumerar los usuarios. Como resultado, Jorge no puede ir a su propio nombre ni a sus propias claves de acceso, aunque tenga permisos para las acciones [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html) y [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateAccessKey.html).

Si quiere conceder a los usuarios permisos para administrar grupos, usuarios, roles, políticas y credenciales con la Consola de administración de AWS, debe incluir permisos para las acciones que realiza la consola. Para ver algunos ejemplos de políticas que puede utilizar para conceder a un usuario estos permisos, consulte [Ejemplos de políticas para administrar recursos de IAM](id_credentials_delegate-permissions_examples.md). 

## Conceder permisos en las cuentas de AWS
<a name="UserPermissionsAcrossAccounts"></a>

Puede conceder directamente a los usuarios de IAM de su propia cuenta acceso a los recursos. Si hay usuarios de otra cuenta que necesitan obtener acceso a sus recursos, puede crear un rol de IAM, que es una entidad que contiene permisos, pero que no está asociada a un usuario concreto. Los usuarios de otras cuentas pueden utilizar el rol y obtener acceso a recursos en función de los permisos que haya asignado al rol. Para obtener más información, consulte [Acceso para un usuario de IAM en otra Cuenta de AWS propia](id_roles_common-scenarios_aws-accounts.md).

**nota**  
Algunos servicios de admiten políticas basadas en recursos como se describe en [Políticas basadas en identidad y políticas basadas en recursos](access_policies_identity-vs-resource.md) (como Amazon S3, Amazon SNS y Amazon SQS). Para esos servicios, una alternativa al uso de roles es adjuntar una política al recurso (bucket, tema o cola) que desea compartir. La política basada en recursos puede especificar la cuenta de AWS que tenga permisos para obtener acceso al recurso.

## Permisos para que un servicio obtenga acceso a otro.
<a name="UserPermissionsAcrossAWS_ARCHIVE"></a>

Muchos servicios de AWS obtienen acceso a otros servicios de AWS. Por ejemplo, varios servicios de AWS, como Amazon EMR, Elastic Load Balancing y Amazon EC2 Auto Scaling administran instancias de Amazon EC2. Otros servicios de AWS utilizan buckets de Amazon S3, temas de Amazon SNS, colas de Amazon SQS, etc.

El escenario de administración de permisos en estos casos varía según el servicio. He aquí algunos ejemplos de cómo se gestionan los permisos para diferentes servicios: 
+ En Amazon EC2 Auto Scaling, los usuarios deben tener permiso para utilizar Auto Scaling, pero no necesitan que se les concedan de forma explícita permiso para administrar instancias Amazon EC2. 
+ En AWS Data Pipeline, un rol de IAM determina qué puede hacer una canalización; los usuarios necesitan permiso para asumir el rol. (Para más detalles, consulte [Concesión de permisos a pipelines con IAM](https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-iam-roles.html) en la *Guía del desarrollador de AWS Data Pipeline*). 

Para obtener información detallada sobre cómo configurar permisos de forma adecuada, de forma que un servicio de AWS sea capaz de realizar las tareas que usted se propone, consulte la documentación del servicio al que llama. Para obtener información sobre cómo crear un rol para un servicio, consulte [Crear un rol para delegar permisos a un servicio de AWS](id_roles_create_for-service.md).

**Configuración de un servicio con un rol de IAM para que trabaje en su nombre**  
Cuando quiere configurar un servicio de AWS para que trabaje en su nombre, normalmente proporciona el ARN de un rol de IAM que define qué puede hacer el servicio. AWS realiza una comprobación para asegurarse de que tiene permisos para transferir un rol a un servicio. Para obtener más información, consulte [Conceder permisos a un usuario para transferir un rol a un servicio de AWS](id_roles_use_passrole.md).

## Acciones obligatorias
<a name="access_permissions-required-dependent-actions"></a>

Las acciones son las cosas que puede hacer en un recurso, como visualizar, crear, editar y eliminar dicho recurso. Las acciones se definen por medio de cada servicio de AWS.

Para permitir a alguien realizar una acción, debe incluir las acciones necesarias en una política que se aplica a la identidad que realiza la llamada o al recurso afectado. En general, para proporcionar el permiso obligatorio para realizar una acción, deberá incluir dicha acción en la política. Por ejemplo, para crear un usuario, tiene que añadir la acción CreateUser a su política.

En algunos casos, una acción podría requerir que incluya acciones relacionadas en su política. Por ejemplo, para proporcionar permiso para que alguien cree un directorio en AWS Directory Service utilizando la operación `ds:CreateDirectory`, deberá incluir las siguientes acciones en su política:
+ `ds:CreateDirectory`
+ `ec2:DescribeSubnets`
+ `ec2:DescribeVpcs`
+ `ec2:CreateSecurityGroup`
+ `ec2:CreateNetworkInterface`
+ `ec2:DescribeNetworkInterfaces`
+ `ec2:AuthorizeSecurityGroupIngress`
+ `ec2:AuthorizeSecurityGroupEgress`

Al crear o editar una política con el editor visual, recibe advertencias y avisos que le permitirán elegir todas las acciones necesarias para su política.

Para obtener más información acerca de los permisos necesarios para crear un directorio en AWS Directory Service, consulte [Ejemplo 2: Permitir a un usuario crear un directorio](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/IAM_Auth_Access_IdentityBased.html#IAMPolicyExamples_DS_create_directory).

# Ejemplos de políticas para administrar recursos de IAM
<a name="id_credentials_delegate-permissions_examples"></a>

A continuación se muestran ejemplos de políticas de IAM que permiten a los usuarios realizar tareas asociadas a la administración de usuarios, grupos y credenciales de IAM. Esto incluye políticas que permiten a los usuarios administrar sus propias contraseñas, claves de acceso y dispositivos de autenticación multifactor (MFA).

Para ver ejemplos de políticas que permiten a los usuarios realizar tareas con otros servicios de AWS, como Amazon S3, Amazon EC2, y DynamoDB consulte [Ejemplos de políticas basadas en identidad de IAM](access_policies_examples.md). 

**Topics**
+ [Permitir a un usuario elaborar una lista con los grupos, los usuarios y las políticas de una cuenta, y más información para realizar informes](#iampolicy-example-userlistall)
+ [Permitir a un usuario administrar la suscripción a un grupo](#iampolicy-example-usermanagegroups)
+ [Permitir a un usuario administrar usuarios de IAM](#creds-policies-users)
+ [Permitir a los usuarios definir la política de contraseñas de la cuenta](#creds-policies-set-password-policy)
+ [Permitir a los usuarios generar y recuperar informes de credenciales de IAM](#iampolicy-generate-credential-report)
+ [Permitir todas las acciones de IAM (acceso de administrador)](#creds-policies-all-iam)

## Permitir a un usuario elaborar una lista con los grupos, los usuarios y las políticas de una cuenta, y más información para realizar informes
<a name="iampolicy-example-userlistall"></a>

La siguiente política permite a los usuarios llamar a cualquier acción de IAM que empiece con la cadena `Get` o `List`, y generar informes. Para ver la política de ejemplo, consulte [IAM: ermite el acceso de solo lectura a la consola de IAM](reference_policies_examples_iam_read-only-console.md). 

## Permitir a un usuario administrar la suscripción a un grupo
<a name="iampolicy-example-usermanagegroups"></a>

La siguiente política permite al usuario actualizar la suscripción al grupo denominado *MarketingGroup*. Para ver la política de ejemplo, consulte [IAM: permite administrar la pertenencia a un grupo mediante programación y en la consola](reference_policies_examples_iam_manage-group-membership.md). 

## Permitir a un usuario administrar usuarios de IAM
<a name="creds-policies-users"></a>

La siguiente política permite a un usuario realizar todas las tareas asociadas con la administración de usuarios de IAM, pero no para realizar acciones en otras entidades, como, por ejemplo, crear grupos o políticas. Las acciones permitidas son: 
+ Crear el usuario (la acción [https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateUser.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateUser.html)). 
+ Eliminar el usuario. Esta tarea requiere permisos para llevar a cabo las acciones siguientes: [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteSigningCertificate.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteSigningCertificate.html), [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteLoginProfile.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteLoginProfile.html), [https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveUserFromGroup.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_RemoveUserFromGroup.html) y [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteUser.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteUser.html). 
+ Realizar una lista de los usuarios de la cuenta y de los grupos (las acciones [https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetUser.html), [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html) y [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupsForUser.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListGroupsForUser.html)). 
+ Realizar una lista y eliminar las políticas del usuario (las acciones [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUserPolicies.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUserPolicies.html), [https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedUserPolicies.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListAttachedUserPolicies.html), [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DetachUserPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DetachUserPolicy.html), [https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteUserPolicy.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_DeleteUserPolicy.html)) 
+ Cambiar de nombre o cambiar la ruta para el usuario (la acción [https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateUser.html](https://docs.aws.amazon.com/IAM/latest/APIReference/API_UpdateUser.html)). El elemento `Resource` debe incluir un ARN que cubra la ruta de origen y la ruta de destino. Para obtener más información acerca de las rutas, consulte [Nombres fáciles de recordar y rutas](reference_identifiers.md#identifiers-friendly-names).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowUsersToPerformUserActions",
            "Effect": "Allow",
            "Action": [
                "iam:ListPolicies",
                "iam:GetPolicy",
                "iam:UpdateUser",
                "iam:AttachUserPolicy",
                "iam:ListEntitiesForPolicy",
                "iam:DeleteUserPolicy",
                "iam:DeleteUser",
                "iam:ListUserPolicies",
                "iam:CreateUser",
                "iam:RemoveUserFromGroup",
                "iam:AddUserToGroup",
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:PutUserPolicy",
                "iam:ListAttachedUserPolicies",
                "iam:ListUsers",
                "iam:GetUser",
                "iam:DetachUserPolicy"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowUsersToSeeStatsOnIAMConsoleDashboard",
            "Effect": "Allow",
            "Action": [
                "iam:GetAccount*",
                "iam:ListAccount*"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Varios permisos incluidos en la política anterior permiten al usuario realizar tareas en la Consola de administración de AWS. Los usuarios que realizan tareas relacionadas con el usuario solo desde la [AWS CLI](https://aws.amazon.com/cli/), los [SDK de AWS](https://aws.amazon.com/tools/) o la API de consulta HTTP de IAM no necesitarán determinados permisos. Por ejemplo, si los usuarios ya conocen el ARN de las políticas a separar de un usuario, no necesitarán el permiso `iam:ListAttachedUserPolicies`. La lista exacta de permisos que un usuario requiere depende de las tareas que el usuario debe realizar mientras administra otros usuarios. 

Los siguientes permisos de la política otorgan acceso al usuario a las tareas mediante la Consola de administración de AWS:
+ `iam:GetAccount*`
+ `iam:ListAccount*`

## Permitir a los usuarios definir la política de contraseñas de la cuenta
<a name="creds-policies-set-password-policy"></a>

Puede otorgar permisos a algunos usuarios para obtener y actualizar la [política de contraseñas](id_credentials_passwords_account-policy.md) de su cuenta de Cuenta de AWS. Para ver la política de ejemplo, consulte [IAM: permite establecer los requisitos de contraseña de la cuenta, mediante programación y en la consola](reference_policies_examples_iam_set-account-pass-policy.md). 

## Permitir a los usuarios generar y recuperar informes de credenciales de IAM
<a name="iampolicy-generate-credential-report"></a>

Puede otorgar permiso a los usuarios para generar y descargar un informe que contenga una lista de todos los usuarios de su cuenta de Cuenta de AWS. El informe también muestra el estado de las distintas credenciales del usuario, tales como las contraseñas, las claves de acceso, los dispositivos MFA y los certificados de firma. Para obtener más información sobre los informes de credenciales de , consulte [Generación de informes de credenciales para su Cuenta de AWS](id_credentials_getting-report.md). Para ver la política de ejemplo, consulte [IAM: generar y recuperar de informes de credenciales de IAM](reference_policies_examples_iam-credential-report.md). 

## Permitir todas las acciones de IAM (acceso de administrador)
<a name="creds-policies-all-iam"></a>

Es posible asignar a algunos usuarios permisos administrativos para llevar a cabo todas las acciones en IAM, incluida la administración de contraseñas, claves de acceso, dispositivos MFA y certificados de usuario. La siguiente política de ejemplo concede estos permisos. 

**aviso**  
Al ofrecer a un usuario acceso completo a IAM, no existe ningún límite en lo que respecta a los permisos que un usuario se puede otorgar a sí mismo o a otros. El usuario puede crear entidades de IAM (usuarios o roles) nuevas y otorgarles acceso completo a todos los recursos en su cuenta de Cuenta de AWS. Al ofrecer a un usuario acceso completo a IAM, está otorgándole acceso completo de forma eficaz a todos los recursos de su cuenta de Cuenta de AWS. Esto incluye el acceso para eliminar todos los recursos. Debe conceder estos permisos únicamente a los administradores de confianza y debe forzar la autenticación multifactor (MFA) para estos administradores.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": "iam:*",
    "Resource": "*"
  }
}
```

------