Salta al contenuto

Come posso consentire agli utenti di scaricare e caricare in un bucket Amazon S3 che ho crittografato con una chiave AWS KMS gestita dal cliente?

4 minuti di lettura
0

Ho configurato il mio bucket Amazon Simple Storage Service (Amazon S3) per utilizzare la crittografia predefinita con una chiave del Servizio AWS di gestione delle chiavi (AWS KMS) gestita dal cliente. Desidero consentire a un utente AWS Identity and Access Management (AWS IAM) di scaricare oggetti e caricarli nel bucket.

Risoluzione

Prima di tutto, controlla la policy della chiave AWS KMS. Quindi modifica la policy basata sull'identità per l'utente IAM. Se l'utente IAM si trova in un account diverso da quello del bucket S3, devi modificare anche la policy del bucket.

Modifica la policy della chiave

Completa i seguenti passaggi:

  1. Apri la console AWS KMS.

  2. Nel pannello di navigazione, scegli Chiavi gestite dal cliente, quindi seleziona la chiave nell'elenco delle chiavi.

  3. Scegli la scheda Policy della chiave per visualizzare il documento della policy.
    Nota: se hai utilizzato la console AWS KMS per creare la chiave gestita dal cliente, devi scegliere Passa alla visualizzazione della policy nella scheda Policy della chiave per visualizzare il documento della policy.

  4. Scegli Modifica, quindi aggiungi la seguente istruzione alla policy della chiave per concedere le autorizzazioni kms:GenerateDataKey e kms:Decrypt:

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

    Nota: il precedente esempio di istruzione di policy include solo le autorizzazioni minime richieste per scaricare e caricare oggetti in un bucket S3 crittografato. Puoi aggiungerne altre in base al caso d'uso.

Modifica la policy basata sull'identità per l'accesso allo stesso account

Completa i seguenti passaggi:

  1. Apri la console IAM.

  2. Collega la seguente policy all'utente IAM in modo che possa caricare e scaricare oggetti dal bucket:

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

    Nota: sostituisci il valore Resource con il nome della risorsa Amazon (ARN) del bucket.Il carattere jolly (*) rappresenta l'oggetto nel bucket.

Importante: un'istruzione Deny esplicita in una policy di bucket blocca le autorizzazioni concesse da una policy basata sull'identità. Rivedi la policy del bucket per verificare che non esista un'esplicita istruzione Deny che sia in conflitto con la policy basata sull'identità.

Modifica la policy basata sull'identità e la policy del bucket per l'accesso multi-account

Importante: puoi concedere l'accesso multi-account per una chiave gestita dal cliente ma non per una chiave gestita da AWS. Non puoi modificare la policy di una chiave gestita da AWS.

Completa i seguenti passaggi:

  1. Apri la console IAM dall'account utente IAM.

  2. Collega la seguente policy all'utente IAM in modo che possa caricare e scaricare oggetti e utilizzare la chiave 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"
        }
      ]
    }

    Nota: sostituisci i valori Resource con gli ARN del tuo bucket e della tua chiave AWS KMS. Il carattere jolly (*) rappresenta l'oggetto nel bucket.

  3. Apri la console Amazon S3 dall'account proprietario del bucket S3.

  4. Aggiungi la seguente istruzione alla policy del bucket per concedere all'utente IAM l'accesso al 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"
            ]
          }
        }
      ]
    }

    Nota: sostituisci Id con l'ID della policy del tuo bucket, il valore Principal con l'ARN dell'utente IAM e i valori Resource con gli ARN del tuo bucket.

Oltre alle autorizzazioni minime richieste per l'accesso multi-account, puoi concedere l'autorizzazione s3:PutObjectAcl n modo che l'utente IAM possa impostare la lista di controllo degli accessi (ACL) per un oggetto. Quindi concedi l'ACL predefinita bucket-owner-full-control all'account del bucket. Puoi anche concedere l'autorizzazione s3:ListBucket necessaria per sincronizzare le directory o i prefissi S3 e copiare oggetti tra bucket.

Informazioni correlate

Attivazione e disattivazione delle chiavi

Utilizzo delle policy IAM con AWS KMS

Concedere l'accesso in lettura e scrittura agli oggetti di un bucket Amazon S3

Disabilitare le ACL per tutti i nuovi bucket e applicare la proprietà dell'oggetto