Come posso chiedere agli utenti di altri account AWS che caricano oggetti sul mio bucket Amazon S3 di concedermi il pieno controllo sugli oggetti caricati?

2 minuti di lettura
0

Desidero consentire agli utenti di altri account AWS di caricare oggetti nel mio bucket Amazon Simple Storage Service (Amazon S3). Tuttavia, desidero richiedere loro di concedermi il pieno controllo sugli oggetti caricati.

Risoluzione

Aggiungi una policy di bucket che richieda agli utenti di includere la lista di controllo degli accessi (ACL) bucket-owner-full-control quando caricano uno o più oggetti nel bucket.

Questa policy di bucket, ad esempio, specifica che ExampleUser può caricare oggetti su DOC-EXAMPLE-BUCKET solo se l'ACL dell'oggetto è impostata su bucket-owner-full-control:

{
  "Id": "Policy1541018284691",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1541018283275",
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",
      "Condition": {
        "StringEquals": {
          "s3:x-amz-acl": "bucket-owner-full-control"
        }
      },
      "Principal": {
        "AWS": [
          "arn:aws:iam::111122223333:user/ExampleUser"
        ]
      }
    }
  ]
}

Aggiungendo questa policy di bucket, gli utenti dovranno includere l'ACL richiesta come parte della richiesta di upload, come nel seguente esempio:

aws s3 cp example.jpg s3://DOC-EXAMPLE-BUCKET --acl bucket-owner-full-control

Se gli utenti non soddisfano il requisito dell’ACL nella richiesta di caricamento, ricevono il seguente messaggio di errore:

"An error occurred (AccessDenied) when calling the PutObject operation: Access Denied"

Per gli oggetti nel bucket posseduti da altri account, il proprietario dell'oggetto può eseguire un comando put-object-acl per concederti il controllo dell'oggetto:

aws s3api put-object-acl --bucket DOC-EXAMPLE-BUCKET --key example.jpg --acl bucket-owner-full-control

L'ACL bucket-owner-full-control concede al proprietario del bucket l’accesso completo a un oggetto caricato da un altro account. Tuttavia, la sola ACL non garantisce la proprietà dell'oggetto. Per ottenere automaticamente la proprietà degli oggetti caricati con l’ACL bucket-owner-full-control, imposta Proprietà dell’oggetto per S3 su proprietario del bucket preferito. Dopo aver aggiornato la Proprietà dell’oggetto per S3, il proprietario del bucket possiede automaticamente tutti i nuovi oggetti caricati con bucket-owner-fullcontrol.

Informazioni correlate

Perché non riesco ad accedere a un oggetto che è stato caricato nel mio bucket Amazon S3 da un altro account AWS?

Gestione dei bucket tramite ACL predefinite

Tutorial IAM: delega dell'accesso tra account AWS tramite i ruoli IAM

Mappatura delle autorizzazioni ACL e delle autorizzazioni della policy di accesso

AWS UFFICIALE
AWS UFFICIALEAggiornata 6 mesi fa