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
Sintaxis
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 ISO8601Expiration
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.