Uso de proveedores de credenciales de AWS SDK para Rust
Todas las solicitudes a AWS deben firmarse criptográficamente mediante credenciales emitidas por AWS. El SDK recupera en tiempo de ejecución los valores de configuración de las credenciales comprobando distintas ubicaciones.
Si la configuración recuperada incluye configuración de acceso de inicio de sesión único de AWS IAM Identity Center, el SDK trabaja con IAM Identity Center para recuperar las credenciales temporales que usa para realizar solicitudes a los Servicios de AWS.
Si la configuración recuperada incluye credenciales temporales, el SDK las utiliza para realizar llamadas al Servicio de AWS. Las credenciales temporales están formadas por claves de acceso y un token de sesión.
La autenticación con AWS se puede gestionar fuera del código base. El SDK puede detectar, utilizar y actualizar automáticamente muchos métodos de autenticación mediante la cadena de proveedores de credenciales.
Para ver algunas opciones que le ayuden a empezar a autenticar su proyecto en AWS, consulte Autenticación y acceso en la Guía de referencia de las herramientas y los SDK de AWS.
Cadena de proveedores de credenciales
Si no especifica de manera explícita un proveedor de credenciales al crear un cliente, el SDK para Ruby usa una cadena de proveedores de credenciales que comprueba una serie de lugares donde puede proporcionar credenciales. Cuando el SDK encuentra credenciales en una de esas ubicaciones, la búsqueda se detiene. Para obtener más información sobre la creación de clientes, consulte Configuración de clientes de servicio de AWS SDK para Rust en código.
El siguiente ejemplo no especifica un proveedor de credenciales en el código. El SDK usa la cadena de proveedores de credenciales para detectar la autenticación que se ha configurado en el entorno de alojamiento y usa esa autenticación para las llamadas a los Servicios de AWS.
let config = aws_config::defaults(BehaviorVersion::latest()).load().await; let s3 = aws_sdk_s3::Client::new(&config);
Orden de recuperación de credenciales
La cadena de proveedores de credenciales busca las credenciales mediante la siguiente secuencia predefinida:
-
Variables de entorno de clave de acceso
El SDK intenta cargar credenciales de las variables de entorno
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEYyAWS_SESSION_TOKEN. -
Archivos
configycredentialsde AWS compartidosEl SDK intenta cargar credenciales del perfil
[default]en los archivosconfigycredentialsde AWS compartidos. Puede usar la variable de entornoAWS_PROFILEpara elegir un perfil con nombre que desee que cargue el SDK en lugar de usar[default]. Varios SDK y herramientas de AWS comparten los archivosconfigycredentials. Para obtener más información, consulte Archivosconfigycredentialscompartidos en la Guía de referencia de las herramientas y los SDK de AWS.Si utiliza IAM Identity Center para la autenticación, el SDK para Rust utiliza el token de inicio de sesión único que se ha configurado mediante la ejecución del comando
aws sso loginde la CLI de AWS. El SDK usa las credenciales temporales que IAM Identity Center ha intercambiado por un token válido. A continuación, el SDK utiliza las credenciales temporales cuando llama a los Servicios de AWS. Para obtener información detallada sobre este proceso, consulte Comprenda la resolución de credenciales del SDK para Servicios de AWS en la Guía de referencia de las herramientas y los SDK de AWS.-
Para obtener información sobre cómo configurar este proveedor, consulte la Autenticación de IAM Identity Center en la Guía de referencia de las herramientas y los SDK de AWS.
-
Para obtener más información sobre las propiedades de configuración del SDK para este proveedor, consulte Proveedor de credenciales del IAM Identity Center en la Guía de referencia de las herramientas y los SDK de AWS.
-
-
Identidad web de AWS STS
Al crear aplicaciones móviles o aplicaciones web basadas en clientes que requieren acceso a AWS, AWS Security Token Service (AWS STS) devuelve un conjunto de credenciales de seguridad temporales para los usuarios federados que se autentican a través de un proveedor de identidades (IdP) público.
-
Si se especifica esto en un perfil, el SDK o la herramienta intentan recuperar las credenciales temporales mediante el método de la API
AssumeRoleWithWebIdentityde AWS STS. Para obtener información sobre la API, consulte AssumeRoleWithWebIdentity en la Referencia de la API de AWS Security Token Service. -
Para obtener instrucciones sobre cómo configurar este proveedor, consulte Cómo federar con identidad web u OpenID Connect en la Guía de referencia de las herramientas y los SDK de AWS.
-
Para obtener más información sobre las propiedades de configuración del SDK de este proveedor, consulte Asumir el rol de proveedor de credenciales en la Guía de referencia de las herramientas y los SDK de AWS.
-
-
Credenciales de contenedores de Amazon ECS y Amazon EKS
Sus tareas de Amazon Elastic Container Service y sus cuentas de servicio de Kubernetes pueden tener un rol de IAM asociado a ellas. Los contenedores que se ejecutan en la tarea o los contenedores del pod asumen los permisos concedidos en el rol de IAM. Este rol permite que su código de la aplicación de SDK para Rust (en el contenedor) utilice otros Servicios de AWS.
El SDK intenta recuperar las credenciales de las variables de entorno
AWS_CONTAINER_CREDENTIALS_RELATIVE_URIoAWS_CONTAINER_CREDENTIALS_FULL_URI, que Amazon ECS y Amazon EKS pueden configurar automáticamente.-
Para obtener más información sobre cómo configurar este rol para Amazon ECS, consulte Rol de IAM de tarea de Amazon ECS en la Guía para desarrolladores de Amazon Elastic Container Service.
-
Para obtener información sobre la configuración de Amazon EKS, consulte Configuración del agente de Pod Identity de Amazon EKS en la Guía del usuario de Amazon EKS.
-
Para obtener más información sobre las propiedades de configuración del SDK de este proveedor, consulte Proveedor de credenciales de contenedor en la Guía de referencia de las herramientas y los SDK de AWS.
-
-
Servicio de metadatos de la instancia de Amazon EC
Cree un rol de IAM y asócielo a la instancia. La aplicación SDK para Rust de la instancia intenta recuperar las credenciales que proporciona el rol a partir de los metadatos de la instancia.
-
El SDK para Rust solo admite IMDSv2.
-
Para obtener más información sobre cómo configurar este rol y el uso de los metadatos, consulte Roles de IAM para Amazon EC2 y Trabajar con metadatos de instancias en la Guía del usuario de Amazon EC2.
-
Para obtener más información sobre las propiedades de configuración del SDK de este proveedor, consulte Proveedor de credenciales IDMS en la Guía de referencia de las herramientas y los SDK de AWS.
-
-
Si las credenciales siguen sin resolverse en este momento, se produce un error en la operación panics.
Para obtener información sobre la configuración de proveedores de credenciales de AWS, consulte Proveedores de credenciales estandarizados en la Referencia de configuración de la Guía de referencia de las herramientas y los SDK de AWS.
Proveedor de credenciales explícito
En lugar de confiar en la cadena de proveedores de credenciales para detectar el método de autenticación, puede especificar un proveedor de credenciales específico que debe utilizar el SDK. Al cargar la configuración general mediante aws_config::defaults, puede especificar un proveedor de credenciales personalizado, como se muestra a continuación:
let config = aws_config::defaults(BehaviorVersion::latest()) .credentials_provider(MyCredentialsProvider::new()) .load() .await;
Puede implementar su propio proveedor de credenciales implementando el indicador ProvideCredentials
Almacenamiento en caché de la identidad
El SDK almacenará en caché las credenciales y otros tipos de identidad, como los tokens de SSO. De forma predeterminada, el SDK usa una implementación de caché diferida que carga las credenciales cuando se solicitan por primera vez, las almacena en la memoria caché y, a continuación, intenta actualizarlas durante otra solicitud cuando están a punto de caducar. Los clientes creados a partir de la misma SdkConfig compartirán una IdentityCache