Tutorial de IAM: delegación del acceso entre cuentas de AWS mediante roles de IAM - AWS Identity and Access Management

Tutorial de IAM: delegación del acceso entre cuentas de AWS mediante roles de IAM

En este tutorial, se enseña a utilizar un rol para delegar el acceso a recursos en cuentas de AWS diferentes y que son de su propiedad llamadas producción y desarrollo. Los recursos de una cuenta los comparte con usuarios de otra cuenta. Al configurar de esta forma un acceso entre cuentas, no deberá crear usuarios de IAM individuales en cada cuenta. Además, los usuarios no tendrán que cerrar sesión en una cuenta e iniciar sesión en la otra para obtener acceso a los recursos en cuentas de AWS diferentes. Cuando haya configurado el rol, aprenderá a utilizarlo en la AWS Management Console, la AWS CLI y la API.

nota

Los roles de IAM y las políticas basadas en recursos delegan el acceso entre cuentas solo dentro de una única partición. Suponga, por ejemplo, que tiene una cuenta en EE. UU. Oeste (Norte de California) en la partición estándar aws. También tiene una cuenta en China (Pekín) en la partición aws-cn. No puede utilizar una política de Amazon S3 basada en recursos en su cuenta en China (Pekín) para permitir el acceso a los usuarios de su cuenta aws estándar.

En este tutorial, la cuenta de producción es donde se administran las aplicaciones en directo. La cuenta de desarrollo es un entorno aislado de pruebas en el que los desarrolladores y los evaluadores pueden probar libremente las aplicaciones. En ambas cuentas, la información de las aplicaciones se almacena en buckets de Amazon S3. Usted administra los usuarios de IAM en la cuenta de desarrollo, donde tiene dos grupos de usuarios de IAM: desarrolladores y evaluadores. En ambos grupos de usuarios, los usuarios tienen permiso para trabajar en la cuenta Desarrollo y obtener acceso a los recursos de esta. De vez en cuando, un desarrollador debe actualizar las aplicaciones en funcionamiento de la cuenta de producción. Los desarrolladores almacenan dichas aplicaciones en un bucket de Amazon S3 llamado productionapp.

Al final de este tutorial, dispone de lo siguiente:

  • Los usuarios de la cuenta de desarrollo (la cuenta de confianza) que tienen permiso para asumir un rol específico en la cuenta de producción.

  • Un rol de la cuenta de producción (la cuenta que confía) que tiene permiso para obtener acceso a un bucket de Amazon S3 específico.

  • Un bucket productionapp en la cuenta de producción.

Los desarrolladores pueden utilizar el rol en la AWS Management Console para obtener acceso al bucket productionapp de la cuenta de producción. También pueden obtener acceso al bucket mediante llamadas a la API autenticadas con credenciales temporales que el rol proporciona. Si un evaluador realiza intentos similares, obtendrá un error.

Este flujo de trabajo incluye tres pasos básicos:

Paso 1: Crear un rol en la cuenta de producción

En primer lugar, la AWS Management Console se utiliza para establecer una relación de confianza entre la cuenta de producción (número de ID 999999999999) y la cuenta de desarrollo (número de ID 111111111111). Comience creando un rol de IAM llamado UpdateApp. Cuando cree el rol, defina la cuenta de desarrollo como una entidad de confianza y especifique una política de permisos que permita a los usuarios de confianza actualizar el bucket productionapp.

Paso 2: conceder acceso al rol

En este paso del tutorial, debe modificar la política de grupo de usuarios de IAM para que se deniegue el acceso de los evaluadores al rol UpdateApp. Como en este caso los evaluadores tienen acceso de usuario avanzado, debe denegar explícitamente la posibilidad de utilizar el rol.

Paso 3: Probar el acceso alternando roles

Por último, como desarrollador, utilice el rol UpdateApp para actualizar el bucket productionapp en la cuenta de producción. Puede ver cómo obtener acceso al rol mediante la consola de AWS, la AWS CLI y la API.

