¿Por qué no puedo acceder a una carpeta o archivo específicos de mi bucket de Amazon S3?

6 minutos de lectura
0

No puedo acceder a un prefijo u objeto determinados que se encuentra en mi bucket de Amazon Simple Storage Service (Amazon S3). Puedo acceder al resto de los datos del bucket.

Breve descripción

Compruebe los siguientes permisos ante cualquier configuración que deniegue el acceso al prefijo o al objeto:

  • Propiedad del prefijo u objeto
  • Restricciones en la política de bucket
  • Restricciones en AWS Identity and Access Management (IAM) con respecto a su política de usuario
  • Permisos para objetos cifrados por AWS Key Management Service (AWS KMS)

Además, tenga en cuenta las siguientes condiciones de acceso:

Resolución

Propiedad del prefijo u objeto

De forma predeterminada, un objeto de S3 pertenece a la cuenta de AWS que lo cargó. Esto es así incluso cuando el bucket es propiedad de otra cuenta. Si otras cuentas pueden cargar archivos a su bucket, siga estos pasos para obtener permisos para el objeto o prefijo al que no puede acceder:

  1. Para obtener el ID canónico de Amazon S3 de su cuenta, ejecute este comando de la Interfaz de la línea de comandos de AWS (AWS CLI):

    aws s3api list-buckets --query Owner.ID
  2. Obtenga el ID canónico de Amazon S3 de la cuenta propietaria del objeto al que no puede acceder:

    aws s3api list-objects --bucket DOC-EXAMPLE-BUCKET --prefix index.html
  3. Si los ID canónicos no coinciden, entonces usted (el propietario del bucket) no es el propietario del objeto. Para un objeto individual, el propietario del objeto puede concederle el control total con este comando put-object-acl:

    aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key object-name --acl bucket-owner-full-control

    En el caso de los objetos incluidos en un prefijo, el propietario del objeto debe volver a copiar el prefijo y concederle el control total de los objetos como parte de la operación. Por ejemplo, el propietario del objeto puede ejecutar este comando cp con el parámetro --acl bucket-owner-full-control:

    aws s3 cp s3://DOC-EXAMPLE-BUCKET/abc/ s3://DOC-EXAMPLE-BUCKET/abc/ --acl bucket-owner-full-control --recursive --storage-class STANDARD

    Consejo: Puede usar una política de bucket para exigir que otras cuentas le otorguen la propiedad de objetos que carguen a su bucket.

Restricciones en la política de bucket

  1. Abra la consola de Amazon S3.

  2. En la lista de buckets, abra el bucket con la política de bucket que quiera comprobar.

  3. Seleccione la pestaña Permisos.

  4. Elija Política de bucket.

  5. Busque instrucciones con "Effect": "Deny". A continuación, revise esas instrucciones para ver si hay referencias al prefijo o al objeto al que no puede acceder. Por ejemplo, esta política de bucket deniega a todos el acceso al prefijo abc/* en DOC-EXAMPLE-BUCKET:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "StatementPrefixDeny",
          "Effect": "Deny",
          "Principal": {
            "AWS": "*"
          },
          "Action": "s3:*",
          "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/abc/*"
        }
      ]
    }
  6. Modifique la política de bucket para editar o eliminar cualquier instrucción "Effect": "Deny" que deniegue incorrectamente el acceso al prefijo u objeto.

Restricciones en su política de usuario de IAM

  1. Abra la consola de IAM.

  2. Desde la consola, abra el usuario o rol de IAM que utiliza para acceder al prefijo u objeto.

  3. En la pestaña Permisos del usuario o rol de IAM, expanda cada política para ver el documento JSON de la política.

  4. En los documentos JSON de las políticas, busque políticas relacionadas con el acceso a Amazon S3. A continuación, busque en esas políticas cualquier instrucción "Effect": "Deny" que bloquee su acceso al prefijo u objeto.

    Por ejemplo, la siguiente política de IAM tiene una instrucción "Effect": "Deny" que bloquea el acceso de la identidad de IAM al prefijo abc/* dentro de DOC-EXAMPLE-BUCKET. La política también tiene una instrucción "Effect": "Allow" que otorga acceso a DOC-EXAMPLE-BUCKET. A pesar de esta instrucción para todo el bucket, la instrucción de denegación explícita impide que la identidad de IAM acceda al prefijo abc/*:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "StatementPrefixDeny",
          "Effect": "Deny",
          "Action": "s3:GetObject",
          "Resource": [
            "arn:aws:s3:::DOC-EXAMPLE-BUCKET/abc/*"
          ]
        },
        {
          "Sid": "StatementFullPermissionS3",
          "Effect": "Allow",
          "Action": "s3:GetObject",
          "Resource": [
            "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
            "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
          ]
        }
      ]
    }
  5. Modifique la política para editar o eliminar cualquier instrucción "Effect": "Deny" que deniegue incorrectamente el acceso al prefijo u objeto.

Permisos para objetos cifrados por AWS KMS

Si un objeto está cifrado con una clave de AWS KMS, necesitará permisos tanto para el objeto como para la clave. Compruebe si no puede acceder al objeto porque necesita permisos para una clave de AWS KMS:

  1. Utilice la consola de Amazon S3 para ver las propiedades de uno de los objetos a los que no puede acceder. Revise las propiedades de cifrado del objeto.

  2. Si el objeto está cifrado con una clave de AWS KMS personalizada, revise la política de claves. Confirme que la política permita que su identidad de IAM realice las siguientes acciones:

    "Action": ["kms:Decrypt"]
  3. Si a su identidad de IAM le faltan permisos para alguna de estas acciones, modifique la política de claves para conceder los permisos que faltan.

Importante: Si la identidad de IAM y la clave de AWS KMS pertenecen a cuentas diferentes, verifique que dispone de los permisos adecuados. Tanto las políticas de IAM como las de claves deben otorgarle permisos para las acciones de AWS KMS necesarias.

Información relacionada

¿Por qué no puedo acceder a un objeto que otra cuenta de AWS ha subido a mi bucket de Amazon S3?

¿Cómo puedo conceder a un usuario acceso a una carpeta específica de mi bucket de Amazon S3?

¿Tengo que especificar la clave de AWS KMS al descargar un objeto cifrado con KMS de Amazon S3?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 6 meses