¿Cuáles son las formas generales en que se puede implementar una gestión de identidad (IAM) para la nube?

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:

  1. Crea un rol de IAM.
  2. Defina qué cuentas o servicios de AWS pueden asumir el rol.
  3. Defina qué acciones y recursos de API puede usar la aplicación después de asumir el rol.
  4. Especifique el rol cuando inicie sus instancias.
  5. 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

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

  1. Inicie sesión en la consola de Identity and Access Management (IAM) en https://console.aws.amazon.com/iam/.
  2. En el panel de navegación, elija Roles y luego elija Crear nuevo rol.
  3. En la página Establecer nombre de rol, ingrese un nombre para el rol y elija Siguiente paso.
  4. En la página Seleccionar tipo de rol, elija Seleccionar junto a Amazon EC2.
  5. 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
  6. 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

  1. Abra la consola Amazon EC2 en https://console.aws.amazon.com/ec2/.
  2. En el tablero, elija Iniciar instancia.
  3. Seleccione una AMI, luego seleccione un tipo de instancia y elija Siguiente: Configurar detalles de la instancia.
  4. 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.
  5. 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.
  6. Revise su configuración, luego elija Iniciar para elegir un par de claves e inicie su instancia.
  7. 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 llamado ec2-role-trust-policy.json . { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com"}, "Action": "sts:AssumeRole" } ] } Cree el rol s3access 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 y ec2-role-access-policy.json en un archivo de texto llamado ec2-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 llamado s3access-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 el s3access para el s3access-profile instancia s3access-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

  1. 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 .
  2. 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

More Interesting

¿Qué es el centro de contacto en la nube?

¿Debo obtener la certificación en AWS y Azure Architect o SAP HANA Cloud Platform ya que he trabajado en SAP durante los últimos 10 años?

¿Cuáles son las ventajas y desventajas de alojar una base de datos en Salesforce's Database.com frente al Servicio de base de datos relacional de Amazon?

¿Cuál es el alcance futuro de la computación en la nube?

¿En qué se diferencia Google Cloud de otro proveedor de nube como AWS o Azure?

¿Es posible hacer un proyecto de nivel universitario de computación en la nube usando la pila abierta en Intel i3 5th gen, 4 gb u 8 gb de RAM y 1 TB? ¿Qué tan difícil es?

¿Qué buscas en una plataforma de almacenamiento en línea?

¿Por qué alguien debería usar OpenStack y por qué alguien usaría VMware Cloud?

¿Cuántas veces AWS ha bajado su precio? Desde su lanzamiento en 2006, AWS ha estado bajando sus precios en varios servicios como EC2 / S3 / RDS ... etc. muchas veces. Estoy empezando a perder la cuenta la cantidad de veces que ha hecho con eso ... ¿Alguien obtiene la cuenta exacta?

¿Qué tan fuertes son los centros de datos de Google, Amazon AWS y Microsoft Azure en los Estados Unidos, y pueden sobrevivir de los ataques con bombas nucleares?

¿Cuál es la diferencia entre AWS CodeDeploy, Beanstalk y OpsWorks?

¿De verdad debería aprender computación en la nube?

¿Qué es la telefonía en la nube?

¿Una certificación de Amazon Web Services (AWS) cuenta para algo en el mercado laboral si no tiene experiencia en TI?

¿Podría un proveedor de computadoras en la nube crear asimetría en la disponibilidad de bitcoins lanzando cientos de miles de mineros de piscinas?