Roles de IAM para Amazon EC2
Las aplicaciones deben firmar sus solicitudes de API con credenciales de AWS. Por lo tanto, si es usted un desarrollador de aplicaciones, necesitará una estrategia para administrar las credenciales de sus aplicaciones que se ejecuten en instancias EC2. Por ejemplo, puede distribuir con seguridad sus credenciales de AWS a las instancias, lo que habilita las aplicaciones que tiene en dichas instancias para que utilicen sus credenciales a fin de firmar solicitudes y, al mismo tiempo, proteger sus credenciales respecto a otros usuarios. Sin embargo, distribuir las credenciales a cada instancia de forma segura plantea ciertas dificultades, en especial cuando se trata de aquellas que AWS crea en su nombre, como las instancias de spot o las de los grupos de Auto Scaling. También debe poder actualizar las credenciales de cada instancia cuando rota sus credenciales de AWS.
nota
Para sus cargas de trabajo de Amazon EC2, le recomendamos que recupere las credenciales de sesión mediante el método que se describe a continuación. Estas credenciales deberían permitir a su carga de trabajo realizar solicitudes de API de AWS, sin necesidad de usar sts:AssumeRole
para asumir el mismo rol que ya está asociado a la instancia. A menos que necesite pasar etiquetas de sesión para el control de acceso basado en atributos (ABAC) o pasar una política de sesión para restringir aún más los permisos del rol, estas llamadas de asunción de roles no son necesarias, ya que crean un nuevo conjunto de las mismas credenciales temporales de sesión de rol.
Si su carga de trabajo usa un rol para asumirse a sí mismo, debe crear una política de confianza que permita explícitamente que ese rol se asuma a sí mismo. Si no crea la política de confianza, obtiene el error AccessDenied
. Para obtener más información, consulte Modificación de una política de confianza de rol en la Guía del usuario de IAM.
Hemos diseñado los roles de IAM, para que sus aplicaciones puedan realizar solicitudes de API con seguridad desde sus instancias, sin que usted tenga que administrar las credenciales de seguridad que la aplicación utiliza. En lugar de crear y distribuir sus credenciales de AWS, puede delegar el permiso para realizar solicitudes de API mediante los roles de IAM, tal como se indica a continuación:
-
Cree de un rol de IAM.
-
Defina qué cuentas o servicios de AWS pueden asumir el rol.
-
Defina qué acciones y recursos de la API puede utilizar la aplicación después de asumir el rol.
-
Especifique el rol cuando lance su instancia, o asocie el rol a una instancia existente.
-
Haga que la aplicación recupere unas credenciales temporales y las use.
Por ejemplo, puede utilizar roles de IAM para conceder permisos a aplicaciones que se ejecutan en sus instancias y que necesitan utilizar un bucket en Amazon S3. Puede especificar permisos para roles de IAM, creando una política en formato JSON. Son parecidos a las políticas que crea para usuarios de . Si cambia un rol, el cambio se propaga a todas las instancias.
nota
Las credenciales del rol de IAM de Amazon EC2 no están sujetas a la duración máxima de sesión configurada en el rol. Para obtener más información, consulte Uso de roles de IAM en la guía del usuario de IAM.
Al crear roles de IAM, asocie las políticas de IAM con privilegios mínimos que restringen el acceso a las llamadas a la API específicas que requiere la aplicación.
Solo puede adjuntar un rol de IAM a una instancia, pero puede adjuntar el mismo rol a muchas instancias. Para obtener más información sobre la creación y el uso de roles de IAM, consulte Roles en la Guía del usuario de IAM.
Puede aplicar permisos de nivel de recursos a sus políticas de IAM para controlar la capacidad de los usuarios de asociar, sustituir o desasociar roles de IAM de una instancia. Para obtener más información, consulte Permisos de nivel de recurso admitidos para las acciones de la API de Amazon EC2 y el siguiente ejemplo: Ejemplo: Trabajar con roles de IAM.
Contenido
Perfiles de instancias
Amazon EC2 utiliza un perfil de instancia como contenedor de un rol de IAM. Cuando se crea un rol de IAM utilizando la consola de IAM, esta crea automáticamente un perfil de instancia y le da el mismo nombre que el rol al que corresponde. Si utiliza la consola de Amazon EC2 para iniciar una instancia con un rol de IAM o para asociar un rol de IAM a una instancia, elija el rol en función de una lista de nombres de perfiles de instancias.
Si utiliza la AWS CLI, la API o un SDK de AWS para crear un rol, cree el rol y el perfil de instancia de forma independiente, con nombres potencialmente diferentes. Si posteriormente usa la AWS CLI, la API o un AWS SDK para iniciar una instancia con un rol de IAM o para adjuntar un rol de IAM a una instancia, especifique el nombre del perfil de instancias.
Un perfil de instancia solo puede contener un rol de IAM. Este límite no se puede aumentar.
Para obtener más información, consulte Instance Profiles en la Guía del usuario de IAM.
Recuperar credenciales de seguridad de los metadatos de la instancia
Una aplicación de una instancia recupera las credenciales de seguridad que proporciona el rol en el elemento iam/security-credentials/
role-name de los metadatos de la instancia. Se conceden a la aplicación los permisos para las acciones y los recursos que usted ha definido para el rol mediante las credenciales de seguridad asociadas al rol. Estas credenciales de seguridad son temporales y las rotamos automáticamente. Activamos la disponibilidad de las nuevas credenciales al menos cinco minutos antes del vencimiento de las antiguas.
aviso
Si utiliza servicios que utilizan metadatos de las instancias con los roles de IAM, asegúrese de que no revela sus credenciales cuando los servicios realizan llamadas HTTP en su nombre. Los tipos de servicios que pueden llegar a revelar sus credenciales son, entre otros, proxies HTTP, servicios de validador HTML/CSS y procesadores XML que admiten la inclusión de XML.
El comando siguiente recupera las credenciales de seguridad de un rol IAM de s3access
denominado .
A continuación, se muestra un ejemplo del resultado.
{
"Code" : "Success",
"LastUpdated" : "2012-04-26T16:39:16Z",
"Type" : "AWS-HMAC",
"AccessKeyId" : "ASIAIOSFODNN7EXAMPLE",
"SecretAccessKey" : "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"Token" : "token",
"Expiration" : "2017-05-17T15:09:54Z"
}
Para las aplicaciones, la AWS CLI y los comandos de las herramientas para Windows PowerShell que se ejecutan en la instancia, no es necesario obtener de forma explícita las credenciales de seguridad temporales, dado que los AWS SDK, la AWS CLI y las herramientas para Windows PowerShell obtienen automáticamente las credenciales del servicio de metadatos de la instancia de EC2 y las utilizan. Para llamar fuera de la instancia utilizando credenciales de seguridad temporales (por ejemplo, para probar políticas de IAM), debe proporcionar la clave de acceso, la clave secreta y el token de la sesión. Para obtener más información, consulte Uso de credenciales de seguridad temporales para solicitar acceso a los recursos de AWS en la Guía del usuario de IAM.
Para obtener más información acerca de los metadatos de instancias, consulte Metadatos de instancia y datos de usuario. Para obtener información sobre la dirección IP de metadatos de instancia, consulte Recuperar metadatos de instancia.
Concesión de permisos a un usuario para transferir un rol de IAM a una instancia
Para permitir que un usuario lance una instancia con un rol de IAM o asocie o sustituya un rol de IAM a una instancia existente, debe concederle permiso para utilizar las siguientes acciones de API:
-
iam:PassRole
-
ec2:AssociateIamInstanceProfile
-
ec2:ReplaceIamInstanceProfileAssociation
Por ejemplo, la siguiente política de IAM concede a los usuarios permiso para iniciar instancias con un rol de IAM, o para sustituir o adjuntar un rol de IAM para una instancia existente con la AWS CLI.
nota
Si quiere que la política conceda a los usuarios acceso a todos los roles, especifique el recurso como *
en la política. No obstante, tenga en cuenta el principio de privilegios mínimos como práctica recomendada.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances", "ec2:AssociateIamInstanceProfile", "ec2:ReplaceIamInstanceProfileAssociation" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::123456789012:role/DevTeam*" } ] }
Para conceder a los usuarios permiso para iniciar instancias con un rol de IAM o para sustituir o asociar un rol de IAM a una instancia ya existente con la consola de Amazon EC2, debe concederles permiso para utilizar iam:ListInstanceProfiles
, iam:PassRole
, ec2:AssociateIamInstanceProfile
y ec2:ReplaceIamInstanceProfileAssociation
, además de cualquier otro permiso que puedan necesitar. Para ver ejemplos de políticas, consulte Políticas de ejemplo para trabajar en la consola de Amazon EC2.
Trabajar con roles de IAM
Puede crear un rol de IAM y adjuntarlo a una instancia durante el lanzamiento o después. También puede separar o reemplazar un rol de IAM de una instancia.
Contenido
Crear un rol de IAM
Debe crear un rol de IAM antes de iniciar una instancia con dicho rol o adjuntarla a una instancia.
Iniciar una instancia con un rol de IAM
Después de crear un rol de IAM, puede iniciar una instancia y asociar dicho rol a la instancia durante el lanzamiento.
importante
Después de crear un rol de IAM, los permisos pueden tardar unos segundos en propagarse. Si su primer intento de iniciar una instancia con un rol da un error, espere unos cuantos segundos antes de volverlo a intentar. Para obtener más información, consulte Solución de problemas de roles de IAM en la Guía del usuario de IAM.
Asociar un rol de IAM a una instancia
Para asociar un rol de IAM a una instancia que no tiene ningún rol, la instancia puede estar en el estado stopped
o running
.
Reemplazar un rol de IAM
Para reemplazar el rol de IAM en una instancia que ya tiene un rol de IAM asociado, la instancia debe estar en el estado running
. Puede hacerlo si desea cambiar el rol de IAM de una instancia sin disociar primero el existente. Por ejemplo, puede hacer esto para asegurarse de que no se interrumpan las acciones de API realizadas por las aplicaciones que se ejecutan en la instancia.
Separar un rol de IAM
Puede separar un rol de IAM de una instancia en ejecución o detenida.
Generar una política para su rol de IAM basada en la actividad de acceso
Cuando crea por primera vez un rol de IAM para las aplicaciones, a veces puede conceder permisos más allá de lo necesario. Antes de iniciar la aplicación en su entorno de producción, puede generar una política de IAM que esté basada en la actividad de acceso de un rol de IAM. El analizador de acceso de IAM revisa los registros de AWS CloudTrail y genera una plantilla de política que contiene los permisos que ha utilizado el rol en el intervalo de fechas especificado. Puede utilizar la plantilla para crear una política administrada con permisos detallados y, a continuación, adjuntarla al rol de IAM. De esta forma, solo concede los permisos que el rol necesita para interactuar con los recursos de AWS para su caso de uso específico. Esto le ayuda a cumplir con la mejor práctica de otorgar privilegios mínimos. Para obtener más información, consulte Generar políticas basadas en la actividad de acceso en la Guía del usuario de IAM.