Mein Amazon S3-Bucket verfügt über eine Standardverschlüsselung mit einem benutzerdefinierten AWS KMS-Schlüssel. Wie kann ich Benutzern erlauben, aus dem Bucket herunterzuladen und in den Bucket hochzuladen?

Lesedauer: 5 Minute
0

Ich habe meinen Amazon Simple Storage Service (Amazon S3)-Bucket so eingerichtet, dass er die Standardverschlüsselung mit einem benutzerdefinierten AWS Key Management Service (AWS KMS)-Schlüssel verwendet. Ich möchte, dass ein Benutzer von AWS Identity and Access Management (IAM) Dateien aus dem Bucket herunterladen und in den Bucket hochladen kann. Wie kann ich das machen?

Lösung

Der IAM-Benutzer und der AWS KMS-Schlüssel gehören zu demselben AWS-Konto

1.    Öffnen Sie die AWS KMS-Konsole und sehen Sie sich dann das Richtliniendokument des Schlüssels in der Richtlinienansicht an. Ändern Sie die Richtlinie des Schlüssels, um dem IAM-Benutzer mindestens Berechtigungen für die Aktionen kms:GenerateDataKey und kms:Decrypt zu gewähren. Sie können eine Aussage wie die folgende hinzufügen:

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

Hinweis: Diese Beispielrichtlinie enthält nur die Mindestberechtigungen, die ein einzelner IAM-Benutzer zum Herunterladen und Hochladen in einen verschlüsselten S3-Bucket benötigt. Sie können die Berechtigungen je nach Anwendungsfall ändern oder erweitern.

2.    Öffnen Sie die IAM-Konsole. Fügen Sie dem IAM-Benutzer eine Richtlinie hinzu, die die Berechtigungen zum Hoch- und Herunterladen aus dem Bucket erteilt. Sie können eine Richtlinie verwenden, die der folgenden ähnelt:

Hinweis: Geben Sie für den Wert Ressource den Amazon-Ressourcennamen (ARN) für den Bucket mit einem Platzhalterzeichen ein, um die Objekte im Bucket anzugeben.

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

Wichtig: Die durch die IAM-Benutzerrichtlinie gewährten S3-Berechtigungen können durch eine ausdrückliche Ablehnungsanweisung in der Bucket-Richtlinie blockiert werden. Überprüfen Sie unbedingt die Bucket-Richtlinie, um sicherzustellen, dass es keine expliziten Ablehnungsanweisungen gibt, die im Widerspruch zur IAM-Benutzerrichtlinie stehen.

Der IAM-Benutzer hat ein anderes Konto als der AWS KMS-Schlüssel und der S3-Bucket

Wichtig: Sie können kontoübergreifenden Zugriff für einen vom Kunden verwalteten AWS KMS-Schlüssel gewähren, nicht jedoch für einen von AWS verwalteten AWS KMS-Schlüssel. Die Schlüsselrichtlinie eines von AWS verwalteten AWS KMS-Schlüssels kann nicht geändert werden.

1.    Öffnen Sie die AWS KMS-Konsole und sehen Sie sich dann das Richtliniendokument des Schlüssels in der Richtlinienansicht an. Ändern Sie die Richtlinie des Schlüssels, um dem IAM-Benutzer mindestens Berechtigungen für die Aktionen kms:GenerateDataKey und kms:Decrypt zu gewähren. Sie können eine Anweisung hinzufügen, die der folgenden ähnelt:

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

Hinweis: Diese Beispielrichtlinie enthält nur die Mindestberechtigungen, die ein einzelner IAM-Benutzer zum Herunterladen und Hochladen in einen verschlüsselten S3-Bucket benötigt. Sie können die Berechtigungen je nach Anwendungsfall ändern oder erweitern.

2.    Öffnen Sie die IAM-Konsole von dem Konto aus, dem der IAM-Benutzer angehört. Fügen Sie dem IAM-Benutzer eine Richtlinie hinzu, die die Berechtigungen zum Hoch- und Herunterladen aus dem Bucket erteilt. Die Richtlinie muss auch mit dem AWS KMS-Schlüssel funktionieren, der dem Bucket zugeordnet ist.

Für kontoübergreifende Szenarien sollten Sie erwägen, s3:PutObjectAcl-Berechtigungen zu gewähren, damit der IAM-Benutzer ein Objekt hochladen kann. Gewähren Sie dann dem Konto des Buckets die volle Kontrolle über das Objekt (bucket-owner-full-control). Erwägen Sie außerdem, s3:ListBucket-Berechtigungen zu gewähren, die für die Ausführung eines Synchronisierungsvorgangs oder eines rekursiven Kopiervorgangs erforderlich sind. Sie können eine Richtlinie verwenden, die der folgenden ähnelt:

Hinweis: Geben Sie für den ersten Ressourcen-Wert den ARN für den Bucket mit einem Platzhalterzeichen ein, um die Objekte im Bucket anzugeben. Geben Sie für den zweiten Ressourcen-Wert den ARN für den Bucket ein. Geben Sie für den dritten RessourcenWert den ARN des AWS KMS-Schlüssels ein.

{
  "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.    Öffnen Sie die Amazon S3-Konsole von dem Konto aus, das den S3-Bucket besitzt. Aktualisieren Sie die Bucket-Richtlinie, um dem IAM-Benutzer Zugriff auf den Bucket zu gewähren. Sie können eine Richtlinie wie die folgende verwenden:

Hinweis: Geben Sie für die Prinzipal-Werte den ARN des IAM-Benutzers ein. Geben Sie für den ersten Ressourcen-Wert den ARN für den Bucket mit einem Platzhalterzeichen ein, um die Objekte im Bucket anzugeben. Geben Sie für den zweiten Ressourcen-Wert den ARN für den Bucket ein.

{
  "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"
        ]
      }
    }
  ]
}

Ähnliche Informationen

Schlüssel bearbeiten

aws s3 cp

Verwendung von IAM-Richtlinien mit AWS KMS

Amazon S3: Ermöglicht Lese- und Schreibzugriff auf Objekte in einem S3-Bucket

ACLs für alle neuen Buckets deaktivieren und Objektbesitz erzwingen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren