Para conectar a los usuarios finales con las ubicaciones de Amazon S3, primero debe configurar un método de autenticación y autorización. Existen tres métodos para configurar un método de autenticación y autorización con Navegador de almacenamiento:
Método 1: administración del acceso a los datos para los clientes y los socios externos
Con este método, puede utilizar AWS Amplify Auth
Usted proporciona credenciales de IAM a los usuarios finales y socios externos mediante AWS Amplify Auth con un bucket de S3 configurado para utilizar Amplify Storage. AWS Amplify Auth se basa en Amazon Cognito, un servicio de administración de acceso e identidad del cliente totalmente administrado donde puede autenticar y autorizar a los usuarios desde un directorio de usuarios o un directorio empresarial integrado, o desde proveedores de identidades de consumidores. El modelo de autorización de Amplify define a qué prefijos puede acceder el usuario autenticado actual. Para obtener más información sobre cómo configurar la autorización para AWS Amplify, consulte Configuración del almacenamiento
Para inicializar el componente con los métodos de autenticación y almacenamiento de Amplify, agregue el siguiente fragmento de código a la aplicación web:
import {
createAmplifyAuthAdapter,
createStorageBrowser,
} from '@aws-amplify/ui-react-storage/browser';
import "@aws-amplify/ui-react-storage/styles.css";
import config from './amplify_outputs.json';
Amplify.configure(config);
export const { StorageBrowser } = createStorageBrowser({
config: createAmplifyAuthAdapter(),
});
Método 2: administración del acceso a los datos para las entidades principales de IAM para la cuenta de AWS
Si desea administrar el acceso para las entidades principales de IAM o la Cuenta de AWS directamente, puede crear un rol de IAM que tenga permisos para invocar la operación de la API de S3 GetDataAccess. Para configurarlo, debe crear una instancia de Concesiones de acceso a S3 para asignar permisos para los buckets de S3 y prefijos a las identidades de IAM especificadas. El componente Navegador de almacenamiento (que debe llamarse en el cliente después de obtener las credenciales de IAM) invocará la operación de la API de S3 ListCallerAccessGrants a fin de obtener las concesiones disponibles para el solicitante de identidad y rellenar las ubicaciones en el componente. Después de obtener el permiso s3:GetDataAccess
, el componente Navegador de almacenamiento utiliza esas credenciales para solicitar acceso a los datos de S3.
import {
createManagedAuthAdapter,
createStorageBrowser,
} from '@aws-amplify/ui-react-storage/browser';
import "@aws-amplify/ui-react-storage/styles.css";
export const { StorageBrowser } = createStorageBrowser({
config: createManagedAuthAdapter({
credentialsProvider: async (options?: { forceRefresh?: boolean }) => {
// return your credentials object
return {
credentials: {
accessKeyId: 'my-access-key-id',
secretAccessKey: 'my-secret-access-key',
sessionToken: 'my-session-token',
expiration: new Date()
},
}
},
// AWS `region` and `accountId`
region: '',
accountId: '',
// call `onAuthStateChange` when end user auth state changes
// to clear sensitive data from the `StorageBrowser` state
registerAuthListener: (onAuthStateChange) => {},
})
});
Método 3: administración del acceso a los datos a escala
Si desea asociar una instancia de Concesiones de acceso a S3 a IAM Identity Center para obtener una solución más escalable (como proporcionar acceso a los datos a toda la empresa), puede solicitar datos de Amazon S3 en nombre del usuario autenticado actual. Por ejemplo, puede conceder a grupos de usuarios del directorio corporativo acceso a los datos en S3. Este enfoque le permite administrar de forma centralizada los permisos de Concesiones de acceso a S3 para los usuarios y grupos, incluidos los alojados en proveedores externos como Microsoft Entra, Okta y otros.
Al utilizar este método, la integración con IAM Identity Center le permite utilizar los directorios de usuarios existentes. Otra ventaja de la propagación de identidades de confianza de IAM Identity Center es que cada evento de datos de AWS CloudTrail para Amazon S3 contiene una referencia directa a la identidad del usuario final que ha accedido a los datos de S3.
Si tiene una aplicación que admite OAuth 2.0 y los usuarios necesitan acceder desde estas aplicaciones a servicios de AWS, le recomendamos que utilice la propagación de identidades de confianza. Con la propagación de identidades de confianza, un usuario puede iniciar sesión en una aplicación y esa aplicación puede transmitir la identidad del usuario en las solicitudes de acceso a los datos de los servicios de AWS. Esta aplicación interactúa con IAM Identity Center en nombre de cualquier usuario autenticado. Para obtener más información, consulte Uso de la propagación de identidades de confianza con aplicaciones administradas por el cliente.
Configuración
Para configurar la autenticación de Navegador de almacenamiento en la AWS Management Console con Concesiones de acceso a S3 y la propagación de identidades de confianza de IAM Identity Center, las aplicaciones deben solicitar datos de Amazon S3 en nombre del usuario autenticado actual. Con este enfoque, puede dar a usuarios o grupos de usuarios del directorio corporativo acceso directo a los buckets, prefijos u objetos de S3. Esto significa que la aplicación no necesitará asignar ningún usuario a una entidad principal de IAM.
En el siguiente flujo de trabajo se describen los pasos para configurar Navegador de almacenamiento para S3, mediante IAM Identity Center y Concesiones de acceso a S3:
Pasos | Descripción |
---|---|
1 | Activación de IAM Identity Center para AWS Organizations |
2 | Configuración de la federación de AWS Identity and Access Management Identity Center |
3 | Agregar un emisor de tokens de confianza en la consola de AWS Identity and Access Management Identity Center
El emisor de tokens de confianza representa al proveedor de identidades (IdP) externo dentro de IAM Identity Center, lo que le permite reconocer los tokens de identidad de los usuarios autenticados de la aplicación. |
4 | Creación de un rol de IAM para la aplicación bootstrap y identity bearer |
5 | Creación y configuración de la aplicación en IAM Identity Center
Esta aplicación interactúa con IAM Identity Center en nombre de los usuarios autenticados. |
6 | Cómo agregar Concesiones de acceso a S3 como aplicación de confianza para la propagación de identidades
Este paso conecta la aplicación a Concesiones de acceso a S3, para que pueda realizar solicitudes a Concesiones de acceso a S3 en nombre de los usuarios autenticados. |
7 | Creación de una concesión a un usuario o grupo
Este paso sincroniza los usuarios de AWS Identity and Access Management Identity Center con el Sistema de administración de identidades entre dominios (SCIM). El SCIM mantiene las identidades de IAM Identity Center sincronizadas con las identidades del proveedor de identidades (IdP). |
8 | Creación del componente Navegador de almacenamiento para S3 |
Activación de IAM Identity Center para AWS Organizations
Para habilitar IAM Identity Center para AWS Organizations, realice los siguientes pasos:
-
Inicie sesión en la AWS Management Console, mediante uno de estos métodos:
-
Primera vez que utiliza AWS (usuario raíz): inicie sesión como propietario de cuenta, elija Usuario raíz e introduzca la dirección de correo electrónico de la Cuenta de AWS. En la siguiente página, escriba su contraseña.
-
Ya utiliza AWS (credenciales de IAM): inicie sesión con las credenciales de IAM con permisos administrativos.
-
-
Abra la consola de IAM Identity Center
. -
En Activar el IAM Identity Center, seleccione Activar.
nota
IAM Identity Center requiere la configuración de AWS Organizations. Si no ha configurado una organización, puede elegir si desea que AWS cree una para usted. Elija Crear una organización AWS para completar este proceso.
-
A continuación, elija Habilitar con AWS Organizations.
-
Elija Continuar.
-
(Opcional) Agregue las etiquetas que desee asociar a esta instancia de organización.
-
(Opcional) Configure la administración delegada.
nota
Si utiliza un entorno de varias cuentas, le recomendamos que configure la administración delegada. Con la administración delegada, puede limitar el número de personas que necesitan acceder a la cuenta de administración en AWS Organizations. Para obtener más información, consulte Administración delegada.
-
Seleccione Guardar.
AWS Organizations envía automáticamente un correo electrónico de verificación a la dirección asociada a su cuenta de administración. Puede pasar algún tiempo hasta que reciba el correo electrónico de verificación. Asegúrese de verificar la dirección de correo electrónico en un plazo de 24 horas, antes de que caduque el correo electrónico de verificación.
Configuración de la federación de AWS Identity and Access Management Identity Center
Para utilizar Navegador de almacenamiento para S3 con usuarios del directorio corporativo, debe configurar IAM Identity Center para utilizar un proveedor de identidades (IdP) externo. Puede utilizar el proveedor de identidades preferido que desee. No obstante, tenga en cuenta que cada proveedor de identidades utiliza una configuración diferente. Para ver tutoriales sobre el uso de diferentes proveedores de identidades externos, consulte los tutoriales de origen de IAM Identity Center.
nota
Asegúrese de registrar la URL del emisor y los atributos de audiencia del proveedor de identidades que ha configurado, ya que tendrá que consultarlos en pasos posteriores. Si no tiene el acceso o los permisos necesarios para configurar un IdP, es posible que deba ponerse en contacto con el administrador del IdP externo para obtenerlos.
Agregar un emisor de tokens de confianza en la consola de AWS Identity and Access Management Identity Center
El emisor de tokens de confianza representa al proveedor de identidades externo en AWS Identity and Access Management Identity Center y reconoce los tokens de los usuarios autenticados de la aplicación. El propietario de la cuenta de la instancia de IAM Identity Center en AWS Organizations debe realizar estos pasos. Estos pasos se pueden realizar en la consola de IAM Identity Center o mediante programación.
Para agregar un emisor de tokens de confianza en la consola de AWS Identity and Access Management Identity Center, siga estos pasos:
-
Abra la consola de IAM Identity Center
. -
Elija Configuración.
-
Seleccione la pestaña Autenticación.
-
Vaya a la sección Emisores de tokens de confianza y rellene los siguientes datos:
-
En URL del emisor, introduzca la URL del IdP externo que actúa como emisor de tokens de confianza. Es posible que deba ponerse en contacto con el administrador del IdP externo para obtener esta información. Para obtener más información, consulte Uso de aplicaciones con un emisor de tokens de confianza.
-
En Nombre del emisor de tokens de confianza, introduzca un nombre para el emisor de tokens de confianza. Este nombre aparecerá en la lista de emisores de tokens de confianza que puede seleccionar en el Paso 8, cuando se configure un recurso de aplicación para la propagación de identidades.
-
-
Actualice Asignar atributos con el atributo de aplicación preferido, donde cada atributo del proveedor de identidades se asigna a un atributo de IAM Identity Center. Por ejemplo, es posible que desee asignar el atributo de aplicación
email
al atributo del usuarioemail
de IAM Identity Center. Para ver la lista de los atributos de usuario permitidos en IAM Identity Center, consulte la tabla que encontrará en Asignaciones de atributos para el directorio de AWS Managed Microsoft AD. -
(Opcional) Si desea agregar una etiqueta de recurso, introduzca el par de clave y valor. Para agregar varias etiquetas de recurso, elija Agregar nueva etiqueta para generar una nueva entrada e introduzca los pares de clave y valor.
-
Seleccione Crear emisor de tokens de confianza.
-
Cuando termine de crear el emisor de tokens de confianza, póngase en contacto con el administrador de la aplicación para que sepa el nombre del emisor de tokens de confianza y así pueda confirmar que está visible en la consola correspondiente.
-
Asegúrese de que el administrador de la aplicación seleccione este emisor de tokens de confianza en la consola correspondiente para permitir que los usuarios accedan a la aplicación desde las aplicaciones que están configuradas para la propagación de identidades de confianza.
Creación de un rol de IAM para la aplicación bootstrap
y identity bearer
Para garantizar que los usuarios de la aplicación bootstrap
y identity bearer
puedan trabajar correctamente entre sí, asegúrese de crear dos roles de IAM. Se requiere un rol de IAM para la aplicación bootstrap
y el otro rol de IAM debe utilizarse para el portador de identidad o los usuarios finales que acceden a la aplicación web que solicita acceso a través de Concesiones de acceso a S3. La aplicación bootstrap
recibe el token emitido por el proveedor de identidades e invoca la API CreateTokenWithIAM
, con lo que se intercambia este token con el emitido por Identity Center.
Cree un rol de IAM, como bootstrap-role
, con permisos como los siguientes. La siguiente política de IAM de ejemplo otorga permisos a bootstrap-role
para realizar el intercambio de tokens:
{ "Version": "2012-10-17", "Statement": [{ "Action": [ "sso-oauth:CreateTokenWithIAM", ], "Resource": "arn:${
Partition
}:sso::${AccountId
}:application/${InstanceId
}/${ApplicationId
}", "Effect": "Allow" }, { "Action": [ "sts:AssumeRole", "sts:SetContext" ], "Resource": "arn:aws:iam::${AccountId
}:role/identity-bearer-role
", "Effect": "Allow" }] }
A continuación, cree un segundo rol de IAM (como identity-bearer-role
), que el agente de identidades utiliza para generar las credenciales de IAM. Las credenciales de IAM devueltas por el agente de identidad a la aplicación web las utiliza el componente Navegador de almacenamiento para S3 para permitir el acceso a los datos de S3:
{ "Action": [ "s3:GetDataAccess", "s3:ListCallerAccessGrants", ], "Resource": "arn:${
Partition
}:s3:${Region
}:${Account
}:access-grants/default", "Effect": "Allow" }
Este rol de IAM (identity-bearer-role
) debe utilizar una política de confianza con la siguiente instrucción:
{ "Effect": "Allow", "Principal": { "AWS": "arn:${
Partition
}:iam::${Account
}:role/${RoleNameWithPath
}" }, "Action": [ "sts:AssumeRole", "sts:SetContext" ] }
Creación y configuración de la aplicación en IAM Identity Center
nota
Antes de comenzar, asegúrese de haber creado los roles de IAM necesarios en el paso anterior. Tendrá que especificar uno de estos roles de IAM en este paso.
Para crear y configurar una aplicación administrada por el cliente en AWS IAM Identity Center, siga estos pasos:
-
Abra la consola de IAM Identity Center
. -
Elija Aplicaciones.
-
Seleccione la pestaña Administrada por el cliente.
-
Elija Agregar aplicación.
-
En la página Seleccionar el tipo de aplicación, en Preferencia de configuración, seleccione Tengo una aplicación que quiero configurar.
-
En Tipo de aplicación, seleccione OAuth 2.0.
-
Elija Siguiente. Aparecerá la página Especificar aplicación.
-
En la sección Nombre y descripción de la aplicación, introduzca un Nombre de visualización para la aplicación, como
storage-browser-oauth
. -
Escriba una descripción en Description. La descripción de la aplicación aparece en la consola de IAM Identity Center y en las solicitudes de la API, pero no en el portal de acceso de AWS.
-
En Método de asignación de usuarios y grupos, elija No requerir asignaciones. Esta opción permite que todos los usuarios y grupos autorizados de IAM Identity Center accedan a esta aplicación.
-
En Portal de acceso a AWS, introduzca una URL de aplicación donde los usuarios puedan acceder a la aplicación.
-
(Opcional) Si desea agregar una etiqueta de recurso, introduzca el par de clave y valor. Para agregar varias etiquetas de recurso, elija Agregar nueva etiqueta para generar una nueva entrada e introduzca los pares de clave y valor.
-
Elija Siguiente. Aparecerá la página Especificar autenticación.
-
En Autenticación con emisor de tokens de confianza, utilice la casilla para seleccionar el emisor de token de confianza que creó anteriormente.
-
En Configurar los emisores de tokens de confianza seleccionados, introduzca la notificación de audiencia. La notificación de audiencia identifica la audiencia del token web JSON (JWT) y es el nombre por el cual el emisor de tokens de confianza identifica esta aplicación.
nota
Es posible que deba ponerse en contacto con el administrador del IdP externo para obtener esta información.
-
Elija Siguiente. Aparecerá la página Especificar credenciales de autenticación.
-
En Método de configuración, elija Introducir uno o más roles de IAM.
-
En Introducir roles de IAM, agregue el rol de IAM o el nombre de recurso de Amazon (ARN) para el token del portador de identidad. Debe introducir el rol de IAM que creó en el paso anterior para la aplicación del agente de identidades (por ejemplo,
bootstrap-role
). -
Elija Siguiente.
-
En la página Revisar y configurar, revise los detalles de la configuración de aplicación. Si necesita modificar alguna de las configuraciones, elija Editar para la sección que desea editar y realice los cambios.
-
Elija Enviar. Se muestra la página de detalles de la aplicación que acaba de agregar.
Después de configurar las aplicaciones, los usuarios pueden acceder a ellas desde el portal de acceso a AWS en función de los conjuntos de permisos que haya creado y el acceso de usuario que haya asignado.
Cómo agregar Concesiones de acceso a S3 como aplicación de confianza para la propagación de identidades
Después de configurar la aplicación administrada por el cliente, debe especificar Concesiones de acceso a S3 para la propagación de identidades. Concesiones de acceso a S3 ofrece credenciales para que los usuarios accedan a los datos de Amazon S3. Cuando inicie sesión en la aplicación administrada por el cliente, Concesiones de acceso a S3 transferirá la identidad de los usuarios a la aplicación de confianza.
Requisito previo: asegúrese de haber configurado Concesiones de acceso a S3 (como crear una instancia de Concesiones de acceso a S3 y registrar una ubicación) antes de seguir estos pasos. Para obtener más información, consulte Introducción a Concesiones de acceso a S3.
Para agregar Concesiones de acceso a S3 para la propagación de identidades a la aplicación administrada por el cliente, realice los siguientes pasos:
-
Abra la consola de IAM Identity Center
. -
Elija Aplicaciones.
-
Seleccione la pestaña Administrada por el cliente.
-
En la lista Aplicaciones administradas por el cliente, seleccione la aplicación de OAuth 2.0 para la que desea iniciar solicitudes de acceso. Esta es la aplicación en la que iniciarán sesión los usuarios.
-
En la página de detalles, en Aplicaciones de confianza para la propagación de identidades, seleccione Especificar aplicaciones de confianza.
-
En Tipo de configuración, seleccione Aplicaciones individuales y acceso específico y, a continuación, elija Siguiente.
-
En la página Seleccionar servicio, elija Concesiones de acceso a S3. Concesiones de acceso a S3 tiene aplicaciones que puede utilizar para definir una aplicación web propia para la propagación de identidades de forma fiable.
-
Elija Siguiente. Seleccionará las aplicaciones en el siguiente paso.
-
En la página Seleccionar aplicaciones, elija Aplicaciones individuales, active la casilla de verificación de cada aplicación que pueda recibir solicitudes de acceso y, a continuación, seleccione Siguiente.
-
En la página Configurar el acceso, en Método de configuración, elija una de las siguientes acciones:
-
Seleccionar el acceso por aplicación: seleccione esta opción para configurar diferentes niveles de acceso para cada aplicación. Seleccione la aplicación para la que desee configurar el nivel de acceso y, a continuación, seleccione Editar acceso. En Nivel de acceso que aplicar, cambie los niveles de acceso según sea necesario y, a continuación, seleccione Guardar cambios.
-
Aplicar el mismo nivel de acceso a todas las aplicaciones: seleccione esta opción si no tiene que configurar los niveles de acceso por aplicación.
-
-
Elija Siguiente.
-
En la página Revisar configuración, revise las elecciones que ha realizado.
nota
Deberá asegurarse de que se conceda el permiso
s3:access_grants:read_write
a los usuarios. Este permiso permite a los usuarios recuperar credenciales para acceder a Amazon S3. Asegúrese de utilizar la política de IAM que creó anteriormente o Concesiones de acceso a S3 para limitar el acceso a las operaciones de escritura. -
Para realizar cambios, elija Editar en la sección de configuración en la que desea realizar cambios. A continuación, realice los cambios necesarios y elija Guardar cambios.
-
Elija Aplicaciones de confianza para agregar la aplicación de confianza para la propagación de identidades.
Creación de una concesión a un usuario o grupo
En este paso, utiliza IAM Identity Center para aprovisionar a los usuarios. Puede utilizar SCIM para el aprovisionamiento automático o manual de usuarios y grupos. El SCIM mantiene las identidades de IAM Identity Center sincronizadas con las identidades del proveedor de identidades (IdP). Esto incluye cualquier aprovisionamiento, actualización y desaprovisionamiento de usuarios entre su IdP y IAM Identity Center.
nota
Este paso es necesario porque, cuando se utiliza Concesiones de acceso a S3 con IAM Identity Center, no se utilizan los usuarios locales de IAM Identity Center. En su lugar, los usuarios deben sincronizarse desde el proveedor de identidades con IAM Identity Center.
Para sincronizar los usuarios del proveedor de identidades con IAM Identity Center, siga estos pasos:
Para ver ejemplos de cómo configurar el proveedor de identidades con IAM Identity Center para un caso de uso específico, consulte los tutoriales de origen de identidad de IAM Identity Center.
Creación del componente Navegador de almacenamiento para S3
Después de configurar la instancia de IAM Identity Center y crear concesiones en Concesiones de acceso a S3, abra la aplicación React. En la aplicación React, utilice createManagedAuthAdapter
para configurar las reglas de autorización. Debe proporcionar un proveedor de credenciales para devolver las credenciales que obtuvo de IAM Identity Center. A continuación, puede llamar a createStorageBrowser
para inicializar el componente Navegador de almacenamiento para S3:
import { createManagedAuthAdapter, createStorageBrowser, } from '@aws-amplify/ui-react-storage/browser'; import '@aws-amplify/ui-react-storage/styles.css'; export const { StorageBrowser } = createStorageBrowser({ config: createManagedAuthAdapter({ credentialsProvider: async (options?: { forceRefresh?: boolean }) => { // return your credentials object return { credentials: { accessKeyId: '
my-access-key-id
', secretAccessKey: 'my-secret-access-key
', sessionToken: 'my-session-token
', expiration: new Date(), }, } }, // AWS `region` and `accountId` of the S3 Access Grants Instance. region: '', accountId: '', // call `onAuthStateChange` when end user auth state changes // to clear sensitive data from the `StorageBrowser` state registerAuthListener: (onAuthStateChange) => {}, }) });
Después, cree un mecanismo para intercambiar los tokens web JSON (JWT) de la aplicación web con las credenciales de IAM de IAM Identity Center. Para obtener más información sobre cómo intercambiar JWT, consulte los siguientes recursos:
-
Publicación How to develop a user-facing data application with IAM Identity Center and S3 Access Grants
en el blog de almacenamiento de AWS -
Publicación Scaling data access with S3 Access Grants
en el blog de almacenamiento de AWS -
Taller de Concesiones de acceso a S3
en AWS Workshop Studio -
Taller de Concesiones de acceso a S3
en GitHub
A continuación, configure un punto de conexión de API para procesar las solicitudes de obtención de credenciales. Para validar el intercambio de tokens web JSON (JWT), realice los siguientes pasos:
-
Recupere el token web JSON del encabezado de autorización para las solicitudes entrantes.
-
Valide el token mediante las claves públicas de la URL del conjunto de claves web JSON (JWKS) especificado.
-
Verifique las solicitudes de caducidad, emisor, asunto y audiencia del token.
Para intercambiar el token web JSON del proveedor de identidades con las credenciales de AWS IAM, realice los siguientes pasos:
sugerencia
Asegúrese de evitar el registro de cualquier información confidencial. Le recomendamos que utilice controles de procesamiento de errores para autorizaciones que falten, tokens caducados y otras excepciones. Para obtener más información, consulte la publicación Implementing AWS Lambda error handling patterns
-
Verifique que los parámetros Permiso y Ámbito requeridos se proporcionen en la solicitud.
-
Utilice la API CreateTokenWithIAM para intercambiar el token web JSON por un token de IAM Identity Center.
nota
Una vez utilizado el token web JSON del IdP, no se puede volver a utilizar. Debe utilizarse un nuevo token para el intercambio con IAM Identity Center.
-
Utilice la operación de la API AssumeRole para asumir un rol transitorio mediante el token de IAM Identity Center. Asegúrese de utilizar el rol de portador de identidad, también conocido como el rol que lleva el contexto de identidad (por ejemplo,
identity-bearer-role
) para solicitar las credenciales. -
Devuelva las credenciales de IAM a la aplicación web.
nota
Asegúrese de haber configurado un mecanismo de registro adecuado. Las respuestas se devuelven en un formato JSON estandarizado con un código de estado HTTP adecuado.