Registrar una ubicación - Amazon Simple Storage Service

Registrar una ubicación

Tras crear una instancia de Amazon S3 Access Grants en una Región de AWS de su cuenta, puede registrar una ubicación de S3 en esa instancia. Una ubicación es un recurso de S3 que contiene datos a los que desea conceder acceso. Puede registrar la ubicación predeterminada, s3://, es decir, todos sus buckets en la Región de AWS, y restringir más adelante el alcance del acceso al crear concesiones de acceso individuales. También puede registrar un bucket específico o un bucket y un prefijo como ubicación.

En primer lugar, debe registrar al menos una ubicación en su instancia de Amazon S3 Access Grants antes de poder crear concesiones de acceso. Al registrar una ubicación, también debe especificar el rol de AWS Identity and Access Management (IAM) que Amazon S3 Access Grants asume para cumplir con las solicitudes de tiempo de ejecución de la ubicación y limitar el alcance de los permisos a la concesión específica en tiempo de ejecución.

S3 URI Rol de IAM Descripción
s3:// Default-IAM-role

La ubicación predeterminada, s3://, incluye todos los buckets de Región de AWS.

s3://DOC-EXAMPLE-BUCKET1/ IAM-role-For-bucket

En esta ubicación se incluyen todos los objetos del bucket especificado.

Antes de poder registrar una ubicación, asegúrese de que hace lo siguiente:

  • Cree uno o varios buckets que contengan los datos a los que desea otorgar acceso. Estos bucket deben encontrarse en la misma Región de AWS que su instancia de S3 Access Grants. Para obtener más información, consulte Creación de un bucket.

    Para añadir un prefijo a un bucket, consulte Creación de nombres de clave de objeto.

  • Cree un rol de IAM y otorgue acceso a la entidad principal del servicio de S3 Access Grants a este rol en el archivo de política de recursos. Para ello, puede crear un archivo JSON que contenga las siguientes instrucciones. Para añadir la política de recursos a su cuenta, consulte Crear y asociar su primera política administrada por el cliente.

    TestRolePolicy.json

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1234567891011", "Action": ["sts:AssumeRole", "sts:SetSourceIdentity", "sts:SetContext"], "Effect": "Allow", "Principal": {"Service":"access-grants.s3.amazonaws.com"} } ] }
  • Crear una política de IAM para asociar permisos de Amazon S3 al rol de IAM. Consulte el siguiente archivo iam-policy.json de ejemplo y sustituya user input placeholders por su propia información.

    nota
    • Si utiliza el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) para cifrar sus datos, en el siguiente ejemplo se incluyen los permisos de AWS KMS necesarios para el rol de IAM de la política. Si no utiliza esta característica, puede eliminar estos permisos de su política de IAM.

    • Puede restringir el acceso del rol de IAM a los datos de S3 solo si S3 Access Grants ofrece las credenciales. En este ejemplo se muestra cómo añadir una instrucción Condition para una instancia de S3 Access Grants. Para ello, sustituya el ARN de instancia de S3 Access Grants en la instrucción de condición por el ARN de instancia de S3 Access Grants, que tiene el siguiente formato: arn:aws:s3:region:accountId:access-grants/default

    iam-policy.json

    { "Version":"2012-10-17", "Statement": [ { "Sid": "ObjectLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectVersionAcl", "s3:ListMultipartUploadParts" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:region:accountId:access-grants/default"] } } }, { "Sid": "ObjectLevelWritePermissions", "Effect":"Allow", "Action":[ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectVersionAcl", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:AbortMultipartUpload" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Región de AWS:accountId:access-grants/default"] } } }, { "Sid": "BucketLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Región de AWS:accountId:access-grants/default"] } } }, { "Sid": "KMSPermissions", "Effect":"Allow", "Action":[ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource":[ "*" ] } ] }

Puede registrar una ubicación en su instancia de S3 Access Grants mediante la consola de Amazon S3, la AWS Command Line Interface (AWS CLI), la API de REST de Amazon S3 o los SDK de AWS.

Debe tener al menos una ubicación registrada antes de poder otorgar acceso a sus datos de S3 con S3 Access Grants.

Para registrar una ubicación en su instancia de S3 Access Grants
  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 1: Crear una instancia de S3 Access Grants) y de haber navegado al Paso 2 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 Ubicaciones, elija Registrar ubicación.

    1. En Ámbito de ubicación, elija Examinar S3 o introduzca la ruta URI de S3 a la ubicación que desee registrar. Para ver los formatos de URI de S3, consulte la tabla de formatos de ubicación. Tras introducir un URI, puede seleccionar Ver para navegar hasta la ubicación.

    2. En Rol de IAM, elija una de las siguientes opciones:

      • Elija entre los roles de IAM existentes

        Elija un rol de IAM de la lista desplegable. Después de elegir un rol, elija Ver para asegurarse de que este rol tiene los permisos necesarios para administrar la ubicación que está registrando. En concreto, asegúrese de que este rol conceda a S3 Access Grants los permisos sts:AssumeRole ysts:SetSourceIdentity.

      • Introduzca el ARN del rol de IAM

        Vaya a la consola de IAM. Copie el Nombre de recurso de Amazon (ARN) del rol de IAM y péguelo en este cuadro.

    3. Para terminar, seleccione Siguiente o Registrar ubicación.

  4. Solución de problemas:

    No se puede registrar la ubicación
    • Es posible que la ubicación ya esté registrada.

      Puede que no tenga el permiso s3:CreateAccessGrantsLocation para registrar ubicaciones. 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.

Puede registrar la ubicación predeterminada, s3://, o una ubicación personalizada en su instancia de S3 Access Grants. Asegúrese de crear primero un rol de IAM con acceso de entidad principal a la ubicación y, después, de conceder el permiso a S3 Access Grants para asumir este rol.

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

ejemplo Crear una política de recursos

Cree una política que permita que S3 Access Grants pueda asumir el rol de IAM. Para ello, puede crear un archivo JSON que contenga las siguientes instrucciones. Para añadir la política de recursos a su cuenta, consulte Crear y asociar su primera política administrada por el cliente.

TestRolePolicy.json

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1234567891011", "Action": ["sts:AssumeRole", "sts:SetSourceIdentity"], "Effect": "Allow", "Principal": {"Service":"access-grants.s3.amazonaws.com"} } ] }
ejemplo Crear el rol

Ejecute el siguiente comando de IAM para crear el rol.

aws iam create-role --role-name accessGrantsTestRole \ --region us-east-2 \ --assume-role-policy-document file://TestRolePolicy.json

Al ejecutar el comando create-role se devuelve la política:

{ "Role": { "Path": "/", "RoleName": "accessGrantsTestRole", "RoleId": "AROASRDGX4WM4GH55GIDA", "Arn": "arn:aws:iam::111122223333:role/accessGrantsTestRole", "CreateDate": "2023-05-31T18:11:06+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1685556427189", "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity" ], "Effect": "Allow", "Principal": { "Service":"access-grants.s3.amazonaws.com" } } ] } } }

