Configurar las políticas de IAM para el uso de puntos de acceso - Amazon Simple Storage Service

Configurar las políticas de IAM para el uso de puntos de acceso

Los puntos de acceso de Amazon S3 admiten políticas de recursos de AWS Identity and Access Management (IAM) que permiten controlar el uso del punto de acceso en función del recurso, del usuario o de otras condiciones. Para que una aplicación o un usuario puedan acceder a objetos a través de un punto de acceso, tanto el punto de acceso como el bucket subyacente deben permitir la solicitud.

importante

Agregar un punto de acceso de S3 a un bucket no cambia el comportamiento del bucket cuando se accede a él directamente mediante el nombre del bucket o el nombre de recurso de Amazon (ARN). Todas las operaciones existentes respecto al bucket continuarán funcionando como antes. Las restricciones que se incluyen en una política de punto de acceso solo se aplican a las solicitudes realizadas a través de ese punto de acceso.

Cuando utilice políticas de recurso de IAM, asegúrese de resolver advertencias de seguridad, errores, advertencias generales y sugerencias de AWS Identity and Access Management Access Analyzer antes de guardar la política. IAM Access Analyzer ejecuta verificaciones de política para validarla contra la Gramática de la política de IAM y las prácticas recomendadas. Estas verificaciones generan hallazgos y proporcionan recomendaciones para ayudarle a crear políticas funcionales y que se ajustan a las prácticas recomendadas de seguridad.

Para obtener más información sobre la validación de políticas utilizando IAM Access Analyzer, consulte Validación de políticas de IAM Access Analyzer en la Guía del usuario de IAM. Para ver una lista de advertencias, errores y sugerencias que devuelve IAM Access Analyzer, consulte Referencia de verificación de políticas de IAM Access Analyzer.

Ejemplos de políticas de puntos de acceso

En los ejemplos siguientes se muestra cómo crear políticas de IAM para controlar las solicitudes realizadas a través de un punto de acceso.

nota

Los permisos concedidos en una política de puntos de acceso se aplican solo si el bucket subyacente también permite el mismo acceso. Puede lograr esto de dos maneras:

  1. (Recomendado) Delegue el control de acceso del bucket al punto de acceso como se describe en Delegar el control de acceso a los puntos de acceso.

  2. Agregue los mismos permisos contenidos en la política de puntos de acceso a la política del bucket subyacente. En el ejemplo 1 de política de puntos de acceso se muestra cómo modificar la política de bucket subyacente para permitir el acceso necesario.

ejemplo 1: Conceder política de punto de acceso

