Mi bucket de Amazon S3 tiene un cifrado predeterminado mediante una clave de AWS KMS personalizada. ¿Cómo puedo permitir que los usuarios realicen operaciones de carga y descarga en el bucket?

5 minutos de lectura
0

He configurado mi bucket de Amazon Simple Storage Service (Amazon S3) para usar el cifrado predeterminado con una clave de AWS Key Management Service (AWS KMS) personalizada. Quiero que un usuario de AWS Identity and Access Management (IAM) pueda descargar y cargar archivos en el bucket. ¿Cómo puedo hacerlo?

Resolución

El usuario de IAM y la clave de AWS KMS pertenecen a la misma cuenta de AWS

1.    Abra la consola de AWS KMS y, a continuación, consulte el documento de política de claves mediante la vista de políticas. Modifique la política de claves para conceder al usuario de IAM permisos para las acciones kms:GenerateDataKey y kms:Decrypt como mínimo. Puede añadir una instrucción como la siguiente:

{
  "Sid": "ExampleStmt",
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:user/Jane"
  },
  "Resource": "*"
}

Nota: Este ejemplo de política incluye solo los permisos mínimos requeridos para que un usuario individual de IAM descargue y cargue en un bucket de S3 cifrado. Puede modificar o ampliar los permisos según su caso de uso.

2.    Abra la consola de IAM. Agregue una política al usuario de IAM que otorgue los permisos para cargar y descargar desde el bucket. Puede utilizar una política similar a la siguiente:

Nota: Para el valor de Resource, introduzca el nombre de recurso de Amazon (ARN) del bucket con un carácter comodín para indicar los objetos del bucket.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
    }
  ]
}

Importante: Los permisos de S3 otorgados por la política de usuario de IAM se pueden bloquear mediante una instrucción de denegación explícita en la política de bucket. Asegúrese de revisar la política de bucket para confirmar que no hay ninguna instrucción de denegación explícita que entre en conflicto con la política de usuario de IAM.

El usuario de IAM está en una cuenta diferente a la clave de AWS KMS y al bucket de S3

Importante: Puede conceder acceso entre cuentas para una clave de AWS KMS administrada por el cliente, pero no para una clave de AWS KMS administrada por AWS. La política de claves de una clave de AWS KMS administrada por AWS no se puede modificar.

1.    Abra la consola de AWS KMS y, a continuación, consulte el documento de política de claves mediante la vista de políticas. Modifique la política de claves para conceder al usuario de IAM permisos para las acciones kms:GenerateDataKey y kms:Decrypt como mínimo. Puede añadir una instrucción similar a la siguiente:

{
  "Sid": "ExampleStmt",
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey"
  ],
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::111122223333:user/Jane"
  },
  "Resource": "*"
}

Nota: Este ejemplo de política incluye solo los permisos mínimos requeridos para que un usuario individual de IAM descargue y cargue en un bucket de S3 cifrado. Puede modificar o ampliar los permisos según su caso de uso.

2.    Abra la consola de IAM desde la cuenta a la que pertenece el usuario de IAM. Agregue una política al usuario de IAM que otorgue los permisos para cargar y descargar desde el bucket. La política también debe funcionar con la clave de AWS KMS que está asociada al bucket.

Para situaciones con varias cuentas, considere la posibilidad de conceder los permisos s3:PutObjectAcl para que el usuario de IAM pueda cargar un objeto. A continuación, conceda a la cuenta del bucket el control total del objeto (bucket-owner-full-control). Además, considere otorgar el permiso s3:ListBucket, que es necesario para ejecutar una operación de sincronización o una operación de copia recursiva. Puede utilizar una política similar a la siguiente:

**Nota:**Para el primer valor de Resource, introduzca el ARN del bucket con un carácter comodín para indicar los objetos del bucket. Para el segundo valor de Resource, introduzca el ARN del bucket. Para el tercer valor de Resource, introduzca el ARN de la clave de AWS KMS.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DownloadandUpload",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
    },
    {
      "Sid": "ListBucket",
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET"
    },
    {
      "Sid": "KMSAccess",
      "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"
    }
  ]
}

3.    Abra la consola Amazon S3 desde la cuenta que posee el bucket de S3. Actualice la política de bucket para conceder al usuario de IAM acceso al bucket. Puede utilizar una política como la siguiente:

Nota: Para los valores de Principal, introduzca el ARN del usuario de IAM. Para el primer valor de Resource, introduzca el ARN del bucket con un carácter comodín para indicar los objetos del bucket. Para el segundo valor de Resource, introduzca el ARN del bucket.

{
  "Id": "Policy1584399307003",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DownloadandUpload",
      "Action": [
        "s3:GetObject",
        "s3:GetObjectVersion",
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:user/Jane"
        ]
      }
    },
    {
      "Sid": "ListBucket",
      "Action": [
        "s3:ListBucket"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET",
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:user/Jane"
        ]
      }
    }
  ]
}

Información relacionada

Editing keys

aws s3 cp

Using IAM policies with AWS KMS

Amazon S3: permite el acceso de lectura y escritura a objetos en un bucket de S3

Desactivación de las ACL para todos los buckets nuevos y aplicación de la propiedad de objetos

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años