Warum erhalten kontoübergreifende Benutzer die Fehlermeldung „Zugriff verweigert“, wenn sie versuchen, auf meine S3-Objekte zuzugreifen, die ich mit einem vom Kunden verwalteten AWS KMS-Schlüssel verschlüsselt habe?

Lesedauer: 4 Minute
0

Mein Amazon Simple Storage Service (Amazon S3)-Bucket ist mit einem vom Kunden verwalteten AWS Key Management Service (AWS KMS)-Schlüssel verschlüsselt. Wenn Benutzer von einem anderen AWS-Konto aus versuchen, auf die Objekte in meinem Bucket zuzugreifen, erhalten sie die Fehlermeldung Zugriff verweigert.

Kurzbeschreibung

Um einem Benutzer in Konto B Zugriff auf einen mit AWS KMS verschlüsselten Bucket in Konto A zu gewähren, wenden Sie die folgenden Berechtigungen an:

  • Die Amazon S3-Richtlinie in Konto A muss Zugang zu Konto B gewähren.
  • Der von AWS verwaltete Schlüssel in Konto A muss sich in derselben AWS-Region befinden wie der S3-Bucket in Konto A.
  • Die AWS KMS-Schlüsselrichtlinie in Konto A muss dem Benutzer in Konto B Zugriff gewähren.
  • Die AWS Identity and Access Management (IAM)-Richtlinie in Konto B muss dem Benutzer Zugriff auf den Bucket und den Schlüssel in Konto A gewähren.

Um den Fehler Zugriff verweigert zu beheben, überprüfen Sie, ob diese Berechtigungen korrekt eingerichtet sind.

Wichtig: Bei vom Kunden verwalteten Schlüsselrichtlinien können Sie die Schlüsselrichtlinie nur über das Konto ändern, mit dem die Richtlinie erstellt wurde.

Sie müssen einen vollqualifizierten KMS-Schlüssel-ARN für die Bucket-Verschlüsselungseinstellung verwenden. Wenn Sie einen KMS-Schlüsselalias verwenden, löst AWS KMS den Schlüssel nur innerhalb des Kontos auf, dem der Bucket gehört (Konto A).

Das Folgende ist ein Beispiel für einen vollqualifizierten AWS-KMS-Schlüssel-ARN, den Sie für die Bucket-Verschlüsselung verwenden:

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

Das Folgende ist ein Beispiel für einen AWS KMS-Schlüsselalias, den Sie nicht für die Bucket-Verschlüsselung verwenden:

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

Behebung

Die Bucket-Richtlinie in Konto A muss dem Benutzer in Konto B Zugriff gewähren

Überprüfen Sie von Konto A aus die Bucket-Richtlinie, um sich zu vergewissern, dass es eine Erklärung gibt, die den Zugriff von der Konto-ID von Konto B aus ermöglicht.

Diese Bucket-Richtlinie ermöglicht beispielsweise s3:getObject den Zugriff auf die Konto-ID 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"
        ]
      }
    }
  ]
}

Die AWS KMS-Schlüsselrichtlinie in Konto A muss dem Benutzer in Konto B Zugriff gewähren

Die AWS-KMS-Schlüsselrichtlinie muss dem Benutzer in Konto B Berechtigungen für die Aktion kms:Decrypt gewähren. Um beispielsweise nur einem IAM-Benutzer oder einer IAM-Rolle Schlüsselzugriff zu gewähren, verwenden Sie eine Schlüsselrichtlinie, die der folgenden ähnelt:

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

Verwenden Sie von Konto A aus die Richtlinienansicht der AWS-Managementkonsole, um die Schlüsselrichtlinie zu überprüfen. Suchen Sie in der Schlüsselrichtlinie nach „Sid“: „Erlaube die Verwendung des Schlüssels“. Bestätigen Sie dann, dass der Benutzer in Konto B in dieser Erklärung als Principal aufgeführt ist.

Falls du die Aussage ** „Sid“ nicht siehst: „Verwendung des Schlüssels zulassen“** und verwenden Sie dann die Standardansicht der AWS-Managementkonsole, um die Schlüsselrichtlinie zu überprüfen. Fügen Sie dann die Konto-ID von Konto B als externes Konto, das Zugriff auf den Schlüssel hat, hinzu.

Die IAM-Benutzerrichtlinie in Konto B muss dem Benutzer Zugriff sowohl auf den Bucket als auch auf den Schlüssel in Konto A gewähren

Führen Sie von Konto B aus die folgenden Schritte aus:

  1. Öffnen Sie die IAM-Konsole.
  2. Öffnen Sie den IAM-Benutzer oder die dem Benutzer zugeordnete IAM-Rolle in Konto B.
  3. Sehen Sie sich die Liste der Berechtigungsrichtlinien an, die auf den IAM-Benutzer oder Ihre IAM-Rolle angewendet wurden.
  4. Stellen Sie sicher, dass Richtlinien angewendet werden, die Zugriff sowohl auf den Bucket als auch auf den Schlüssel gewähren.
    **Hinweis:**Wenn der IAM-Benutzer oder die IAM-Rolle in Konto B bereits über Administratorzugriff verfügt, müssen Sie keinen Zugriff auf den Schlüssel gewähren. Die folgende Beispielrichtlinie gewährt dem IAM-Benutzer in Konto B Zugriff auf Objekte und den KMS-Schlüssel zum Entschlüsseln von Objekten in einem 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"
            }
        ]
    }

Weitere Informationen zum Hinzufügen oder Korrigieren der Berechtigungen des IAM-Benutzers finden Sie unter Ändern von Berechtigungen für einen IAM-Benutzer. .

Ähnliche Informationen

AWS-Richtliniengenerator

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr