Berechtigungsanforderungen für die SSE-KMS-Verschlüsselung von S3 Tables - Amazon Simple Storage Service

Berechtigungsanforderungen für die SSE-KMS-Verschlüsselung von S3 Tables

Wenn Sie die serverseitige Verschlüsselung mit AWS Key Management Service (AWS KMS)-Schlüsseln (SSE-KMS) für Tabellen in S3-Tabellen-Buckets verwenden, müssen Sie Berechtigungen für verschiedene Identitäten in Ihrem Konto gewähren. Zumindest Ihre Zugriffsidentität und der Wartungsprinzipal für S3 Tables benötigen Zugriff auf Ihren Schlüssel. Die anderen erforderlichen Berechtigungen hängen von Ihrem Anwendungsfall ab.

Erforderliche Berechtigungen

Um auf eine mit einem KMS-Schlüssel verschlüsselte Tabelle zuzugreifen, benötigen Sie die folgenden Berechtigungen für diesen Schlüssel:

  • kms:GenerateDataKey

  • kms:Decrypt

Wichtig

Um SSE-KMS für Tabellen zu verwenden, benötigt der Amazon S3 Tables-Maintenance-Service-Prinzipal (maintenance.s3tables.amazonaws.com) die Berechtigungen kms:GenerateDataKey und kms:Decrypt für den Schlüssel.

Zusätzliche Berechtigungen

Diese zusätzlichen Berechtigungen sind je nach Anwendungsfall erforderlich:

  • Berechtigungen für die Integration von AWS-Analytikservices – Wenn Sie in AWS-Analytikservices mit SSE-KMS-verschlüsselten Tabellen arbeiten, benötigt Ihre Integrationsrolle die Berechtigung zur Verwendung Ihres KMS-Schlüssels.

  • Berechtigungen für direkten Zugriff – Wenn Sie direkt mit SSE-KMS-verschlüsselten Tabellen arbeiten, beispielsweise über den Amazon S3 Tables Iceberg REST-Endpunkt oder den Amazon S3 Tables Catalog für Apache Iceberg, müssen Sie der IAM-Rolle, die Ihr Client verwendet, Zugriff auf Ihren Schlüssel gewähren.

  • Berechtigungen für S3-Metadatentabellen – Wenn Sie SSE-KMS-Verschlüsselung für S3-Metadatentabellen verwenden, müssen Sie dem S3-Metadaten-Service-Prinzipal (metadata.s3.amazonaws.com) Zugriff auf Ihren KMS-Schlüssel gewähren. Dadurch können S3-Metadaten verschlüsselte Tabellen aktualisieren, sodass sie Ihre neuesten Datenänderungen widerspiegeln.

Anmerkung

Für kontoübergreifende KMS-Schlüssel benötigt Ihre IAM-Rolle sowohl eine Schlüsselzugriffsberechtigung als auch eine ausdrückliche Autorisierung in der Schlüsselrichtlinie. Weitere Informationen zu kontoübergreifenden Berechtigungen für KMS-Schlüssel finden Sie unter Externen AWS-Konten die Verwendung eines KMS-Schlüssels gestatten im AWS Key Management Service-Service-Entwicklerhandbuch.

Gewähren von Berechtigungen für den S3 Tables-Maintenance-Service-Prinzipal an Ihrem KMS-Schlüssel

Diese Berechtigung ist erforderlich, um SSE-KMS-verschlüsselte Tabellen zu erstellen und die automatische Tabellenverwaltung wie Komprimierung, Snapshot-Verwaltung und Entfernung nicht referenzierter Dateien in den verschlüsselten Tabellen zu ermöglichen.

Anmerkung

Immer wenn Sie eine Anfrage zur Erstellung einer SSE-KMS-verschlüsselten Tabelle stellen, überprüft S3 Tables, ob der maintenance.s3tables.amazonaws.com Prinzipal Zugriff auf Ihren KMS-Schlüssel hat. Um diese Prüfung durchzuführen, wird vorübergehend ein Null-Byte-Objekt in Ihrem Tabellen-Bucket erstellt. Dieses Objekt wird automatisch durch die Wartungsoperationen zum Entfernen nicht referenzierter Dateien entfernt. Wenn der KMS-Schlüssel, den Sie für die Verschlüsselung angegeben haben, keinen Wartungszugriff hat, schlägt der CreateTable-Vorgang fehl.