La siguiente política de punto de acceso concede al usuario de IAM Jane de la cuenta 123456789012 permisos para objetos GET y PUT con el prefijo Jane/ a través del punto de acceso my-access-point de la cuenta 123456789012.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Jane" }, "Action": ["s3:GetObject", "s3:PutObject"], "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/Jane/*" }] }
nota

Para que la política de punto de acceso conceda efectivamente acceso a Jane, el bucket subyacente también debe permitir el mismo acceso a Jane. Puede delegar el control de acceso desde el bucket al punto de acceso como se describe en Delegar el control de acceso a los puntos de acceso. O puede agregar la siguiente política al bucket subyacente para conceder los permisos necesarios a Jane. Tenga en cuenta que la entrada Resource difiere entre las políticas de punto de acceso y de bucket.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Jane" }, "Action": ["s3:GetObject", "s3:PutObject"], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET1/Jane/*" }] }
ejemplo 2: Política de punto de acceso con condición de etiqueta

La siguiente política de punto de acceso concede al usuario de IAM Mateo de la cuenta 123456789012 permisos para objetos GET a través del punto de acceso my-access-point de la cuenta 123456789012 que tengan la clave de etiqueta data establecida con un valor de finance.

{ "Version":"2012-10-17", "Statement": [ { "Effect":"Allow", "Principal" : { "AWS": "arn:aws:iam::123456789012:user/Mateo" }, "Action":"s3:GetObject", "Resource" : "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/*", "Condition" : { "StringEquals": { "s3:ExistingObjectTag/data": "finance" } } }] }
ejemplo 3: Política de puntos de acceso que permite el listado de buckets

La siguiente política de punto de acceso concede al usuario de IAM Arnav de la cuenta 123456789012 permiso para consultar los objetos contenidos en el punto de acceso subyacente del bucket my-access-point de la cuenta 123456789012.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Arnav" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point" }] }
ejemplo 4: Política de control de servicios

La política de control de servicio siguiente requiere que todos los puntos de acceso nuevos se creen con el origen de red de nube privada virtual (VPC). Con esta política en vigor, los usuarios de la organización no pueden crear nuevos puntos de acceso a los que se pueda acceder desde Internet.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "s3:CreateAccessPoint", "Resource": "*", "Condition": { "StringNotEquals": { "s3:AccessPointNetworkOrigin": "VPC" } } }] }
ejemplo 5: Política de bucket para limitar las operaciones de S3 a los orígenes de red VPC

La siguiente política de bucket limita el acceso a todas las operaciones de objetos de S3 para el bucket DOC-EXAMPLE-BUCKET a los puntos de acceso cuyo origen de red sea VPC.

importante

Antes de utilizar una instrucción como la que se muestra en este ejemplo, asegúrese de que no necesita usar características que no sean compatibles con los puntos de acceso, como la replicación entre regiones.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": [ "s3:AbortMultipartUpload", "s3:BypassGovernanceRetention", "s3:DeleteObject", "s3:DeleteObjectTagging", "s3:DeleteObjectVersion", "s3:DeleteObjectVersionTagging", "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectLegalHold", "s3:GetObjectRetention", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging", "s3:ListMultipartUploadParts", "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectLegalHold", "s3:PutObjectRetention", "s3:PutObjectTagging", "s3:PutObjectVersionAcl", "s3:PutObjectVersionTagging", "s3:RestoreObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*", "Condition": { "StringNotEquals": { "s3:AccessPointNetworkOrigin": "VPC" } } } ] }

Claves de condición

Los puntos de acceso de S3 tienen claves de condición que se pueden utilizar en las políticas de IAM para controlar el acceso a los recursos. Las siguientes claves de condición representan solo una parte de una política de IAM. Para ver ejemplos de política completos, consulte Ejemplos de políticas de puntos de acceso, Delegar el control de acceso a los puntos de acceso y Concesión de permisos para puntos de acceso entre cuentas.

s3:DataAccessPointArn

Este ejemplo muestra una cadena que puede usar para obtener coincidencias en el ARN de un punto de acceso. En el siguiente ejemplo, se encuentran todas las concordancias con puntos de acceso de la Cuenta de AWS 123456789012 de la región us-west-2:

"Condition" : { "StringLike": { "s3:DataAccessPointArn": "arn:aws:s3:us-west-2:123456789012:accesspoint/*" } }
s3:DataAccessPointAccount

Este ejemplo muestra un operador de cadena que puede utilizar para hallar coincidencias del ID de cuenta del propietario de un punto de acceso. En el siguiente ejemplo, se encuentran todas las concordancias de puntos de acceso que son propiedad de la Cuenta de AWS 123456789012.

"Condition" : { "StringEquals": { "s3:DataAccessPointAccount": "123456789012" } }
s3:AccessPointNetworkOrigin

En este ejemplo, se muestra un operador de cadena que puede utilizar para hallar coincidencias del origen de red, ya sea Internet o VPC. En el ejemplo siguiente, solo se hallarán las coincidencias de los puntos de acceso cuyo origen sea VPC.

"Condition" : { "StringEquals": { "s3:AccessPointNetworkOrigin": "VPC" } }

Para obtener más información sobre el uso de claves de condición con Amazon S3, consulte Actions, resources, and condition keys for Amazon S3 en la Referencia de autorización de servicios.

Delegar el control de acceso a los puntos de acceso

Puede delegar el control de acceso de un bucket en los puntos de acceso del bucket. La política de bucket de ejemplo siguiente permite el acceso completo a todos los puntos de acceso de la cuenta del propietario del bucket. Por lo tanto, todo el acceso a este bucket está controlado por las políticas asociadas a sus puntos de acceso. Recomendamos configurar los buckets de esta manera para todos los casos de uso que no requieran acceso directo al bucket.

ejemplo 6: Política de bucket que delega el control de acceso a los puntos de acceso
{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : { "AWS": "*" }, "Action" : "*", "Resource" : [ "Bucket ARN", "Bucket ARN/*"], "Condition": { "StringEquals" : { "s3:DataAccessPointAccount" : "Bucket owner's account ID" } } }] }

Concesión de permisos para puntos de acceso entre cuentas

Para crear un punto de acceso a un bucket que es propiedad de otra cuenta, primero debe crear el punto de acceso especificando el nombre del bucket y el ID del propietario de la cuenta. A continuación, el propietario del bucket debe actualizar la política del bucket para autorizar las solicitudes desde el punto de acceso. La creación de un punto de acceso es similar a crear un CNAME de DNS, ya que el punto de acceso no proporciona acceso al contenido del bucket. Todo el acceso al bucket está controlado por la política de bucket. La siguiente política de bucket de ejemplo permite solicitudes GET y LIST en el bucket desde un punto de acceso que es propiedad de una Cuenta de AWS de confianza.

Reemplace ARN del bucket por el ARN del bucket.

ejemplo 7: Política de bucket que delega permisos en otra Cuenta de AWS
{ "Version": "2012-10-17", "Statement" : [ { "Effect": "Allow", "Principal" : { "AWS": "*" }, "Action" : ["s3:GetObject","s3:ListBucket"], "Resource" : [ "Bucket ARN", "Bucket ARN/*"], "Condition": { "StringEquals" : { "s3:DataAccessPointAccount" : "Access point owner's account ID" } } }] }