Crear una política de IAM para asociar permisos de Amazon S3 al rol de IAM. Consulte el siguiente archivo iam-policy.json de ejemplo y sustituya user input placeholders por su propia información.

nota

Si utiliza el cifrado del servidor con claves de AWS Key Management Service (AWS KMS) para cifrar sus datos, en el siguiente ejemplo se añaden los permisos de AWS KMS necesarios para el rol de IAM de la política. Si no utiliza esta característica, puede eliminar estos permisos de su política de IAM.

Para garantizar que el rol de IAM solo se pueda utilizar para acceder a los datos de S3 en caso de que S3 Access Grants proporcione las credenciales, en este ejemplo se muestra cómo añadir una instrucción Condition que especifique la instancia de S3 Access Grants (s3:AccessGrantsInstance: InstanceArn) en su política de IAM. Al utilizar la siguiente política de ejemplo, sustituya user input placeholders con su propia información.

iam-policy.json

{ "Version":"2012-10-17", "Statement": [ { "Sid": "ObjectLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion", "s3:GetObjectAcl", "s3:GetObjectVersionAcl", "s3:ListMultipartUploadParts" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:region:accountId:access-grants/default"] } } }, { "Sid": "ObjectLevelWritePermissions", "Effect":"Allow", "Action":[ "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectVersionAcl", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:AbortMultipartUpload" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Región de AWS:accountId:access-grants/default"] } } }, { "Sid": "BucketLevelReadPermissions", "Effect":"Allow", "Action":[ "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::*" ], "Condition":{ "StringEquals": { "aws:ResourceAccount": "accountId" }, "ArnEquals": { "s3:AccessGrantsInstanceArn": ["arn:aws:s3:Región de AWS:accountId:access-grants/default"] } } }, { "Sid": "KMSPermissions", "Effect":"Allow", "Action":[ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource":[ "*" ] } ] }

