Proveedor de credenciales de proceso - AWS SDK y herramientas

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.

Proveedor de credenciales de proceso

Los SDK proporcionan una forma de ampliar la cadena de proveedores de credenciales para casos de uso personalizados.

IAM Roles Anywhere proporciona una forma de obtener credenciales temporales para una carga de trabajo o un proceso que se ejecuta fuera de. AWS Para configurar credential_process para este uso, consulte Funciones de IAM en cualquier lugar.

aviso

A continuación se describe un método para obtener credenciales de un proceso externo. Esto puede resultar peligroso, así que proceda con precaución. Si es posible, se debe dar preferencia 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 la herramienta de credenciales personalizada no escriba ninguna información secreta en StdErr, ya que los SDK y la AWS CLI pueden capturar y registrar dicha información y podrían mostrarla a usuarios no autorizados.

Configure esta funcionalidad mediante lo siguiente:

credential_process- configuración de AWS config archivos compartidos

Especifica un comando externo que el SDK o la herramienta ejecuta para generar o recuperar las credenciales de autenticación que se van a utilizar. La configuración especifica el nombre del programa o comando que invocará el SDK. Cuando el SDK invoca el proceso, espera a que el proceso escriba los datos de JSON a stdout. El proveedor personalizado debe devolver la información en un formato específico. Esa información contiene las credenciales que el SDK o la herramienta pueden usar para autenticarlo.

nota

El proveedor de credenciales del proceso forma parte del Cadena de proveedores de credenciales. Sin embargo, el proveedor de credenciales del proceso solo se comprueba después de varios otros proveedores de esta serie. Por lo tanto, si desea que su programa utilice las credenciales de este proveedor, debe eliminar otros proveedores de credenciales válidos de la configuración o utilizar un perfil diferente. Como alternativa, en lugar de confiar en la cadena de proveedores de credenciales para descubrir automáticamente qué proveedor devuelve credenciales válidas, especifique el uso del proveedor de credenciales de proceso en el código. Puede especificar las fuentes de credenciales directamente al crear clientes de servicio.

Especificar la ruta al programa de credenciales

El valor de la configuración es una cadena que contiene una ruta a un programa que el SDK o la herramienta de desarrollo ejecutan en su nombre:

  • La ruta y el nombre del archivo solo pueden constar de los siguientes caracteres: A-Z, a-z, 0-9, guion ( - ), guion bajo ( _ ), punto ( . ), barra oblicua ( / ), barra diagonal inversa ( \ ) y espacio.

  • Si la ruta de acceso o el nombre del archivo contienen un espacio, rodee la ruta completa y el nombre del archivo con comillas dobles (" ").

  • Si un nombre de parámetro o un valor de parámetro contienen un espacio, rodee ese elemento con comillas dobles (" "). Incluya solo el nombre o el valor, no el par.

  • No incluya ninguna variable de entorno en las cadenas. Por ejemplo, no puede incluir $HOME ni %USERPROFILE%.

  • No especifique la carpeta de inicio como ~. * En la solicitud debe especificar la ruta completa o el nombre del archivo base. Si hay un nombre de archivo base, el sistema intentará encontrar el programa en las carpetas especificadas por la variable del entorno PATH.

    El siguiente ejemplo muestra la configuración de credential_process en el archivo config compartido en Linux/macOS.

    credential_process = "/path/to/credentials.sh" parameterWithoutSpaces "parameter with spaces"

    El siguiente ejemplo muestra la configuración de credential_process en el archivo config compartido en Windows.

    credential_process = "C:\Path\To\credentials.cmd" parameterWithoutSpaces "parameter with spaces"

Salida válida del programa de credenciales

El SDK ejecuta el comando tal y como se especifica en el perfil y luego lee datos de la secuencia de salida estándar. El comando que especifique, ya se trate de una secuencia de comandos o de un programa binario, debe generar una salida JSON en STDOUT que se ajuste a la siguiente sintaxis.

{ "Version": 1, "AccessKeyId": "an AWS access key", "SecretAccessKey": "your AWS secret access key", "SessionToken": "the AWS session token for temporary credentials", "Expiration": "RFC3339 timestamp for when the credentials expire" }
nota

En la fecha de publicación del presente documento, la clave Version debe establecerse en 1. Puede aumentar con el paso del tiempo a medida que la estructura evolucione.

La clave Expiration es una marca temporal con formato RFC3339. Si la clave de Expiration no está presente en la salida de la herramienta, el SDK da por hecho que las credenciales son credenciales a largo plazo que no se actualizan. De otro modo, las credenciales se consideran credenciales temporales y se actualizan automáticamente volviendo a ejecutar el comando credential_process antes de que caduquen las credenciales.

nota

El SDK no almacena en caché credenciales de procesos externos de la forma que lo hace con las credenciales de asunción de rol. Si se requiere el almacenamiento en caché, debe implementarlo en el proceso externo.

El proceso externo puede devolver un código de devolución distinto de cero para indicar que se ha producido un error al intentar recuperar las credenciales.

Compatibilidad con los AWS SDK

Los siguientes SDK admiten las características y los ajustes descritos en este tema. Se anotan todas las excepciones parciales. Todos los ajustes de propiedades del sistema JVM son compatibles con AWS SDK for Java y únicamente. AWS SDK para Kotlin

SDK Compatible Notas o más información
AWS CLI  v2
SDK para C++
SDK para Go V2 (1.x)
SDK para Go 1.x (V1) Para usar la configuración de archivos compartidosconfig, debe activar la carga desde el archivo de configuración; consulte Sesiones.
SDK para Java 2.x
SDK para Java 1.x
SDK para 3.x JavaScript
SDK para 2.x JavaScript
SDK para Kotlin
SDK para .NET 3.x
SDK para PHP 3.x
SDK para Python (Boto3)
SDK para Ruby 3.x
SDK para Rust
Herramientas para PowerShell