Requisitos previos

En este tutorial se presupone que los elementos siguientes ya existen:

  • Dos cuentas de AWS independientes que puede utilizar, una para representar la cuenta de desarrollo y la otra para representar la cuenta de producción.

  • Los usuarios y grupos de usuarios de la cuenta de desarrollo creados y configurados como se indica a continuación:

    Usuario Grupos de usuarios Permisos
    David Desarrolladores Ambos usuarios pueden iniciar sesión y utilizar la AWS Management Console en la cuenta de desarrollo.
    Jane Evaluadores
  • No necesita tener usuarios o grupos de usuarios creados en la cuenta de producción.

  • Un bucket de Amazon S3 creado en la cuenta de producción. Puede denominarlo ProductionApp en este tutorial, pero debido a que los nombres de bucket de S3 deben ser únicos globalmente, deberá utilizar un bucket con otro nombre.

Paso 1: Crear un rol en la cuenta de producción

Puede permitir que los usuarios de una cuenta de AWS obtengan acceso a los recursos de otra cuenta de AWS. Para ello, cree un rol que defina quién puede obtener acceso a ella y qué permisos concede a los usuarios que cambian a ella.

En este paso del tutorial, creará el rol en la cuenta de producción y especificará la cuenta de desarrollo como entidad de confianza. También limitará los permisos del rol a un acceso de solo lectura y escritura para el bucket productionapp. Todos los que tengan permiso para utilizar el rol podrán leer y escribir en el bucket productionapp.

Para poder crear un rol, necesitará el ID de cuenta de la cuenta de desarrollo de AWS. Cada cuenta de AWS tiene un identificador de ID de cuenta exclusivo asignado.

Para obtener el ID de cuenta de AWS Desarrollo
  1. Inicie sesión en la AWS Management Console como administrador de la cuenta de desarrollo y abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En la barra de navegación, elija Support (Asistencia) y, a continuación, Support Center (Centro de asistencia). El número de cuenta (ID) actual de 12 dígitos que ha iniciado sesión aparece en el panel de navegación Centro de asistencia. En este escenario, puede utilizar el ID de cuenta 111111111111 para la cuenta de desarrollo. Sin embargo, debe utilizar un ID de cuenta válido si utiliza el escenario en su entorno de prueba.

