View a markdown version of this page

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

nota

Para obtener ayuda para comprender el diseño de las páginas de configuración o para interpretar la tabla Support by AWS SDKs and tools que aparece a continuación, consulteCómo comprender las páginas de configuración de esta guía.

Los SDK proporcionan una forma de ampliar la cadena de proveedores de credenciales para casos de uso personalizados. Este proveedor se puede utilizar para proporcionar implementaciones personalizadas, como recuperar credenciales de un almacén de credenciales en las instalaciones o integrarlas con su proveedor de identificación en las instalaciones.

Por ejemplo, IAM Roles Anywhere utiliza credential_process para obtener credenciales temporales en nombre de su aplicación. Para configurar credential_process para este uso, consulte Uso de funciones de IAM en cualquier lugar para AWS SDKs autenticar y utilizar herramientas.

nota

A continuación se describe un método para obtener credenciales de un proceso externo y se puede utilizar si se ejecuta software fuera de AWS. Si se basa en un recurso AWS informático, utilice 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. Confirme que su herramienta de credenciales personalizada no escriba información secretaStdErr, ya que los SDK AWS CLI pueden capturar y registrar dicha información, lo que podría exponerla a usuarios no autorizados.

Configure esta funcionalidad mediante lo siguiente:

credential_process- configuración de archivos compartidos AWS config

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 de un program/command 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 Comprender la 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, guión (-), guión bajo (_), punto (.), barra diagonal (/), barra invertida (\) 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. La ruta varía en función del sistema operativo:

    En el siguiente ejemplo, se muestra la configuración de credential_process en el archivo compartido. config 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"
  • Se puede especificar dentro de un perfil dedicado:

    [profile cred_process] credential_process = /Users/username/process.sh region = us-east-1

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", "AccountId": "the AWS account ID associated with these credentials" }
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 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.

nota

AccountIdes opcional, por lo que las credenciales funcionan sin él, pero si se proporciona, se optimiza la resolución de puntos finales para los servicios que lo admiten. Cuando el SDK sabe a qué cuenta pertenecen las credenciales, algunos AWS servicios pueden usar puntos de conexión específicos de la cuenta. Por ejemplo, Amazon S3 puede enrutar las solicitudes a un punto de enlace con el ámbito de la cuenta en lugar de al punto de enlace global. Sin ellaAccountId, el SDK debe basarse en otros mecanismos para determinar la cuenta o no puede usar el enrutamiento de puntos de conexión basado en la cuenta.

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.

Support de AWS SDK y herramientas

Los siguientes SDK admiten las características y los ajustes descritos en este tema. Se anotan todas las excepciones parciales. Cualquier configuración de propiedades del sistema JVM es compatible con AWS SDK para Java y AWS SDK para Kotlin únicamente.

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 compartidos config, 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 4.x
SDK para .NET 3.x
SDK para PHP 3.x
SDK para Python (Boto3)
SDK para Ruby 3.x
SDK para Rust
SDK para Swift
Herramientas para V5 PowerShell
Herramientas para V4 PowerShell