Estoy usando el comando "aws ec2 run-Instances" (de la interfaz de línea de comandos de AWS (CLI) ) para iniciar una instancia de Amazon EC2 . Quiero establecer un rol de IAM para la instancia EC2 que estoy iniciando. El rol de IAM está configurado y puedo usarlo con éxito al iniciar una instancia desde la interfaz de usuario web de AWS. Pero cuando trato de hacer esto usando ese comando, y la opción "--iam-instance-profile", falló. Hacer "ayuda de instancias de ejecución aws ec2" muestra los subcampos Arn = y Name = para el valor. Cuando intento buscar el Arn usando "aws iam list-instance-profiles" me da este mensaje de error:
Se produjo un error del cliente (AccessDenied): Usuario: arn: aws: sts :: xxxxxxxxxxxx: asumido-rol / shell / i-15c2766d no está autorizado para realizar: iam: ListInstanceProfiles en el recurso: arn: aws: iam :: xxxxxxxxxxxx: instancia -perfil/
(donde xxxxxxxxxxxx es mi número de cuenta de 12 dígitos de AWS)
Busqué la cadena Arn a través de la interfaz de usuario web y la usé a través de "--iam-instance-profile Arn = arn: aws: iam :: xxxxxxxxxxxx: instance-profile / shell" en el comando run-Instances, y eso falló con :
Se produjo un error del cliente (Operación no autorizada): no está autorizado para realizar esta operación.
Si dejo por completo la opción "--iam-instance-profile", la instancia se iniciará pero no tendrá la configuración de rol de IAM que necesito. Entonces, el permiso parece tener algo que ver con usar "--iam-instance-profile" o acceder a los datos de IAM. Repetí varias veces en caso de fallas de AWS (a veces ocurren) y no hubo éxito.
Sospeché que quizás haya una restricción de que una instancia con un rol de IAM no pueda iniciar una instancia con un rol de IAM más potente. Pero en este caso, la instancia en la que estoy haciendo el comando tiene el mismo rol de IAM que estoy tratando de usar. llamado "shell" (aunque también intenté usar otro, no tuve suerte).
¿La configuración de un rol de IAM ni siquiera está permitida desde una instancia (a través de sus credenciales de rol de IAM)?
¿Se necesita un permiso de rol de IAM más alto para usar roles de IAM que el que se necesita para lanzar una instancia simple?
¿Es "--iam-instance-profile" la forma adecuada de especificar un rol de IAM?
¿Necesito usar un subconjunto de la cadena Arn o formatearlo de alguna otra manera?
¿Es posible configurar un rol de IAM que pueda hacer cualquier acceso al rol de IAM (tal vez un "Super Root IAM" ... inventando este nombre)?
Para su información, todo implica que Linux se ejecute en las instancias. Además, estoy ejecutando todo esto desde una instancia porque no pude instalar estas herramientas en mi escritorio. Eso y no quiero poner mis credenciales de usuario de IAM en ningún almacenamiento de AWS como lo aconseja AWS aquí .
después de contestado:
No mencioné el permiso de la instancia de inicio de "PowerUserAccess" (vs. "AdministratorAccess") porque no me di cuenta de que se necesitaba acceso adicional en el momento en que se hizo la pregunta. Supuse que el rol de IAM era "información" adjunta al lanzamiento. Pero realmente es más que eso. Es una concesión de permiso.
fuente
Para lanzar una instancia EC2 con un rol de IAM se requiere acceso administrativo a la instalación de IAM. Esto se aplica incluso si la nueva instancia debe tener exactamente el mismo rol que la instancia que realiza el lanzamiento. La instancia desde la que estaba iniciando tenía el permiso "PowerUserAccess", que permitía iniciar una instancia, pero no el acceso a roles de IAM. Una vez que avancé el permiso en la instancia de lanzamiento a "AdministratorAccess", funcionó.
Debido a que los roles de IAM otorgan permisos, claramente hay un problema de seguridad que debe abordarse. No querrá que los roles de IAM sean un medio para permitir la escalada de permisos. Pero esto también significa que, para otorgar cualquier rol de IAM, la instancia de inicio debe tener "Acceso de administrador" o estar utilizando claves de acceso / secreto de usuario (con dicho permiso) desde dentro de la instancia (no recomendado), lo que permitiría otorgar cualquier rol de IAM.
Sería útil poder iniciar una instancia con el mismo permiso (mismo rol de IAM) que la instancia que realiza el inicio, pero EC2 o IAM no tienen este nivel de granularidad o no tienen los medios para verificarlo de manera segura .
fuente