Ejemplos de políticas de bucket de Amazon S3
Con las políticas de bucket de Amazon S3, puede proteger el acceso a los objetos de los buckets, de modo que solo los usuarios con los permisos adecuados puedan acceder a ellos. Incluso puede impedir que los usuarios autenticados sin los permisos adecuados accedan a los recursos de Amazon S3.
En esta sección se presentan ejemplos de casos de uso típicos para políticas de bucket. Estas políticas de ejemplo usan
como valor de recurso. Para probar estas políticas, sustituya amzn-s3-demo-bucket
por su propia información (como el nombre del bucket). user input placeholders
Para conceder o denegar permisos a un conjunto de objetos, puede usar caracteres comodín (*
) en nombres de recurso de Amazon (ARN) y otros valores. Por ejemplo, puede controlar el acceso a grupos de objetos que empiezan por un prefijo común o terminar con una extensión específica, como .html
.
Para obtener más información sobre el lenguaje de la política de AWS Identity and Access Management (IAM), consulte Políticas y permisos en Amazon S3.
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.
nota
Si utiliza la consola de Amazon S3 para probar los permisos, debe conceder permisos adicionales requeridos por la consola: s3:ListAllMyBuckets
, s3:GetBucketLocation
y s3:ListBucket
. Para ver un ejemplo de un tutorial en el que se conceden permisos a usuarios y se prueban esos permisos utilizando la consola, consulte Controlar el acceso a un bucket con las políticas de usuario.
Los recursos adicionales para crear políticas de bucket incluyen lo siguiente:
-
Para obtener una lista de las acciones, recursos y claves de condición de política de IAM que se pueden utilizar al crear una política de buckets, consulte Acciones, recursos y claves de condición para Amazon S3 en la Referencia de autorizaciones 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.
-
Para obtener información sobre cómo crear una política de S3, consulte Agregar una política de bucket mediante la consola de Amazon S3.
-
Para solucionar los errores de una política, consulte Solución de problemas de errores de acceso rechazado (403 Forbidden) en Amazon S3.
Temas
- Concesión de permisos de solo lectura a un usuario anónimo público
- Requerir cifrado
- Administración de buckets mediante ACL predefinidas
- Administración del acceso a objetos con etiquetado de objetos
- Administración del acceso a objetos mediante claves de condición globales
- Administración del acceso en función de solicitudes HTTP o HTTPS
- Administración del acceso de los usuarios a carpetas específicas
- Administración del acceso para los registros de acceso
- Administración del acceso a una OAI de Amazon CloudFront
- Administración del acceso para la Lente de almacenamiento de Amazon S3
- Administración de permisos para inventario de S3, análisis de S3 e informes de inventario de S3
- Exigir MFA
- Prevención de que los usuarios eliminen objetos
Concesión de permisos de solo lectura a un usuario anónimo público
Puede usar la configuración de la política para conceder acceso a usuarios anónimos públicos, lo que resulta útil si está configurando el bucket como un sitio web estático. Para conceder acceso a usuarios públicos anónimos, es necesario deshabilitar la configuración de Bloqueo de acceso público para su bucket. Para obtener más información acerca de cómo hacerlo y la política necesaria, consulte Configurar permisos para el acceso a sitios web. Para obtener información sobre cómo configurar políticas más restrictivas con el mismo propósito, consulte ¿Cómo puedo conceder acceso de lectura público a algunos objetos de mi bucket de Amazon S3?
De forma predeterminada, Amazon S3 bloquea el acceso público a su cuenta y sus buckets. Si desea utilizar un bucket para alojar un sitio web estático, puede utilizar estos pasos para editar la configuración de bloqueo de acceso público.
aviso
Antes de completar estos pasos, consulte Bloquear el acceso público a su almacenamiento de Amazon S3 para asegurarse de que comprende y acepta los riesgos que implica permitir el acceso público. Cuando desactiva la configuración de acceso público de bloqueo para que el bucket sea público, cualquier usuario de Internet puede acceder al bucket. Le recomendamos que bloquee todo el acceso público a sus buckets.
-
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3
. -
Elija el nombre del bucket que ha configurado como sitio web estático.
-
Elija Permissions (Permisos).
-
En Block public access (bucket settings) (Bloquear acceso público [configuración de bucket]), elija Edit (Editar).
-
Desactive Block all public access (Bloquear todo el acceso público) y elija Save changes (Guardar cambios).
Amazon S3 desactiva la configuración de Bloqueo de acceso público para su bucket. Para crear un sitio web público y estático, es posible que también tenga que editar la configuración de Bloqueo de acceso público para su cuenta antes de agregar una política de bucket. Si la configuración de Bloqueo de acceso público de su cuenta está activada actualmente, verá una nota en Bloquear acceso público (configuración del bucket).
Requerir cifrado
Puede requerir cifrado del servidor con claves de AWS Key Management Service (AWS KMS) (SSE-KMS), como se muestra en los siguientes ejemplos.
Requerir SSE-KMS para todos los objetos escritos en un bucket
La política de ejemplo siguiente requiere que todos los objetos que se escriben en el bucket se cifren con el cifrado del lado del servidor mediante claves de AWS Key Management Service (AWS KMS) (SSE-KMS). Si el objeto no está cifrado con SSE-KMS, se deniega la solicitud.
{ "Version": "2012-10-17", "Id": "PutObjPolicy", "Statement": [{ "Sid": "
DenyObjectsThatAreNotSSEKMS
", "Principal": "*", "Effect": "Deny", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*", "Condition": { "Null": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "true" } } }] }
Requerir SSE-KMS con una AWS KMS key específica para todos los objetos escritos en un bucket
La siguiente política de ejemplo impide que se escriban objetos en el bucket si no están cifrados con SSE-KMS mediante un ID de clave KMS específico. Aunque los objetos se cifran con SSE-KMS mediante un cifrado predeterminado de encabezado por solicitud o de bucket, los objetos no se pueden escribir en el bucket si no se han cifrado con la clave KMS especificada. Asegúrese de sustituir el ARN de clave KMS que se usa en este ejemplo por su propio ARN de clave KMS.
{ "Version": "2012-10-17", "Id": "PutObjPolicy", "Statement": [{ "Sid": "
DenyObjectsThatAreNotSSEKMSWithSpecificKey
", "Principal": "*", "Effect": "Deny", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*", "Condition": { "ArnNotEqualsIfExists": { "s3:x-amz-server-side-encryption-aws-kms-key-id": "arn:aws:kms:us-east-2
:111122223333
:key/01234567-89ab-cdef-0123-456789abcdef
" } } }] }
Administración de buckets mediante ACL predefinidas
Concesión de permisos a varias cuentas para cargar objetos o establecer ACL de objetos para el acceso público
La política de ejemplo siguiente concede permisos s3:PutObject
y s3:PutObjectAcl
a múltiples Cuentas de AWS. Además, la política de ejemplo requiere que cualquier solicitud de estas operaciones incluya la lista de control de acceso (ACL) predefinida public-read. Para obtener más información, consulte Acciones de políticas para Amazon S3 y Claves de condición de políticas para Amazon S3.
aviso
La public-read
ACL predefinida permite que cualquier persona del mundo vea los objetos del bucket. Tenga cuidado al conceder acceso anónimo a su bucket de Amazon S3 o al deshabilitar la configuración del bloqueo de acceso público. Al otorgar acceso anónimo, cualquier persona puede acceder a su bucket. Le recomendamos que no conceda nunca acceso anónimo a su bucket de Amazon S3 a menos que lo necesite específicamente, por ejemplo con alojamiento de sitios web estáticos. Si desea habilitar la configuración del acceso público de bloques para el alojamiento de sitios web estáticos, consulte el Tutorial: Configuración de un sitio web estático en Amazon S3.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AddPublicReadCannedAcl", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::
111122223333
:root", "arn:aws:iam::444455556666
:root" ] }, "Action": [ "s3:PutObject", "s3:PutObjectAcl" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*", "Condition": { "StringEquals": { "s3:x-amz-acl": [ "public-read" ] } } } ] }
Conceder permisos entre cuentas para cargar objetos al mismo tiempo que se garantiza que el propietario del bucket tenga el control total
En el siguiente ejemplo, se muestra cómo permitir que otra Cuenta de AWS cargue objetos en el bucket al tiempo que se asegura de que tiene el control total de los objetos cargados. Esta política otorga una Cuenta de AWS específica (
) la capacidad de cargar objetos solo si esa cuenta incluye la ACL predefinida 111122223333
bucket-owner-full-control
en la carga. La condición StringEquals
en la política especifica la clave de condición s3:x-amz-acl
para expresar el requisito de ACL predefinido. Para obtener más información, consulte Claves de condición de políticas para Amazon S3.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"PolicyForAllowUploadWithACL", "Effect":"Allow", "Principal":{"AWS":"
111122223333
"}, "Action":"s3:PutObject", "Resource":"arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*", "Condition": { "StringEquals": {"s3:x-amz-acl":"bucket-owner-full-control"} } } ] }
Administración del acceso a objetos con etiquetado de objetos
Permitir a un usuario leer solo los objetos que tienen una clave y valor de etiqueta específicos
La siguiente política de permisos limita al usuario a leer solo los objetos que tengan la clave y el valor de la etiqueta environment: production
. Esta política usa la clave de condición s3:ExistingObjectTag
para especificar la clave y el valor de etiqueta.
{ "Version":"2012-10-17", "Statement":[ { "Principal":{ "AWS":"arn:aws:iam::
111122223333
:role/JohnDoe
" }, "Effect":"Allow", "Action":[ "s3:GetObject", "s3:GetObjectVersion" ], "Resource":"arn:aws:s3:::amzn-s3-demo-bucket
/*", "Condition":{ "StringEquals":{ "s3:ExistingObjectTag/environment":"production" } } } ] }
Restringir las claves de etiqueta de objetos que los usuarios pueden agregar
La política de ejemplo siguiente concede un permiso de usuario para realizar la acción s3:PutObjectTagging
, lo que permite al usuario agregar etiquetas a un objeto existente. La condición usa la clave de condición s3:RequestObjectTagKeys
para especificar las claves de etiqueta permitidas, como Owner
o CreationDate
. Para obtener más información, consulte Creación de una condición que pruebe valores de varias claves en la Guía para usuarios de IAM.
La política garantiza que cada clave de etiqueta especificada en la solicitud sea una clave de etiqueta autorizada. El calificador ForAnyValue
de la condición garantiza que al menos una de las claves especificadas estará presente en la solicitud.
{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::
111122223333
:role/JohnDoe
" ] }, "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" ], "Condition": {"ForAnyValue:StringEquals": {"s3:RequestObjectTagKeys": [ "Owner", "CreationDate" ] } } } ] }
Requerir una clave y un valor de etiqueta específica al permitir a los usuarios agregar etiquetas de objetos
La política de ejemplo siguiente concede un permiso de usuario para realizar la acción s3:PutObjectTagging
, lo que permite al usuario agregar etiquetas a un objeto existente. La condición requiere que el usuario incluya una clave de etiqueta específica (como
) con el valor establecido en Project
.X
{ "Version": "2012-10-17", "Statement": [ {"Principal":{"AWS":[ "arn:aws:iam::
111122223333
:user/JohnDoe
" ] }, "Effect": "Allow", "Action": [ "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" ], "Condition": {"StringEquals": {"s3:RequestObjectTag/Project
": "X
" } } } ] }
Permitir a un usuario agregar objetos solo con una clave y valor de etiqueta de objetos específicos
La política de ejemplo siguiente concede un permiso de usuario para realizar la acción s3:PutObject
, de modo que pueda agregar objetos a un bucket. Sin embargo, la instrucción Condition
restringe las claves de etiqueta y los valores permitidos en los objetos cargados. En este ejemplo, el usuario solo puede agregar al bucket objetos que tengan la clave de etiqueta específica (
) con el valor establecido en Department
.Finance
{ "Version": "2012-10-17", "Statement": [{ "Principal":{ "AWS":[ "arn:aws:iam::
111122223333
:user/JohnDoe
" ] }, "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" ], "Condition": { "StringEquals": { "s3:RequestObjectTag/Department
": "Finance
" } } }] }
Administración del acceso a objetos mediante claves de condición globales
Las claves de condición globales son claves de contexto de condición con un prefijo aws
. Servicios de AWS pueden admitir claves de condición globales o proporcionar claves específicas del servicio que incluyan el prefijo de servicio. Puede utilizar el elemento Condition
de una política JSON para comparar las claves de una solicitud con los valores de claves que especifique en la política.
Restringir el acceso solo a entregas de registros de acceso al servidor de Amazon S3
En la política de bucket de ejemplo siguiente, la clave de condición global aws:SourceArn se utiliza para comparar el Nombre de recurso de Amazon (ARN) del recurso, que realiza una solicitud de servicio a servicio con el ARN especificado en la política. La clave de condición global aws:SourceArn
se usa para evitar que el servicio de Amazon S3 se utilice como un sustituto confuso durante las transacciones entre servicios. Solo el servicio de Amazon S3 tiene permiso para agregar objetos al bucket de Amazon S3.
Esta política de bucket de ejemplo concede permisos s3:PutObject
solo a la entidad principal del servicio de registro (logging.s3.amazonaws.com
).
nota
El elemento NotPrincipal no se puede utilizar con las entidades principales Servicio de AWS en las políticas basadas en recursos de Amazon S3, como las políticas de bucket. En su lugar, recomendamos utilizar la clave de condición aws:PrincipalServiceName
, tal y como se muestra en la siguiente política.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "
AllowPutObjectS3ServerAccessLogsPolicy
", "Principal": { "Service": "logging.s3.amazonaws.com" }, "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET-logs
/*", "Condition": { "StringEquals": { "aws:SourceAccount": "111111111111
" }, "ArnLike": { "aws:SourceArn": "arn:aws:s3:::EXAMPLE-SOURCE-BUCKET
" } } }, { "Sid": "RestrictToS3ServerAccessLogs
", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET-logs
/*", "Condition": { "StringNotEqualsIfExists": { "aws:PrincipalServiceName": "logging.s3.amazonaws.com" } } } ] }
Permitir el acceso solo a la organización
Si desea exigir que todas las entidades principales de IAM que accedan a un recurso provengan de una Cuenta de AWS en la organización (incluida la cuenta de administración de AWS Organizations), puede utilizar la clave de condición global aws:PrincipalOrgID
.
Para conceder o restringir este tipo de acceso, defina la condición aws:PrincipalOrgID
y establezca el valor del ID de la organización en la política de bucket. El ID de la organización se usa para controlar el acceso al bucket. Al usar la condición aws:PrincipalOrgID
, los permisos de la política de bucket también se aplican a todas las cuentas nuevas que se agreguen a la organización.
Este es un ejemplo de política de bucket basada en recursos que puede utilizar para conceder a determinadas entidades principales de IAM de la organización acceso directo al bucket. Al agregar la clave de condición global aws:PrincipalOrgID
a la política de bucket, ahora es necesario que la cuenta de la entidad principal esté en la organización para poder acceder al recurso. Aunque especifique accidentalmente una cuenta incorrecta al conceder el acceso, la clave de condición global aws:PrincipalOrgID actúa como una protección adicional. Cuando esta clave global se utiliza en una política, evita que todas las entidades principales de fuera de la organización especificada accedan al bucket de S3. Solo las entidades principales de las cuentas de la organización mostradas pueden obtener acceso al recurso.
{ "Version": "2012-10-17", "Statement": [{ "Sid": "AllowGetObject", "Principal": { "AWS": "*" }, "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
/*", "Condition": { "StringEquals": { "aws:PrincipalOrgID": ["o-aa111bb222
"] } } }] }
Administración del acceso en función de solicitudes HTTP o HTTPS
Restringir el acceso solo a las solicitudes HTTPS
Si quiere evitar que los posibles atacantes manipulen el tráfico de la red, puede usar HTTPS (TLS) para permitir solo conexiones cifradas y, al mismo tiempo, restringir el acceso de las solicitudes HTTP al bucket. Para determinar si la solicitud es HTTP o HTTPS, utilice la clave de condición global aws:SecureTransport en la política de bucket de S3. La clave de condición aws:SecureTransport
comprueba si una solicitud se envió mediante HTTP.
Si una solicitud devuelve true
, significa que la solicitud se envió a través de HTTPS. Si la solicitud devuelve false
, significa que la solicitud se envió a través de HTTP. A continuación, puede permitir o denegar el acceso al bucket en función del esquema de solicitud deseado.
En el ejemplo siguiente, la política de bucket deniega explícitamente las solicitudes HTTP.
{ "Version": "2012-10-17", "Statement": [{ "Sid": "RestrictToTLSRequestsOnly", "Action": "s3:*", "Effect": "Deny", "Resource": [ "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
", "arn:aws:s3:::amzn-s3-demo-bucket
/*" ], "Condition": { "Bool": { "aws:SecureTransport": "false" } }, "Principal": "*" }] }
Restringir el acceso a un HTTP referer específico
Suponga que tiene un sitio web con el nombre de dominio
o www.example.com
con enlaces a fotografías y vídeos almacenados en el bucket denominado example.com
. De forma predeterminada, todos los recursos de Amazon S3 son privados; por lo tanto, solo la Cuenta de AWS que creó los recursos puede acceder a ellos. amzn-s3-demo-bucket
Para permitir el acceso de lectura a estos objetos desde el sitio web, puede agregar una política de bucket que conceda el permiso s3:GetObject
con una condición de la solicitud GET
que debe proceder de páginas web específicas. La política siguiente restringe las solicitudes mediante la condición StringLike
con la clave de condición aws:Referer
.
{ "Version":"2012-10-17", "Id":"HTTP referer policy example", "Statement":[ { "Sid":"Allow only GET requests originating from www.example.com and example.com.", "Effect":"Allow", "Principal":"*", "Action":["s3:GetObject","s3:GetObjectVersion"], "Resource":"arn:aws:s3:::
amzn-s3-demo-bucket
/*", "Condition":{ "StringLike":{"aws:Referer":["http://www.example.com/*
","http://example.com/*
"]} } } ] }
Asegúrese de que los navegadores que utiliza incluyan el encabezado HTTP referer
en la solicitud.
aviso
Le recomendamos que actúe con precaución cuando utilice la clave de condición de aws:Referer
. Es peligroso incluir un valor de encabezado de referencia HTTP conocido públicamente. Las partes no autorizadas podrían utilizar navegadores personalizados o modificados para proporcionar cualquier valor aws:Referer
que eligieran. Por lo tanto, no utilice aws:Referer
para evitar que las partes no autorizadas realicen solicitudes de AWS de forma directa.
La clave de condición de aws:Referer
se ofrece solo para que los clientes puedan proteger su contenido digital, como el contenido almacenado en Amazon S3, para evitar las referencias en sitios de terceros no autorizados. Para obtener más información, consulte aws:Referer en la Guía del usuario de IAM.
Administración del acceso de los usuarios a carpetas específicas
Conceder acceso a los usuarios a carpetas específicas
Suponga que está intentando conceder a los usuarios acceso a una carpeta específica. Si el usuario de IAM y el bucket de S3 pertenecen a la misma Cuenta de AWS, puede utilizar una política de IAM para conceder al usuario acceso a una carpeta de bucket específica. Con este enfoque, no es necesario actualizar la política de bucket para conceder el acceso. Puede agregar la política de IAM a un rol de IAM al que puedan cambiarse varios usuarios.
Si la identidad de IAM y el bucket de S3 pertenecen a Cuentas de AWS diferentes, debe conceder acceso entre cuentas tanto en la política de IAM como en la política de bucket. Para obtener más información sobre cómo conceder acceso entre cuentas, consulte Propietario del bucket que concede permisos de bucket entre cuentas.
La política de bucket de ejemplo siguiente concede a
acceso completo a la consola solo a su carpeta (JohnDoe
home/
). Al crear una carpeta JohnDoe
/home
y conceder los permisos adecuados a los usuarios, puede hacer que varios usuarios compartan un solo bucket. Esta política consta de tres instrucciones Allow
:
-
: permite al usuario (AllowRootAndHomeListingOfCompanyBucket
) mostrar los objetos en el nivel raíz del bucketJohnDoe
y en la carpetaDOC-EXAMPLE-BUCKET
home
. Esta instrucción también permite al usuario buscar el prefijohome/
mediante la consola. -
: permite al usuario (AllowListingOfUserFolder
) mostrar todos los objetos de la carpetaJohnDoe
home/
y cualquier subcarpeta.JohnDoe
/ -
: permite al usuario realizar todas las acciones de Amazon S3 mediante la concesión de los permisosAllowAllS3ActionsInUserFolder
Read
,Write
yDelete
. Los permisos están limitados a la carpeta principal del propietario del bucket.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "
AllowRootAndHomeListingOfCompanyBucket
", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:user/JohnDoe
" ] }, "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET
"], "Condition": { "StringEquals": { "s3:prefix": ["", "home/", "home/JohnDoe
"], "s3:delimiter": ["/"] } } }, { "Sid": "AllowListingOfUserFolder
", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:user/JohnDoe
" ] }, "Action": ["s3:ListBucket"], "Effect": "Allow", "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET
"], "Condition": { "StringLike": { "s3:prefix": ["home/JohnDoe
/*"] } } }, { "Sid": "AllowAllS3ActionsInUserFolder
", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333
:user/JohnDoe
" ] }, "Action": ["s3:*"], "Resource": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET
/home/JohnDoe
/*"] } ] }
Administración del acceso para los registros de acceso
Conceder acceso al equilibrador de carga de aplicación para habilitar los registros de acceso
Al habilitar los registros de acceso del equilibrador de carga de aplicación, debe especificar el nombre del bucket de S3 donde el equilibrador de carga almacenará los registros. El bucket debe tener una política asociada que conceda permiso a Elastic Load Balancing para escribir en el bucket.
En el siguiente ejemplo, la política de bucket concede permiso a Elastic Load Balancing (ELB) para escribir los registros de acceso en el bucket:
{ "Version": "2012-10-17", "Statement": [ { "Principal": { "AWS": "arn:aws:iam::
elb-account-id
:root" }, "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/prefix
/AWSLogs/111122223333
/*" } ] }
nota
Asegúrese de sustituir
por el ID de Cuenta de AWS para Elastic Load Balancing para la Región de AWS. Para ver la lista de regiones de Elastic Load Balancing, consulte Adjuntar una política al bucket de Amazon S3 en la Guía del usuario de Elastic Load Balancing.elb-account-id
Si la Región de AWS no aparece en la lista de regiones de Elastic Load Balancing compatibles, utilice la siguiente política, que concede permisos al servicio de entrega de registros especificado.
{ "Version": "2012-10-17", "Statement": [ { "Principal": { "Service": "logdelivery.elasticloadbalancing.amazonaws.com" }, "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/prefix
/AWSLogs/111122223333
/*" } ] }
A continuación, asegúrese de configurar los registros de acceso de Elastic Load Balancing habilitándolos. Puede verificar los permisos del bucket creando un archivo de prueba.
Administración del acceso a una OAI de Amazon CloudFront
Conceder permiso a una OAI de Amazon CloudFront
En el siguiente ejemplo de política de buckets, se concede un permiso de identidad de acceso de origen (OAI) de CloudFront para obtener (leer) todos los objetos del bucket de S3. Puede utilizar un OAI de CloudFront para permitir a los usuarios acceder a objetos del bucket a través de CloudFront, pero no directamente a través de Amazon S3. Para obtener más información, consulte Restricción del acceso a contenido de Amazon S3 utilizando una identidad de acceso de origen en la guía para desarrolladores de Amazon CloudFront.
La política siguiente utiliza el ID de la OAI como Principal
de la política. Para obtener más información sobre el uso de políticas de bucket de S3 para conceder acceso a una OAI de CloudFront, consulte Migración de la identidad de acceso de origen (OAI) al control de acceso de origen (OAC) en la Guía para desarrolladores de Amazon CloudFront.
Para usar este ejemplo:
-
Reemplace
por el ID de la OAI. Para buscar el ID de la OAI, consulte la Origin Access Identity pageEH1HDMB1FH2TC
(Página de identidad de acceso de origen) en la consola de CloudFront o utilice ListCloudFrontOriginAccessIdentities en la API de CloudFront. -
Reemplace
con el nombre de su bucket.amzn-s3-demo-bucket
{ "Version": "2012-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity
EH1HDMB1FH2TC
" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/*" } ] }
Administración del acceso para la Lente de almacenamiento de Amazon S3
Conceder permisos para Lente de almacenamiento de Amazon S3
Lente de almacenamiento de S3 agrega las métricas y muestra la información en la sección Account snapshot (Instantánea de la cuenta) en la página Buckets de la consola de Amazon S3. S3 Storage Lens también proporciona un panel interactivo que puede utilizar para visualizar información y tendencias, marcar valores atípicos y recibir recomendaciones para optimizar los costes de almacenamiento y aplicar las prácticas recomendadas de protección de datos. El panel tiene opciones de desglose para generar y visualizar información en el nivel de la organización, la cuenta, la Región de AWS, la clase de almacenamiento, el bucket, el prefijo o el grupo de Lente de almacenamiento. También puede enviar una exportación de métricas diaria en formato CSV o Parquet a un bucket de S3.
Lente de almacenamiento de S3 puede exportar las métricas de uso de almacenamiento agregado a un bucket de Amazon S3 para un análisis posterior. El bucket en el que S3 Storage Lens coloca sus exportaciones de métricas se conoce como el bucket de destino. Al configurar la exportación de métricas de S3 Storage Lens, debe tener una política de buckets para el bucket de destino. Para obtener más información, consulte Evaluación de la actividad y el uso de almacenamiento con Amazon S3 Storage Lens.
En el siguiente ejemplo de política de bucket, se concede a Amazon S3 permiso para escribir objetos (solicitudes PUT
) en un bucket de destino. Usted utiliza una política de bucket como esta en el bucket de destino cuando configura una exportación de métricas de S3 Storage Lens.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "S3StorageLensExamplePolicy", "Effect": "Allow", "Principal": { "Service": "storage-lens.s3.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::
amzn-s3-demo-destination-bucket
/destination-prefix
/StorageLens/111122223333
/*" ], "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceAccount": "111122223333
", "aws:SourceArn": "arn:aws:s3:region-code
:111122223333
:storage-lens/storage-lens-dashboard-configuration-id
" } } } ] }
Cuando configure una exportación de métricas a nivel de organización de Lente de almacenamiento de S3, utilice la siguiente modificación de la instrucción Resource
de la política de buckets anterior.
"Resource": "arn:aws:s3:::
amzn-s3-demo-destination-bucket
/destination-prefix
/StorageLens/your-organization-id
/*",
Administración de permisos para inventario de S3, análisis de S3 e informes de inventario de S3
Concesión de permisos para el inventario de S3 y el análisis de S3
El inventario de S3 crea listas de los objetos en un bucket y la exportación de análisis de clase de almacenamiento de análisis de S3 crea archivos de salida de los datos utilizados en los análisis. El bucket para el que el inventario enumera los objetos se denomina bucket de origen. El bucket donde se escribe el archivo de inventario y el bucket donde se escribe se denomina bucket de destino. Al configurar un inventario o una exportación de análisis, debe crear una política de buckets para el bucket de destino. Para obtener más información, consulte Inventario de Amazon S3 y Análisis de Amazon S3: análisis de clases de almacenamiento.
En el siguiente ejemplo de política de bucket, se concede a Amazon S3 permiso para escribir objetos (solicitudes PUT
) de la cuenta para el bucket de origen en el bucket de destino. Usted utiliza una política de bucket como esta en el bucket de destino cuando configura el inventario de S3 y la exportación de análisis de S3.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "InventoryAndAnalyticsExamplePolicy", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "s3:PutObject", "Resource": [ "arn:aws:s3:::
DOC-EXAMPLE-DESTINATION-BUCKET
/*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET
" }, "StringEquals": { "aws:SourceAccount": "111122223333
", "s3:x-amz-acl": "bucket-owner-full-control" } } } ] }
Control de la creación de la configuración del informe de inventario de S3
Inventario de Amazon S3 crea listas de los objetos de un bucket de S3 y los metadatos para cada objeto. El permiso s3:PutInventoryConfiguration
permite a un usuario crear una configuración de inventario que incluya todos los campos de metadatos de objeto disponibles de manera predeterminada y especificar el bucket de destino para almacenar el inventario. Un usuario con acceso de lectura a los objetos del bucket de destino puede acceder a todos los campos de metadatos de objetos que están disponibles en el informe de inventario. Para obtener más información acerca de los campos de metadatos disponibles en el inventario de S3, consulte Lista de Amazon S3 Inventory.
Para impedir que un usuario configure un informe de Inventario de S3, retire el permiso s3:PutInventoryConfiguration
al usuario.
Algunos campos de metadatos de objetos en las configuraciones de los informes de Inventario de S3 son opcionales, lo que significa que están disponibles de manera predeterminada pero pueden restringirse cuando se concede el permiso s3:PutInventoryConfiguration
a un usuario. Puede controlar si los usuarios pueden incluir estos campos de metadatos opcionales en sus informes mediante la clave de condición s3:InventoryAccessibleOptionalFields
. Para obtener una lista de los campos de metadatos opcionales disponibles en Inventario de S3, consulte OptionalFields en la Referencia de la API de Amazon Simple Storage Service.
Para conceder a un usuario permiso para crear una configuración de inventario con campos de metadatos opcionales específicos, utilice la clave de condición s3:InventoryAccessibleOptionalFields
para delimitar las condiciones de su política de buckets.
En el siguiente ejemplo de política, se otorga a un usuario (
) permiso para crear una configuración de inventario de forma condicional. En la condición Ana
ForAllValues:StringEquals
de la política, se usa la clave de condición s3:InventoryAccessibleOptionalFields
para especificar los dos campos de metadatos opcionales permitidos, es decir, Size
y StorageClass
. Por lo tanto, cuando
crea una configuración de inventario, los únicos campos de metadatos opcionales que puede incluir son Ana
Size
y StorageClass
.
{ "Id": "InventoryConfigPolicy", "Version": "2012-10-17", "Statement": [{ "Sid": "AllowInventoryCreationConditionally", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:user/Ana
" }, "Action": "s3:PutInventoryConfiguration", "Resource": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET
", "Condition": { "ForAllValues:StringEquals": { "s3:InventoryAccessibleOptionalFields": [ "Size", "StorageClass" ] } } } ] }
Para evitar que un usuario configure un informe de Inventario de S3 que incluya campos de metadatos opcionales específicos, añada una instrucción Deny
explícita a la política de buckets para el bucket de origen. En el siguiente ejemplo de política de buckets, se impide al usuario
crear una configuración de inventario en el bucket de origen Ana
que incluya los campos de metadatos opcionales DOC-EXAMPLE-SOURCE-BUCKET
ObjectAccessControlList
o ObjectOwner
. El usuario
aún puede crear una configuración de inventario con otros campos de metadatos opcionales.Ana
{ "Id": "InventoryConfigSomeFields", "Version": "2012-10-17", "Statement": [{ "Sid": "AllowInventoryCreation", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
111122223333
:user/Ana
" }, "Action": "s3:PutInventoryConfiguration", "Resource": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET
", }, { "Sid": "DenyCertainInventoryFieldCreation", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::111122223333
:user/Ana
" }, "Action": "s3:PutInventoryConfiguration", "Resource": "arn:aws:s3:::DOC-EXAMPLE-SOURCE-BUCKET
", "Condition": { "ForAnyValue:StringEquals": { "s3:InventoryAccessibleOptionalFields": [ "ObjectOwner", "ObjectAccessControlList" ] } } } ] }
nota
El uso de la clave de condición s3:InventoryAccessibleOptionalFields
en las políticas de buckets no afecta a la entrega de informes de inventario basados en las configuraciones de inventario existentes.
importante
Recomendamos que use ForAllValues
con un efecto Allow
o ForAnyValue
con un efecto Deny
, tal y como se muestra en los ejemplos anteriores.
No utilice ForAllValues
con un efecto Deny
ni ForAnyValue
con un efecto Allow
, ya que estas combinaciones pueden ser demasiado restrictivas y bloquear la eliminación de la configuración del inventario.
Para obtener más información sobre los operadores de conjuntos de condiciones ForAllValues
y ForAnyValue
, consulte Claves de contexto multivalor en la Guía del usuario de IAM.
Exigir MFA
Amazon S3 admite el acceso de API protegido por MFA, una característica que puede exigir aplicar Multi-Factor Authentication (MFA) para acceder a sus recursos de Amazon S3. La autenticación multifactor proporciona un nivel de seguridad adicional que puede aplicar a su entorno de AWS. MFA es una característica de seguridad que requiere que los usuarios demuestren una posesión física de un dispositivo de MFA facilitando un código MFA válido. Para obtener más información, consulte autenticación multifactor de AWS
Para implementar el requisito de MFA, utilice la clave de condición aws:MultiFactorAuthAge
en una política de bucket. Los usuarios de IAM pueden acceder a los recursos de Amazon S3 con credenciales temporales emitidas por AWS Security Token Service (AWS STS). Usted facilita el código de MFA al realizar la solicitud al AWS STS.
Cuando Amazon S3 recibe una solicitud con autenticación multifactor, la clave de condición aws:MultiFactorAuthAge
proporciona un valor numérico que indica el tiempo que transcurrió (en segundos) desde que se creó la credencial temporal. Si la credencial temporal provista en la solicitud no se creó utilizando un dispositivo de MFA, este valor de clave es nulo (no está presente). En una política de bucket, puede añadir una condición para revisar este valor, como se muestra en el siguiente ejemplo.
Esta política de ejemplo deniega cualquier operación de Amazon S3 en la carpeta
del bucket /taxdocuments
si la solicitud no se autentica utilizando MFA. Para obtener más información sobre MFA, consulte Uso de autenticación multifactor (MFA) en AWS en la Guía del usuario de IAM.amzn-s3-demo-bucket
{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/taxdocuments
/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true }} } ] }
La condición Null
en el bloque Condition
se evalúa como true
si el valor de clave de condición aws:MultiFactorAuthAge
es nulo, lo que indica que las credenciales de seguridad temporales en la solicitud se crearon sin un dispositivo de MFA.
La siguiente política de bucket es una extensión de la política de bucket anterior. La siguiente política incluye dos instrucciones de política. Una instrucción permite el permiso s3:GetObject
en un bucket (
) para todo el mundo. Otra instrucción limita el acceso a la carpeta amzn-s3-demo-bucket
en el bucket mediante la solicitud de la MFA. amzn-s3-demo-bucket
/taxdocuments
{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/taxdocuments
/*", "Condition": { "Null": { "aws:MultiFactorAuthAge": true } } }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/*" } ] }
Puede utilizar de forma opcional una condición numérica para limitar la duración de la validez de la clave aws:MultiFactorAuthAge
. La duración que especifique con la clave aws:MultiFactorAuthAge
es independiente de la duración de la credencial de seguridad temporal que se utiliza en la autenticación de la solicitud.
Por ejemplo, la siguiente política de bucket, además de exigir la autenticación MFA, también verifica el tiempo que transcurrió desde que se creó la sesión temporal. La política deniega cualquier operación si el valor de clave aws:MultiFactorAuthAge
indica que la sesión temporal se creó hace más de una hora (3600 segundos).
{ "Version": "2012-10-17", "Id": "123", "Statement": [ { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/taxdocuments
/*", "Condition": {"Null": {"aws:MultiFactorAuthAge": true }} }, { "Sid": "", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/taxdocuments
/*", "Condition": {"NumericGreaterThan": {"aws:MultiFactorAuthAge": 3600 }} }, { "Sid": "", "Effect": "Allow", "Principal": "*", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/*" } ] }
Prevención de que los usuarios eliminen objetos
De forma predeterminada, los usuarios no tienen permisos. Sin embargo, a medida que crea políticas, puede conceder permisos a los usuarios que no quería conceder. Para evitar esas ambigüedades en los permisos, puede escribir una política de acceso más estricta y agregar una denegación explícita.
Para impedir de forma explícita que los usuarios o las cuentas eliminen objetos, debe agregar las siguientes acciones a una política de bucket: permisos s3:DeleteObject
, s3:DeleteObjectVersion
, y s3:PutLifecycleConfiguration
. Las tres acciones son necesarias porque puede eliminar objetos al llamar de forma explícita a las operaciones de la API DELETE Object
o configurar su ciclo de vida (consulte Administración del ciclo de vida de los objetos) para que Amazon S3 pueda eliminar los objetos cuando acabe su vida útil.
En el siguiente ejemplo de política, debe denegar explícitamente permisos DELETE Object
al usuario
. Una instrucción MaryMajor
Deny
explícita siempre sustituye a cualquier otro permiso concedido.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "statement1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
123456789012
:user/" }, "Action": [ "s3:GetObjectVersion", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::
MaryMajor
", "arn:aws:s3:::
amzn-s3-demo-bucket1
" ] }, { "Sid": "statement2", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::
amzn-s3-demo-bucket1
/*123456789012
:user/" }, "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:PutLifecycleConfiguration" ], "Resource": [ "arn:aws:s3:::
MaryMajor
", "arn:aws:s3:::
amzn-s3-demo-bucket1
" ] } ] }
amzn-s3-demo-bucket1
/*