Conceptos de S3 Access Grants - Amazon Simple Storage Service

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ón s3://DOC-EXAMPLE-BUCKET1 para las concesiones que desee limitar a este bucket y también puede registrar la ubicación predeterminada 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 o READWRITE) diferentes. Por ejemplo, es posible que tenga una concesión que permita a un grupo concreto del directorio corporativo, acceso de READ 01234567-89ab-cdef-0123-456789abcdef a s3://DOC-EXAMPLE-BUCKET1/projects/items/*. Esta concesión brinda acceso de READ a los usuarios de ese grupo a cada objeto que tengan un nombre de clave con el prefijo projects/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 o READWRITE. La instancia de S3 Access Grants evalúa la solución GetDataAccess 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.

Cómo funciona S3 Access Grants

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.