Crear concesiones - Amazon Simple Storage Service

Crear concesiones

Una concesión de acceso individual en una instancia de Concesiones de acceso a Amazon S3 permite que una identidad específica (una entidad principal de AWS Identity and Access Management [IAM] o un usuario o grupo de un directorio corporativo) acceda a una ubicación que esté registrada en su instancia de Concesiones de acceso a Amazon S3. Una ubicación asigna buckets o prefijos a un rol de IAM. Concesiones de acceso a Amazon S3 asume este rol de IAM para vender credenciales temporales a los beneficiarios.

Después de registrar al menos una ubicación en su instancia de Concesiones de acceso a Amazon S3, puede crear una concesión de acceso.

El beneficiario puede ser un usuario o rol de IAM o un usuario o grupo del directorio. Un usuario de directorio es un usuario de su directorio corporativo u origen de identidad externa que ha asociado a su instancia de Concesiones de acceso a Amazon S3. Para obtener más información, consulte S3 Access Grants e identidades de directorios corporativos. Para crear una concesión para un usuario o grupo de directorio específico desde IAM Identity Center, busque el GUID que IAM Identity Center utiliza para identificar a ese usuario en IAM Identity Center (por ejemplo, a1b2c3d4-5678-90ab-cdef-EXAMPLE11111). Para obtener más información sobre cómo utilizar IAM Identity Center para ver la información de los usuarios, consulte View user and group assignments en la Guía del usuario de AWS IAM Identity Center.

Puede conceder acceso a un bucket, a un prefijo o a un objeto. Un prefijo en Amazon S3 es una cadena de caracteres al principio del nombre de una clave de objeto que se utiliza para organizar los objetos dentro de un bucket. Puede ser cualquier cadena de caracteres permitidos, por ejemplo, nombres de claves de objetos en un bucket que comiencen con el prefijo engineering/.

Subprefijo

