Conceptos de S3 Access Grants
S3 Access Grants presenta los siguientes conceptos para su esquema de acceso simplificado:
- Instancias de S3 Access Grants
-
Una instancia de S3 Access Grants es un contenedor lógico para concesiones individuales que definen quién tiene qué nivel de acceso a qué datos de Amazon S3. Puede tener una instancia de S3 Access Grants por Región de AWS por Cuenta de AWS. Utiliza esta instancia de S3 Access Grants para controlar el acceso a todos los buckets de la misma cuenta y Región de AWS. Si quiere usar S3 Access Grants para otorgar acceso a identidades de usuarios y grupos de su directorio corporativo, también debe asociar su instancia de S3 Access Grants a una instancia del Centro de identidades de AWS Identity and Access Management (IAM).
- Ubicaciones
-
Una ubicación define a qué datos puede otorgar acceso su instancia de S3 Access Grants. S3 Access Grants funciona al proporcionar credenciales de IAM con un acceso limitado a un prefijo, bucket u objeto de S3 en particular. Se asocia una ubicación de S3 Access Grants a un rol de IAM, a partir de la cual se crean estas sesiones temporales. La configuración de ubicación más habitual es una ubicación única en
s3://
para toda la instancia de S3 Access Grants, que puede abarcar el acceso a todos los buckets de S3 de la cuenta y Región de AWS. También puede crear varias ubicaciones en su instancia de S3 Access Grants. Por ejemplo, puede registrar un bucket como ubicacións3://
para las concesiones que desee limitar a este bucket y también puede registrar la ubicación predeterminadaDOC-EXAMPLE-BUCKET1
s3://
. - Concesiones
-
Para limitar el alcance del acceso dentro de una ubicación, se crean concesiones individuales. Una concesión individual en una instancia de S3 Access Grants permite a una entidad específica (una entidad principal de IAM o un usuario o grupo de un directorio corporativo) acceder a un prefijo, bucket u objeto de Amazon S3. Para cada concesión, puede definir un alcance (un prefijo, un bucket o un objeto) y un nivel de acceso (
READ
,WRITE
oREADWRITE
) diferentes. Por ejemplo, es posible que tenga una concesión que permita a un grupo concreto del directorio corporativo, acceso deREAD
01234567-89ab-cdef-0123-456789abcdef
as3://
. Esta concesión brinda acceso deDOC-EXAMPLE-BUCKET1
/projects/items/*READ
a los usuarios de ese grupo a cada objeto que tengan un nombre de clave con el prefijoprojects/items/
del bucket denominado
.DOC-EXAMPLE-BUCKET1
- Credenciales temporales de S3 Access Grants
-
Una aplicación puede solicitar credenciales de acceso justo a tiempo llamando a una nueva operación de la API de S3, GetDataAccess, para solicitar el acceso a un único objeto, prefijo o bucket con un nivel de permiso de
READ
,WRITE
oREADWRITE
. La instancia de S3 Access Grants evalúa la soluciónGetDataAccess
con respecto a las concesiones de las que dispone. Si hay una concesión coincidente, S3 Access Grants asume el rol de IAM asociado a la ubicación de la concesión coincidente. A continuación, S3 Access Grants aplica el ámbito de los permisos de la sesión de IAM precisamente al bucket, prefijo u objeto de S3 especificado por el ámbito de la concesión. El tiempo de vencimiento de las credenciales de acceso temporal es de 1 hora de forma predeterminada, pero puede establecerlo en cualquier valor, de 15 minutos a 36 horas.
Funcionamiento
En el siguiente diagrama, una ubicación predeterminada de Amazon S3 con el alcance s3://
está registrada con el rol de IAM s3ag-location-role
. Este rol de IAM tiene permisos para realizar acciones de Amazon S3 dentro de la cuenta cuando sus credenciales se obtienen a través de S3 Access Grants.
En esta ubicación, se crean dos concesiones de acceso individuales para dos usuarios de IAM. Al usuario de IAM, Bob, se le concede acceso de READ
y WRITE
con el prefijo bob/
del bucket DOC-BUCKET-EXAMPLE
. A otro rol de IAM, Alice, solo se le concede acceso de READ
con el prefijo alice/
del bucket DOC-BUCKET-EXAMPLE
. Se define una concesión, coloreada en azul, para que Bob acceda al prefijo bob/
del bucket DOC-BUCKET-EXAMPLE
. Se define una concesión, coloreada en verde, para que Alice acceda al prefijo del alice/
del bucket DOC-BUCKET-EXAMPLE
.
Cuando Bob READ
los datos, el rol de IAM asociado a la ubicación en la que se encuentra su concesión llama a la operación de la API GetDataAccess de S3 Access Grants. Si Bob intenta READ
cualquier prefijo u objeto de S3 que comience por s3://DOC-BUCKET-EXAMPLE/bob/*
, la solicitud GetDataAccess
devuelve un conjunto de credenciales de sesión de IAM temporales con permiso para s3://DOC-BUCKET-EXAMPLE/bob/*
. Del mismo modo, Bob puede WRITE
en cualquier prefijo u objeto de S3 que comience por s3://DOC-BUCKET-EXAMPLE/bob/*
, ya que la concesión también lo permite.
Del mismo modo, Alice puede READ
cualquier cosa que comience con s3://DOC-BUCKET-EXAMPLE/alice/
. Sin embargo, si intenta WRITE
cualquier cosa con cualquier bucket, prefijo u objeto en s3://
, recibirá un mensaje de error de acceso denegado (403 Prohibido), ya que no hay ninguna concesión que le brinde acceso de WRITE
a ningún dato. Además, si Alice solicita algún nivel de acceso (READ
o WRITE
) a datos fuera de s3://DOC-BUCKET-EXAMPLE/alice/
, volverá a recibir un error de acceso denegado.
Este patrón se adapta a un gran número de usuarios y buckets, y simplifica la administración de esos permisos. En lugar de editar políticas de bucket de S3 potencialmente voluminosas cada vez que quiera añadir o eliminar una relación de acceso a un prefijo de usuario individual, puede añadir y eliminar concesiones individuales y discretas.