Control del acceso a Amazon S3 desde Athena - Amazon Athena

Control del acceso a Amazon S3 desde Athena

Puede conceder acceso a las ubicaciones de Amazon S3 mediante políticas basadas en identidad, políticas de recursos de bucket, políticas de puntos de acceso o cualquier combinación de las anteriores. Cuando los actores interactúan con Athena, sus permisos pasan por Athena para determinar a qué puede acceder Athena. Esto significa que los usuarios deben tener permiso para acceder a los buckets de Amazon S3 para poder consultarlos con Athena.

Siempre que utilice políticas de IAM, compruebe que sigue las mejores prácticas IAM. Para más información, consulte Prácticas recomendadas de seguridad en IAM en la Guía del usuario de IAM.

Tenga en cuenta que las solicitudes a Amazon S3 provienen de una dirección IPv4 privada para Athena, no de la IP de origen especificada en aws:SourceIp. Por este motivo, no puede utilizar la condición aws:SourceIp para denegar el acceso a las acciones de Amazon S3 en una política de IAM determinada. Tampoco puede restringir o permitir el acceso a los recursos de Amazon S3 basándose en las claves de condición aws:SourceVpc o aws:SourceVpce.

nota

Los grupos de trabajo de Athena que utilizan la autenticación de IAM Identity Center requieren que S3 Access Grants esté configurado para utilizar identidades de propagación fiables. Para obtener más información, consulte S3 Access Grants e identidades de directorio en la Guía del usuario de Amazon Simple Storage Service.

Uso de políticas basadas en identidad para el control de acceso a los buckets de Amazon S3

Las políticas basadas en identidad se asocian a un rol, grupo o usuario de IAM. Estas políticas le permiten especificar lo que esa identidad puede hacer (sus permisos). Puede utilizar políticas basadas en identidades para controlar el acceso a los buckets de Amazon S3.

La siguiente política basada en identidad permite a acceso de Read y Write a los objetos de un bucket específico de Amazon S3. Para utilizar esta política, sustituya el texto en cursiva del marcador de posición por sus propios valores.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ListObjectsInBucket", "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket"] }, { "Sid": "AllObjectActions", "Effect": "Allow", "Action": "s3:*Object", "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/*"] } ] }

Uso de políticas de recursos de bucket para el control de acceso a los buckets de Amazon S3

Puede utilizar políticas de buckets de Amazon S3 para proteger el acceso a los objetos de los buckets, de modo que solo los usuarios con los permisos adecuados puedan acceder a estos. Para obtener orientación sobre cómo crear la política de Amazon S3, consulte Agregar una política de bucket mediante la Consola de Amazon S3 en la Guía del usuario de Amazon S3.

El siguiente ejemplo de política de permisos limita a un usuario a leer 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 la 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" } ] }

Para obtener más ejemplos de políticas de bucket, consulte Ejemplos de políticas de bucket de Amazon S3 en la Guía del usuario de Amazon S3.

Uso de los puntos de acceso de Amazon S3 para un control más preciso del acceso al bucket

Si tiene un conjunto de datos compartido en un bucket de Amazon S3, puede resultar difícil mantener una política de bucket única que administre el acceso para cientos de casos de uso.

Los puntos de acceso, las políticas y los alias del bucket de Amazon S3 pueden ayudar a resolver este problema. Un bucket puede tener varios puntos de acceso, cada uno con una política que controla el acceso al bucket de forma diferente.

Para cada punto de acceso que cree, Amazon S3 genera un alias que representa el punto de acceso. Debido a que el alias está en formato de nombre de bucket de Amazon S3, puede utilizar el alias de la cláusula LOCATION de sus instrucciones CREATE TABLE en Athena. La política para el punto de acceso que representa el alias controla entonces el acceso de Athena al bucket.

Para obtener más información, consulte Especificación de la ubicación de una tabla en Amazon S3 y Cómo utilizar los puntos de acceso en la Guía del usuario de Amazon S3.

Uso de las claves contextuales de CalledVia para permitir únicamente las llamadas de Athena a otro servicio

Para mayor seguridad, puede utilizar la clave de contexto de condición global aws:CalledVia. La clave de condición aws:CalledVia contiene una lista de servicios que se permiten llamar a otro servicio. Por ejemplo, puedes permitir llamadas de InvokeFunction a AWS Lambda solo si provienen de Athena y debe especificar el nombre de la entidad principal del servicio de Athena, athena.amazonaws.com, para la clave de contexto aws:CalledVia. Para obtener más información, consulte Uso de las claves de contexto CalledVia para Athena.

Recursos adicionales

Para obtener información detallada y ejemplos acerca de cómo conceder acceso a Amazon S3, consulte los siguientes recursos: