Blog

Reduzieren Sie AWS-Kosten mit S3 Bucket Keys

Vikas Bange

Vikas Bange

Aktualisiert Oktober 21, 2025
5 Minuten

Die Verschlüsselung von Objekten in S3-Buckets ist eine der besten Sicherheitspraktiken, die es gibt. Die Verschlüsselung kann jedoch zu zusätzlichen Kosten führen, wenn der AWS Key Management Service (KMS) mit S3-Objekten verwendet wird. Und es kann sich auch auf die Leistung von S3 auswirken, wenn Ihre Anwendung zu oft mit KMS kommuniziert. Wie wäre es, wenn Sie den Datenverkehr zwischen S3 und KMS reduzieren und trotzdem die Vorteile von KMS für die Einhaltung Ihrer Sicherheitsvorschriften nutzen könnten?

Am 1. Dezember 2020 kündigte AWS eine neue S3 Bucket Key-Funktion für die Bucket-Verschlüsselung an. Durch die Aktivierung dieser Funktion können wir die Anfragekosten für die serverseitige Verschlüsselung (SSE) von Amazon S3 mit AWS Key Management Service (KMS) um bis zu 99 % senken, indem wir den Anfrageverkehr von S3 zu KMS verringern, ohne Änderungen an den Client-Anwendungen vorzunehmen.

Quelle: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html

Quelle: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html

Verschiedene Anwendungen, Websites und mobile Apps greifen auf Millionen von mit SSE-KMS verschlüsselten Objekten zu, was verständlicherweise große Mengen an Anfragen von S3 an AWS KMS erzeugt. Wenn wir SSE-KMS zum Schutz von Daten ohne einen S3 Bucket Key verwenden, verwendet Amazon S3 für jedes Objekt einen individuellen AWS KMS-Datenschlüssel. Jedes Mal, wenn eine Anfrage an ein KMS-verschlüsseltes Objekt gestellt wird, erfolgt ein Aufruf an AWS KMS.

Durch die Konfiguration eines S3 Bucket-Schlüssels für SSE-KMS für neue Objekte generiert AWS KMS einen Schlüssel auf Bucket-Ebene, der zur Erstellung eindeutiger Datenschlüssel für Objekte im Bucket verwendet wird. Dieser Schlüssel wird für einen zeitlich begrenzten Zeitraum in Amazon S3 verwendet, so dass Amazon S3 weniger Anfragen an AWS KMS stellen muss, um Verschlüsselungsvorgänge abzuschließen. Dies reduziert den Datenverkehr von S3 zu AWS KMS und ermöglicht Ihnen den Zugriff auf AWS KMS-verschlüsselte Objekte in S3 zu einem Bruchteil der bisherigen Kosten.

Wir können die Schlüssel ohne zusätzliche Kosten aktivieren und sie sind in allen Regionen verfügbar, so dass alle Kunden Kosten sparen können.

Bevor Sie einen S3 Bucket Key aktivieren

Wenn Sie einen S3-Bucket-Schlüssel aktivieren, verwendet S3 den Amazon-Ressourcennamen (ARN) des Buckets als Verschlüsselungskontext und nicht den ARN des Objekts. Wenn Sie über IAM-Richtlinien oder AWS KMS-Schlüsselrichtlinien verfügen, verwenden Sie Ihren Objekt-Amazon-Ressourcennamen (ARN) als Verschlüsselungskontext, um den Zugriff auf Ihre AWS KMS CMKs zu verfeinern oder einzuschränken, da diese Richtlinien nicht mit einem S3 Bucket Key funktionieren. Auch diese Schlüssel verwenden den Bucket ARN als Verschlüsselungskontext. Bevor Sie einen S3 Bucket Key aktivieren, aktualisieren Sie Ihre IAM-Richtlinien oder AWS KMS-Schlüsselrichtlinien, um Ihren Bucket-ARN als Verschlüsselungskontext zu verwenden.

AWS KMS CloudTrail-Ereignisse protokollieren Ihren Bucket-ARN anstelle Ihres Objekt-ARN. Außerdem werden Sie in Ihren Protokollen weniger KMS CloudTrail-Ereignisse für SSE-KMS-Objekte sehen. Da das Schlüsselmaterial in Amazon S3 zeitlich begrenzt ist, werden weniger Anfragen an AWS KMS gestellt.

Aktivieren von S3 Bucket Keys

Wir können Buckets mit fünf verschiedenen Methoden so konfigurieren, dass sie einen S3-Schlüssel für SSE-KMS auf neuen Objekten verwenden: AWS-Konsole, CloudFormation, SDK, REST-API und CLI.

1. AWS-Konsole