Para crear un rol en la cuenta de producción que pueda utilizarse en la cuenta Development (Desarrollo)
  1. Inicie sesión en la AWS Management Console como administrador de la cuenta de producción y abra la consola de IAM.

  2. Antes de crear el rol, prepare la política administrada que define los permisos para los requisitos del rol. Más tarde, en otro paso, la asociará al rol.

    Debe configurar el acceso de lectura y escritura al bucket productionapp. Aunque AWS proporciona algunas políticas administradas por Amazon S3, ninguna proporciona acceso de lectura y escritura a un solo bucket de Amazon S3. En su lugar, puede crear su propia política.

    En el panel de navegación, elija Policies (Políticas) y, a continuación, seleccione Create policy (Crear política).

  3. Seleccione la pestaña JSON y copie el texto del siguiente documento de política JSON. Pegue este texto en el cuadro de texto JSON y reemplace el ARN del recurso (arn:aws:s3:::productionapp) por el ARN real de su bucket de Amazon S3.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::productionapp" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::productionapp/*" } ] }

    El permiso ListBucket permite a los usuarios ver objetos en el bucket productionapp. Los permisos GetObject, PutObject, DeleteObject permiten a los usuarios ver, actualizar y eliminar contenido del bucket productionapp.

  4. Resuelva las advertencias de seguridad, errores o advertencias generales generadas durante la validación de política, y luego elija Revisar política.

    nota

    Puede alternar entre las pestañas Visual editor (Editor visual) y JSON en cualquier momento. Sin embargo, si realiza cambios o elige Revisar política en la pestaña Editor Visual, IAM podría reestructurar la política para optimizarla para el editor visual. Para obtener más información, consulte Reestructuración de políticas .

  5. En la página Review (Revisar), escriba read-write-app-bucket como nombre de la política. Revise el Summary (Resumen) de la política para ver los permisos concedidos por la política y, a continuación, elija Create policy (Crear política) para guardar el trabajo.

    La nueva política aparece en la lista de políticas administradas.

  6. En el panel de navegación, seleccione Roles y, a continuación, seleccione Create role.

  7. Elija el tipo de rol An AWS account (Una cuenta de AWS).

  8. En Account ID (ID de cuenta), escriba el ID de la cuenta de desarrollo.

    En este tutorial, se utiliza el ID de cuenta de ejemplo 111111111111 para la cuenta Development (Desarrollo). Debe utilizar un ID de cuenta válido. Si utiliza un ID de cuenta que no es válido, como 111111111111, IAM no le permitirá crear el nuevo rol.

    Por ahora, no necesita exigir un ID externo ni solicitar a los usuarios que utilicen autenticación multifactor (MFA) para asumir el rol. Deje estas opciones desmarcadas. Para obtener más información, consulte Uso de autenticación multifactor (MFA) en AWS .

  9. Seleccione Next: Permissions (Siguiente: Permisos) para establecer los permisos asociados al rol.

  10. Seleccione la casilla situada junto a la política que ha creado anteriormente.

    Sugerencia

    En Filter (Filtro), elija Customer managed (Administrado por el cliente) para filtrar la lista e incluir únicamente las políticas que creó. Esto ocultará las políticas creadas por AWS y facilitará en gran medida encontrar la política que necesita.

    A continuación, haga clic en Next.

  11. (Opcional) Añadir metadatos al rol asociando las etiquetas como pares de clave-valor. Para obtener más información acerca del uso de etiquetas en IAM, consulte Etiquetado de recursos de IAM.

  12. (Opcional) En Description (Descripción), ingrese una descripción para el nuevo rol.

  13. Después de revisar el rol, seleccione Create Role (Crear rol).

    El rol UpdateApp se muestra en la lista de roles.

Ahora debe obtener el nombre de recurso de Amazon (ARN) del rol, un identificador exclusivo del rol. Si modifica la política de grupo de usuarios de los desarrolladores y los evaluadores, debe especificar el ARN del rol para conceder o denegar permisos.

Para obtener el ARN de UpdateApp
  1. En el panel de navegación de la consola de IAM, elija Roles (Roles).

  2. En la lista de roles, elija el rol UpdateApp.

  3. En la sección Summary (Resumen) del panel de detalles, copie el valor de Role ARN (ARN del rol).

    La cuenta de producción tiene el ID de cuenta 999999999999, por lo que el ARN del rol es arn:aws:iam::999999999999:role/UpdateApp. Asegúrese de dar el ID de cuenta de AWS real para la cuenta de producción.

En este momento, ha establecido una relación de confianza entre la cuenta de producción y la cuenta de desarrollo . Para ello, creó un rol en la cuenta de producción que identifica la cuenta de desarrollo como entidad principal de confianza. También ha definido qué pueden hacer los usuarios que cambian al rol UpdateApp.

A continuación, va a modificar los permisos de los grupos de usuarios.

Paso 2: conceder acceso al rol

En este punto, los miembros de los grupos de usuarios de evaluadores y desarrolladores tienen permisos que les permiten probar libremente aplicaciones en la cuenta de desarrollo. Estos son los pasos necesarios para agregar permisos que permitan cambiar al rol.