Al conceder acceso a una ubicación registrada, puede usar el campo Subprefix para limitar el ámbito del acceso a un subconjunto del ámbito de la ubicación. Si la ubicación registrada que elija para la concesión es la ruta de S3 predeterminada (s3://), debe limitar el ámbito de la concesión. No puede crear una concesión de acceso para la ubicación predeterminada (s3://), porque daría al beneficiario acceso a todos los buckets de una Región de AWS. En su lugar, debe limitar el ámbito de la concesión a uno de los siguientes:

  • Un bucket: s3://bucket/*

  • Un prefijo dentro de un bucket: s3://bucket/prefix*

  • Un prefijo dentro de un prefijo: s3://bucket/prefixA/prefixB*

  • Un objeto: s3://bucket/object-key-name

Si crea una concesión de acceso en la que la ubicación registrada es un bucket, puede pasar una de las siguientes opciones en el campo Subprefix para limitar el ámbito de la concesión:

  • Un prefijo dentro del bucket: prefix*

  • Un prefijo dentro de un prefijo: prefixA/prefixB*

  • Un objeto: /object-key-name

Después de crear la concesión, el ámbito de la concesión que se muestra en la consola de Amazon S3 o el GrantScope que se devuelve en la respuesta de la API o la AWS Command Line Interface (AWS CLI) es el resultado de concatenar la ruta de ubicación con el Subprefix. Asegúrese de que esta ruta concatenada se asigne correctamente al bucket, prefijo u objeto de S3 al que desea conceder acceso.

nota
  • Si necesita crear una concesión de acceso que conceda acceso a un solo objeto, debe especificar que el tipo de concesión es para un objeto. Para hacerlo en una llamada a la API o un comando de la CLI, pase el parámetro s3PrefixType con el valorObject. En la consola de Amazon S3, al crear la concesión, tras seleccionar una ubicación, en Ámbito de la concesión, active la casilla El ámbito de la concesión es un objeto.

  • No puede crear una concesión para un bucket si el bucket aún no existe. Sin embargo, puede crear una concesión para un prefijo que aún no exista.

  • Para obtener información sobre el número máximo de concesiones que puede crear en su instancia de Concesiones de acceso a Amazon S3, consulte Limitaciones de S3 Access Grants.

Puede crear una concesión de acceso a través de la consola de Amazon S3, AWS CLI, la API de REST de Amazon S3 y los SDK de AWS.

Para crear una concesión de acceso
  1. Inicie sesión AWS Management Console Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En el panel de navegación izquierdo, seleccione Concesiones de acceso.

  3. En la página S3 Access Grants, seleccione la región que contiene la instancia de S3 Access Grants con la que quiere trabajar.

    Si es la primera vez que utiliza la instancia de S3 Access Grants, asegúrese de haber completado el Paso 2: Registrar una ubicación) y de haber navegado al Paso 3 del asistente Configurar la instancia de Concesiones de acceso. Si ya tiene una instancia de S3 Access Grants, seleccione Ver detalles y, en la pestaña Concesiones, elija Crear concesión.

    1. En la sección Alcance de la concesión, seleccione o introduzca una ubicación registrada.

      Si se ha seleccionado la ubicación predeterminada s3://, utilice el cuadro Subprefijo para reducir el alcance de la concesión de acceso. Para obtener más información, consulte Subprefijo. Si concede acceso solo a un objeto, seleccione Otorgar el alcance a un objeto.

    2. En Permisos y acceso, seleccione el nivel de Permiso, ya sea de Lectura, Escritura o ambos.

      A continuación, elija el Tipo de beneficio. Si ha añadido su directorio corporativo al Centro de identidades de IAM y ha asociado esta instancia del Centro de identidades de IAM a su instancia de S3 Access Grants, puede elegir Identidad del directorio en el Centro de identidades de IAM. Si elige esta opción, obtenga el ID del usuario o grupo del Centro de identidades de IAM e introdúzcalo en esta sección.

      Si el Tipo de beneficiario es un usuario o un rol de IAM, elija Entidad principal de IAM. En Tipo de entidad principal de IAM, elija Usuario o Rol. A continuación, en Usuario de entidad principal de IAM, elija una opción de la lista o introduzca el ID de la identidad.

    3. Para crear la concesión de S3 Access Grants, seleccione Siguiente o Crear concesión.

  4. Si Siguiente o Crear autorización están desactivadas:

    No se puede crear la concesión
    • Es posible que primero tenga que registrar una ubicación en su instancia de S3 Access Grants.

    • Puede que no tenga el permiso s3:CreateAccessGrant para crear una concesión de acceso. Póngase en contacto con el administrador de la cuenta.

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

En los siguientes ejemplos se muestra cómo crear una solicitud de concesión de acceso para una entidad principal de IAM y cómo crear una solicitud de concesión de acceso para un usuario o grupo del directorio corporativo.

Para utilizar los comandos de ejemplo siguientes, sustituya user input placeholders con su información.

nota

Si va a crear una concesión de acceso que otorgue acceso a un solo objeto, incluya el parámetro --s3-prefix-type Object necesario.

