Cargar las credenciales temporales de un proceso externo - 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.

Cargar las credenciales temporales de un proceso externo

aviso

A continuación se describe un método para obtener credenciales de un proceso externo. Esto resulta potencialmente peligroso, así que proceda con precaución. En la medida de lo posible, se debe preferir a otros proveedores de credenciales. Si usa esta opción, debe asegurarse de que el archivo config esté lo más bloqueado posible siguiendo las mejores prácticas de seguridad para su sistema operativo.

Asegúrese de que su herramienta de credenciales personalizadas no escriba ninguna información secreta en ella StdErr. SDKsy AWS CLI puede capturar y registrar dicha información, lo que podría exponerla a usuarios no autorizados.

Con la SDK versión 2.x para Java, puede adquirir credenciales temporales mediante un proceso externo para casos de uso personalizados. Hay dos formas de configurar esta funcionalidad.

Usar la configuración de credential_process

Si tiene un método que proporciona credenciales temporales, puede integrarlo añadiendo la configuración de credential_process como parte de una definición de perfil en el archivo config. El valor que especifique debe utilizar la ruta completa al archivo de comandos. Si la ruta del archivo contiene espacios, debe escribirla entre comillas.

SDKLlama al comando exactamente como se indica y, a continuación, lee JSON los datosstdout.

Los ejemplos siguientes muestran el uso de esta configuración para las rutas de archivos sin espacios y las rutas de archivos con espacios.

Linux/macOS
Sin espacios en la ruta del archivo
[profile process-credential-profile] credential_process = /path/to/credential/file/credential_file.sh --custom-command custom_parameter
Con espacios en la ruta del archivo
[profile process-credential-profile] credential_process = "/path/with/space to/credential/file/credential_file.sh" --custom-command custom_parameter
Windows
Sin espacios en la ruta del archivo
[profile process-credential-profile] credential_process = C:\Path\To\credentials.cmd --custom_command custom_parameter
Con espacios en la ruta del archivo
[profile process-credential-profile] credential_process = "C:\Path\With Space To\credentials.cmd" --custom_command custom_parameter

El siguiente fragmento de código muestra cómo crear un cliente de servicio que utilice la configuración definida como parte del perfil denominado process-credential-profile.

Region region = Region.US_WEST_2; S3Client s3Client = S3Client.builder() .region(region) .credentialsProvider(ProfileCredentialsProvider.create("process-credential-profile")) .build();

Para obtener información detallada sobre el uso de un proceso externo como fuente de credenciales temporales, consulte la sección sobre credenciales del proceso en la Guía de referencia de herramientas AWS SDKs y herramientas.

Utilizar un ProcessCredentialsProvider.

Como alternativa al uso de los ajustes del config archivo, puede utilizar los SDK valores ProcessCredentialsProvider para cargar credenciales temporales mediante Java.

Los siguientes ejemplos muestran varias versiones de cómo especificar un proceso externo utilizando el ProcessCredentialsProvider y configurando un cliente de servicio que utilice las credenciales temporales.

Linux/macOS
Sin espacios en la ruta del archivo
ProcessCredentialsProvider credentials = ProcessCredentialsProvider .builder() .command("/path/to/credentials.sh optional_param1 optional_param2") .build(); S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(credentials) .build();
Con espacios en la ruta del archivo
ProcessCredentialsProvider credentials = ProcessCredentialsProvider .builder() .command("/path\\ with\\ spaces\\ to/credentials.sh optional_param1 optional_param2") .build(); S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(credentials) .build();
Windows
Sin espacios en la ruta del archivo
ProcessCredentialsProvider credentials = ProcessCredentialsProvider .builder() .command("C:\\Path\\To\\credentials.exe optional_param1 optional_param2") .build(); S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(credentials) .build();
Con espacios en la ruta del archivo
ProcessCredentialsProvider credentials = ProcessCredentialsProvider .builder() .command("\"C:\\Path\\With Spaces To\\credentials.exe\" optional_param1 optional_param2") .build(); S3Client s3 = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(credentials) .build();

Usa IAM Roles Anywhere para la autenticación

IAMRoles Anywhere es una Servicio de AWS herramienta que le permite obtener AWS credenciales temporales para cargas de trabajo que se ejecutan fuera de AWS. Permite el acceso seguro a AWS los recursos desde entornos locales u otros entornos en la nube.

Para poder autenticar las solicitudes con IAM Roles Anywhere, primero debe recopilar la información necesaria y descargar la herramienta de ayuda para las credenciales. Si sigue las instrucciones de introducción de la guía del usuario de IAM Roles Anywhere, puede crear los artefactos necesarios.

En el SDK caso de Java, no hay un proveedor de credenciales específico para recuperar las credenciales temporales de IAM Roles Anywhere, pero puedes usar la herramienta de ayuda de credenciales junto con una de las opciones para recuperar las credenciales de un proceso externo.

Usa la credential_process configuración en un perfil

El siguiente fragmento del archivo de AWS configuración compartido muestra un nombre de perfil roles_anywhere que usa la credential_process configuración:

[profile roles_anywhere] credential_process = ./aws_signing_helper credential-process \ --certificate /path/to/certificate \ --private-key /path/to/private-key \ --trust-anchor-arn arn:aws:rolesanywhere:region:account:trust-anchor/TA_ID \ --profile-arn arn:aws:rolesanywhere:region:account:profile/PROFILE_ID \ --role-arn arn:aws:iam::account:role/role-name-with-path

Debe reemplazar el texto que se muestra en rojo por sus valores después de haber ensamblado todos los artefactos. El primer elemento de la configuración es el ejecutable de la herramienta auxiliar de credenciales y credential-process es el comando. aws_signing_helper

Al configurar un cliente de servicio para que utilice el roles_anywhere perfil, como se muestra en el código siguiente, guarda en SDK caché las credenciales temporales y las actualiza antes de que caduquen:

S3Client s3Client = S3Client.builder() .credentialsProvider(ProfileCredentialsProvider.builder() .profileName("roles_anywhere").build()) .build();

Configure un ProcessCredentialsProvider

Como se muestra a continuación, puede utilizar un enfoque de solo código con la configuración del perfil ProcessCredentialsProvider en lugar de utilizar:

ProcessCredentialsProvider processCredentialsProvider = ProcessCredentialsProvider.builder() .command(""" ./aws_signing_helper credential-process \ --certificate /path/to/certificate \ --private-key /path/to/private-key \ --trust-anchor-arn arn:aws:rolesanywhere:region:account:trust-anchor/TA_ID \ --profile-arn arn:aws:rolesanywhere:region:account:profile/PROFILE_ID \ --role-arn arn:aws:iam::account:role/role-name-with-path """).build(); S3Client s3Client = S3Client.builder() .credentialsProvider(processCredentialsProvider) .build();

Sustituya el texto que se muestra en rojo por sus valores después de haber ensamblado todos los artefactos.