Los roles de IAM se diseñaron para que sus aplicaciones puedan realizar solicitudes API de forma segura desde sus instancias, sin necesidad de que administre las credenciales de seguridad que utilizan las aplicaciones. En lugar de crear y distribuir sus credenciales de AWS, puede delegar el permiso para realizar solicitudes de API utilizando los roles de IAM de la siguiente manera:
- Crea un rol de IAM.
- Defina qué cuentas o servicios de AWS pueden asumir el rol.
- Defina qué acciones y recursos de API puede usar la aplicación después de asumir el rol.
- Especifique el rol cuando inicie sus instancias.
- Haga que la aplicación recupere un conjunto de credenciales temporales y las use.
Por ejemplo, puede usar los roles de IAM para otorgar permisos a las aplicaciones que se ejecutan en sus instancias que necesitan usar un depósito en Amazon S3.
Nota
- ¿Quiénes son algunos individuos en Quora o en la web más grande, que están en la vanguardia de la computación en la nube?
- ¿Qué se entiende por computación en la nube?
- ¿Cuál es el mejor sistema SaaS colaborativo y basado en la nube para documentar productos existentes, infraestructura de alojamiento y software dentro de una empresa?
- ¿Qué significan el sistema operativo y la computación en la nube?
- Cómo estimar mis costos de transferencia de datos en la nube híbrida
Amazon EC2 usa un perfil de instancia como contenedor para un rol de IAM. Cuando crea un rol de IAM utilizando la consola, la consola crea un perfil de instancia automáticamente y le da el mismo nombre que el rol al que corresponde. Si utiliza la CLI de AWS, la API o un SDK de AWS para crear una función, creará la función y el perfil de instancia como acciones separadas, y podría asignarles nombres diferentes. Para iniciar una instancia con un rol de IAM, especifique el nombre de su perfil de instancia. Cuando inicia una instancia con la consola Amazon EC2, puede seleccionar un rol para asociar con la instancia; sin embargo, la lista que se muestra es en realidad una lista de nombres de perfil de instancia. Para obtener más información, consulte Perfiles de instancia en la Guía del usuario de IAM .
Puede especificar permisos para los roles de IAM creando una política en formato JSON. Estas son similares a las políticas que crea para los usuarios de IAM. Si realiza un cambio en un rol, el cambio se propaga a todas las instancias, lo que simplifica la administración de credenciales.
Nota
No puede asignar un rol a una instancia existente; solo puede especificar un rol cuando inicia una nueva instancia.
Para obtener más información sobre cómo crear y usar roles de IAM, consulte Roles en la Guía del usuario de IAM .
Temas
- Recuperación de credenciales de seguridad de metadatos de instancia
- Conceder un permiso de usuario de IAM para iniciar una instancia con un rol de IAM
- Crear un rol de IAM usando la consola
- Lanzamiento de una instancia con un rol de IAM utilizando la consola
- Creación de un rol de IAM con la AWS CLI
- Inicio de una instancia con un rol de IAM mediante la CLI de AWS
Recuperación de credenciales de seguridad de metadatos de instancia
Una aplicación en la instancia recupera las credenciales de seguridad proporcionadas por el rol del elemento de metadatos de instancia iam/security-credentials/
role-name . La aplicación recibe los permisos para las acciones y los recursos que ha definido para el rol a través de las credenciales de seguridad asociadas al rol. Estas credenciales de seguridad son temporales y las rotamos automáticamente. Ponemos a disposición nuevas credenciales al menos cinco minutos antes del vencimiento de las antiguas.
Advertencia
Si usa servicios que usan metadatos de instancia con roles de IAM, asegúrese de no exponer sus credenciales cuando los servicios realicen llamadas HTTP en su nombre. Los tipos de servicios que podrían exponer sus credenciales incluyen proxies HTTP, servicios de validación HTML / CSS y procesadores XML que admiten la inclusión de XML.
El siguiente comando recupera las credenciales de seguridad para un rol de IAM llamado s3access
.
$ curl http://169.254.169.254/latest/meta-data/iam/security-credentials/s3access
El siguiente es un ejemplo de salida.
{
“Código”: “Éxito”,
“LastUpdated”: “2012-04-26T16: 39: 16Z”,
“Tipo”: “AWS-HMAC”,
“AccessKeyId”: “AKIAIOSFODNN7EXAMPLE”,
“SecretAccessKey”: “wJalrXUtnFEMI / K7MDENG / bPxRfiCYEXAMPLEKEY”,
“Token”: “token”,
“Caducidad”: “2012-04-27T22: 39: 16Z”
}
Para las aplicaciones, la AWS CLI y los comandos de Herramientas para Windows PowerShell que se ejecutan en la instancia, no tiene que obtener explícitamente las credenciales de seguridad temporales: los SDK de AWS, la CLI de AWS y las Herramientas para Windows PowerShell obtienen automáticamente las credenciales de la instancia EC2 servicio de metadatos y úselos. Para realizar una llamada fuera de la instancia con credenciales de seguridad temporales (por ejemplo, para probar las políticas de IAM), debe proporcionar la clave de acceso, la clave secreta y el token de sesión. Para obtener más información, consulte Uso de credenciales de seguridad temporales para solicitar acceso a recursos de AWS en la Guía del usuario de IAM .
Para obtener más información sobre metadatos de instancia, consulte Metadatos de instancia y Datos de usuario.
Conceder un permiso de usuario de IAM para iniciar una instancia con un rol de IAM
Para permitir que un usuario de IAM inicie una instancia con un rol de IAM, debe otorgarle al usuario permiso para pasar el rol a la instancia.
Por ejemplo, la siguiente política de IAM otorga a los usuarios permiso para iniciar una instancia con el rol de IAM llamado s3access
.
{
“Versión”: “2012-10-17”,
“Declaración”: [{
“Efecto”: “Permitir”,
“Acción”: “iam: PassRole”,
“Recurso”: “arn: aws: iam :: 123456789012: role / s3access”
}]
}
Alternativamente, puede otorgar a los usuarios de IAM acceso a todos sus roles especificando el recurso como “*” en esta política. Sin embargo, considere si los usuarios que inician instancias con sus roles (los que existen o que creará más adelante) pueden recibir permisos que no necesitan o no deberían tener.
Para obtener más información, consulte Permisos necesarios para usar roles con Amazon EC2 en la Guía del usuario de IAM .
Crear un rol de IAM usando la consola
Debe crear una función de IAM antes de poder iniciar una instancia con esa función.
Para crear un rol de IAM utilizando la consola de IAM
- Inicie sesión en la consola de Identity and Access Management (IAM) en https://console.aws.amazon.com/iam/.
- En el panel de navegación, elija Roles y luego elija Crear nuevo rol.
- En la página Establecer nombre de rol, ingrese un nombre para el rol y elija Siguiente paso.
- En la página Seleccionar tipo de rol, elija Seleccionar junto a Amazon EC2.
- En la página Adjuntar política, seleccione una política administrada por AWS. Por ejemplo, para Amazon EC2, una de las siguientes políticas administradas por AWS podría satisfacer sus necesidades: PowerUserAccessReadOnlyAccessAmazonEC2FullAccessAmazonEC2ReadOnlyAccess
- Revise la información del rol, edite el rol según sea necesario y luego elija Crear rol.
Lanzamiento de una instancia con un rol de IAM utilizando la consola
Después de crear una función de IAM, puede iniciar una instancia y asociar esa función con la instancia durante el inicio.
Importante
Después de crear una función de IAM, los permisos pueden tardar varios segundos en propagarse. Si falla su primer intento de iniciar una instancia con un rol, espere unos segundos antes de volver a intentarlo. Para obtener más información, consulte Solución de problemas de trabajo con roles en la Guía del usuario de IAM .
Para iniciar una instancia con un rol de IAM
- Abra la consola Amazon EC2 en https://console.aws.amazon.com/ec2/.
- En el tablero, elija Iniciar instancia.
- Seleccione una AMI, luego seleccione un tipo de instancia y elija Siguiente: Configurar detalles de la instancia.
- En la página Configurar detalles de instancia, seleccione el rol de IAM que creó de la lista de roles de IAM. Nota: La lista de roles de IAM muestra el nombre del perfil de instancia que creó cuando creó su rol de IAM. Si creó su rol de IAM utilizando la consola, el perfil de instancia se creó para usted y se le dio el mismo nombre que el rol. Si creó su rol de IAM utilizando la CLI de AWS, la API o un SDK de AWS, es posible que haya nombrado su perfil de instancia de manera diferente.
- Configure cualquier otro detalle, luego siga las instrucciones del resto del asistente o elija Revisar e iniciar para aceptar la configuración predeterminada e ir directamente a la página Revisar lanzamiento de instancia.
- Revise su configuración, luego elija Iniciar para elegir un par de claves e inicie su instancia.
- Si está utilizando las acciones de la API de Amazon EC2 en su aplicación, recupere las credenciales de seguridad de AWS disponibles en la instancia y úselas para firmar las solicitudes. Tenga en cuenta que AWS SDK lo hace por usted.
$
curl
http:
/
/169.254.169.254/latest
/meta-data/iam
/security-credentials/
role
_name
Creación de un rol de IAM con la AWS CLI
Debe crear una función de IAM antes de poder iniciar una instancia con esa función.
Para crear un rol de IAM con la AWS CLI
- Cree una función de IAM con una política que permita que la función use un bucket de Amazon S3. Cree la siguiente política de confianza y
ec2-role-trust-policy.json
en un archivo de texto llamadoec2-role-trust-policy.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com"}, "Action": "sts:AssumeRole" } ] }
Cree el rols3access
y especifique la política de confianza que creó.$
aws iam
create
-
role --role-name s3access --assume-role-policy-document file://ec2-role-trust-policy.json
{“Rol”: {“AssumeRolePolicyDocument”: {“Versión”: ” 2012-10-17 “,” Declaración “: [{” Acción “:” sts: AssumeRole “,” Efecto “:” Permitir “,” Principal “: {” Servicio “:” Elastic Compute Cloud (EC2) Cloud Server & Alojamiento: AWS “}}]},” RoleId “:” AROAIIZKPBKS2LEXAMPLE “,” CreateDate “:” 2013-12-12T23: 46: 37.247Z “,” RoleName “:” s3access “,” Path “:” / “, “Arn”: “arn: aws: iam :: 123456789012: role / s3access”}} Crea una política de acceso yec2-role-access-policy.json
en un archivo de texto llamadoec2-role-access-policy.json
. Por ejemplo, esta política otorga permisos administrativos para Amazon S3 a las aplicaciones que se ejecutan en la instancia.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:*"], "Resource": ["*"] } ] }
Adjunte la política de acceso al rol.$
aws iam put-role-policy --role-name s3access --policy-name S3-Permissions --policy-document file://ec2-role-access-policy.json
Cree un perfil de instancia llamados3access-profile
.$
aws iam
create
-
instance
-profile --instance-profile-name s3access-profile
{“InstanceProfile”: {“InstanceProfileId”: “AIPAJTLBPJLEGREXAMPLE”, “Roles”: [], “CreateDate”: “2013-12-12T23:” 53: 34.093Z “,” InstanceProfileName “:” s3access-profile “,” Path “:” / “,” Arn “:” arn: aws: iam :: 123456789012: instance-profile / s3access-profile “}} Agregue els3access
para els3access-profile
instancias3access-profile
profile.$
aws
iam add-role-to-instance-profile --instance-profile-name s3access-profile --role-name s3access
Para obtener más información sobre estos comandos, consulte create-role, put-role-policy y create-instance -perfil en la Referencia de la interfaz de línea de comandos de AWS .
Inicio de una instancia con un rol de IAM mediante la CLI de AWS
Después de crear una función de IAM, puede iniciar una instancia y asociar esa función con la instancia durante el inicio.
Importante
Después de crear una función de IAM, los permisos pueden tardar varios segundos en propagarse. Si falla su primer intento de iniciar una instancia con un rol, espere unos segundos antes de volver a intentarlo. Para obtener más información, consulte Solución de problemas de trabajo con roles en la Guía del usuario de IAM .
Para iniciar una instancia con un rol de IAM utilizando la CLI de AWS
- Inicie una instancia con el perfil de instancia. El siguiente ejemplo muestra cómo iniciar una instancia con el perfil de instancia.
$
aws ec2 run-instances --image-id ami-11aa22bb --iam-instance-profile Name="s3access-profile" --key-name my-key-pair --security-groups my-security-group --subnet-id subnet-1a2b3c4d
Para obtener más información, consulte instancias de ejecución en la Referencia de la interfaz de línea de comandos de AWS . - Si está utilizando las acciones de la API de Amazon EC2 en su aplicación, recupere las credenciales de seguridad de AWS disponibles en la instancia y úselas para firmar las solicitudes. Tenga en cuenta que AWS SDK lo hace por usted.
$
curl
http:
/
/169.254.169.254/latest
/meta-data/iam
/security-credentials/
role_name