

Der AWS SDK für .NET V3 ist in den Wartungsmodus übergegangen.

Wir empfehlen Ihnen, auf [AWS SDK für .NET V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html) zu migrieren. Weitere Einzelheiten und Informationen zur Migration finden Sie in unserer [Ankündigung zum Wartungsmodus](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/).

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Sicherheit für dieses AWS Produkt oder diese Dienstleistung
<a name="security"></a>

Cloud-Sicherheit genießt bei Amazon Web Services (AWS) höchste Priorität. Als AWS -Kunde profitieren Sie von einer Rechenzentrums- und Netzwerkarchitektur, die zur Erfüllung der Anforderungen von Organisationen entwickelt wurden, für die Sicherheit eine kritische Bedeutung hat. Sicherheit ist eine gemeinsame Verantwortung zwischen Ihnen AWS und Ihnen. Im [Modell der übergreifenden Verantwortlichkeit](https://aws.amazon.com/compliance/shared-responsibility-model/) wird Folgendes mit „Sicherheit der Cloud“ bzw. „Sicherheit in der Cloud“ umschrieben:

**Sicherheit der Cloud** — AWS ist verantwortlich für den Schutz der Infrastruktur, auf der alle in der AWS Cloud angebotenen Dienste ausgeführt werden, und für die Bereitstellung von Diensten, die Sie sicher nutzen können. Unsere Sicherheitsverantwortung hat bei uns höchste Priorität AWS, und die Wirksamkeit unserer Sicherheit wird im Rahmen der [AWS Compliance-Programme](https://aws.amazon.com/compliance/programs/) regelmäßig von externen Prüfern getestet und verifiziert.

**Sicherheit in der Cloud** — Ihre Verantwortung richtet sich nach dem von Ihnen genutzten AWS Dienst und anderen Faktoren, wie der Sensibilität Ihrer Daten, den Anforderungen Ihres Unternehmens und den geltenden Gesetzen und Vorschriften.

Dieses AWS Produkt oder dieser Service folgt dem [Modell der gemeinsamen Verantwortung](https://aws.amazon.com/compliance/shared-responsibility-model/) in Bezug auf die spezifischen Amazon Web Services (AWS) -Services, die es unterstützt. Informationen zur AWS Servicesicherheit finden Sie auf der [Seite mit der Dokumentation zur AWS Servicesicherheit](https://docs.aws.amazon.com/security/?id=docs_gateway#aws-security) und den [AWS Services, für die das AWS Compliance-Programm zur Einhaltung der](https://aws.amazon.com/compliance/services-in-scope/) Vorschriften zuständig ist.

**Topics**
+ [Datenschutz](data-protection.md)
+ [Identitäts- und Zugriffsverwaltung](security-iam.md)
+ [Compliance-Validierung](compliance-validation.md)
+ [Ausfallsicherheit](disaster-recovery-resiliency.md)
+ [Infrastruktursicherheit](infrastructure-security.md)
+ [Erzwingen einer Mindest-TLS-Version](enforcing-tls.md)
+ [Migration des S3-Verschlüsselungsclients (V1 auf V2)](s3-encryption-migration-v1-v2.md)
+ [Migration des S3-Verschlüsselungsclients (V2 auf V4)](s3-encryption-migration-v2-v4.md)

# Datenschutz in diesem AWS Produkt oder dieser Dienstleistung
<a name="data-protection"></a>

Das AWS [Modell](https://aws.amazon.com/compliance/shared-responsibility-model/) der gilt für den Datenschutz in diesem AWS Produkt oder dieser Dienstleistung. Wie in diesem Modell beschrieben, AWS ist verantwortlich für den Schutz der globalen Infrastruktur, auf der alle Systeme laufen AWS Cloud. Sie sind dafür verantwortlich, die Kontrolle über Ihre in dieser Infrastruktur gehosteten Inhalte zu behalten. Sie sind auch für die Sicherheitskonfiguration und die Verwaltungsaufgaben für die von Ihnen verwendeten AWS-Services verantwortlich. Weitere Informationen zum Datenschutz finden Sie unter [Häufig gestellte Fragen zum Datenschutz](https://aws.amazon.com/compliance/data-privacy-faq/). Informationen zum Datenschutz in Europa finden Sie im Blog-Beitrag [AWS -Modell der geteilten Verantwortung und in der DSGVO](https://aws.amazon.com/blogs/security/the-aws-shared-responsibility-model-and-gdpr/) im *AWS -Sicherheitsblog*.

Aus Datenschutzgründen empfehlen wir, dass Sie AWS-Konto Anmeldeinformationen schützen und einzelne Benutzer mit AWS IAM Identity Center oder AWS Identity and Access Management (IAM) einrichten. So erhält jeder Benutzer nur die Berechtigungen, die zum Durchführen seiner Aufgaben erforderlich sind. Außerdem empfehlen wir, die Daten mit folgenden Methoden schützen:
+ Verwenden Sie für jedes Konto die Multi-Faktor-Authentifizierung (MFA).
+ Wird verwendet SSL/TLS , um mit AWS Ressourcen zu kommunizieren. Wir benötigen TLS 1.2 und empfehlen TLS 1.3.
+ Richten Sie die API und die Protokollierung von Benutzeraktivitäten mit ein AWS CloudTrail. Informationen zur Verwendung von CloudTrail Pfaden zur Erfassung von AWS Aktivitäten finden Sie unter [Arbeiten mit CloudTrail Pfaden](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-trails.html) im *AWS CloudTrail Benutzerhandbuch*.
+ Verwenden Sie AWS Verschlüsselungslösungen zusammen mit allen darin enthaltenen Standardsicherheitskontrollen AWS-Services.
+ Verwenden Sie erweiterte verwaltete Sicherheitsservices wie Amazon Macie, die dabei helfen, in Amazon S3 gespeicherte persönliche Daten zu erkennen und zu schützen.
+ Wenn Sie für den Zugriff AWS über eine Befehlszeilenschnittstelle oder eine API FIPS 140-3-validierte kryptografische Module benötigen, verwenden Sie einen FIPS-Endpunkt. Weitere Informationen über verfügbare FIPS-Endpunkte finden Sie unter [Federal Information Processing Standard (FIPS) 140-3](https://aws.amazon.com/compliance/fips/).

Wir empfehlen dringend, in Freitextfeldern, z. B. im Feld **Name**, keine vertraulichen oder sensiblen Informationen wie die E-Mail-Adressen Ihrer Kunden einzugeben. Dazu gehört auch, wenn Sie mit diesem AWS Produkt oder Service oder einem anderen AWS-Services über die Konsole, API oder arbeiten. AWS CLI AWS SDKs Alle Daten, die Sie in Tags oder Freitextfelder eingeben, die für Namen verwendet werden, können für Abrechnungs- oder Diagnoseprotokolle verwendet werden. Wenn Sie eine URL für einen externen Server bereitstellen, empfehlen wir dringend, keine Anmeldeinformationen zur Validierung Ihrer Anforderung an den betreffenden Server in die URL einzuschließen.

# Identitäts- und Zugriffsverwaltung
<a name="security-iam"></a>

AWS Identity and Access Management (IAM) hilft einem Administrator AWS-Service , den Zugriff auf Ressourcen sicher zu AWS kontrollieren. IAM-Administratoren kontrollieren, wer *authentifiziert* (angemeldet) und *autorisiert* werden kann (über Berechtigungen verfügt), um Ressourcen zu verwenden. AWS IAM ist ein Programm AWS-Service , das Sie ohne zusätzliche Kosten nutzen können.

**Topics**
+ [Zielgruppe](#security_iam_audience)
+ [Authentifizierung mit Identitäten](#security_iam_authentication)
+ [Verwalten des Zugriffs mit Richtlinien](#security_iam_access-manage)
+ [Wie AWS-Services arbeiten Sie mit IAM](#security_iam_service-with-iam)
+ [Fehlerbehebung bei AWS Identität und Zugriff](#security_iam_troubleshoot)

## Zielgruppe
<a name="security_iam_audience"></a>

Die Art und Weise, wie Sie AWS Identity and Access Management (IAM) verwenden, hängt von der Arbeit ab, in der Sie tätig sind. AWS

**Dienstbenutzer** — Wenn Sie dies AWS-Services für Ihre Arbeit verwenden, stellt Ihnen Ihr Administrator die erforderlichen Anmeldeinformationen und Berechtigungen zur Verfügung. Wenn Sie für Ihre Arbeit mehr AWS Funktionen verwenden, benötigen Sie möglicherweise zusätzliche Berechtigungen. Wenn Sie die Funktionsweise der Zugriffskontrolle nachvollziehen, wissen Sie bereits, welche Berechtigungen Sie von Ihrem Administrator anfordern müssen. Falls Sie auf eine Funktion nicht zugreifen können AWS, finden [Fehlerbehebung bei AWS Identität und Zugriff](#security_iam_troubleshoot) Sie weitere Informationen in der Bedienungsanleitung der von AWS-Service Ihnen verwendeten.

**Serviceadministrator** — Wenn Sie in Ihrem Unternehmen für die AWS Ressourcen verantwortlich sind, haben Sie wahrscheinlich vollen Zugriff auf AWS. Es ist Ihre Aufgabe, zu bestimmen, auf welche AWS Funktionen und Ressourcen Ihre Servicebenutzer zugreifen sollen. Anschließend müssen Sie Anforderungen an Ihren IAM-Administrator senden, um die Berechtigungen der Servicebenutzer zu ändern. Lesen Sie die Informationen auf dieser Seite, um die Grundkonzepte von IAM nachzuvollziehen. Weitere Informationen darüber, wie Ihr Unternehmen IAM verwenden kann AWS, finden Sie in der Benutzeranleitung des von AWS-Service Ihnen verwendeten.

**IAM-Administrator**: Wenn Sie als IAM-Administrator fungieren, sollten Sie Einzelheiten dazu kennen, wie Sie Richtlinien zur Verwaltung des Zugriffs auf AWS verfassen können. Beispiele für AWS identitätsbasierte Richtlinien, die Sie in IAM verwenden können, finden Sie im Benutzerhandbuch der AWS-Service von Ihnen verwendeten.

## Authentifizierung mit Identitäten
<a name="security_iam_authentication"></a>

Authentifizierung ist die Art und Weise, wie Sie sich AWS mit Ihren Identitätsdaten anmelden. Sie müssen sich als IAM-Benutzer authentifizieren oder eine IAM-Rolle annehmen. Root-Benutzer des AWS-Kontos

Sie können sich als föderierte Identität anmelden, indem Sie Anmeldeinformationen aus einer Identitätsquelle wie AWS IAM Identity Center (IAM Identity Center), Single Sign-On-Authentifizierung oder Anmeldeinformationen verwenden. Google/Facebook Weitere Informationen zum Anmelden finden Sie unter [So melden Sie sich bei Ihrem AWS-Konto an](https://docs.aws.amazon.com/signin/latest/userguide/how-to-sign-in.html) im *Benutzerhandbuch für AWS-Anmeldung *.

 AWS Bietet für den programmatischen Zugriff ein SDK und eine CLI zum kryptografischen Signieren von Anfragen. Weitere Informationen finden Sie unter [AWS Signature Version 4 for API requests](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_sigv.html) im *IAM-Benutzerhandbuch*.

### AWS-Konto Root-Benutzer
<a name="security_iam_authentication-rootuser"></a>

 Wenn Sie einen erstellen AWS-Konto, beginnen Sie mit einer Anmeldeidentität, dem sogenannten AWS-Konto *Root-Benutzer*, der vollständigen Zugriff auf alle AWS-Services Ressourcen hat. Wir raten ausdrücklich davon ab, den Root-Benutzer für Alltagsaufgaben zu verwenden. Eine Liste der Aufgaben, für die Sie sich als Root-Benutzer anmelden müssen, finden Sie unter [Tasks that require root user credentials](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks) im *IAM-Benutzerhandbuch*. 

### Verbundidentität
<a name="security_iam_authentication-federated"></a>

Als bewährte Methode sollten menschliche Benutzer für den Zugriff AWS-Services mithilfe temporärer Anmeldeinformationen einen Verbund mit einem Identitätsanbieter verwenden.

Eine *föderierte Identität* ist ein Benutzer aus Ihrem Unternehmensverzeichnis, Ihrem Directory Service Web-Identitätsanbieter oder der AWS-Services mithilfe von Anmeldeinformationen aus einer Identitätsquelle zugreift. Verbundene Identitäten übernehmen Rollen, die temporäre Anmeldeinformationen bereitstellen.

Für die zentrale Zugriffsverwaltung empfehlen wir AWS IAM Identity Center. Weitere Informationen finden Sie unter [Was ist IAM Identity Center?](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) im *AWS IAM Identity Center -Benutzerhandbuch*.

### IAM-Benutzer und -Gruppen
<a name="security_iam_authentication-iamuser"></a>

Ein *[IAM-Benutzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html)* ist eine Identität mit bestimmten Berechtigungen für eine einzelne Person oder Anwendung. Wir empfehlen die Verwendung temporärer Anmeldeinformationen anstelle von IAM-Benutzern mit langfristigen Anmeldeinformationen. Weitere Informationen finden Sie im *IAM-Benutzerhandbuch* unter [Erfordern, dass menschliche Benutzer den Verbund mit einem Identitätsanbieter verwenden müssen, um AWS mithilfe temporärer Anmeldeinformationen darauf zugreifen zu](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#bp-users-federation-idp) können.

Eine [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) spezifiziert eine Sammlung von IAM-Benutzern und erleichtert die Verwaltung von Berechtigungen für große Gruppen von Benutzern. Weitere Informationen finden Sie unter [Anwendungsfälle für IAM-Benutzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/gs-identities-iam-users.html) im *IAM-Benutzerhandbuch*.

### IAM-Rollen
<a name="security_iam_authentication-iamrole"></a>

Eine *[IAM-Rolle](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)* ist eine Identität mit spezifischen Berechtigungen, die temporäre Anmeldeinformationen bereitstellt. Sie können eine Rolle übernehmen, indem Sie [von einer Benutzer- zu einer IAM-Rolle (Konsole) wechseln](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html) AWS CLI oder einen AWS API-Vorgang aufrufen. Weitere Informationen finden Sie unter [Methoden, um eine Rolle zu übernehmen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage-assume.html) im *IAM-Benutzerhandbuch*.

IAM-Rollen sind nützlich für den Verbundbenutzer-Zugriff, temporäre IAM-Benutzerberechtigungen, kontoübergreifenden Zugriff, serviceübergreifenden Zugriff und Anwendungen, die auf Amazon EC2 laufen. Weitere Informationen finden Sie unter [Kontoübergreifender Ressourcenzugriff in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) im *IAM-Benutzerhandbuch*.

## Verwalten des Zugriffs mit Richtlinien
<a name="security_iam_access-manage"></a>

Sie kontrollieren den Zugriff, AWS indem Sie Richtlinien erstellen und diese an AWS Identitäten oder Ressourcen anhängen. Eine Richtlinie definiert Berechtigungen, wenn sie mit einer Identität oder Ressource verknüpft sind. AWS bewertet diese Richtlinien, wenn ein Principal eine Anfrage stellt. Die meisten Richtlinien werden AWS als JSON-Dokumente gespeichert. Weitere Informationen zu JSON-Richtliniendokumenten finden Sie unter [Übersicht über JSON-Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json) im *IAM-Benutzerhandbuch*.

Mit Hilfe von Richtlinien legen Administratoren fest, wer Zugriff auf was hat, indem sie definieren, welches **Prinzipal** welche **Aktionen** auf welchen **Ressourcen**und unter welchen **Bedingungen**durchführen darf.

Standardmäßig haben Benutzer, Gruppen und Rollen keine Berechtigungen. Ein IAM-Administrator erstellt IAM-Richtlinien und fügt sie zu Rollen hinzu, die die Benutzer dann übernehmen können. IAM-Richtlinien definieren Berechtigungen unabhängig von der Methode, die zur Ausführung der Operation verwendet wird.

### Identitätsbasierte Richtlinien
<a name="security_iam_access-manage-id-based-policies"></a>

Identitätsbasierte Richtlinien sind JSON-Berechtigungsrichtliniendokumente, die Sie einer Identität (Benutzer, Gruppe oder Rolle) anfügen können. Diese Richtlinien steuern, welche Aktionen Identitäten für welche Ressourcen und unter welchen Bedingungen ausführen können. Informationen zum Erstellen identitätsbasierter Richtlinien finden Sie unter [Definieren benutzerdefinierter IAM-Berechtigungen mit vom Kunden verwalteten Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) im *IAM-Benutzerhandbuch*.

Identitätsbasierte Richtlinien können *Inline-Richtlinien* (direkt in eine einzelne Identität eingebettet) oder *verwaltete Richtlinien* (eigenständige Richtlinien, die mit mehreren Identitäten verbunden sind) sein. Informationen dazu, wie Sie zwischen verwalteten und Inline-Richtlinien wählen, finden Sie unter [Choose between managed policies and inline policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-choosing-managed-or-inline.html) im *IAM-Benutzerhandbuch*.

### Ressourcenbasierte Richtlinien
<a name="security_iam_access-manage-resource-based-policies"></a>

Ressourcenbasierte Richtlinien sind JSON-Richtliniendokumente, die Sie an eine Ressource anfügen. Beispiele hierfür sind *Vertrauensrichtlinien für IAM-Rollen* und Amazon S3*-Bucket-Richtlinien*. In Services, die ressourcenbasierte Richtlinien unterstützen, können Service-Administratoren sie verwenden, um den Zugriff auf eine bestimmte Ressource zu steuern. Sie müssen in einer ressourcenbasierten Richtlinie [einen Prinzipal angeben](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html).

Ressourcenbasierte Richtlinien sind Richtlinien innerhalb dieses Diensts. Sie können AWS verwaltete Richtlinien von IAM nicht in einer ressourcenbasierten Richtlinie verwenden.

### Zugriffskontrolllisten () ACLs
<a name="security_iam_access-manage-acl"></a>

Zugriffskontrolllisten (ACLs) steuern, welche Principals (Kontomitglieder, Benutzer oder Rollen) über Zugriffsberechtigungen für eine Ressource verfügen. ACLs ähneln ressourcenbasierten Richtlinien, verwenden jedoch nicht das JSON-Richtliniendokumentformat.

Amazon S3 und Amazon VPC sind Beispiele für Dienste, die Unterstützung ACLs bieten. AWS WAF Weitere Informationen finden Sie unter [Übersicht über ACLs die Zugriffskontrollliste (ACL)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html) im *Amazon Simple Storage Service Developer Guide*.

### Weitere Richtlinientypen
<a name="security_iam_access-manage-other-policies"></a>

AWS unterstützt zusätzliche Richtlinientypen, mit denen die maximalen Berechtigungen festgelegt werden können, die durch gängigere Richtlinientypen gewährt werden:
+ **Berechtigungsgrenzen** – Eine Berechtigungsgrenze legt die maximalen Berechtigungen fest, die eine identitätsbasierte Richtlinie einer IAM-Entität erteilen kann. Weitere Informationen finden Sie unter [Berechtigungsgrenzen für IAM-Entitäten](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html) im *-IAM-Benutzerhandbuch*.
+ **Richtlinien zur Dienstkontrolle (SCPs)** — Geben Sie die maximalen Berechtigungen für eine Organisation oder Organisationseinheit in an AWS Organizations. Weitere Informationen finden Sie unter [Service-Kontrollrichtlinien](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html) im *AWS Organizations -Benutzerhandbuch*.
+ **Richtlinien zur Ressourcenkontrolle (RCPs)** — Legen Sie die maximal verfügbaren Berechtigungen für Ressourcen in Ihren Konten fest. Weitere Informationen finden Sie im *AWS Organizations Benutzerhandbuch* unter [Richtlinien zur Ressourcenkontrolle (RCPs)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html).
+ **Sitzungsrichtlinien** – Sitzungsrichtlinien sind erweiterte Richtlinien, die als Parameter übergeben werden, wenn Sie eine temporäre Sitzung für eine Rolle oder einen Verbundbenutzer erstellen. Weitere Informationen finden Sie unter [Sitzungsrichtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#policies_session) im *IAM-Benutzerhandbuch*.

### Mehrere Richtlinientypen
<a name="security_iam_access-manage-multiple-policies."></a>

Wenn für eine Anfrage mehrere Arten von Richtlinien gelten, sind die daraus resultierenden Berechtigungen schwieriger zu verstehen. Informationen darüber, wie AWS bestimmt wird, ob eine Anfrage zulässig ist, wenn mehrere Richtlinientypen betroffen sind, finden Sie unter [Bewertungslogik für Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html) im *IAM-Benutzerhandbuch*.

## Wie AWS-Services arbeiten Sie mit IAM
<a name="security_iam_service-with-iam"></a>

*Einen allgemeinen Überblick darüber, wie die meisten IAM-Funktionen AWS-Services funktionieren, finden Sie im [AWS IAM-Benutzerhandbuch unter Dienste, die mit IAM funktionieren](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html).*

Informationen zur Verwendung bestimmter Dienste AWS-Service mit IAM finden Sie im Abschnitt Sicherheit im Benutzerhandbuch des jeweiligen Dienstes.

## Fehlerbehebung bei AWS Identität und Zugriff
<a name="security_iam_troubleshoot"></a>

Verwenden Sie die folgenden Informationen, um häufig auftretende Probleme zu diagnostizieren und zu beheben, die bei der Arbeit mit AWS und IAM auftreten können.

**Topics**
+ [Ich bin nicht berechtigt, eine Aktion durchzuführen in AWS](#security_iam_troubleshoot-no-permissions)
+ [Ich bin nicht berechtigt, iam auszuführen: PassRole](#security_iam_troubleshoot-passrole)
+ [Ich möchte Personen außerhalb von mir den Zugriff AWS-Konto auf meine AWS Ressourcen ermöglichen](#security_iam_troubleshoot-cross-account-access)

### Ich bin nicht berechtigt, eine Aktion durchzuführen in AWS
<a name="security_iam_troubleshoot-no-permissions"></a>

Wenn Sie eine Fehlermeldung erhalten, dass Sie nicht zur Durchführung einer Aktion berechtigt sind, müssen Ihre Richtlinien aktualisiert werden, damit Sie die Aktion durchführen können.

Der folgende Beispielfehler tritt auf, wenn der IAM-Benutzer `mateojackson` versucht, über die Konsole Details zu einer fiktiven `my-example-widget`-Ressource anzuzeigen, jedoch nicht über `awes:GetWidget`-Berechtigungen verfügt.

```
User: arn:aws:iam::123456789012:user/mateojackson is not authorized to perform: awes:GetWidget on resource: my-example-widget
```

In diesem Fall muss die Richtlinie für den Benutzer `mateojackson` aktualisiert werden, damit er mit der `awes:GetWidget`-Aktion auf die `my-example-widget`-Ressource zugreifen kann.

Wenn Sie Hilfe benötigen, wenden Sie sich an Ihren AWS Administrator. Ihr Administrator hat Ihnen Ihre Anmeldeinformationen zur Verfügung gestellt.

### Ich bin nicht berechtigt, iam auszuführen: PassRole
<a name="security_iam_troubleshoot-passrole"></a>

Wenn Sie die Fehlermeldung erhalten, dass Sie nicht zum Durchführen der `iam:PassRole`-Aktion autorisiert sind, müssen Ihre Richtlinien aktualisiert werden, um eine Rolle an AWSübergeben zu können.

Einige AWS-Services ermöglichen es Ihnen, eine bestehende Rolle an diesen Dienst zu übergeben, anstatt eine neue Servicerolle oder eine dienstverknüpfte Rolle zu erstellen. Hierzu benötigen Sie Berechtigungen für die Übergabe der Rolle an den Dienst.

Der folgende Beispielfehler tritt auf, wenn ein IAM-Benutzer mit dem Namen `marymajor` versucht, die Konsole zu verwenden, um eine Aktion in AWS auszuführen. Die Aktion erfordert jedoch, dass der Service über Berechtigungen verfügt, die durch eine Servicerolle gewährt werden. Mary besitzt keine Berechtigungen für die Übergabe der Rolle an den Dienst.

```
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform: iam:PassRole
```

In diesem Fall müssen die Richtlinien von Mary aktualisiert werden, um die Aktion `iam:PassRole` ausführen zu können.

Wenn Sie Hilfe benötigen, wenden Sie sich an Ihren AWS Administrator. Ihr Administrator hat Ihnen Ihre Anmeldeinformationen zur Verfügung gestellt.

### Ich möchte Personen außerhalb von mir den Zugriff AWS-Konto auf meine AWS Ressourcen ermöglichen
<a name="security_iam_troubleshoot-cross-account-access"></a>

Sie können eine Rolle erstellen, mit der Benutzer in anderen Konten oder Personen außerhalb Ihrer Organisation auf Ihre Ressourcen zugreifen können. Sie können festlegen, wem die Übernahme der Rolle anvertraut wird. Für Dienste, die ressourcenbasierte Richtlinien oder Zugriffskontrolllisten (ACLs) unterstützen, können Sie diese Richtlinien verwenden, um Personen Zugriff auf Ihre Ressourcen zu gewähren.

Weitere Informationen dazu finden Sie hier:
+ Informationen darüber, ob diese Funktionen AWS unterstützt werden, finden Sie unter. [Wie AWS-Services arbeiten Sie mit IAM](#security_iam_service-with-iam)
+ *Informationen dazu, wie Sie Zugriff auf Ihre Ressourcen gewähren können, AWS-Konten die Ihnen gehören, finden Sie im IAM-Benutzerhandbuch unter [Gewähren des Zugriffs auf einen IAM-Benutzer in einem anderen AWS-Konto , den Sie besitzen](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html).*
+ Informationen dazu, wie Sie Dritten Zugriff auf Ihre Ressourcen gewähren können AWS-Konten, finden Sie [AWS-Konten im *IAM-Benutzerhandbuch* unter Gewähren des Zugriffs für Dritte](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html).
+ Informationen dazu, wie Sie über einen Identitätsverbund Zugriff gewähren, finden Sie unter [Gewähren von Zugriff für extern authentifizierte Benutzer (Identitätsverbund)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_federated-users.html) im *IAM-Benutzerhandbuch*.
+ Informationen zum Unterschied zwischen der Verwendung von Rollen und ressourcenbasierten Richtlinien für den kontoübergreifenden Zugriff finden Sie unter [Kontoübergreifender Ressourcenzugriff in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html) im *IAM-Benutzerhandbuch*.

# Überprüfung der Einhaltung der Vorschriften für dieses AWS Produkt oder diese Dienstleistung
<a name="compliance-validation"></a>

Informationen darüber, ob AWS-Service ein [AWS-Services in den Geltungsbereich bestimmter Compliance-Programme fällt, finden Sie unter Umfang nach Compliance-Programm AWS-Services unter](https://aws.amazon.com/compliance/services-in-scope/) . Wählen Sie dort das Compliance-Programm aus, an dem Sie interessiert sind. Allgemeine Informationen finden Sie unter [AWS Compliance-Programme AWS](https://aws.amazon.com/compliance/programs/) .

Sie können Prüfberichte von Drittanbietern unter herunterladen AWS Artifact. Weitere Informationen finden Sie unter [Berichte herunterladen unter ](https://docs.aws.amazon.com/artifact/latest/ug/downloading-documents.html).

Ihre Verantwortung für die Einhaltung der Vorschriften bei der Nutzung AWS-Services hängt von der Vertraulichkeit Ihrer Daten, den Compliance-Zielen Ihres Unternehmens und den geltenden Gesetzen und Vorschriften ab. Weitere Informationen zu Ihrer Verantwortung für die Einhaltung der Vorschriften bei der Nutzung AWS-Services finden Sie in der [AWS Sicherheitsdokumentation](https://docs.aws.amazon.com/security/).

Dieses AWS Produkt oder dieser Service folgt dem [Modell der gemeinsamen Verantwortung](https://aws.amazon.com/compliance/shared-responsibility-model/) in Bezug auf die spezifischen Amazon Web Services (AWS) -Services, die es unterstützt. Informationen zur AWS Servicesicherheit finden Sie auf der [Seite mit der Dokumentation zur AWS Servicesicherheit](https://docs.aws.amazon.com/security/?id=docs_gateway#aws-security) und den [AWS Services, für die das AWS Compliance-Programm zur Einhaltung der](https://aws.amazon.com/compliance/services-in-scope/) Vorschriften zuständig ist.

# Ausfallsicherheit für dieses AWS Produkt oder diese Dienstleistung
<a name="disaster-recovery-resiliency"></a>

Die AWS globale Infrastruktur basiert auf AWS-Regionen Availability Zones. 

AWS-Regionen bieten mehrere physisch getrennte und isolierte Availability Zones, die über Netzwerke mit niedriger Latenz, hohem Durchsatz und hoher Redundanz miteinander verbunden sind. 

Mithilfe von Availability Zones können Sie Anwendungen und Datenbanken erstellen und ausführen, die automatisch Failover zwischen Zonen ausführen, ohne dass es zu Unterbrechungen kommt. Availability Zones sind besser verfügbar, fehlertoleranter und skalierbarer als herkömmliche Infrastrukturen mit einem oder mehreren Rechenzentren. 

Weitere Informationen zu AWS Regionen und Availability Zones finden Sie unter [AWS Globale](https://aws.amazon.com/about-aws/global-infrastructure/) Infrastruktur.

Dieses AWS Produkt oder dieser Service folgt dem [Modell der gemeinsamen Verantwortung](https://aws.amazon.com/compliance/shared-responsibility-model/) in Bezug auf die spezifischen Amazon Web Services (AWS) -Services, die es unterstützt. Informationen zur AWS Servicesicherheit finden Sie auf der [Seite mit der Dokumentation zur AWS Servicesicherheit](https://docs.aws.amazon.com/security/?id=docs_gateway#aws-security) und den [AWS Services, für die das AWS Compliance-Programm zur Einhaltung der](https://aws.amazon.com/compliance/services-in-scope/) Vorschriften zuständig ist.

# Sicherheit der Infrastruktur für dieses AWS Produkt oder diesen Service
<a name="infrastructure-security"></a>

Dieses AWS Produkt oder dieser Dienst verwendet Managed Services und ist daher durch die AWS globale Netzwerksicherheit geschützt. Informationen zu AWS Sicherheitsdiensten und zum AWS Schutz der Infrastruktur finden Sie unter [AWS Cloud-Sicherheit](https://aws.amazon.com/security/). Informationen zum Entwerfen Ihrer AWS Umgebung unter Verwendung der bewährten Methoden für die Infrastruktursicherheit finden Sie unter [Infrastructure Protection](https://docs.aws.amazon.com/wellarchitected/latest/security-pillar/infrastructure-protection.html) in *Security Pillar AWS Well‐Architected Framework*.

Sie verwenden AWS veröffentlichte API-Aufrufe, um über das Netzwerk auf dieses AWS Produkt oder diesen Service zuzugreifen. Kunden müssen Folgendes unterstützen:
+ Transport Layer Security (TLS). Wir benötigen TLS 1.2 und empfehlen TLS 1.3.
+ Verschlüsselungs-Suiten mit Perfect Forward Secrecy (PFS) wie DHE (Ephemeral Diffie-Hellman) oder ECDHE (Elliptic Curve Ephemeral Diffie-Hellman). Die meisten modernen Systeme wie Java 7 und höher unterstützen diese Modi.

Außerdem müssen Anforderungen mit einer Zugriffsschlüssel-ID und einem geheimen Zugriffsschlüssel signiert sein, der einem IAM-Prinzipal zugeordnet ist. Alternativ können Sie mit [AWS -Security-Token-Service](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html) (AWS STS) temporäre Sicherheitsanmeldeinformationen erstellen, um die Anforderungen zu signieren.

Dieses AWS Produkt oder dieser Service folgt dem [Modell der gemeinsamen Verantwortung](https://aws.amazon.com/compliance/shared-responsibility-model/) in Bezug auf die spezifischen Amazon Web Services (AWS) -Services, die es unterstützt. Informationen zur AWS Servicesicherheit finden Sie auf der [Seite mit der Dokumentation zur AWS Servicesicherheit](https://docs.aws.amazon.com/security/?id=docs_gateway#aws-security) und den [AWS Services, für die das AWS Compliance-Programm zur Einhaltung der](https://aws.amazon.com/compliance/services-in-scope/) Vorschriften zuständig ist.

# Erzwingen einer TLS-Mindestversion in der AWS SDK für .NET
<a name="enforcing-tls"></a>

Um die Sicherheit bei der Kommunikation mit AWS Diensten zu erhöhen, sollten Sie den so konfigurieren, AWS SDK für .NET dass er TLS 1.2 oder höher verwendet.

Die bestimmt AWS SDK für .NET anhand der zugrundeliegenden.NET-Laufzeit, welches Sicherheitsprotokoll verwendet werden soll. Standardmäßig verwenden aktuelle Versionen von .NET das zuletzt konfigurierte Protokoll, das vom Betriebssystem unterstützt wird. Ihre Anwendung kann dieses SDK-Verhalten überschreiben, dies wird jedoch *nicht empfohlen*.

## .NET Core
<a name="enforcing-tls-dotnet-core"></a>

Standardmäßig verwendet .NET Core das zuletzt konfigurierte Protokoll, das vom Betriebssystem unterstützt wird. AWS SDK für .NET bietet keinen Mechanismus, um dies außer Kraft zu setzen.

Wenn Sie eine .NET Core-Version vor 2.1 verwenden, empfehlen wir *dringend*, dass Sie Ihre .NET Core-Version aktualisieren.

Weitere Informationen zu den einzelnen Betriebssystemen finden Sie im Folgenden.

**Windows**

Bei modernen Windows-Verteilungen ist die TLS 1.2-Unterstützung [standardmäßig aktiviert](https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-). Wenn Sie Windows 7 SP1 oder Windows Server 2008 R2 verwenden, müssen Sie sicherstellen SP1, dass die TLS 1.2-Unterstützung in der Registrierung aktiviert ist, wie unter [https://learn.microsoft.com/en-us/windows- server/security/tls/tls -registry-settings \$1tls -12](https://learn.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings#tls-12) beschrieben. Wenn Sie eine frühere Verteilung ausführen, müssen Sie Ihr Betriebssystem aktualisieren. Informationen zur Unterstützung von TLS 1.3 in Windows finden Sie in der neuesten Microsoft-Dokumentation für die mindestens erforderlichen Client- oder Serverversionen.

**macOS**

Wenn Sie .NET Core 2.1 oder höher ausführen, ist TLS 1.2 standardmäßig aktiviert. TLS 1.2 wird von [OS X Mavericks 10.9](https://support.apple.com/en-us/103373) oder höher unterstützt. .NET Core Version 2.1 und höher erfordern neuere Versionen von macOS, wie unter beschrieben [https://learn.microsoft.com/en-us/dotnet/core/install/windows? tabs=net80&pivots=os-macos](https://learn.microsoft.com/en-us/dotnet/core/install/windows?tabs=net80&pivots=os-macos).

Bei Verwendung von .NET Core 1.0 nutzt .NET Core [OpenSSL unter macOS](https://github.com/dotnet/announcements/issues/21) eine Abhängigkeit, die separat installiert werden muss. OpenSSL fügte Unterstützung für TLS 1.2 in Version 1.0.1 und Unterstützung für TLS 1.3 in Version 1.1.1 hinzu.

**Linux**

.NET Core ist unter Linux OpenSSL erforderlich, das mit vielen Linux-Verteilungen geliefert wird. Aber es kann auch separat installiert werden. OpenSSL fügte Unterstützung für TLS 1.2 in Version 1.0.1 und Unterstützung für TLS 1.3 in Version 1.1.1 hinzu. Wenn Sie eine moderne Version von .NET Core (2.1 oder höher) verwenden und einen Paketmanager installiert haben, wurde wahrscheinlich eine modernere Version von OpenSSL für Sie installiert.

Zur Sicherheit können Sie **`openssl version`** in einem Terminal ausführen und überprüfen, ob die Version höher als 1.0.1 ist.

## .NET Framework.
<a name="enforcing-tls-dotnet-framework"></a>

Wenn Sie eine moderne Version von .NET Framework (4.7 oder höher) und eine moderne Version von Windows (mindestens Windows 8 für Clients, Windows Server 2012 oder höher für Server) ausführen, ist TLS 1.2 standardmäßig aktiviert und wird verwendet.

Wenn Sie eine.NET-Framework-Runtime verwenden, die nicht die Betriebssystemeinstellungen (.NET Framework 3.5 bis 4.5.2) verwendet, versucht sie, AWS SDK für .NET die unterstützten Protokolle um [Unterstützung für TLS 1.1 und TLS 1.2 zu erweitern](https://github.com/aws/aws-sdk-net/blob/aws-sdk-net-v3.7/sdk/src/Core/Amazon.Runtime/Pipeline/HttpHandler/AmazonSecurityProtocolManager.cs). Bei Verwendung von .NET Framework 3.5 ist dies nur erfolgreich, wenn der entsprechende Hotpatch wie folgt installiert wird:
+ Windows 10 Version 1511 und Windows Server 2016 — [KB3156421](https://support.microsoft.com/kb/3156421)
+ Windows 8.1 und Windows Server 2012 R2 — [KB3154520](https://support.microsoft.com/kb/3154520)
+ Windows Server 2012 — [KB3154519](https://support.microsoft.com/kb/3154519)
+ Windows 7 SP1 und Server 2008 R2 SP1 — [KB3154518](https://support.microsoft.com/kb/3154518)

**Warnung**  
Ab dem 15. August 2024 AWS SDK für .NET wird der Support für.NET Framework 3.5 eingestellt und die Mindestversion von .NET Framework auf 4.7.2 geändert. Weitere Informationen finden Sie im Blogbeitrag [Wichtige Änderungen für die Ziele .NET Framework 3.5 und 4.5 von](https://aws.amazon.com/blogs/developer/important-changes-coming-for-net-framework-3-5-and-4-5-targets-of-the-aws-sdk-for-net/). AWS SDK für .NET

Wenn Ihre Anwendung auf einem neueren.NET Framework unter Windows 7 SP1 oder Windows Server 2008 R2 ausgeführt wird, müssen Sie sicherstellen SP1, dass die TLS 1.2-Unterstützung in der Registrierung aktiviert ist, wie unter [https://learn.microsoft.com/en-us/windows- server/security/tls/tls -registry-settings \$1tls -12](https://learn.microsoft.com/en-us/windows-server/security/tls/tls-registry-settings#tls-12) beschrieben. Bei neueren Versionen von Windows ist es [standardmäßig aktiviert](https://learn.microsoft.com/en-us/windows/win32/secauthn/protocols-in-tls-ssl--schannel-ssp-).

Detaillierte bewährte Methoden für die Verwendung von TLS mit.NET Framework finden Sie im Microsoft-Artikel unter [https://learn.microsoft.com/en-us/dotnet/framework/network-programming/tls](https://learn.microsoft.com/en-us/dotnet/framework/network-programming/tls).

## AWS -Tools für PowerShell
<a name="enforcing-tls-ps"></a>

[AWS -Tools für PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/)Verwenden Sie die AWS SDK für .NET für alle Aufrufe von AWS Diensten. Das Verhalten Ihrer Umgebung hängt wie folgt von der Version von Windows ab, die PowerShell Sie verwenden.

**Windows PowerShell 2.0 bis 5.x**

Windows PowerShell 2.0 bis 5.x laufen auf.NET Framework. Mit dem folgenden Befehl können Sie überprüfen, PowerShell von welcher .NET-Laufzeit (2.0 oder 4.0) verwendet wird.

```
$PSVersionTable.CLRVersion
```
+ Wenn Sie .NET Runtime 2.0 verwenden, befolgen Sie die obigen Anweisungen in Bezug auf AWS SDK für .NET und .NET Framework 3.5.
**Warnung**  
Ab dem 15. August 2024 AWS SDK für .NET wird der Support für.NET Framework 3.5 eingestellt und die Mindestversion von .NET Framework auf 4.7.2 geändert. Weitere Informationen finden Sie im Blogbeitrag [Wichtige Änderungen für die Ziele .NET Framework 3.5 und 4.5 von](https://aws.amazon.com/blogs/developer/important-changes-coming-for-net-framework-3-5-and-4-5-targets-of-the-aws-sdk-for-net/). AWS SDK für .NET
+ Wenn Sie .NET Runtime 4.0 verwenden, befolgen Sie die obigen Anweisungen in Bezug auf AWS SDK für .NET und .NET Framework 4\$1.

**Windows PowerShell 6.0**

Windows PowerShell 6.0 und neuer laufen auf.NET Core. Mit dem folgenden Befehl können Sie überprüfen, welche Version von .NET Core verwendet wird.

```
[System.Reflection.Assembly]::GetEntryAssembly().GetCustomAttributes([System.Runtime.Versioning.TargetFrameworkAttribute], $true).FrameworkName
```

Folgen Sie den zuvor angegebenen Anweisungen für die AWS SDK für .NET und die entsprechende Version von.NET Core.

## Xamarin
<a name="enforcing-tls-xamarin"></a>

[Für Xamarin finden Sie die Anweisungen unter https://learn.microsoft.com/en-us/ xamarin/cross-platform/app-fundamentals/transport -layer-security.](https://learn.microsoft.com/en-us/xamarin/cross-platform/app-fundamentals/transport-layer-security) Zusammenfassend:

**Für Android**
+ Android 5.0 oder höher erforderlich.
+ **Projekteigenschaften****, **Android-Optionen**: Die HttpClient Implementierung muss auf **Android und die SSL/TLS Implementierung auf Native** TLS 1.2\$1 eingestellt sein.**

**Für iOS**
+ iOS 7 oder höher erforderlich.
+ **Projekteigenschaften**, **iOS Build**: Die HttpClient Implementierung muss auf **NSUrlSitzung** eingestellt sein.

**Für macOS**
+ macOS 10.9 oder höher erforderlich.
+ **Projektoptionen**, **Build**, **Mac Build**: Die HttpClient Implementierung muss auf **NSUrlSitzung** eingestellt sein.

## Unity
<a name="enforcing-tls-unity"></a>

Sie müssen Unity 2018.2 oder höher verwenden und die .NET 4.x gleichwertige Skripting-Laufzeit verwenden. Sie können dies in den **Projekteinstellungen**, der **Konfiguration** und dem **Player** festlegen, wie unter [https://docs.unity3d.com/2019.1/Documentation/Manual/ScriptingRuntimeUpgrade.html](https://docs.unity3d.com/2019.1/Documentation/Manual/ScriptingRuntimeUpgrade.html) beschrieben. Die.NET 4.x-Äquivalente Scripting-Laufzeit ermöglicht die Unterstützung von TLS 1.2 für alle Unity-Plattformen, auf denen Mono oder IL2 CPP ausgeführt wird. 

## Browser (für Blazor) WebAssembly
<a name="enforcing-tls-browser"></a>

WebAssembly läuft im Browser statt auf dem Server und verwendet den Browser für die Verarbeitung von HTTP-Verkehr. Daher wird die TLS-Unterstützung durch die Browser-Unterstützung bestimmt.

[Blazor WebAssembly, in der Vorschauversion für ASP.NET Core 3.1, wird nur in Browsern unterstützt, die dies unterstützen WebAssembly, wie unter -platforms beschrieben. https://learn.microsoft.com/en-us/ aspnet/core/blazor/supported](https://learn.microsoft.com/en-us/aspnet/core/blazor/supported-platforms) Alle gängigen Browser unterstützten TLS 1.2 vor der Unterstützung. WebAssembly Wenn dies für Ihren Browser der Fall ist, kann Ihre App bei Ausführung über TLS 1.2 kommunizieren.

Weitere Informationen und Verifizierung finden Sie in der Dokumentation Ihres Browsers.

# Migration des Amazon S3 S3-Verschlüsselungsclients (V1 auf V2)
<a name="s3-encryption-migration-v1-v2"></a>

**Anmerkung**  
Wenn Sie V2 verwenden und zu V4 migrieren möchten, finden Sie weitere Informationen unter[Migration des Amazon S3 S3-Verschlüsselungsclients (V2 auf V4)](s3-encryption-migration-v2-v4.md).

In diesem Thema erfahren Sie, wie Sie Ihre Anwendungen von Version 1 (V1) des Amazon Simple Storage Service (Amazon S3) -Verschlüsselungsclients auf Version 2 (V2) migrieren und die Anwendungsverfügbarkeit während des gesamten Migrationsprozesses sicherstellen.

Objekte, die mit dem V2-Client verschlüsselt wurden, können mit dem V1-Client nicht entschlüsselt werden. Um die Migration zum neuen Client zu vereinfachen, ohne alle Objekte auf einmal erneut verschlüsseln zu müssen, wurde ein „V1-Transitional“ -Client bereitgestellt. *Dieser Client kann sowohl V1- als auch V2-verschlüsselte Objekte *entschlüsseln*, verschlüsselt Objekte jedoch nur im V1-kompatiblen Format.* *Der V2-Client kann sowohl V1- als auch V2-verschlüsselte Objekte *entschlüsseln* (sofern er für V1-Objekte aktiviert ist), verschlüsselt Objekte jedoch nur im V2-kompatiblen Format.*

## Überblick über die Migration
<a name="s3-encryption-migration-v1-v2-overview"></a>

Diese Migration erfolgt in drei Phasen. Diese Phasen werden hier vorgestellt und später ausführlich beschrieben. Jede Phase muss für *alle* Clients, die gemeinsam genutzte Objekte verwenden, abgeschlossen sein, bevor die nächste Phase gestartet wird.

1. **Aktualisieren Sie bestehende Clients auf V1-Transition-Clients, um neue Formate lesen zu können.** Aktualisieren Sie zunächst Ihre Anwendungen so, dass sie vom V1-Transition-Client und nicht vom V1-Client abhängig sind. Der V1-Transitiony-Client ermöglicht es Ihrem vorhandenen Code, Objekte zu entschlüsseln, die von den neuen V2-Clients geschrieben wurden, und Objekte, die in einem V1-kompatiblen Format geschrieben wurden.
**Anmerkung**  
Der V1-Transitiony-Client wird nur für Migrationszwecke bereitgestellt. Fahren Sie mit dem Upgrade auf den V2-Client fort, nachdem Sie zum V1-Transitiony-Client gewechselt haben.

1. **Migrieren Sie V1-Transition-Clients auf V2-Clients, um neue Formate zu schreiben.** Ersetzen Sie als Nächstes alle V1-Transition-Clients in Ihren Anwendungen durch V2-Clients und setzen Sie das Sicherheitsprofil auf. `V2AndLegacy` Wenn Sie dieses Sicherheitsprofil auf V2-Clients einrichten, können diese Clients Objekte entschlüsseln, die im V1-kompatiblen Format verschlüsselt wurden.

1. **Aktualisieren Sie V2-Clients so, dass sie V1-Formate nicht mehr lesen.** Nachdem alle Clients auf V2 migriert wurden und alle Objekte im V2-kompatiblen Format verschlüsselt oder neu verschlüsselt wurden, stellen Sie das V2-Sicherheitsprofil schließlich auf statt auf ein. `V2` `V2AndLegacy` Dadurch wird die Entschlüsselung von Objekten im V1-kompatiblen Format verhindert.

## Aktualisieren Sie bestehende Clients auf V1-Transitional-Clients, um neue Formate lesen zu können
<a name="s3-encryption-migration-v1-v2-to-v1n"></a>

Der V2-Verschlüsselungsclient verwendet Verschlüsselungsalgorithmen, die ältere Versionen des Clients nicht unterstützen. Der erste Schritt der Migration besteht darin, Ihre V1-Entschlüsselungsclients so zu aktualisieren, dass sie das neue Format lesen können.

Mit dem V1-Transitional-Client können Ihre Anwendungen sowohl V1- als auch V2-verschlüsselte Objekte entschlüsseln. [Dieser Client ist Teil des Amazon.Extensions.S3.Encryption-Pakets.](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption) NuGet Führen Sie die folgenden Schritte für jede Ihrer Anwendungen aus, um den V1-Transitional-Client zu verwenden.

1. Gehen Sie von einer neuen Abhängigkeit vom Paket [Amazon.Extensions.S3.Encryption](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption) aus. **Wenn Ihr Projekt direkt vom .S3 abhängt oder. AWSSDK AWSSDK** ** KeyManagementService**Pakete, Sie müssen diese Abhängigkeiten entweder aktualisieren oder entfernen, damit ihre aktualisierten Versionen mit diesem neuen Paket übernommen werden.

1. Ändern Sie die entsprechende `using` Anweisung wie folgt von `Amazon.S3.Encryption` bis`Amazon.Extensions.S3.Encryption`: 

   ```
   // using Amazon.S3.Encryption;
     using Amazon.Extensions.S3.Encryption;
   ```

1. Erstellen Sie Ihre Anwendung neu und stellen Sie sie erneut bereit.

Der V1-Transitiony-Client ist vollständig API-kompatibel mit dem V1-Client, sodass keine weiteren Codeänderungen erforderlich sind.

## Migrieren Sie V1-Transitiony-Clients zu V2-Clients, um neue Formate zu schreiben
<a name="s3-encryption-migration-v1-v2-v1n-to-v2"></a>

Der V2-Client ist Teil des [Amazon.Extensions.S3.Encryption-Pakets](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption) NuGet . Er ermöglicht es Ihren Anwendungen, sowohl V1- als auch V2-verschlüsselte Objekte zu entschlüsseln (sofern entsprechend konfiguriert), verschlüsselt Objekte jedoch nur im V2-kompatiblen Format.

Nachdem Sie Ihre vorhandenen Clients so aktualisiert haben, dass sie das neue Verschlüsselungsformat lesen, können Sie damit fortfahren, Ihre Anwendungen sicher auf die V2-Verschlüsselungs- und Entschlüsselungsclients zu aktualisieren. Führen Sie für jede Ihrer Anwendungen die folgenden Schritte aus, um den V2-Client zu verwenden:

1. Ändern Sie `EncryptionMaterials` zu `EncryptionMaterialsV2`.

   1. Bei Verwendung von KMS:

      1. Geben Sie eine KMS-Schlüssel-ID an.

      1. Deklarieren Sie die Verschlüsselungsmethode, die Sie verwenden; das heißt,`KmsType.KmsContext`.

      1. Stellen Sie KMS einen Verschlüsselungskontext zur Verfügung, der mit diesem Datenschlüssel verknüpft werden soll. Sie können ein leeres Wörterbuch senden (der Amazon-Verschlüsselungskontext wird trotzdem zusammengeführt), aber die Angabe von zusätzlichem Kontext ist erwünscht.

   1. Wenn Sie vom Benutzer bereitgestellte Methoden zum Umbrechen von Schlüsseln verwenden (symmetrische oder asymmetrische Verschlüsselung):

      1. Stellen Sie eine `AES` oder eine `RSA` Instanz bereit, die die Verschlüsselungsmaterialien enthält.

      1. Deklarieren Sie, welcher Verschlüsselungsalgorithmus verwendet werden soll, d. `SymmetricAlgorithmType.AesGcm` h. oder`AsymmetricAlgorithmType.RsaOaepSha1`.

1. Wechseln Sie `AmazonS3CryptoConfiguration` zu, `AmazonS3CryptoConfigurationV2` wobei die `SecurityProfile` Eigenschaft auf gesetzt ist`SecurityProfile.V2AndLegacy`.

1. Ändern Sie `AmazonS3EncryptionClient` zu `AmazonS3EncryptionClientV2`. Dieser Client übernimmt die neu konvertierten `EncryptionMaterialsV2` Objekte `AmazonS3CryptoConfigurationV2` und Objekte aus den vorherigen Schritten.

### Beispiel: KMS zu KMS\$1Kontext
<a name="s3-encryption-migration-v1-v2-ex-kms"></a>

**Vor der Migration**

```
using System.Security.Cryptography;
using Amazon.S3.Encryption;

var encryptionMaterial = new EncryptionMaterials("1234abcd-12ab-34cd-56ef-1234567890ab");
var configuration = new AmazonS3CryptoConfiguration()
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);
```

**Nach der Migration**

```
using System.Security.Cryptography;
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;

var encryptionContext = new Dictionary<string, string>();
var encryptionMaterial = new EncryptionMaterialsV2("1234abcd-12ab-34cd-56ef-1234567890ab", KmsType.KmsContext, encryptionContext);
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);
```

### Beispiel: Symmetrischer Algorithmus (AES-CBC zu AES-GCM Key Wrap)
<a name="s3-encryption-migration-v1-v2-ex-aes"></a>

`StorageMode` kann `ObjectMetadata` oder `InstructionFile` sein.

**Vor der Migration**

```
using System.Security.Cryptography;
using Amazon.S3.Encryption;

var symmetricAlgorithm = Aes.Create();
var encryptionMaterial = new EncryptionMaterials(symmetricAlgorithm);
var configuration = new AmazonS3CryptoConfiguration()
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);
```

**Nach der Migration**

```
using System.Security.Cryptography;
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;

var symmetricAlgorithm = Aes.Create();
var encryptionMaterial = new EncryptionMaterialsV2(symmetricAlgorithm, SymmetricAlgorithmType.AesGcm);
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);
```

**Anmerkung**  
Lesen Sie bei der Entschlüsselung mit AES-GCM das gesamte Objekt bis zum Ende, bevor Sie die entschlüsselten Daten verwenden. Dadurch wird überprüft, ob das Objekt seit der Verschlüsselung nicht geändert wurde.

### Beispiel: Asymmetrischer Algorithmus (RSA to RSA-OAEP-SHA 1 Key Wrap)
<a name="s3-encryption-migration-v1-v2-ex-rsa"></a>

`StorageMode` kann `ObjectMetadata` oder `InstructionFile` sein.

**Vor der Migration**

```
using System.Security.Cryptography;
using Amazon.S3.Encryption;

var asymmetricAlgorithm = RSA.Create();
var encryptionMaterial = new EncryptionMaterials(asymmetricAlgorithm);
var configuration = new AmazonS3CryptoConfiguration()
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClient(configuration, encryptionMaterial);
```

**Nach der Migration**

```
using System.Security.Cryptography;
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;

var asymmetricAlgorithm = RSA.Create();
var encryptionMaterial = new EncryptionMaterialsV2(asymmetricAlgorithm, AsymmetricAlgorithmType.RsaOaepSha1);
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);
```

## Aktualisieren Sie V2-Clients so, dass sie V1-Formate nicht mehr lesen
<a name="s3-encryption-migration-v1-v2-v2-cleanup"></a>

Irgendwann werden alle Objekte mit einem V2-Client verschlüsselt oder neu verschlüsselt worden sein. *Nach Abschluss dieser Konvertierung* können Sie die V1-Kompatibilität in den V2-Clients deaktivieren, indem Sie die `SecurityProfile` Eigenschaft auf setzen`SecurityProfile.V2`, wie im folgenden Codeausschnitt gezeigt.

```
//var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2AndLegacy);
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2);
```

# Migration des Amazon S3 S3-Verschlüsselungsclients (V2 auf V4)
<a name="s3-encryption-migration-v2-v4"></a>

**Anmerkung**  
Wenn Sie V1 verwenden und zu V4 migrieren möchten, müssen Sie zuerst zu V2 migrieren. Siehe [Migration des Amazon S3 S3-Verschlüsselungsclients (V1 auf V2)](s3-encryption-migration-v1-v2.md).

In diesem Thema erfahren Sie, wie Sie Ihre Anwendungen von Version 2 (V2) des Amazon Simple Storage Service (Amazon S3) -Verschlüsselungsclients auf Version 4 (V4) migrieren und die Anwendungsverfügbarkeit während des gesamten Migrationsprozesses sicherstellen. V4 verwendet AES-GCM mit zentraler Verpflichtung für die Inhaltsverschlüsselung und führt Commitment-Richtlinien ein, um die Sicherheit vor Angriffen durch Schlüsselsubstitution zu erhöhen.

[Der V4-Client ist im Paket Amazon.Extensions.S3.Encryption verfügbar.](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption) NuGet 

**Wichtig**  
**Wesentliche Änderungen:** Mit `REQUIRE_ENCRYPT_REQUIRE_DECRYPT` Richtlinien konfigurierte V4-Clients können keine Objekte entschlüsseln, die mit V1- oder V2-Clients verschlüsselt wurden. Nur die neuesten V2-Clients können V4-verschlüsselte Objekte mit Key Commitment entschlüsseln. Bevor Sie zur `REQUIRE_ENCRYPT_REQUIRE_DECRYPT` Richtlinie übergehen, müssen Sie alle Ihre vorhandenen Daten mithilfe von V4-Clients mit aktivierter Schlüsselzuweisung erneut verschlüsseln.

## V4-Konzepte verstehen
<a name="s3-encryption-migration-v2-v4-concepts"></a>

V4 verwendet AES-GCM mit hohem Engagement für die Inhaltsverschlüsselung und führt wichtige Sicherheitskonzepte ein, die den Schutz Ihrer verschlüsselten Daten verbessern:

### Verpflichtungspolitik
<a name="s3-encryption-migration-v2-v4-concepts-policy"></a>

Die Commitment-Richtlinie steuert, wie der Verschlüsselungsclient bei Verschlüsselungs- und Entschlüsselungsvorgängen mit der Schlüsselzusage umgeht. V4 unterstützt drei Commitment-Richtlinien:

`FORBID_ENCRYPT_ALLOW_DECRYPT`  
*Verschlüsselung:* Ohne Verpflichtung  
*Entschlüsselung: Ermöglicht Objekte*, die keine Verpflichtungen übernehmen  
*Sicherheit:* Erzwingt keine Bindung und ermöglicht möglicherweise Manipulationen  
*Kompatibilität:* Alle V2- und V4-Implementierungen können Objekte lesen, die mit dieser Richtlinie verschlüsselt wurden

`REQUIRE_ENCRYPT_ALLOW_DECRYPT`  
*Verschlüsselung:* Mit Schlüsselzusage  
*Entschlüsselung:* Ermöglicht sowohl das Festschreiben von Objekten als auch Objekte ohne Festschreibung  
*Sicherheit:* Neue Objekte sind vor Angriffen durch Schlüsselersetzung geschützt, alte Objekte sind weiterhin lesbar  
*Kompatibilität:* Nur V4 unterstützt diese Richtlinie

`REQUIRE_ENCRYPT_REQUIRE_DECRYPT`(Standard für V4)  
*Verschlüsselung:* Mit Schlüsselzusage  
*Entschlüsselung:* Nur Objekte werden übertragen  
*Sicherheit:* Vollständige Durchsetzung der Verpflichtungen für maximale Sicherheit  
*Kompatibilität:* Nur V4 unterstützt diese Richtlinie

### AES GCM mit großem Engagement
<a name="s3-encryption-migration-v2-v4-concepts-aesgcm"></a>

V4 verwendet AES-GCM mit Key Commitment für die Inhaltsverschlüsselung, was für mehr Sicherheit sorgt:
+ *Manipulationsschutz:* Er schützt vor Angriffen durch Schlüsselersetzung, indem er den Schlüssel kryptografisch an die verschlüsselten Daten bindet.
+ *Versionskompatibilität:* Mit Key Commitment verschlüsselte Objekte können nur von V4-Clients und neueren Versionen entschlüsselt werden.

**Warnung**  
Bevor Sie die Key-Commitment-Verschlüsselung in der Produktion aktivieren, stellen Sie sicher, dass alle Anwendungen, die Ihre Objekte entschlüsseln müssen, auf Version 4 oder neuer aktualisiert wurden, da der V2-Client veraltet ist.

## Aktualisieren Sie bestehende Clients so, dass sie V4-Formate lesen
<a name="s3-encryption-migration-v2-v4-update-clients"></a>

Der V4-Verschlüsselungsclient verwendet Verschlüsselungsalgorithmen, die ältere Versionen des Clients nicht unterstützen. Der erste Schritt der Migration besteht darin, Ihre V2-Clients so zu aktualisieren, dass sie das neue V4-Format lesen können.

### NuGet Paketabhängigkeiten aktualisieren
<a name="s3-encryption-migration-v2-v4-update-nuget"></a>

Aktualisieren Sie Ihre Anwendungen so, dass sie die neueste Version des [ NuGet Amazon.Extensions.S3.Encryption-Pakets](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption) verwenden, das V4-Unterstützung bietet. Führen Sie für jede Ihrer Anwendungen die folgenden Schritte aus:

1. Aktualisieren Sie auf das neueste [Amazon.Extensions.S3.Encryption-Paket](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption). **Wenn Ihr Projekt direkt von der .S3 abhängt oder. AWSSDK AWSSDK** ** KeyManagementService**Pakete, Sie müssen diese Abhängigkeiten entweder aktualisieren oder entfernen, damit ihre aktualisierten Versionen mit diesem neuen Paket übernommen werden.

1. Stellen Sie sicher, dass Ihre `using` Anweisungen auf den richtigen Namespace verweisen:

   ```
   using Amazon.Extensions.S3.Encryption;
   using Amazon.Extensions.S3.Encryption.Primitives;
   ```

1. Erstellen Sie Ihre Anwendung neu und stellen Sie sie erneut bereit.

Ihre vorhandenen V2-Clients funktionieren weiterhin mit dem aktualisierten Paket und können Objekte entschlüsseln, die von V4-Clients verschlüsselt wurden (abhängig von der verwendeten Commitment-Richtlinie).

### Anwendungen erstellen und bereitstellen
<a name="s3-encryption-migration-v2-v4-build-deploy"></a>

Nach der Aktualisierung Ihrer NuGet Paketabhängigkeiten:

1. Erstellen Sie Ihre Anwendung, um sicherzustellen, dass alle Abhängigkeiten korrekt aufgelöst werden.

1. Testen Sie Ihre Anwendung in einer Entwicklungsumgebung, um sicherzustellen, dass die vorhandenen Funktionen weiterhin funktionieren.

1. Stellen Sie die aktualisierte Anwendung in Ihrer Produktionsumgebung bereit.

Mit diesem Update können Ihre vorhandenen V2-Clients Objekte entschlüsseln, die von V4-Clients verschlüsselt werden, wodurch die Kompatibilität während des Migrationsprozesses gewährleistet wird.

## Migrieren Sie zu V4-Clients
<a name="s3-encryption-migration-v2-v4-migrate"></a>

Nachdem Sie Ihre vorhandenen Clients so aktualisiert haben, dass sie das neue Verschlüsselungsformat lesen, können Sie Ihre Anwendungen sicher aktualisieren, sodass sie V4-Verschlüsselungs- und Entschlüsselungsclients verwenden. Der V4-Client bietet verbesserte Sicherheit durch Schlüsselbindung und gewährleistet gleichzeitig die Kompatibilität mit vorhandenen verschlüsselten Objekten.

### Migrationsprozess in 4 Schritten
<a name="s3-encryption-migration-v2-v4-migrate-steps"></a>

Die Migration von V2 zu V4 folgt einem strukturierten 4-stufigen Prozess, um Kompatibilität und Sicherheit zu gewährleisten. Jeder Schritt stellt eine spezifische Konfiguration dar, die für alle Ihre Anwendungen bereitgestellt werden sollte, bevor Sie mit dem nächsten Schritt fortfahren.

1. **Schritt 0: V2-Client (Startpunkt)** — Ihre bestehende V2-Implementierung

1. **Schritt 1: V4 mit V2-Kompatibilität** — Migrieren Sie zum V4-Client unter Beibehaltung des V2-kompatiblen Verschlüsselungsverhaltens

1. **Schritt 2: V4 mit Key Commitment Writes — Beginnen** Sie mit der Verschlüsselung mit Key Commitment und ermöglichen Sie gleichzeitig die Entschlüsselung älterer Objekte

1. **Schritt 3: V4 mit vollständiger Durchsetzung** — Sowohl für die Verschlüsselung als auch für die Entschlüsselung ist eine Schlüsselzusage erforderlich

### Schritt 0: V2-Client (Ausgangspunkt)
<a name="s3-encryption-migration-v2-v4-step0"></a>

Dies stellt Ihre bestehende V2-Client-Konfiguration dar. Dieser Schritt zeigt den Startstatus vor der Migration.

```
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;
using Amazon.S3.Model;

// Step 0: V2 Client - Starting configuration
var encryptionContext = new Dictionary<string, string>();
var encryptionMaterial = new EncryptionMaterialsV2(kmsKeyId, KmsType.KmsContext, encryptionContext);

#pragma warning disable 0618
var configuration = new AmazonS3CryptoConfigurationV2(SecurityProfile.V2);
#pragma warning enable 0618

var encryptionClient = new AmazonS3EncryptionClientV2(configuration, encryptionMaterial);

// Use the client for PutObject and GetObject operations
await encryptionClient.PutObjectAsync(new PutObjectRequest
{
    BucketName = bucket,
    Key = objectKey,
    ContentBody = content
});
```

### Schritt 1: V4 mit V2-Kompatibilität
<a name="s3-encryption-migration-v2-v4-step1"></a>

Migrieren Sie zum V4-Client und behalten Sie dabei das gleiche Verhalten wie V2 bei. In diesem Schritt werden `FORBID_ENCRYPT_ALLOW_DECRYPT` Richtlinien verwendet, um unverbindlich zu verschlüsseln und die Entschlüsselung aller Objekte zu ermöglichen.

```
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;
using Amazon.S3.Model;

// Step 1: V4 Client with V2 compatibility
var encryptionContext = new Dictionary<string, string>();
var encryptionMaterial = new EncryptionMaterialsV4(kmsKeyId, KmsType.KmsContext, encryptionContext);

var configuration = new AmazonS3CryptoConfigurationV4(
    SecurityProfile.V4, 
    CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT, 
    ContentEncryptionAlgorithm.AesGcm);

var encryptionClient = new AmazonS3EncryptionClientV4(configuration, encryptionMaterial);

// Use the client for PutObject and GetObject operations
await encryptionClient.PutObjectAsync(new PutObjectRequest
{
    BucketName = bucket,
    Key = objectKey,
    ContentBody = content
});
```

**Verhalten:** Verschlüsselt ohne Verpflichtung, kann sowohl Objekte entschlüsseln, die eine Übertragung vornehmen, als auch Objekte, für die kein Commit ausgeführt wird. Identisch mit dem Verhalten von V2.

### Schritt 2: V4 mit wichtigen Commitment Writes
<a name="s3-encryption-migration-v2-v4-step2"></a>

Beginnen Sie mit der Verschlüsselung mit Key Commitment und behalten Sie gleichzeitig die Abwärtskompatibilität bei der Entschlüsselung bei. In diesem Schritt wird eine Richtlinie verwendet. `REQUIRE_ENCRYPT_ALLOW_DECRYPT`

**Warnung**  
Stellen Sie vor der Bereitstellung von Schritt 2 sicher, dass alle Lesegeräte auf Schritt 1 oder höher aktualisiert wurden, um die Verschlüsselung mit Schlüsselübergabe durchführen zu können.

```
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;
using Amazon.S3.Model;

// Step 2: V4 Client with key commitment writes
var encryptionContext = new Dictionary<string, string>();
var encryptionMaterial = new EncryptionMaterialsV4(kmsKeyId, KmsType.KmsContext, encryptionContext);

var configuration = new AmazonS3CryptoConfigurationV4(
    SecurityProfile.V4, 
    CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT, 
    ContentEncryptionAlgorithm.AesGcmWithCommitment);

var encryptionClient = new AmazonS3EncryptionClientV4(configuration, encryptionMaterial);

// Use the client for PutObject and GetObject operations
await encryptionClient.PutObjectAsync(new PutObjectRequest
{
    BucketName = bucket,
    Key = objectKey,
    ContentBody = content
});
```

**Verhalten:** Verschlüsselt mit Commitment, kann sowohl Objekte entschlüsseln, die sich verpflichten als auch Objekte ohne Commitment. Neue Objekte sind vor Angriffen durch Schlüsselersetzung geschützt.

### Schritt 3: V4 mit vollständiger Durchsetzung
<a name="s3-encryption-migration-v2-v4-step3"></a>

Sowohl für die Verschlüsselung als auch für die Entschlüsselung ist eine Schlüsselzuweisung erforderlich. In diesem Schritt werden `REQUIRE_ENCRYPT_REQUIRE_DECRYPT` Richtlinien für maximale Sicherheit verwendet.

**Warnung**  
Stellen Sie vor der Bereitstellung von Schritt 3 sicher, dass alle Objekte in Ihrem System mit Key Commitment erneut verschlüsselt wurden (Schritt 2). In diesem Schritt können Objekte, die ohne Verpflichtung verschlüsselt wurden, nicht entschlüsselt werden.

```
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;
using Amazon.S3.Model;

// Step 3: V4 Client with full key commitment enforcement
var encryptionContext = new Dictionary<string, string>();
var encryptionMaterial = new EncryptionMaterialsV4(kmsKeyId, KmsType.KmsContext, encryptionContext);

var configuration = new AmazonS3CryptoConfigurationV4(
    SecurityProfile.V4, 
    CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT, 
    ContentEncryptionAlgorithm.AesGcmWithCommitment);

var encryptionClient = new AmazonS3EncryptionClientV4(configuration, encryptionMaterial);

// Use the client for PutObject and GetObject operations
await encryptionClient.PutObjectAsync(new PutObjectRequest
{
    BucketName = bucket,
    Key = objectKey,
    ContentBody = content
});
```

**Verhalten:** Verschlüsselt mit Commitment, entschlüsselt nur mit Commitment verschlüsselte Objekte. Maximale Sicherheit vor Angriffen durch Schlüsselersetzung.

## Zusätzliche Konfigurationsbeispiele
<a name="s3-encryption-migration-v2-v4-examples"></a>

Dieser Abschnitt enthält zusätzliche Beispiele für die Konfiguration von V4-Clients mit unterschiedlichen Optionen während der Migration.

### Legacy-Support aktivieren
<a name="s3-encryption-migration-v2-v4-examples-legacy"></a>

Damit V4-Clients Objekte lesen können, die von V1- und V2-Clients verschlüsselt wurden, konfigurieren Sie den Client mit einer Commitment-Richtlinie, die die Legacy-Entschlüsselung ermöglicht:

```
using Amazon.Extensions.S3.Encryption;
using Amazon.Extensions.S3.Encryption.Primitives;

// Configure V4 client to read V1/V2 objects
var configuration = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};

// This configuration allows:
// - Encryption: With commitment (secure)
// - Decryption: Both V2 (non-committing) and V4 (committing) objects
```

Verwenden Sie diese Konfiguration während der Migration, wenn Sie Objekte entschlüsseln müssen, die von älteren Clients verschlüsselt wurden, und gleichzeitig sicherstellen müssen, dass neue Objekte mit verbesserter Sicherheit verschlüsselt werden.

### Speichermethode konfigurieren
<a name="s3-encryption-migration-v2-v4-examples-storage"></a>

V4 unterstützt zwei Speichermethoden für Verschlüsselungsmetadaten. Wählen Sie die Methode, die am besten zu Ihrem Anwendungsfall passt:

**Objekt-Metadaten (Standard)**

```
var configuration = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT)
{
    StorageMode = CryptoStorageMode.ObjectMetadata
};
// Encryption metadata is stored in S3 object metadata
```

**Anweisungsdatei**

```
var configuration = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT)
{
    StorageMode = CryptoStorageMode.InstructionFile
};
// Encryption metadata is stored in a separate S3 object (instruction file)
```

Verwenden Sie diese Option, `InstructionFile` wenn Sie Objektmetadaten für andere Zwecke aufbewahren müssen oder wenn Sie mit Objekten arbeiten, für die die Größe der Metadaten begrenzt ist.

### Verpflichtungsrichtlinie konfigurieren
<a name="s3-encryption-migration-v2-v4-examples-policy"></a>

Wählen Sie je nach Ihren Sicherheitsanforderungen und Ihrer Migrationsphase die passende Verpflichtungsrichtlinie aus:

**Migrationsphase (V2-Kompatibilität)**

```
// For migration: encrypt without commitment, allow all decryption
var migrationConfig = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.FORBID_ENCRYPT_ALLOW_DECRYPT);
```

**Übergangsphase (empfohlen)**

```
// For transition: encrypt with commitment, allow legacy decryption
var transitionConfig = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT);
```

**Vollständige Sicherheitsphase**

```
// For maximum security: require commitment for both encryption and decryption
var secureConfig = new AmazonS3CryptoConfigurationV4(CommitmentPolicy.REQUIRE_ENCRYPT_REQUIRE_DECRYPT);
```

Beginnen Sie mit `FORBID_ENCRYPT_ALLOW_DECRYPT` der ersten Migration, gehen Sie `REQUIRE_ENCRYPT_ALLOW_DECRYPT` zur Übergangsphase über und verwenden Sie `REQUIRE_ENCRYPT_REQUIRE_DECRYPT` sie schließlich, wenn alle Clients aktualisiert wurden und alle Objekte verbindlich neu verschlüsselt wurden.