Buscar este blog

Aviso

El autor de éste blog no se hace responsable de los posibles daños o perdidas de información, que pudieran ocasionarse en su sistema o su vida por la aplicación de la información aquí contenida.

jueves, 23 de enero de 2020

¿De dónde vienen las credenciales de rol de las instancias en EC2?

Normalmente te encuentras con dudas,  dudas que te hacen pensar, yo uso X biblioteca,  pero cómo lo hace?

Este es el caso de garantizar a una aplicación el acceso a ciertos recursos se usa normalmente la idea del ROL de las Instancias, es buena idea pero entrando a inspeccionar la instancia no encontraba ningún lugar de donde la aplicación pudiera obtenerlas, así que me dispuse a entrar en las entrañas de la biblioteca en búsqueda de algo que me dijera qué estaba pasando?

Lo que hace es buscar en el siguiente orden:
1. Buscar en los System Properties de Java las clavess aws.accessKeyId y aws.secretKey.
2. Buscar las variables de entorno AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY.
3. Buscar en el archivo de credenciales predeterminado para el usuario actual, normalmente ~/.aws/credentials
4. Buscar en una url que se expone la variable de entorno AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
5. Buscar en la metadata que tiene la instancia, esta url se puede armar mediante otras variables de entorno pero normalmente es http://169.254.169.254/latest/meta-data/iam/security-credentials/ecsInstanceRole

Esta última es la que logré encontrar y contiene la respuesta del accesskey y secretaccesskey que necesita la aplicación para conectar.

{
  "Code" : "Success",
  "LastUpdated" : "2020-01-23T22:38:07Z",
  "Type" : "AWS-HMAC",
  "AccessKeyId" : "ABC1234",
  "SecretAccessKey" : "KEY/AWS",
  "Token" : "TOKEN==",
  "Expiration" : "2020-01-24T05:06:30Z"
}


REFERENCIAS:
- https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-roles.html
- https://rclayton.silvrback.com/using-the-instance-role-manually-on-an-ec2-instance

Más populares

Archivo del blog