Obtención de credenciales con un proceso externo - AWS Command Line Interface

Python 2.7, 3.4 y 3.5 están obsoletas para la versión 1 de AWS CLI. Para obtener más información, consulte la sección de la versión 1 de AWS CLI de Acerca de las versiones de AWS CLI.

Obtención de credenciales con un proceso externo

aviso

En el siguiente tema, se explica cómo se obtienen credenciales desde un proceso externo. Esto puede suponer un riesgo para la seguridad si el comando que genera las credenciales llega a estar accesible para usuarios o procesos no aprobados. Se recomienda utilizar las alternativas seguras y compatibles ofrecidas por la AWS CLI y AWS para reducir el riesgo de que las credenciales se vean comprometidas. Asegúrese de proteger el archivo config y todos los archivos auxiliares y herramientas para evitar su divulgación.

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.

Si tiene un método para generar o buscar credenciales que no sea directamente compatible con la AWS CLI, puede configurar la AWS CLI para usarla configurando el ajuste de credential_process en el archivo config.

Por ejemplo, puede incluir una entrada similar a la siguiente en el archivo config:

[profile developer] credential_process = /opt/bin/awscreds-custom --username helen

Syntax

Para crear esta cadena de forma que sea compatible con cualquier sistema operativo, siga estas reglas:

  • 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 (" "). La ruta y el nombre de archivo solo pueden constar de los caracteres: A-Z a-z 0-9 - _ . espacio

  • 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 ~. Debe especificar la ruta completa.

Ejemplo para Windows

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

Ejemplo para Linux o macOS

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

Salida prevista del programa Credentials

La AWS CLI ejecuta el comando tal y como se especifica en el perfil y, a continuación, lee datos de STDOUT. El comando que especifique 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": "ISO8601 timestamp 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 ISO8601. Si la clave Expiration no está presente en la salida de la herramienta, la CLI 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.

nota

La AWS CLI 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.