

# Control del acceso a Amazon S3 desde Athena
<a name="s3-permissions"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-grants-directory-ids.html) en la *Guía del usuario de Amazon Simple Storage Service*.

**Topics**
+ [Políticas basadas en identidad](#s3-permissions-identity-based-policies)
+ [Políticas de recursos de buckets](#s3-permissions-bucket-resource-policies)
+ [Políticas de puntos de acceso](#s3-permissions-aliases)
+ [Claves de contexto CalledVia](#s3-permissions-calledvia)
+ [Recursos adicionales](#s3-permissions-additional-resources)

## Uso de políticas basadas en identidad para el control de acceso a los buckets de Amazon S3
<a name="s3-permissions-identity-based-policies"></a>

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.

------
#### [ JSON ]

****  

```
{
    "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
<a name="s3-permissions-bucket-resource-policies"></a>

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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) 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.

------
#### [ JSON ]

****  

```
{
    "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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-bucket-policies.html) 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
<a name="s3-permissions-aliases"></a>

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](tables-location-format.md) y [Cómo utilizar los puntos de acceso](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html) 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
<a name="s3-permissions-calledvia"></a>

Para mayor seguridad, puede utilizar la clave de contexto de condición global [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-calledvia](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-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](security-iam-athena-calledvia.md).

## Recursos adicionales
<a name="s3-permissions-additional-resources"></a>

Para obtener información detallada y ejemplos acerca de cómo conceder acceso a Amazon S3, consulte los siguientes recursos:
+ [Ejemplos de explicaciones: Administración de acceso](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access.html) en la *Guía del usuario de Simple Storage Service (Amazon S3)*.
+ [¿Cómo puedo proporcionar acceso entre cuentas a objetos que se encuentran en buckets de Amazon S3?](https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-s3/) en el Centro de conocimientos de AWS.
+ [Configuración del acceso entre cuentas en Athena a los buckets de Amazon S3](cross-account-permissions.md).