Warum kann ich keine große Datei mit der AWS-KMS-Schlüsselverschlüsselung auf Amazon S3 hochladen?

Lesedauer: 3 Minute
0

Ich möchte eine große Datei in meinen Amazon Simple Storage Service (Amazon S3)-Bucket hochladen. In meiner Upload-Anfrage füge ich Verschlüsselungsinformationen mit einem AWS Key Management Service (AWS KMS)-Schlüssel hinzu. Ich erhalte jedoch die Fehlermeldung Zugriff verweigert.

Kurzbeschreibung

Bestätigen Sie, dass Sie berechtigt sind, kms:Decrypt-Aktionen für den AWS-KMS-Schlüssel auszuführen, den Sie zum Verschlüsseln des Objekts verwenden.

Bei großen Dateien führen S3-Befehle auf hoher Ebene mit der AWS-Befehlszeilenschnittstelle (AWS CLI), AWS-SDKs und vielen Programmen von Drittanbietern automatisch einen mehrteiligen Upload durch. Um einen AWS-KMS-Schlüssel zum Verschlüsseln eines mehrteiligen Uploads zu verwenden, benötigen Sie die Berechtigungen kms:generateDataKey und kms:Decrypt. Mit den Berechtigungen kms:generateDataKey können Sie den Upload initiieren. Mit den Berechtigungen kms:Decrypt können Sie neu hochgeladene Teile mit dem Schlüssel verschlüsseln, den Sie für frühere Teile desselben Objekts verwendet haben.

Hinweis: Nachdem Sie alle Teile hochgeladen haben, müssen Sie die hochgeladenen Teile zusammenbauen, um den mehrteiligen Upload-Vorgang abzuschließen. Da die hochgeladenen Teile serverseitig mit einem AWS-KMS-Schlüssel verschlüsselt sind, müssen Sie Objektteile entschlüsseln, bevor Sie die Teile zusammenbauen können. Daher benötigen Sie kms:Decrypt-Berechtigungen für mehrteilige Upload-Anfragen, die serverseitige Verschlüsselung mit AWS-KMS-Schlüsseln (SSE-KMS) verwenden.

Behebung

Ihre Rolle und Ihr Schlüssel für AWS Identitäts- und Zugriffsmanagement (Identity and Access Management) (IAM) sind möglicherweise in demselben AWS-Konto oder in verschiedenen Konten vorhanden. Wenn sich Ihre IAM-Rolle und Ihr Schlüssel in demselben Konto befinden, können Sie kms:Decrypt-Berechtigungen aus einer IAM-Richtlinie oder einer AWS-KMS-Schlüsselrichtlinie angeben. Wenn sich Ihre IAM-Rolle und Ihr Schlüssel in unterschiedlichen Konten befinden, müssen Sie die Berechtigungen kms:Decrypt sowohl im Schlüssel als auch in der IAM-Richtlinie angeben.

Schlüsselrichtlinie

Überprüfen Sie die AWS-KMS-Schlüsselrichtlinie mithilfe der Richtlinienansicht der AWS-Managementkonsole.

Suchen Sie in der Schlüsselrichtlinie nach Aussagen, in denen der Amazon-Ressourcenname (ARN) Ihres IAM-Benutzers oder Ihrer IAM-Rolle als AWS-Prinzipal aufgeführt ist. Der ARN hat das Format: arn:aws:iam::111122223333:user/john.

Überprüfen Sie dann die Liste der Aktionen, die Ihre IAM-Benutzer- oder -Rollenanweisungen zulassen. Für mehrteilige Uploads muss die Liste der erlaubten Aktionen kms:Decrypt with SSE-KMS enthalten.

Diese Anweisung in einer Schlüsselrichtlinie ermöglicht es dem Benutzer John beispielsweise, die Aktionen kms:Decrypt und kms:GenerateDataKey auszuführen:

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

IAM-Berechtigungen

Um Ihre IAM-Berechtigungen zu überprüfen, öffnen Sie die IAM-Konsole und dann Ihren IAM-Benutzer oder Ihre IAM-Rolle.

Sehen Sie sich die Liste der Berechtigungsrichtlinien an, die auf Ihren IAM-Benutzer oder Ihre IAM-Rolle angewendet wurden. Stellen Sie sicher, dass eine Richtlinie angewendet wurde, die es Ihnen ermöglicht, die Aktion kms:Decrypt für den Schlüssel auszuführen, der zum Verschlüsseln des Objekts verwendet wurde:

{  
  "Version": "2012-10-17",  
  "Statement": {  
    "Effect": "Allow",  
    "Action": [  
      "kms:Decrypt",  
      "kms:GenerateDataKey"  
    ],  
    "Resource": [  
      "arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd"  
    ]  
  }  
}

Diese Beispielanweisung gewährt dem IAM-Benutzer Zugriff, um kms:Decrypt und kms:GenerateDataKey auf dem Schlüssel arn:aws:kms:example-region-1:123456789098:key/111aa2bb-333c-4d44-5555-a111bb2c33dd auszuführen.

Anweisungen zum Aktualisieren Ihrer IAM-Berechtigungen finden Sie unter Berechtigungen für einen IAM-Benutzer ändern.

Ähnliche Informationen

AWS-Richtliniengenerator

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 7 Monaten