Para modificar el grupo de usuarios de Desarrolladores para que puedan cambiar al rol UpdateApp
  1. Inicie sesión como administrador en la cuenta de desarrollo y abra la consola de IAM.

  2. Elija Grupos de usuarios y, a continuación, Desarrolladores.

  3. Elija la pestaña de Permisos, elija Agregar permisos y luego Crear política insertada.

  4. Seleccione la pestaña JSON.

  5. Añada la siguiente declaración de política para permitir la acción AssumeRole en el rol UpdateApp en la cuenta Producción. Asegúrese de que cambia PRODUCTION-ACCOUNT-ID en el elemento Resource por el ID de cuenta de AWS real de la cuenta de producción.

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::PRODUCTION-ACCOUNT-ID:role/UpdateApp" } }

    El efecto Allow permite explícitamente al grupo Desarrolladores obtener acceso al rol UpdateApp en la cuenta Producción. Todos los desarrolladores que intenten obtener acceso al rol lo consiguen.

  6. Elija Review policy (Revisar política).

  7. Escriba un valor en Policy name (Nombre de la política), por ejemplo: allow-assume-S3-role-in-production.

  8. (Opcional) En Description (Descripción), escriba una descripción para la política.

  9. Elija Create Policy (Crear política).

En la mayoría de los entornos, quizás no sea necesario el siguiente procedimiento. Si, por el contrario, usa permisos de PowerUserAccess, es posible que algunos grupos ya puedan cambiar de rol. En el siguiente procedimiento se muestra cómo agregar un permiso "Deny" al grupo Evaluadores para garantizar que no puedan asumir el rol. Si este procedimiento no es necesario en su entorno, le recomendamos que no lo agregue. Los permisos "Deny" hacen que el panorama general de los permisos sea más difícil de administrar y de entender. Utilice los permisos "Deny" solo cuando no tenga una opción mejor.

Para modificar el grupo de usuarios de evaluadores para denegarle el permiso de asumir el rol UpdateApp
  1. Elija Grupos de usuarios y, a continuación, Probadores.

  2. Elija la pestaña de Permisos, elija Agregar permisos y luego Crear política insertada.

  3. Seleccione la pestaña JSON.

  4. Añada la siguiente declaración de política para denegar la acción AssumeRole en el rol UpdateApp. Asegúrese de que cambia PRODUCTION-ACCOUNT-ID en el elemento Resource por el ID de cuenta de AWS real de la cuenta de producción.

    { "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::PRODUCTION-ACCOUNT-ID:role/UpdateApp" } }

    El efecto Deny deniega explícitamente al grupo Evaluadores obtener acceso al rol UpdateApp en la cuenta Producción. Todos los evaluadores que intenten obtener acceso al rol reciben un mensaje de acceso denegado.

  5. Elija Review policy (Revisar política).

  6. Escriba un nombre de política, como deny-assume-S3-role-in-production.

  7. Elija Create Policy (Crear política).

Ahora, el grupo de usuarios de Desarrolladores tiene permisos para utilizar el rol UpdateApp en la cuenta de producción. El grupo de usuarios Evaluadores no podrá utilizar el rol UpdateApp.

A continuación, puede ver cómo David, un desarrollador, puede obtener acceso al bucket productionapp en la cuenta de producción. David puede obtener acceso al bucket desde la AWS Management Console, la AWS CLI, o la API de AWS.

Paso 3: Probar el acceso alternando roles

Después de completar los dos primeros pasos de este tutorial, tiene un rol que concede acceso a un recurso en la cuenta de producción. También tiene un grupo de usuarios en la cuenta de desarrollo cuyos usuarios tienen permiso para usar dicho rol. En este paso se explica cómo probar el cambio a este rol desde la AWS Management Console, la AWS CLI, y la API de AWS.

importante

Puede cambiar a un rol únicamente después de iniciar sesión como usuario de IAM o usuario federado. Además, si lanza una instancia de Amazon EC2 para ejecutar una aplicación, la aplicación puede asumir un rol mediante su perfil de instancias. No puede cambiar a un rol si inició sesión como usuario raíz de una Cuenta de AWS.

Cambio de roles (consola)

