Uso de proveedores de credenciales de AWS SDK para Rust - AWS SDK para Rust

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:

  1. Variables de entorno de clave de acceso

    El SDK intenta cargar credenciales de las variables de entorno AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY y AWS_SESSION_TOKEN.

  2. Archivos config y credentials de AWS compartidos

    El SDK intenta cargar credenciales del perfil [default] en los archivos config y credentials de AWS compartidos. Puede usar la variable de entorno AWS_PROFILE para elegir un perfil con nombre que desee que cargue el SDK en lugar de usar [default]. Varios SDK y herramientas de AWS comparten los archivos config y credentials. Para obtener más información, consulte Archivos config y credentials compartidos 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 login de 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.

  3. 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 AssumeRoleWithWebIdentity de 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.

  4. 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_URI o AWS_CONTAINER_CREDENTIALS_FULL_URI, que Amazon ECS y Amazon EKS pueden configurar automáticamente.

  5. 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.

  6. 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.