Solicitar acceso a los datos de Amazon S3 a través de S3 Access Grants - Amazon Simple Storage Service

Solicitar acceso a los datos de Amazon S3 a través de S3 Access Grants

Después de usar Concesiones de acceso Amazon S3 para crear una concesión de acceso que otorgue a las entidades principales de AWS Identity and Access Management (IAM), las identidades de su directorio corporativo o las aplicaciones autorizadas acceso a sus datos de S3, los beneficiarios pueden solicitar credenciales para acceder a estos datos.

Cuando una aplicación o Servicio de AWS utiliza la operación de la API GetDataAccess para pedir acceso a S3 Access Grants a sus datos de S3 en nombre de un beneficiario, S3 Access Grants comprueba primero que ha concedido acceso a los datos a esta identidad. A continuación, S3 Access Grants utiliza la operación de la API AssumeRole para obtener un token de credencial temporal y se lo ofrece al solicitante. Este token de credencial temporal es un token de AWS Security Token Service token (AWS STS).

La solicitud GetDataAccess debe incluir el parámetro target, que especifica el alcance de los datos de S3 a los que se aplican las credenciales temporales. Este alcance target puede ser el mismo que el alcance de la concesión o un subconjunto del mismo, pero el alcance target debe estar dentro del alcance de la concesión que se otorgó al solicitante. La solicitud también debe especificar el parámetro permission para indicar el nivel de permiso para las credenciales temporales, ya sea READ, WRITE o READWRITE.

El solicitante puede especificar el nivel de privilegio del token temporal en su solicitud de credenciales. Con el parámetro privilege, el solicitante puede reducir o aumentar el alcance de acceso de las credenciales temporales, dentro de los límites del alcance de la concesión. El valor predeterminado del parámetro privilege es Default, lo que significa que el alcance objetivo de la credencial devuelta es el alcance de la concesión original. El otro valor posible para privilege es Minimal. Si el alcance target se reduce con respecto al alcance de la concesión original, se elimina el alcance de la credencial temporal para que coincida con el alcance target, siempre que el alcance target esté dentro del alcance de la concesión.

En la siguiente tabla se detalla el efecto del parámetro privilege en dos concesiones. Una de las concesiones tiene el alcance S3://amzn-s3-demo-bucket1/bob/*, que incluye todo el prefijo bob/ del bucket amzn-s3-demo-bucket1. La otra concesión tiene el alcance S3://amzn-s3-demo-bucket1/bob/reports/*, que incluye solo el prefijo bob/reports/ del bucket amzn-s3-demo-bucket1.

Alcance de la concesión Alcance solicitado Privilegio Alcance devuelto Efecto
S3://amzn-s3-demo-bucket1/bob/* amzn-s3-demo-bucket1/bob/* Default amzn-s3-demo-bucket1/bob/*

El solicitante tiene acceso a todos los objetos que tienen nombres clave que comienzan con el prefijo bob/ del bucket amzn-s3-demo-bucket1.

S3://amzn-s3-demo-bucket1/bob/* amzn-s3-demo-bucket1/bob/ Minimal amzn-s3-demo-bucket1/bob/

Sin el carácter comodín * después del nombre del prefijo bob/, el solicitante solo tiene acceso al objeto denominado bob/ en el bucket amzn-s3-demo-bucket1. No es habitual tener un objeto de este tipo. El solicitante no tiene acceso a ningún otro objeto, incluidos los que tienen nombres clave que comiencen con el prefijo bob/.

S3://amzn-s3-demo-bucket1/bob/* amzn-s3-demo-bucket1/bob/images/* Minimal amzn-s3-demo-bucket1/bob/images/*

El solicitante tiene acceso a todos los objetos que tienen nombres clave que comienzan con el prefijo bob/images/* del bucket amzn-s3-demo-bucket1.

S3://amzn-s3-demo-bucket1/bob/reports/* amzn-s3-demo-bucket1/bob/reports/file.txt Default amzn-s3-demo-bucket1/bob/reports/*

El solicitante tiene acceso a todos los objetos que tienen nombres clave que comienzan con el prefijo bob/reports del bucket amzn-s3-demo-bucket1, que es el alcance de la concesión coincidente.

S3://amzn-s3-demo-bucket1/bob/reports/* amzn-s3-demo-bucket1/bob/reports/file.txt Minimal amzn-s3-demo-bucket1/bob/reports/file.txt

El solicitante solo tiene acceso al objeto con el nombre de clave bob/reports/file.txt del bucket amzn-s3-demo-bucket1. El solicitante no tiene acceso a ningún otro objeto.

El parámetro durationSeconds establece la duración de la credencial temporal, en segundos. El valor predeterminado es 3600 segundos (1 hora), pero el solicitante (el beneficiario) puede especificar un intervalo de 900 segundos (15 minutos) a 43200 segundos (12 horas). Si el beneficiario solicita un valor superior al indicado en este máximo, la solicitud producirá un error.

nota

En su solicitud de un token temporal, si la ubicación es un objeto, establece el valor del parámetro targetType de su solicitud en Object. Este parámetro solo es necesario si la ubicación es un objeto y el nivel de privilegio es Minimal. Si la ubicación es un bucket o un prefijo, no es necesario que especifique este parámetro.

Para obtener más información, consulte GetDataAccess en la Referencia de la API de Amazon Simple Storage Service.

Puede solicitar credenciales temporales mediante AWS Command Line Interface (AWS CLI), la API de REST de Amazon S3 y los SDK de AWS.

Para instalar AWS CLI, consulte Instalación de AWS CLI en la Guía del usuario de AWS Command Line Interface.

Para utilizar el comando de ejemplo siguiente, sustituya user input placeholders con su información.

ejemplo Solicitar credenciales temporales

Solicitud:

aws s3control get-data-access \ --account-id 111122223333 \ --target s3://amzn-s3-demo-bucket/prefixA* \ --permission READ \ --privilege Default \ --region us-east-2

Response: (Respuesta:)

{ "Credentials": { "AccessKeyId": "Example-key-id", "SecretAccessKey": "Example-access-key", "SessionToken": "Example-session-token", "Expiration": "2023-06-14T18:56:45+00:00"}, "MatchedGrantTarget": "s3://amzn-s3-demo-bucket/prefixA**" }

Para obtener información sobre la compatibilidad con la API de REST de Amazon S3 para solicitar credenciales temporales desde S3 Access Grants, consulte GetDataAccess en la Referencia de la API de Amazon Simple Storage Service.

En esta sección se proporciona un ejemplo de cómo los beneficiarios solicitan credenciales temporales a S3 Access Grants mediante los SDK de AWS.

Java

En el siguiente ejemplo de código se devuelven las credenciales temporales que el beneficiario utiliza para acceder a sus datos de S3. Para utilizar este ejemplo de código, reemplace user input placeholders con su propia información.

ejemplo Obtener credenciales temporales

Solicitud:

public void getDataAccess() { GetDataAccessRequest getDataAccessRequest = GetDataAccessRequest.builder() .accountId("111122223333") .permission(Permission.READ) .privilege(Privilege.MINIMAL) .target("s3://amzn-s3-demo-bucket/prefixA*") .build(); GetDataAccessResponse getDataAccessResponse = s3Control.getDataAccess(getDataAccessRequest); LOGGER.info("GetDataAccessResponse: " + getDataAccessResponse); }

Response: (Respuesta:)

GetDataAccessResponse( Credentials=Credentials( AccessKeyId="Example-access-key-id", SecretAccessKey="Example-secret-access-key", SessionToken="Example-session-token", Expiration=2023-06-07T06:55:24Z ))