Si David necesita trabajar en el entorno de producción en la AWS Management Console, puede hacerlo a través de Switch Role (Cambiar rol). Indica el ID de cuenta o el alias, y el nombre del rol, y sus permisos cambian inmediatamente a los que están permitidos por el rol. A continuación, puede utilizar la consola para trabajar con el bucket productionapp, pero no puede trabajar con ningún otro recurso en producción. Aunque David utiliza el rol, tampoco puede hacer uso de sus privilegios de usuario avanzado en la cuenta de desarrollo. Esto se debe a que no puede haber más de un conjunto de permisos en vigor a la vez.

importante

El cambio de roles mediante la AWS Management Console solo funciona con cuentas que no requieran un ExternalId. Por ejemplo, suponga que concede acceso a su cuenta a un tercero y requiere un ExternalId en un elemento Condition de su política de permisos. En ese caso, el tercero puede obtener acceso a su cuenta solo a través de la API de AWS o una herramienta de línea de comandos. El tercero no puede utilizar la consola, ya que no puede proporcionar un valor para ExternalId. Para obtener más información sobre este caso, consulte Cómo utilizar un ID externo al otorgar acceso a los recursos de AWS a terceros y Cómo habilitar el acceso entre cuentas a la AWS Management Console en el Blog de seguridad de AWS.

Gracias a IAM, David puede entrar en la página Switch Role (Cambiar rol) de dos formas:

  • David recibe un enlace de su administrador que apunta a una configuración de Switch Role (Cambiar rol) predefinida. El enlace se proporciona al administrador en la página final del asistente Create role (Crear rol) y en la página Role Summary (Resumen del rol) a un rol con permisos entre cuentas. Si David elige este enlace, obtendrá acceso a la página Switch Role (Cambiar rol) con los campos Account ID (ID de cuenta) y Role name (Nombre del rol) ya completados. David solo tiene que elegir Switch Roles (Cambiar roles).

  • El administrador no envía el enlace por correo electrónico, sino que envía los valores de Account ID (ID de cuenta) y Role Name (Nombre del rol). Para cambiar de roles, David tiene que ingresar manualmente los valores. Esto se muestra en el procedimiento siguiente.

Para asumir un rol
  1. David inicia sesión en la AWS Management Console con su usuario normal que se encuentra en el grupo de usuarios de desarrollo.

  2. Ellos eligen el vínculo que el administrador les envía. Esto lleva a David a la página Switch Role (Cambiar rol) con la información del ID de cuenta o alias y el nombre de rol ya completados.

    —o bien—

    David elige su nombre, en el menú Identity (Identidad), en la barra de navegación y, a continuación, elige Switch Role (Cambiar rol).

    Si es la primera vez que David intenta obtener acceso a la página Switch Role (Cambiar rol) de esta manera, primero entrará a la página Switch Role (Cambiar rol) predeterminada. Esta página proporciona información adicional acerca de cómo el cambio de rol puede permitir a los usuarios para que administren recursos entre cuentas de AWS. David debe hacer clic en Switch Role (Cambiar rol) en esta página para completar el resto de este procedimiento.

  3. A continuación, para poder obtener acceso al rol, David debe escribir manualmente el número de ID de la cuenta Producción (999999999999) y el nombre del rol (UpdateApp).

    Además, David quiere monitorear qué roles y permisos asociados están activos actualmente en IAM. Para realizar un seguimiento de esta información, escribe PRODUCTION en el cuadro de texto Nombre de visualización, selecciona la opción de color rojo y, a continuación, elige Cambiar rol.

  4. Ahora puede utilizar la consola de Amazon S3 para trabajar con el bucket de Amazon S3 o cualquier otro recurso sobre el que el rol UpdateApp tenga permisos.

  5. Al terminar, David puede volver a sus permisos originales. Para ello, eligen el nombre de visualización del rol PRODUCTION (PRODUCCIÓN) en la barra de navegación y, a continuación, eligen Back to David @111111111111 (Devolver a David @111111111111).

  6. La siguiente vez que David quiera cambiar de rol y elija el menú Identity (Identidad) en la barra de navegación, verá que la entrada PRODUCTION (Producción) sigue estando ahí. Solo tiene que elegir esa entrada para cambiar de rol inmediatamente sin tener que volver a escribir el ID de cuenta y el nombre de rol.

