Il mio bucket Amazon S3 dispone di una crittografia predefinita che utilizza una chiave AWS KMS personalizzata. Come posso consentire agli utenti di scaricare e caricare contenuti nel bucket?

5 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 di gestione delle chiavi AWS (AWS KMS) personalizzata. Desidero che un utente di AWS Identity and Access Management (IAM) possa effettuare il download e il caricamento nel bucket. Come posso farlo?

Risoluzione

L'utente IAM e la chiave AWS KMS appartengono allo stesso account AWS

1.    Apri la console AWS KMS, quindi visualizza il documento relativo alla policy della chiave utilizzando la visualizzazione delle policy. Modifica la politica della chiave per concedere almeno le autorizzazioni agli utenti IAM per le azioni kms:GenerateDataKey e kms:Decrypt. È possibile aggiungere un’istruzione come segue:

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

Nota: questa policy di esempio include solo le autorizzazioni minime richieste a un singolo utente IAM per scaricare e caricare su un bucket S3 crittografato. È possibile modificare o espandere le autorizzazioni in base al tuo caso d'uso.

2.    Apri la console IAM. Aggiungi una policy all'utente IAM che conceda le autorizzazioni per il caricamento e il download dal bucket. È possibile utilizzare una policy simile alla seguente:

Nota: per il valore Risorsa, inserisci il nome della risorsa Amazon (ARN) per il bucket con un carattere jolly per indicare gli oggetti nel bucket.

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

Importante: le autorizzazioni S3 concesse dalla policy utente IAM possono essere bloccate da una dichiarazione di rifiuto esplicita nella policy del bucket. Assicurati di esaminare la policy dei bucket per verificare che non ci siano dichiarazioni di rifiuto esplicite in conflitto con la policy degli utenti IAM.

L'utente IAM dispone di un account diverso rispetto alla chiave AWS KMS e al bucket S3

Importante: è possibile concedere l'accesso multi-account per una chiave AWS KMS gestita dal cliente, ma non per una chiave AWS KMS gestita da AWS. La policy della chiave di una chiave AWS KMS gestita da AWS non può essere modificata.

1.    Apri la console AWS KMS, quindi visualizza il documento relativo alla policy della chiave utilizzando la visualizzazione delle policy. Modifica la politica della chiave per concedere almeno le autorizzazioni agli utenti IAM per le azioni kms:GenerateDataKey e kms:Decrypt. È possibile utilizzare un'istruzione simile all'esempio seguente:

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

Nota: questa policy di esempio include solo le autorizzazioni minime richieste a un singolo utente IAM per scaricare e caricare su un bucket S3 crittografato. È possibile modificare o espandere le autorizzazioni in base al tuo caso d'uso.

2.    Apri la console IAM dall'account a cui appartiene l'utente IAM. Aggiungi una policy all'utente IAM che conceda le autorizzazioni per il caricamento e il download dal bucket. La policy deve funzionare anche con la chiave AWS KMS associata al bucket.

Per gli scenari multi-account, valuta la possibilità di concedere le autorizzazioni s3:PutObjectAcl in modo che l'utente IAM possa caricare un oggetto. Quindi, concedi all'account del bucket il pieno controllo dell'oggetto (bucket-owner-full-control). Inoltre, valuta la possibilità di concedere le autorizzazioni s3:ListBucket, necessarie per eseguire un'operazione di sincronizzazione o un'operazione di copia ricorsiva. È possibile utilizzare una policy simile alla seguente:

Nota: per il primo valore Risorsa, inserisci l'ARN del bucket con un carattere jolly per indicare gli oggetti nel bucket. Per il secondo valore Risorsa, inserisci l'ARN per il bucket. Per il terzo valore della Risorsa, inserisci l'ARN della 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"
    }
  ]
}

3.    Apri la console Amazon S3 dall'account proprietario del bucket S3. Aggiorna la policy del bucket per concedere all'utente IAM l'accesso al bucket. È possibile utilizzare una policy simile alla seguente:

Nota: per i valori Principale, inserisci l'ARN dell'utente IAM. Per il primo valore Risorsa, inserisci l'ARN del bucket con un carattere jolly per indicare gli oggetti nel bucket. Per il secondo valore Risorsa, inserisci l'ARN per il 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"
        ]
      }
    }
  ]
}

Informazioni correlate

Tasti di modifica

aws s3 cp

Utilizzo delle policy IAM con AWS KMS

Amazon S3: consente l'accesso in lettura e scrittura agli oggetti in un bucket S3

Disabilitazione degli ACL per tutti i nuovi bucket e applicazione della proprietà degli oggetti

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa