Saltar al contenido

¿Cómo soluciono el error «No tiene permisos para editar la política de bucket» cuando intento modificar una política de bucket en Amazon S3?

6 minutos de lectura
0

Cuando modifico la política de bucket de mi bucket de Amazon Simple Storage Service (Amazon S3), aparece el error «You don't have permissions to edit bucket policy».

Descripción breve

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.

Aparece este error por los siguientes motivos:

Comprueba que el usuario o rol de IAM tenga el permiso s3:GetBucketPolicy para ver la política de bucket y el permiso s3:PutBucketPolicy para editarla. Si no hay una política de usuario de IAM que te conceda acceso, agrega una. Si se te niegan los permisos, utiliza otra identidad de IAM que tenga acceso al bucket y edita la política de bucket. Si nadie tiene acceso a la política de bucket, utiliza el comando delete-bucket-policy de AWS CLI para eliminar la política y, a continuación, volver a crearla.

Si estás intentando agregar una política de lectura pública, desactiva la característica de bloqueo del acceso público de Amazon S3 del bucket. Si usas AWS Organizations, comprueba que no tengas ninguna política de control de servicios que deniegue explícitamente las acciones de Amazon S3. Además, confirma que puedes agregar excepciones para la operación.

Solución

Comprobación de permisos para s3:GetBucketPolicy y s3:PutBucketPolicy

Para comprobar los permisos, sigue estos pasos:

  1. Abre la consola de IAM.
  2. Selecciona la identidad que se utiliza para acceder a la política de bucket, como Usuario o Rol.
  3. Selecciona el nombre de identidad de IAM que utilizas para acceder a la política de bucket.
  4. En la pestaña Permisos de tu identidad de IAM, expande cada política para consultar su documento de política de JSON.
  5. 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.
    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.
  6. 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.
  7. Asegúrate de que el ARN del bucket (por ejemplo: arn:aws:s3:::DOC-EXAMPLE-BUCKET) esté presente en la sección Recurso de la política.
    Nota: s3:GetBucketPolicy y s3:PutBucketPolicy son acciones a nivel de bucket.
  8. Comprueba si se aplica alguna condición global, como aws:SourceIP, en la política de IAM para restringir las acciones s3:GetBucketPolicy y s3:PutBucketPolicy. Si estas condiciones restringen el acceso, elimínalas o actualízalas.

Incorporación de una política de bucket si no existe

Si no encuentras políticas que concedan los permisos s3:GetBucketPolicy o s3:PutBucketPolicy, agregar 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. Para obtener instrucciones sobre cómo modificar los permisos de IAM, consulta Cambio de los permisos de un usuario de IAM.

Uso de otra identidad de IAM con acceso a buckets para modificar la política de bucket

Para modificar la política de bucket, sigue estos pasos:

  1. Abre la consola de Amazon S3.
  2. En la lista de buckets, abre el bucket con la política de bucket que quieras cambiar.
  3. Selecciona la pestaña Permisos.
  4. Elige Política de bucket.
  5. Busca instrucciones con «Effect»: «Deny».
  6. 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. Para obtener instrucciones, consulta la sección Para crear o editar una política de bucket de Agregar una política de bucket mediante la consola de Amazon S3.
  7. 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.

Eliminación de la política de bucket y volver a crearla si deniega a todos el acceso

Si la política de bucket deniega a todos el acceso a s3:GetBucketPolicy, s3:PutBucketPolicy o a todas las acciones de Amazon S3 (s3:*), elimínala. 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 Bloqueo del acceso público a tu almacenamiento de Amazon S3 y Qué significa «público».

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.

Para AWS Organizations, eliminar las políticas de control de servicios que no permitan 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": "*"  
    }  
  ]  
}