Cambio de roles (AWS CLI)

Si David necesita trabajar en la línea de comandos en el entorno de producción, puede hacerlo mediante la AWS CLI. Ejecuta el comando aws sts assume-role y pasa el ARN del rol para obtener las credenciales de seguridad temporales de dicho rol. Luego configura esas credenciales en las variables de entorno para que los comandos de la AWS CLI posteriores utilicen los permisos del rol. Aunque David utiliza el rol, no puede utilizar sus privilegios de usuario avanzado en la cuenta de desarrollo, ya que solo puede haber en vigor un conjunto de permisos a la vez.

Tenga en cuenta que todas las claves de acceso y tokens solo son ejemplos y no se pueden utilizar tal y como se muestran. Tiene que sustituirlos por los valores adecuados de su entorno real.

Para asumir un rol
  1. David abre una ventana de símbolo de sistema y confirma que el cliente de la AWS CLI está trabajando, ejecutando el comando:

    aws help
    nota

    El entorno predeterminado de David utiliza las credenciales de usuario de David de su perfil predeterminado que creó con el comando aws configure. Para obtener más información, consulte Configuración de AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface.

  2. Comienza el proceso de cambio de rol con la ejecución del siguiente comando para cambiar al rol UpdateApp en la cuenta de producción. El administrador que ha creado el rol le proporcionó el ARN del rol. El comando necesita que indique también un nombre de sesión; para ello puede elegir cualquier texto.

    aws sts assume-role --role-arn "arn:aws:iam::999999999999:role/UpdateApp" --role-session-name "David-ProdUpdate"

    Después, David ve lo siguiente en la salida:

    { "Credentials": { "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "AQoDYXdzEGcaEXAMPLE2gsYULo+Im5ZEXAMPLEeYjs1M2FUIgIJx9tQqNMBEXAMPLE CvSRyh0FW7jEXAMPLEW+vE/7s1HRpXviG7b+qYf4nD00EXAMPLEmj4wxS04L/uZEXAMPLECihzFB5lTYLto9dyBgSDy EXAMPLE9/g7QRUhZp4bqbEXAMPLENwGPyOj59pFA4lNKCIkVgkREXAMPLEjlzxQ7y52gekeVEXAMPLEDiB9ST3Uuysg sKdEXAMPLE1TVastU1A0SKFEXAMPLEiywCC/Cs8EXAMPLEpZgOs+6hz4AP4KEXAMPLERbASP+4eZScEXAMPLEsnf87e NhyDHq6ikBQ==", "Expiration": "2014-12-11T23:08:07Z", "AccessKeyId": "AKIAIOSFODNN7EXAMPLE" } }
  3. David ve los tres elementos que necesitan en la sección Credentials (Credenciales) de la salida.

    • AccessKeyId

    • SecretAccessKey

    • SessionToken

    David necesita configurar el entorno de la AWS CLI para utilizar estos parámetros en las llamadas posteriores. Para obtener información sobre las distintas formas de configurar sus credenciales, consulte Configuración de la AWS Command Line Interface. No puede ejecutar el aws configure, ya que no admite la captura del token de sesión. Sin embargo, puede ingresar manualmente la información en un archivo de configuración. Dado que se trata de credenciales temporales con una fecha de vencimiento relativamente corta, es más fácil añadirlas al entorno de la sesión de la línea de comandos actual.

  4. Para añadir los tres valores al entorno, David corta y pega la salida del paso anterior en los comandos siguientes. Puede interesarle cortar y pegar en un editor de texto sencillo para tratar los problemas de ajuste de línea de la salida del token de la sesión. Debe añadirse como una cadena única y larga, aunque se muestre con ajustes de línea para aportar mayor claridad.

    nota

    En el siguiente ejemplo se muestran los comandos indicados en el entorno de Windows, donde "set" es el comando para crear una variable de entorno. En un equipo Linux o macOS, se utiliza el comando "export". Las demás partes del ejemplo son válidas en los tres entornos.

    set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY set AWS_SESSION_TOKEN=AQoDYXdzEGcaEXAMPLE2gsYULo+Im5ZEXAMPLEeYjs1M2FUIgIJx9tQqNMBEXAMPLECvS Ryh0FW7jEXAMPLEW+vE/7s1HRpXviG7b+qYf4nD00EXAMPLEmj4wxS04L/uZEXAMPLECihzFB5lTYLto9dyBgSDyEXA MPLEKEY9/g7QRUhZp4bqbEXAMPLENwGPyOj59pFA4lNKCIkVgkREXAMPLEjlzxQ7y52gekeVEXAMPLEDiB9ST3UusKd EXAMPLE1TVastU1A0SKFEXAMPLEiywCC/Cs8EXAMPLEpZgOs+6hz4AP4KEXAMPLERbASP+4eZScEXAMPLENhykxiHen DHq6ikBQ==

    En este punto, todos los comandos siguientes se ejecutan en los permisos del rol que las credenciales identifican. En el caso de David, el rol UpdateApp.

  5. Ejecute el comando para obtener acceso a los recursos de la cuenta Producción. En este ejemplo, David genera una lista del contenido de su bucket de S3 con el siguiente comando.

    aws s3 ls s3://productionapp

    Dado que los nombres de bucket de Amazon S3 son únicos universalmente, no es necesario especificar el ID de la cuenta que posee el bucket. Para obtener acceso a los recursos de otros servicios de AWS, consulte la documentación de la AWS CLI correspondiente a dicho servicio para informarse de los comandos y la sintaxis que son necesarios para hacer referencia a sus recursos.

Uso de AssumeRole (API de AWS)

Cuando David necesita realizar una actualización en la cuenta de producción desde el código, llama a AssumeRole para asumir el rol UpdateApp. La llamada devuelve credenciales temporales que puede utilizar para obtener acceso al bucket productionapp de la cuenta de producción. Con estas credenciales, David puede realizar llamadas a la API para actualizar el bucket productionapp. Sin embargo, no puede realizar llamadas a la API para obtener acceso a otros recursos de la cuenta de producción, aunque tenga permisos de usuario avanzado en la cuenta de desarrollo.

Para asumir un rol
  1. David llama a AssumeRole como parte de una aplicación. Deben especificar el ARN UpdateApp: arn:aws:iam::999999999999:role/UpdateApp.

    La respuesta de la llamada AssumeRole incluye las credenciales temporales con un AccessKeyId y una SecretAccessKey. También incluye una hora de Expiration que indica cuándo caducan las credenciales y debe solicitar otras nuevas.

  2. Con las credenciales temporales, David realiza una llamada s3:PutObject para actualizar el bucket productionapp. Transfieren las credenciales a la llamada API como el parámetro AuthParams. Dado que las credenciales temporales del rol tienen acceso de solo lectura y escritura al bucket productionapp, se deniegan todas las demás acciones de la cuenta Producción.

Para obtener código de ejemplo (mediante Python), consulte Cambio a un rol de IAM (API de AWS).

Resumen

Acaba de completar el tutorial de acceso entre varias cuentas mediante API. Ha creado un rol para establecer una relación de confianza con otra cuenta y definir qué acciones pueden realizar entidades de confianza. Después, ha modificado una política de grupo de usuarios para controlar qué usuarios de IAM pueden obtener acceso al rol. Como resultado, los desarrolladores de la cuenta de desarrollo pueden realizar actualizaciones en el bucket productionapp de la cuenta de producción mediante el uso de credenciales temporales.