Registrar una ubicación
Tras crear una instancia de Concesiones de acceso a Amazon S3 en una Región de AWS de su cuenta, puede registrar una ubicación de S3 en esa instancia. Una ubicación de Concesiones de acceso a Amazon S3 asigna la ubicación predeterminada de S3 (s3://
), un bucket o un prefijo a un rol de AWS Identity and Access Management (IAM). Concesiones de acceso a Amazon S3 asume este rol de IAM para vender credenciales temporales al beneficiario que accede a esa ubicación en particular. En primer lugar, debe registrar al menos una ubicación en su instancia de Concesiones de acceso a Amazon S3 para poder crear una concesión de acceso.
Caso de uso recomendado
Le recomendamos que registre la ubicación predeterminada (s3://
) y la asigne a un rol de IAM. La ubicación en la ruta de S3 predeterminada (s3://
) cubre el acceso a todos los buckets de S3 en esa Región de AWS de su cuenta. Al crear una concesión de acceso, puede limitar el ámbito de la concesión a un bucket, un prefijo o un objeto dentro de la ubicación predeterminada.
Casos de uso de administración de acceso complejos
Los casos de uso de administración de acceso más complejos pueden requerir que registre una ubicación diferente a la predeterminada. Estos son algunos ejemplos de estos casos de uso:
-
Supongamos que
amzn-s3-demo-bucket
es una ubicación registrada en su instancia de Concesiones de acceso a Amazon S3 con un rol de IAM asignado, pero a este rol de IAM se le niega el acceso a un prefijo concreto del bucket. En este caso, puede registrar el prefijo al que el rol de IAM no tiene acceso como una ubicación independiente y asignar esa ubicación a un rol de IAM diferente con el acceso necesario. -
Supongamos que desea crear concesiones que restrinjan el acceso solo a los usuarios dentro de un punto de conexión a la nube privada virtual (VPC). En este caso, puede registrar una ubicación para un bucket en el que el rol de IAM restrinja el acceso al punto de conexión de VPC. Más adelante, cuando un beneficiario solicite las credenciales a Concesiones de acceso a Amazon S3, este asumirá el rol de IAM de la ubicación para vender las credenciales temporales. Esta credencial denegará el acceso al bucket específico, a menos que el iniciador se encuentre dentro del punto de conexión de VPC. Esta denegación de permiso se aplica además del permiso normal READ, WRITE o READWRITE que se especifica en la concesión.
Al registrar una ubicación, también debe especificar el rol de IAM que Concesiones de acceso a Amazon S3 asume para vender credenciales temporales y limitar el ámbito de los permisos para una concesión específica.
Si su caso de uso requiere que registre varias ubicaciones en su instancia de Concesiones de acceso a Amazon S3, puede registrar cualquiera de las siguientes opciones:
S3 URI | rol de IAM | Descripción |
---|---|---|
s3:// |
|
La ubicación predeterminada, |
s3:// |
|
En esta ubicación se incluyen todos los objetos del bucket especificado. |
s3:// |
|
En esta ubicación se incluyen todos los objetos del bucket con un nombre de clave de objeto que comience con este prefijo. |
Antes de poder registrar un bucket o prefijo específicos, 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.
La adición de un prefijo es un paso opcional. Los prefijos son cadenas al principio del nombre de la clave del objeto. Puede utilizarlos para organizar los objetos en su bucket, así como para administrar el acceso. Para añadir un prefijo a un bucket, consulte Creación de nombres de clave de objeto.
-
Cree un rol de IAM que tenga permisos para acceder a sus datos de S3 en la Región de AWS. Para obtener más información, consulte Creación de roles de IAM en la AWS IAM Identity CenterGuía del usuario de .
En la política de confianza del rol de IAM, proporcione al servicio de Concesiones de acceso a Amazon S3 acceso de entidad principal (
access-grants.s3.amazonaws.com
) al rol de IAM que ha creado. Para ello, puede crear un archivo JSON que contenga las siguientes instrucciones. Para agregar la política de confianza a su cuenta, consulte Creación de un rol mediante políticas de confianza personalizadas.TestRolePolicy.json
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1234567891011", "Effect": "Allow", "Principal": { "Service":"access-grants.s3.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetSourceIdentity" ], "Condition": { "StringEquals": { "aws:SourceAccount":"
accountId
", "aws:SourceArn":"arn:aws:s3:region
:accountId
:access-grants/default" } } }, //Optionally, for an IAM Identity Center use case, add: { "Sid": "Stmt1234567891012", "Effect": "Allow", "Principal": { "Service": "access-grants.s3.amazonaws.com" }, "Action": "sts:SetContext", "Condition":{ "StringEquals":{ "aws:SourceAccount":"accountId
", "aws:SourceArn":"arn:aws:s3:region
:accountId
:access-grants/default" }, "ForAllValues:ArnEquals": { "sts:RequestContextProviders":"arn:aws:iam::aws:contextProvider/IdentityCenter" } } } ] }-
Cree una política de IAM para asociar permisos de Amazon S3 al rol de IAM que ha creado. Consulte el siguiente archivo
iam-policy.json
de ejemplo y sustituya
por su propia información.user input placeholders
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 usar estaCondition
, sustituya el ARN de instancia de Concesiones de acceso a Amazon S3 en la instrucciónCondition
por el ARN de instancia de Concesiones de acceso a Amazon S3, 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"] } } }, //Optionally add the following section if you use SSE-KMS encryption { "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.
nota
Tras registrar la primera ubicación en su instancia de Concesiones de acceso a Amazon S3, la instancia seguirá sin tener ninguna concesión de acceso individual. Para crear una concesión de acceso, consulte Crear concesiones.
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
Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/
. -
En el panel de navegación izquierdo, seleccione Concesiones de acceso.
-
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.
-
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.
-
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.
-
-
Para terminar, seleccione Siguiente o Registrar ubicación.
-
-
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
con su información.user input
placeholders
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
\ --regionus-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
por su propia información. user input placeholders
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:
) en su política de IAM. Al utilizar la siguiente política de ejemplo, sustituya InstanceArn
con su propia información.user input placeholders
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":[ "*" ] } ] }
Ejecuta 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-scopes3://
\ --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-scopes3://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
con su propia información.user input
placeholders