Lea las credenciales del IAM rol en Amazon EC2 - AWS SDK for Java 2.x

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Lea las credenciales del IAM rol en Amazon EC2

Puede usar un IAM rol para administrar las credenciales temporales de las aplicaciones que se ejecutan en una EC2 instancia y que realizan AWS API solicitudes AWS CLI o solicitudes. Esto es preferible a almacenar las claves de acceso en la EC2 instancia. Para asignar un AWS rol a una EC2 instancia y ponerlo a disposición de todas sus aplicaciones, debe crear un perfil de instancia adjunto a la instancia. Un perfil de instancia contiene el rol y permite que los programas que se ejecutan en la EC2 instancia obtengan credenciales temporales. Para obtener más información, consulta Usar un IAM rol para conceder permisos a las aplicaciones que se ejecutan en EC2 instancias de Amazon en la Guía del IAM usuario.

En este tema se proporciona información sobre cómo configurar la aplicación Java para que se ejecute en una EC2 instancia y permitir que Java adquiera credenciales de IAM rol. SDK

Adquiera credenciales de IAM rol del entorno

Si su aplicación crea un cliente de AWS servicio mediante el create método (o builder().build() los métodos), SDK para Java utiliza la cadena de proveedores de credenciales predeterminada. La cadena de proveedores de credenciales predeterminada busca en el entorno de ejecución elementos de configuración que SDK puedan intercambiarse por credenciales temporales. En la sección Cadena predeterminada de proveedores de credenciales se describe el proceso de búsqueda completo.

El último paso de la cadena de proveedores predeterminada solo está disponible cuando la aplicación se ejecuta en una Amazon EC2 instancia. En este paso, SDK utiliza un InstanceProfileCredentialsProvider para leer el IAM rol definido en el perfil de la EC2 instancia. A SDK continuación, adquiere las credenciales temporales para ese IAM rol.

Aunque estas credenciales son temporales y acaban caducando, un InstanceProfileCredentialsProvider las actualiza periódicamente para que sigan permitiendo el acceso a AWS.

Adquiera las credenciales IAM del rol mediante programación

Como alternativa a la cadena de proveedores de credenciales predeterminada, que eventualmente usa una InstanceProfileCredentialsProvider activaciónEC2, puede configurar un cliente de servicio de forma explícita con una. InstanceProfileCredentialsProvider Este método se muestra en el fragmento de código siguiente.

S3Client s3 = S3Client.builder() .credentialsProvider(InstanceProfileCredentialsProvider.create()) .build();

Adquiera credenciales de IAM rol de forma segura

De forma predeterminada, se ejecutan EC2 instancias IMDS(Instance Metadata Service) que permiten InstanceProfileCredentialsProvider a los SDK usuarios acceder a información como el IAM rol que se ha configurado. EC2de forma predeterminada, las instancias se ejecutan IMDS en dos versiones:

  • Versión 1 (IMDSv1) del servicio de metadatos de instancia: un método de solicitud/respuesta

  • Versión 2 (IMDSv2) del servicio de metadatos de instancia: un método orientado a la sesión

IMDSv2es un enfoque más seguro que. IMDSv1

De forma predeterminada, Java SDK primero intenta IMDSv2 obtener el IAM rol, pero si no lo consigue, lo intentaIMDSv1. Sin embargo, dado que IMDSv1 es menos seguro, AWS recomienda usarlo IMDSv2 únicamente e inhabilitar el SDK intentoIMDSv1.

Para utilizar un enfoque más seguro, deshabilite el SDK uso IMDSv1 proporcionando una de las siguientes configuraciones con un valor detrue.

  • Variable de entorno: AWS_EC2_METADATA_V1_DISABLED

  • JVMpropiedad del sistema: aws. disableEc2MetadataV1

  • Configuración del archivo de configuración compartido: ec2_metadata_v1_disabled

Si uno de estos ajustes está establecido entrue, SDK no carga las credenciales del IMDS rol IMDSv1 si se produce un error en la IMDSv2 llamada inicial.