Salta al contenuto

Perché gli utenti multi-account ricevono errori Access Denied quando tentano di accedere ai miei oggetti Amazon S3 che ho crittografato con una chiave AWS KMS gestita dal cliente?

4 minuti di lettura
0

Desidero risolvere gli errori "Access Denied" che gli utenti ricevono quando accedono al mio bucket Amazon Simple Storage Service (Amazon S3) da un altro account AWS. Crittografo il mio bucket Amazon S3 con una chiave gestita dal cliente del Servizio AWS di gestione delle chiavi (AWS KMS).

Breve descrizione

Nota: le seguenti risoluzioni si applicano solo ai bucket di directory Amazon S3 e ai bucket per uso generico.

Per concedere l'accesso a un bucket crittografato AWS KMS nell'Account A a un utente nell'Account B, applica le seguenti autorizzazioni:

  • La policy di bucket nell'Account A di Amazon S3 deve concedere l'accesso all'Account B.
  • La chiave AWS KMS gestita da AWS nell'Account A deve trovarsi nella stessa Regione AWS del bucket Amazon S3 nell'Account A.
  • La policy della chiave AWS KMS nell'Account A deve concedere l'accesso all'utente nell'Account B.
  • La policy AWS Identity and Access Management (AWS IAM) nell'Account B deve concedere all'utente l'accesso sia al bucket che alla chiave AWS KMS nell'Account A.

Per risolvere l'errore Denied access, verifica di aver configurato correttamente le autorizzazioni precedenti.

Importante: per le policy delle chiavi gestite dal cliente AWS KMS, puoi modificare la policy della chiave AWS KMS solo dall'account che ha creato la policy.

Devi utilizzare il nome della risorsa Amazon (ARN) completo della chiave AWS KMS per impostare la crittografia del bucket. Se utilizzi un alias della chiave AWS KMS, AWS KMS risolve la chiave AWS KMS solo per l'account proprietario del bucket.

Il seguente esempio di ARN della chiave AWS KMS è completo e, pertanto, consente di impostare la crittografia del bucket:

arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

Viceversa, il seguente esempio di ARN della chiave AWS KMS non completo e, pertanto, non consente di impostare la crittografia del bucket:

arn:aws:kms:us-west-2:111122223333:alias/alias-name

Risoluzione

Configura la policy di bucket nell'Account A per concedere l'accesso all'utente nell'Account B

Dall'Account A, rivedi la policy di bucket. Verifica che un'istruzione consenta l'accesso dall'ID dell'Account B.
Il seguente esempio di policy di bucket consente a s3:GetObject l'accesso all'ID account 111122223333:

{  "Id": "ExamplePolicy1",  
  "Version": "2012-10-17",  
  "Statement": [  
    {  
      "Sid": "ExampleStmt1",  
      "Action": [  
        "s3:GetObject"  
      ],  
      "Effect": "Allow",  
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*",  
      "Principal": {  
        "AWS": [  
          "111122223333"  
        ]  
      }  
    }  
  ]  
}

Configura la policy della chiave AWS KMS nell'account A per concedere l'accesso all'utente nell'account B

La policy della chiave AWS KMS deve concedere all'utente nell'Account B le autorizzazioni per utilizzare l'azione kms:Decrypt.

Il seguente esempio di policy concede l'accesso alla chiave AWS KMS a un solo utente o ruolo IAM:

{    "Sid": "Allow use of the key",  
    "Effect": "Allow",  
    "Principal": {  
        "AWS": [  
            "arn:aws:iam::111122223333:role/role_name"  
        ]  
    },  
    "Action": [  
        "kms:Decrypt"  
    ],  
    "Resource": "*"  
}

Dall'Account A, utilizza la visualizzazione delle policy della Console di gestione AWS per rivedere la policy della chiave AWS KMS. Nella policy della chiave AWS KMS, trova l'istruzione "Sid": "Allow use of the key". Quindi verifica di aver indicato l'utente nell'Account B come principale nell'istruzione. Se non vedi "Sid": "Allow use of the key" e utilizza la vista predefinita della Console di gestione AWS per rivedere la policy della chiave AWS KMS. A questo punto, aggiungi l'ID dell'Account B come account esterno con accesso alla chiave AWS KMS.

Configura la policy dell'utente IAM nell'Account B per concedere all'utente l'accesso al bucket Amazon S3 e alla chiave nell'Account A

Dall'Account B, completa i seguenti passaggi:

  1. Apri la console IAM.
  2. Apri l'utente o il ruolo IAM associato all'utente nell'Account B.
  3. Rivedi l'elenco delle policy di autorizzazione che hai applicato all'utente o al ruolo IAM.
  4. Verifica che le policy applicate concedano l'accesso sia al bucket che alla chiave AWS KMS.
    Nota: se l'utente o il ruolo IAM nell'Account B ha già l'accesso come amministratore, non serve concedere l'accesso alla chiave AWS KMS. Il seguente esempio di policy concede all'utente IAM nell'Account B l'accesso agli oggetti e alla chiave AWS KMS per decrittografare gli oggetti in un bucket:
    {    "Version": "2012-10-17",  
        "Statement": [{  
                "Sid": "ExampleStmt1",  
                "Action": [  
                    "s3:GetObject"  
                ],  
                "Effect": "Allow",  
                "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"  
            },  
            {  
                "Sid": "ExampleStmt2",  
                "Action": [  
                    "kms:Decrypt"  
                ],  
                "Effect": "Allow",  
                "Resource": "arn:aws:kms:us-west-2:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab"  
            }  
        ]  
    }

Per ulteriori informazioni sull'aggiunta o sulla correzione delle autorizzazioni dell'utente IAM, consulta Modificare le autorizzazioni per un utente IAM.

Informazioni correlate

AWS Policy Generator (Generatore di policy AWS)

AWS UFFICIALEAggiornata 10 mesi fa