Quiero resolver los errores "Access Denied" que reciben los usuarios cuando acceden a mi bucket de Amazon Simple Storage Service (Amazon S3) desde otra cuenta de AWS. Cifro mi bucket de Amazon S3 con una clave administrada por el cliente de AWS Key Management Service (AWS KMS).
Descripción corta
Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulta Solución de problemas de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI.
Tus usuarios reciben el error "Access Denied" por los siguientes motivos:
Para resolver los problemas anteriores, completa los siguientes pasos de solución de problemas.
Resolución
Comprobación de permisos para s3:GetBucketPolicy y s3:PutBucketPolicy
Sigue estos pasos:
- Abre la consola de IAM.
- En el panel de navegación, selecciona la identidad que se usa para acceder a la política de bucket, como usuarios o roles.
- Selecciona el nombre de identidad de IAM que utilizas para acceder a la política de bucket.
- En la pestaña Permisos de tu identidad de IAM, expande cada política para consultar su documento de política de JSON.
- Busca políticas relacionadas con el acceso a Amazon S3 en los documentos de políticas JSON. A continuación, confirma que tienes permisos para las acciones s3:GetBucketPolicy y s3:PutBucketPolicy en el bucket.<br id=hardline_break/>
Nota: Si no hay ninguna política con las acciones s:3GetBucketPolicy y s3:PutBucketPolicy, agrega estos permisos a una política. Para obtener instrucciones sobre cómo modificar los permisos de IAM, consulta Cambio de los permisos de un usuario de IAM.<br id=hardline_break/>
En el siguiente ejemplo de política de IAM, se permite que la identidad de IAM realice las acciones s3:GetBucketPolicy y s3:PutBucketPolicy en DOC-EXAMPLE-BUCKET:
{ "Version": "2012-10-17",
"Statement": [
{
"Sid": "ModifyBucketPolicy",
"Action": [
"s3:GetBucketPolicy",
"s3:PutBucketPolicy"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
},
{
"Sid": "AccessS3Console",
"Action": [
"s3:GetBucketLocation",
"s3:ListAllMyBuckets"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::*"
}
]
}
Nota: La instrucción AccessS3Console de la política de IAM anterior concede acceso a la consola de Amazon S3. No es específico de los cambios en la política de bucket.
- En los documentos de políticas de JSON, busca instrucciones con el texto "Effect": "Deny". A continuación, confirma que estas instrucciones no denieguen a tu identidad de IAM el acceso a s3:GetBucketPolicy o s3:PutBucketPolicy.
- Asegúrate de incluir el nombre de recurso de Amazon (ARN) del bucket en la sección de recursos de la política. En el ejemplo anterior, el ARN es aws:s3:::DOC-EXAMPLE-BUCKET.<br id=hardline_break/>
Nota: s3:GetBucketPolicy y s3:PutBucketPolicy son acciones a nivel de bucket.
- Comprueba si se aplican condiciones globales, como aws:SourceIP, en la política de IAM para restringir las acciones s3:GetBucketPolicy y s3:PutBucketPolicy. Si las condiciones restringen el acceso, elimínalas o actualízalas.
Agregar una política de bucket si no existe
Si no encuentras políticas que concedan los permisos s3:GetBucketPolicy o s3:PutBucketPolicy, agrega una política para concederlos a tu identidad de IAM. Si encuentras políticas que denieguen el acceso a s3:GetBucketPolicy o s3:PutBucketPolicy, elimínalas.
Usar otra identidad de IAM con acceso a buckets para modificar la política de bucket
Sigue estos pasos:
- Abre la consola de Amazon S3.
- En el panel de navegación izquierdo, elige Buckets de uso general o Buckets de directorio.
- En la lista de buckets, abre el bucket con la política de bucket que quieras cambiar.
- Selecciona la pestaña Permisos.
- Elige Política de bucket.
- Busca instrucciones con "Effect": "Deny".
- Edita la política de bucket para actualizar cualquier instrucción "Effect": "Deny" que deniegue a la identidad de IAM el acceso a s3:GetBucketPolicy o s3:PutBucketPolicy.
- Comprueba si se aplican condiciones como aws:PrincipalArn a la política de bucket para restringir las acciones s3:GetBucketPolicy y s3:PutBucketPolicy para tu entidad de IAM. Si estas condiciones restringen el acceso, elimínalas o actualízalas.
Eliminar y volver a crear una política de bucket que deniegue el acceso a todos
Si nadie tiene acceso a s3:GetBucketPolicy, s3:PutBucketPolicy o a ninguna de las acciones de Amazon S3 (s3:*), utiliza el comando delete-bucket-policy de la AWS CLI para eliminar la política:
delete-bucket-policy
-bucket example_bucket
Nota: Sustituye example_bucket por el nombre de tu bucket.
Si accidentalmente te quedas fuera del bucket y no puedes eliminar la política de bucket, recupera el acceso al bucket. Tras eliminar la política de bucket, puedes crear una nueva.
Desactivación del bloqueo del acceso público de Amazon S3
Si tu política de bucket concede acceso público, desactiva el bloqueo del acceso público de Amazon S3 para el bucket. Para obtener más información, consulta Bloquear el acceso público a tu almacenamiento de Amazon S3 y Qué significa «pública».
Nota: Para impedir el acceso público a los buckets privados, activa el bloqueo del acceso público de Amazon S3 para tu bucket antes de desactivarlo a nivel de cuenta de AWS.
En el caso de AWS Organizations, elimina las SCP que no permiten el acceso a Amazon S3
Si usas AWS Organizations, revisa tus políticas de control de servicios (SCP). Busca cualquier instrucción que deniegue explícitamente la acción s3:PutBucketPolicy o cualquier otra acción de política de Amazon S3. Elimina las SCP que aplican el efecto Deny a las acciones s3:* cuando tu organización no requiera las políticas.
El siguiente ejemplo de política deniega el acceso a todas las acciones de Amazon S3:
{ "Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": "s3:*",
"Resource": "*"
}
]
}