ejemplo Creación de una solicitud de concesión de acceso para una entidad principal de IAM
aws s3control create-access-grant \ --account-id 111122223333 \ --access-grants-location-id a1b2c3d4-5678-90ab-cdef-EXAMPLE22222 \ --access-grants-location-configuration S3SubPrefix=prefixB* \ --permission READ \ --grantee GranteeType=IAM,GranteeIdentifier=arn:aws:iam::123456789012:user/data-consumer-3
ejemplo Creación de una respuesta a la concesión de acceso
{"CreatedAt": "2023-05-31T18:41:34.663000+00:00", "AccessGrantId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "AccessGrantArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default/grant/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "Grantee": { "GranteeType": "IAM", "GranteeIdentifier": "arn:aws:iam::111122223333:user/data-consumer-3" }, "AccessGrantsLocationId": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222", "AccessGrantsLocationConfiguration": { "S3SubPrefix": "prefixB*" }, "GrantScope": "s3://DOC-BUCKET-EXAMPLE/prefix*", "Permission": "READ" }
Creación de una solicitud de concesión de acceso para un usuario o grupo de directorio

Para crear una solicitud de concesión de acceso para un usuario o grupo del directorio, primero debe obtener el GUID del usuario o grupo del directorio mediante la ejecución de uno de los siguientes comandos.

ejemplo Obtener un GUID para un usuario o un grupo de directorio

Puede encontrar el GUID de un usuario del Centro de identidades de IAM a través de la consola del Centro de identidades de IAM o mediante la AWS CLI o los SDK de AWS. El siguiente comando muestra los usuarios de la instancia de Centro de identidades de IAM especificada, con sus nombres e identificadores.

aws identitystore list-users --identity-store-id d-1a2b3c4d1234

Este comando contiene una lista de los grupos de la instancia del Centro de identidades de IAM especificada.

aws identitystore list-groups --identity-store-id d-1a2b3c4d1234
ejemplo Crear una concesión de acceso para un usuario o grupo de directorio

Este comando es similar a la creación de una concesión para los usuarios o roles de IAM, excepto que el tipo de beneficiario es DIRECTORY_USER o DIRECTORY_GROUP y el identificador del beneficiario es el GUID del usuario o grupo del directorio.

aws s3control create-access-grant \ --account-id 123456789012 \ --access-grants-location-id default \ --access-grants-location-configuration S3SubPrefix="amzn-s3-demo-bucket/rafael/*" \ --permission READWRITE \ --grantee GranteeType=DIRECTORY_USER,GranteeIdentifier=83d43802-00b1-7054-db02-f1d683aacba5 \

Para obtener información sobre la compatibilidad con la API de REST de Amazon S3 para administrar concesiones de acceso, consulte las siguientes secciones en la Referencia de la API de Amazon Simple Storage Service:

En esta sección se proporcionan ejemplos de cómo crear una concesión de acceso mediante los SDK de AWS.

Java

Para utilizar el ejemplo siguiente, sustituya user input placeholders con su propia información:

nota

Si va a crear una concesión de acceso que otorgue acceso a un solo objeto, incluya el parámetro .s3PrefixType(S3PrefixType.Object) necesario.

ejemplo Creación de una solicitud de concesión de acceso
public void createAccessGrant() { CreateAccessGrantRequest createRequest = CreateAccessGrantRequest.builder() .accountId("111122223333") .accessGrantsLocationId("a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa") .permission("READ") .accessGrantsLocationConfiguration(AccessGrantsLocationConfiguration.builder().s3SubPrefix("prefixB*").build()) .grantee(Grantee.builder().granteeType("IAM").granteeIdentifier("arn:aws:iam::111122223333:user/data-consumer-3").build()) .build(); CreateAccessGrantResponse createResponse = s3Control.createAccessGrant(createRequest); LOGGER.info("CreateAccessGrantResponse: " + createResponse); }
ejemplo Creación de una respuesta a la concesión de acceso
CreateAccessGrantResponse( CreatedAt=2023-06-07T05:20:26.330Z, AccessGrantId=a1b2c3d4-5678-90ab-cdef-EXAMPLE33333, AccessGrantArn=arn:aws:s3:us-east-2:444455556666:access-grants/default/grant/a1b2c3d4-5678-90ab-cdef-EXAMPLE33333, Grantee=Grantee( GranteeType=IAM, GranteeIdentifier=arn:aws:iam::111122223333:user/data-consumer-3 ), AccessGrantsLocationId=a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa, AccessGrantsLocationConfiguration=AccessGrantsLocationConfiguration( S3SubPrefix=prefixB* ), GrantScope=s3://DOC-BUCKET-EXAMPLE/prefixB, Permission=READ )