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:
-
(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.
-
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
de la cuenta Jane
permisos para objetos 123456789012
GET
y PUT
con el prefijo
a través del punto de acceso Jane/
de la cuenta my-access-point
.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
, 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 Jane
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:::amzn-s3-demo-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
de la cuenta Mateo
permisos para objetos 123456789012
GET
a través del punto de acceso
de la cuenta my-access-point
que tengan la clave de etiqueta 123456789012
establecida con un valor de data
.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
permiso para consultar los objetos contenidos en el punto de acceso subyacente del bucket 123456789012
de la cuenta my-access-point
.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
a los puntos de acceso cuyo origen de red sea VPC.amzn-s3-demo-bucket
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:::
amzn-s3-demo-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
de la región123456789012
: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
oVPC
. 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.
Para obtener más información sobre los permisos para las operaciones de la API de S3 por tipos de recursos de S3, consulte Permisos necesarios para las operaciones de la API de Amazon S3.
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
" } } }] }