Um Wartungszugriff auf SSE-KMS-verschlüsselte Tabellen zu gewähren, können Sie die folgende Beispielschlüsselrichtlinie verwenden. In dieser Richtlinie wird dem maintenance.s3tables.amazonaws.com Service-Prinzipal die Berechtigung erteilt, einen bestimmten KMS-Schlüssel zum Verschlüsseln und Entschlüsseln von Tabellen in einem bestimmten Tabellen-Bucket zu verwenden. Wenn Sie die Richtlinien verwenden möchten, ersetzen Sie die Platzhalter für Benutzereingaben durch Ihre Informationen.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EnableKeyUsage", "Effect": "Allow", "Principal": { "Service": "maintenance.s3tables.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id", "Condition": { "StringLike": { "kms:EncryptionContext:aws:s3:arn":"<table-or-table-bucket-arn>/*" } } } ] }

Gewähren von Berechtigungen für IAM-Prinzipale zur Arbeit mit verschlüsselten Tabellen in integrierten AWS-Analytikservices

Um mit S3-Tabellen in AWS-Analytikservices zu arbeiten, integrieren Sie Ihre Tabelle-Bucket in Amazon SageMaker Lakehouse. Diese Integration ermöglicht es AWS-Analytikservices, Tabellendaten automatisch zu erkennen und darauf zuzugreifen. Weitere Informationen zur Integration finden Sie unter Integrieren von Amazon S3 Tables mit AWS-Analytikservices.

Wenn Sie in diesen Diensten mit SSE-KMS-verschlüsselten Tabellen arbeiten, muss die von Ihnen verwendete Rolle über die Berechtigung verfügen, Ihren AWS KMS-Schlüssel für Verschlüsselungsvorgänge zu verwenden. Sie können diese Berechtigungen auf die S3TablesRoleForLakeFormation Rolle anwenden, die während der Integration erstellt wurde, oder auf Ihre eigene IAM-Rolle.

Das folgende Beispiel für eine Inline-IAM-Richtlinie kann verwendet werden, um der S3TablesRoleForLakeFormation Servicerolle die Berechtigung zu erteilen, einen bestimmten KMS-Schlüssel in Ihrem Konto für Verschlüsselungsvorgänge zu verwenden. Um die Richtlinie zu verwenden, ersetzen Sie bitte die Platzhalterwerte in den Eingaben durch Ihre eigenen Werte.

{ "Sid": "AllowTableRoleAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/service-role/S3TablesRoleForLakeFormation" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "<kms-key-arn>" }

Gewähren von Berechtigungen für IAM-Prinzipalen, direkt mit verschlüsselten Tabellen zu arbeiten

Wenn Sie mit verschlüsselten Tabellen arbeiten, die Methoden von Drittanbietern oder Direktzugriff verwenden, müssen Sie der Rolle, die Sie verwenden, Zugriff auf Ihren KMS-Schlüssel gewähren. Die folgenden Beispiele zeigen, wie Sie Zugriff über eine IAM-Richtlinie oder eine KMS-Schlüsselrichtlinie gewähren.

IAM policy

Fügen Sie diese Inline-Richtlinie Ihrer IAM-Rolle hinzu, um den KMS-Schlüsselzugriff zu ermöglichen. Um diese Richtlinie zu verwenden, ersetzen Sie bitte die Platzhalterwerte für die Eingabe durch Ihren eigenen KMS-Schlüssel-ARN.

JSON
JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowKMSKeyUsage", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }
KMS key policy

Hängen Sie diese Inline-Richtlinie an einen KMS-Schlüssel an, damit die angegebene AWS KMS Rolle den Schlüssel verwenden kann. Um diese Richtlinie anzuwenden, ersetzen Sie bitte die Platzhalterwerte für die Eingabe durch Ihre IAM-Rolle.

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::<catalog-account-id>:role/<role-name>" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey", ], "Resource": "*" }

Gewähren von Berechtigungen für IAM-Prinzipale zur Arbeit mit verschlüsselten Tabellen in integrierten AWS-Analytik-Services

Damit Amazon S3 mit SSE-KMS verschlüsselte Metadatentabellen aktualisieren und Wartungsarbeiten an diesen Metadatentabellen durchführen kann, können Sie die folgende Beispielschlüsselrichtlinie verwenden. In dieser Richtlinie gestatten Sie den Service-Prinzipalen metadata.s3.amazonaws.com und den maintenance.s3tables.amazonaws.com, Tabellen in einem bestimmten Tabellen-Bucket mithilfe eines bestimmten Schlüssels zu verschlüsseln und zu entschlüsseln. Wenn Sie die Richtlinien verwenden möchten, ersetzen Sie die Platzhalter für Benutzereingaben durch Ihre Informationen.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EnableKeyUsage", "Effect": "Allow", "Principal": { "Service": [ "maintenance.s3tables.amazonaws.com", "metadata.s3.amazonaws.com" ] }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "Condition": { "StringLike": { "kms:EncryptionContext:aws:s3:arn":"<table-or-table-bucket-arn>/*" } } } ] }