Crear un rol para delegar permisos a un servicio de AWS - AWS Identity and Access Management

Crear un rol para delegar permisos a un servicio de AWS

Muchos servicios de AWS requieren que utilice roles para permitir que el servicio obtenga acceso a los recursos de otros servicios en su nombre. Un rol que asume un servicio para realizar acciones en su nombre se denomina rol de servicio. Si un rol tiene un fin específico para un servicio, se identifica como rol de servicio para instancias EC2 (por ejemplo) o como rol vinculado a un servicio. Para ver qué servicios son compatibles con el uso de roles vinculados a servicios, o si un servicio admite algún tipo de credenciales temporales, consulte Servicios de AWS que funcionan con IAM. Para obtener información sobre cómo un servicio determinado utiliza los roles, elija el nombre del servicio en la tabla para ver la documentación correspondiente a dicho servicio.

Al configurar el permiso PassRole, debe asegurarse de que un usuario no pase un rol en el que el rol tenga más permisos de los que usted desea que tenga el usuario. Por ejemplo, es posible que a Alice no se le permita realizar ninguna acción de Amazon S3. Si Alice pudiera transferir un rol a un servicio que permita acciones de Amazon S3, el servicio podría realizar acciones de Amazon S3 en su nombre al ejecutar el trabajo.

Para obtener información sobre cómo los roles le pueden ayudar a delegar permisos, consulte Términos y conceptos de roles.

Permisos del rol de servicio

Debe configurar permisos para permitir a una entidad de IAM (como un usuario, grupo o rol) crear o editar una función de servicio.

nota

El ARN de un rol vinculado a un servicio incluye una entidad principal del servicio, que se indica en las políticas siguientes como SERVICE-NAME.amazonaws.com. No intente adivinar la entidad principal del servicio, ya que distingue entre mayúsculas y minúsculas y su formato puede variar para los distintos servicios de AWS. Para ver el elemento principal de un servicio, consulte la documentación correspondiente su rol vinculado a servicio.

Para permitir a una entidad de IAM cree un rol vinculado a un servicio específico

Agregue la siguiente política a la entidad de IAM que necesite crear la función de servicio. Esta política le permite crear un rol de servicio para el servicio especificado y con un nombre específico. A continuación, puede asociar políticas administradas o insertadas al rol.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:CreateRole", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME" } ] }

Cómo permitir a una entidad de IAM crear un rol de servicio

AWS recomienda permitir solo a los administradores crear cualquier rol de servicio. Una persona con permisos para crear un rol y adjuntar cualquier política puede escalar sus propios permisos. En su lugar, cree una política que les permita crear solo los roles que necesitan o haga que un administrador cree el rol de servicio en su nombre.

Para adjuntar una política que permita a un administrador acceder a toda la Cuenta de AWS, utilice la política administrada AdministratorAccess de AWS.

Cómo permitir a una entidad de IAM editar un rol de servicio

Agregue la siguiente política a la entidad de IAM que necesite editar la función de servicio.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EditSpecificServiceRole", "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies", "iam:ListRolePolicies", "iam:PutRolePolicy", "iam:UpdateRole", "iam:UpdateRoleDescription" ], "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME" }, { "Sid": "ViewRolesAndPolicies", "Effect": "Allow", "Action": [ "iam:GetPolicy", "iam:ListRoles" ], "Resource": "*" } ] }

Para permitir a una entidad de IAM eliminar una función de servicio específico

Agregue la siguiente instrucción a la política de permisos de la entidad de IAM que necesite eliminar la función de servicio especificado.

{ "Effect": "Allow", "Action": "iam:DeleteRole", "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME" }

Cómo permitir a una entidad de IAM eliminar cualquier rol de servicio

AWS recomienda permitir solo a los administradores eliminar cualquier rol de servicio. En su lugar, cree una política que les permita eliminar solo los roles que necesitan o haga que un administrador elimine el rol de servicio en su nombre.

Para adjuntar una política que permita a un administrador acceder a toda la Cuenta de AWS, utilice la política administrada AdministratorAccess de AWS.

Creación de un rol para un servicio de AWS (consola)

Puede utilizar la AWS Management Console para crear un rol para un servicio. Algunos servicios admiten más de un rol de servicio. Por lo tanto, recomendamos que consulte la documentación de AWS relacionada con su servicio para ver qué caso de uso debe elegir. Puede obtener más información acerca de cómo asignar las políticas de confianza y de permisos necesarias para el rol, para que el servicio pueda asumir el rol en su nombre. Los pasos que puede utilizar para controlar los permisos para el rol pueden variar en función de cómo defina el servicio los casos de uso y de si se crea o no un rol vinculado al servicio.

Cómo crear un rol para un Servicio de AWS (consola de IAM)
  1. Inicie sesión en AWS Management Console Management Console y abra la consola IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación de la consola de IAM, seleccione Roles y, a continuación, elija Crear rol.

  3. En Tipo de entidad de confianza, elija Servicio de AWS.

  4. En Servicio o caso de uso, seleccione un servicio y, a continuación, el caso de uso. Los casos de uso son definidos por el servicio de modo tal que ya incluyen la política de confianza que el servicio mismo requiere.

  5. Elija Siguiente.

  6. Para las Políticas de permisos, las opciones dependen del caso de uso que haya seleccionado:

    • Si el servicio define los permisos para el rol, no puede seleccionar políticas de permisos.

    • Seleccione entre un conjunto limitado de políticas de permisos.

    • Seleccione una de todas las políticas de permisos.

    • No seleccione políticas de permisos en este momento. Después de crear el rol, genere las políticas y luego asócielas al rol.

  7. (Opcional) Configure un límite de permisos. Se trata de una característica avanzada que está disponible para los roles de servicio, pero no para los roles vinculados a servicios.

    1. Abra la sección Configurar límite de permisos y, a continuación, elija Utilizar un límite de permisos para controlar los permisos que puede tener el rol como máximo.

      IAM incluye una lista de las políticas administradas por AWS y de las políticas administradas por el cliente de cada cuenta.

    2. Seleccione la política que desea utilizar para el límite de permisos.

  8. Elija Siguiente.

  9. Para Nombre del rol, las opciones varían según el servicio:

    • Si el servicio define el nombre del rol, no podrá editarlo.

    • Si el servicio define un prefijo para el nombre del rol, puede ingresar un sufijo opcional.

    • Si el servicio no define el nombre del rol, podrá nombrarlo usted mismo.

      importante

      Cuando asigne un nombre a un rol, tenga en cuenta lo siguiente:

      • Los nombres de rol deben ser únicos dentro de su Cuenta de AWS, y no se pueden hacer únicos mediante mayúsculas y minúsculas.

        Por ejemplo, no puede crear roles denominados tanto PRODROLE como prodrole. Cuando se utiliza un nombre de rol en una política o como parte de un ARN, el nombre de rol distingue entre mayúsculas y minúsculas, sin embargo, cuando un nombre de rol les aparece a los clientes en la consola, como por ejemplo durante el proceso de inicio de sesión, el nombre de rol no distingue entre mayúsculas y minúsculas.

      • Dado que otras entidades podrían hacer referencia al rol, no es posible editar el nombre del rol una vez creado.

  10. (Opcional) En Descripción, ingrese una descripción para el rol.

  11. (Opcional) Para editar los casos de uso y los permisos de la función, en las secciones Paso 1: Seleccionar entidades confiables o en Paso 2: Agregar permisos, elija Editar.

  12. (Opcional) Para ayudar a identificar, organizar o buscar el rol, agregue etiquetas como pares clave-valor. Para obtener más información sobre el uso de etiquetas en IAM, consulte Etiquetado de recursos de IAM en la Guía de usuario de IAM.

  13. Revise el rol y, a continuación, elija Crear rol.

Creación de un rol para un servicio (AWS CLI)

Para crear un rol desde la AWS CLI se deben seguir varios pasos. Si utiliza la consola para crear un rol, muchos de los pasos se realizan automáticamente, pero con la AWS CLI deberá realizar cada paso usted mismo. Debe crear el rol y, a continuación, asignar una política de permisos al rol. Si el servicio con el que está trabajando es Amazon EC2 también deberá crear un perfil de instancia y agregarle el rol. Si lo prefiere, también puede configurar el límite de permisos para el rol.

Para crear un rol para un servicio de AWS desde la AWS CLI
  1. Los siguientes comandos create-role crean un rol llamado Test-Role y le asigna una política de confianza:

    aws iam create-role --role-name Test-Role --assume-role-policy-document file://Test-Role-Trust-Policy.json

  2. Asociar una política de permisos administrada al rol: aws iam attach-role-policy.

    Por ejemplo, el siguiente comando attach-role-policy adjunta la política administrada AWS denominada ReadOnlyAccess en el rol de IAM denominado ReadOnlyRole:

    aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/ReadOnlyAccess --role-name ReadOnlyRole

    o

    Crear una política de permisos insertada para el rol: aws iam put-role-policy

    Para agregar una política de permisos insertada, consulte el siguiente ejemplo:

    aws iam put-role-policy --role-name Test-Role --policy-name ExamplePolicy --policy-document file://AdminPolicy.json

  3. (Opcional) Añadir los atributos personalizados al rol asociando etiquetas: aws iam tag-role

    Para obtener más información, consulte Administrar etiquetas en roles de IAM (AWS CLI o API de AWS).

  4. (Opcional) Configurar el límite de permisos para el rol: aws iam put-role-permissions-boundary

    Un límite de permisos controla los permisos que puede tener un rol como máximo. Los límites de permisos son una característica avanzada de AWS.

Si va a utilizar el rol con Amazon EC2 o con otro servicio de AWS que utiliza Amazon EC2, debe almacenar el rol en un perfil de instancias. Un perfil de instancias es un contenedor para un rol que se puede asociar a una instancia de Amazon EC2 cuando se lanza. Un perfil de instancia puede contener un único rol de y este límite no se puede aumentar. Si crea el rol con la AWS Management Console, el perfil de instancia se crea con el mismo nombre que el rol. Para obtener más información sobre los perfiles de instancia, consulte Utilizar perfiles de instancia. Para obtener información sobre cómo inicializar una instancia de EC2 con un rol, consulte Control del acceso a los recursos de Amazon EC2 en la Guía del usuario de Amazon EC2.