Ejecute el siguiente comando:

aws iam put-role-policy \ --role-name accessGrantsTestRole \ --policy-name accessGrantsTestRole \ --policy-document file://iam-policy.json
ejemplo Registrar la ubicación predeterminada
aws s3control create-access-grants-location \ --account-id 111122223333 \ --location-scope s3:// \ --iam-role-arn arn:aws:iam::111122223333:role/accessGrantsTestRole

Respuesta:

{"CreatedAt": "2023-05-31T18:23:48.107000+00:00", "AccessGrantsLocationId": "default", "AccessGrantsLocationArn": "arn:aws:s3:us-east-2:111122223333:access-grants/default/location/default", "LocationScope": "s3://” "IAMRoleArn": "arn:aws:iam::111122223333:role/accessGrantsTestRole" }
ejemplo Registrar una ubicación personalizada
aws s3control create-access-grants-location \ --account-id 111122223333 \ --location-scope s3://DOC-BUCKET-EXAMPLE/ \ --iam-role-arn arn:aws:iam::123456789012:role/accessGrantsTestRole

Respuesta:

{"CreatedAt": "2023-05-31T18:23:48.107000+00:00", "AccessGrantsLocationId": "635f1139-1af2-4e43-8131-a4de006eb456", "AccessGrantsLocationArn": "arn:aws:s3:us-east-2: 111122223333:access-grants/default/location/635f1139-1af2-4e43-8131-a4de006eb888", "LocationScope": "s3://DOC-BUCKET-EXAMPLE/", "IAMRoleArn": "arn:aws:iam::111122223333:role/accessGrantsTestRole" }

Para obtener información sobre la compatibilidad con la API de REST de Amazon S3 para administrar una instancia de S3 Access Grants, 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 registrar ubicaciones con los SDK de AWS.

Para utilizar los siguientes ejemplos, reemplace los user input placeholders con su propia información.

Java

Puede registrar la ubicación predeterminada, s3://, o una ubicación personalizada en su instancia de S3 Access Grants. Asegúrese de crear primero un rol de IAM con acceso de entidad principal a la ubicación y, después, de conceder el permiso a S3 Access Grants para asumir este rol.

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

ejemplo Registrar una ubicación predeterminada

Solicitud:

public void createAccessGrantsLocation() { CreateAccessGrantsLocationRequest createRequest = CreateAccessGrantsLocationRequest.builder() .accountId("111122223333") .locationScope("s3://") .iamRoleArn("arn:aws:iam::123456789012:role/accessGrantsTestRole") .build(); CreateAccessGrantsLocationResponse createResponse = s3Control.createAccessGrantsLocation(createRequest); LOGGER.info("CreateAccessGrantsLocationResponse: " + createResponse); }

Response: (Respuesta:)

CreateAccessGrantsLocationResponse( CreatedAt=2023-06-07T04:35:11.027Z, AccessGrantsLocationId=default, AccessGrantsLocationArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/location/default, LocationScope=s3://, IAMRoleArn=arn:aws:iam::111122223333:role/accessGrantsTestRole )
ejemplo Registrar una ubicación personalizada

Solicitud:

public void createAccessGrantsLocation() { CreateAccessGrantsLocationRequest createRequest = CreateAccessGrantsLocationRequest.builder() .accountId("111122223333") .locationScope("s3://DOC-BUCKET-EXAMPLE/") .iamRoleArn("arn:aws:iam::111122223333:role/accessGrantsTestRole") .build(); CreateAccessGrantsLocationResponse createResponse = s3Control.createAccessGrantsLocation(createRequest); LOGGER.info("CreateAccessGrantsLocationResponse: " + createResponse); }

Response: (Respuesta:)

CreateAccessGrantsLocationResponse( CreatedAt=2023-06-07T04:35:10.027Z, AccessGrantsLocationId=18cfe6fb-eb5a-4ac5-aba9-8d79f04c2012, AccessGrantsLocationArn=arn:aws:s3:us-east-2:111122223333:access-grants/default/location/18cfe6fb-eb5a-4ac5-aba9-8d79f04c2666, LocationScope= s3://test-bucket-access-grants-user123/, IAMRoleArn=arn:aws:iam::111122223333:role/accessGrantsTestRole )