Wir können die AWS S3-Konsole verwenden, um einen Bucket-Schlüssel für einen neuen oder bestehenden Bucket zu aktivieren. Gehen Sie dazu zu Ihrem Bucket und wählen Sie Eigenschaften → Standardverschlüsselung.

S3-Verschlüsselung in der AWS-KonsoleS3-Verschlüsselung in der AWS-Konsole

S3-Verschlüsselung in der AWS-Konsole

2. CloudFormation

Mit CloudFormation können wir die Eigenschaft BucketKeyEnabled verwenden, wenn wir die Verschlüsselung für die Ressource AWS::S3::Bucket verwenden .

AWSTemplateFormatVersion: '2010-09-09'
Beschreibung: S3 Bucket mit Standardverschlüsselung
Ressourcen:
  EncryptedS3Bucket:
  Typ: 'AWS::S3::Bucket'
  Eigenschaften:
  BucketName:
  Fn::Sub': 'testaccount-${AWS::Region}-${AWS::AccountId}'
  BucketEncryption:
  ServerSideEncryptionConfiguration:
  - ServerSideEncryptionByDefault:
  SSEAlgorithmus: 'aws:kms'
  KMSMasterKeyID: <KMS-KEY-ARN>
             BucketKeyEnabled: true
  DeletionPolicy: Löschen

3. REST-API

Für PutBucketEncryption und GetBucketEncryption: ServerSideEncryptionRule akzeptiert den Parameter BucketKeyEnabled zum Aktivieren und Deaktivieren eines S3 Bucket-Schlüssels und gibt außerdem eine Einstellung für die Verschlüsselung zurück.

PutObject, CopyObject, CreateMutlipartUpload, und PostObject:

Verwenden Sie den Anfrage-Header x-amz-server-side-encryption-bucket-key-enabled, um einen S3 Bucket Key auf Objektebene zu aktivieren oder zu deaktivieren.

HeadObject, GetObject, UploadPartCopy, UploadPart und CompleteMultipartUpload:

x-amz-server-side-encryption-bucket-key-enabled Antwort-Header zeigt an, ob ein S3 Bucket Key für ein Objekt aktiviert oder deaktiviert ist.

4. CLI

Das folgende Beispiel aktiviert eine Standard-Bucket-Verschlüsselung mit SSE-KMS und einem S3 Bucket Key über die CLI.

aws s3api put-bucket-encryption --bucket <bucket-name> --server-side-encryption-configuration  '{
  "Regeln": [
  {
  "ApplyServerSideEncryptionByDefault": {
  "SSEAlgorithmus": "aws:kms",
  "KMSMasterKeyID": ""
  },
  "BucketKeyEnabled": true
  }
  ]
  }'

S3-Verschlüsselung mit CLI

5. SDK

Wir können diesen Parameter auch auf Objektebene aktivieren, z.B. mit dem folgenden Python-Beispiel:

importieren boto3

s3 = boto3.resource('s3')

Daten = open('test.jpg', 'rb')

s3.Bucket('mein-bucket').put_object(Key='test.jpg', Body=data).bucket_key_enabled(True)

S3-Verschlüsselung im SDK

Letzte Überlegungen

Insgesamt ist diese Funktion ohne zusätzliche Kosten, ohne Änderungen an der clientseitigen Anwendung und mit einer einfachen Konfigurationsänderung ein schneller Gewinn, um die Anfragekosten der serverseitigen Verschlüsselung (SSE) von Amazon S3 mit KMS zu reduzieren.

Für Referenzen und weitere Lektüre:

Amazon S3 Bucket Keys reduzieren die Kosten der serverseitigen Verschlüsselung mit AWS Key Management Service (SSE-KMS)

Senkung der Kosten für SSE-KMS mit Amazon S3 Bucket Keys - Amazon Simple Storage Service


Über Xebia

Xebia konzentriert sich auf Amazon Web Services (AWS) Beratung, Managed Services und Schulungen. Unser Ziel ist es, unsere Kunden dabei zu unterstützen, unabhängig und innovativ zu werden und eine erfolgreiche und effektive Cloud-Reise zu unternehmen. Dies geschieht durch Architektur, Planung, Migration und Implementierung von Cloud Computing-Lösungen in großem Umfang und durch die Unterstützung von Unternehmen beim Einstieg in die Cloud sowie durch die Schulung ihrer Mitarbeiter. Wir sind ein AWS Premier Consultancy und Channel Partner.

Verfasst von

Vikas Bange

Passionate about cloud technology, security and an enthusiastic learner. I believe in learning by sharing. Music fuels my journey, adding rhythm to my growth.

Contact

Let’s discuss how we can support your journey.