Para crear un perfil de instancia y almacenar el rol en él (AWS CLI)
  1. Crear un perfil de instancia: aws iam create-instance-profile

  2. Añadir el rol al perfil de instancia: aws iam add-role-to-instance-profile

En el siguiente ejemplo de conjunto de comandos de la AWS CLI, se muestran los dos primeros pasos para crear un rol y asociar permisos. También muestra los dos pasos para crear un perfil de instancia y añadir el rol al perfil. Esta política de confianza de ejemplo permite al servicio Amazon EC2 asumir el rol y ver el bucket de example_bucket Amazon S3. El ejemplo también supone que se está utilizando un equipo cliente con Windows y que ya se ha configurado la interfaz de línea de comandos con las credenciales y región de la cuenta. Para obtener más información, consulte Configuración de la interfaz de línea de comandos de AWS.

En este ejemplo, incluya la siguiente política de confianza en el primer comando al crear el rol. Esta política de confianza permite que el servicio Amazon EC2 asuma el rol.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Principal": {"Service": "ec2.amazonaws.com"}, "Action": "sts:AssumeRole" } }

Cuando utilice el segundo comando, debe asociar una política de permisos al rol. La siguiente política de permisos de ejemplo permite al rol realizar únicamente la acción ListBucket en el bucket de Amazon S3 example_bucket.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::example_bucket" } }

Para crear el rol Test-Role-for-EC2, primero debe guardar la política de confianza anterior con el nombre trustpolicyforec2.json y la política de permisos anterior con el nombre permissionspolicyforec2.json en el directorio policies del disco duro local C:. A continuación, puede utilizar los siguientes comandos para crear el rol, asociar la política, crear el perfil de instancia y añadir el rol al perfil de instancia.

# Create the role and attach the trust policy that allows EC2 to assume this role. $ aws iam create-role --role-name Test-Role-for-EC2 --assume-role-policy-document file://C:\policies\trustpolicyforec2.json # Embed the permissions policy (in this example an inline policy) to the role to specify what it is allowed to do. $ aws iam put-role-policy --role-name Test-Role-for-EC2 --policy-name Permissions-Policy-For-Ec2 --policy-document file://C:\policies\permissionspolicyforec2.json # Create the instance profile required by EC2 to contain the role $ aws iam create-instance-profile --instance-profile-name EC2-ListBucket-S3 # Finally, add the role to the instance profile $ aws iam add-role-to-instance-profile --instance-profile-name EC2-ListBucket-S3 --role-name Test-Role-for-EC2

Al lanzar la instancia EC2, especifique el nombre de perfil de instancia en la página Configurar detalles de la instancia si utiliza la consola de AWS. Si utiliza el comando de la CLI aws ec2 run-instances, especifique el parámetro --iam-instance-profile.

Creación de un rol para un servicio (API de AWS)

Para crear un rol desde la API de AWS se deben seguir varios pasos. Si utiliza la consola para crear un rol, muchos de los pasos se realizan automáticamente, pero con la API deberá realizar cada paso usted mismo. Debe crear el rol y, a continuación, asignar una política de permisos al rol. Si el servicio con el que está trabajando es Amazon EC2 también deberá crear un perfil de instancia y agregarle el rol. Si lo prefiere, también puede configurar el límite de permisos para el rol.

Para crear un rol para un servicio de AWS (API de AWS)
  1. Creación de un rol: CreateRole

    Para la política de confianza del rol, puede especificar una ubicación de archivo.

  2. Asociar una política de permisos administrada al rol: AttachRolePolicy

    o

    Crear una política de permisos insertada para el rol: PutRolePolicy

  3. (Opcional) Añadir los atributos personalizados al usuario asociando etiquetas: TagRole

    Para obtener más información, consulte Administrar etiquetas en usuarios de IAM (AWS CLI o API de AWS).

  4. (Opcional) Configuración del límite de permisos para el rol: PutRolePermissionsBoundary

    Un límite de permisos controla los permisos que puede tener un rol como máximo. Los límites de permisos son una característica avanzada de AWS.

Si va a utilizar el rol con Amazon EC2 o con otro servicio de AWS que utiliza Amazon EC2, debe almacenar el rol en un perfil de instancias. Un perfil de instancia es un contenedor para un rol. Cada perfil de instancia solo puede contener un único rol y dicho límite no se puede superar. Si crea el rol en la AWS Management Console, el perfil de instancia se crea con el mismo nombre que el rol. Para obtener más información sobre los perfiles de instancia, consulte Utilizar perfiles de instancia. Para obtener información sobre cómo inicializar una instancia de Amazon EC2 con un rol, consulte Control del acceso a los recursos de Amazon EC2 en la Guía del usuario de Amazon EC2.

Para crear un perfil de instancia y almacenar el rol en él (API de AWS)
  1. Crear un perfil de instancia: CreateInstanceProfile

  2. Añadir el rol al perfil de instancia: AddRoleToInstanceProfile