

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.

# AWS Identity and Access Management (IAM) und DynamoDB
<a name="identity-and-access-mgmt"></a>

 AWS Identity and Access Management ist ein AWS Dienst, der einem Administrator hilft, den Zugriff auf Ressourcen sicher zu kontrollieren. AWS Administratoren steuern, wer authentifiziert (angemeldet) und autorisiert (im Besitz von Berechtigungen) ist, Amazon-DynamoDB- und DynamoDB-Accelerator-Ressourcen zu nutzen. Sie können IAM zum Verwalten von Zugriffsberechtigungen und Implementieren von Sicherheitsrichtlinien für Amazon DynamoDB und DynamoDB Accelerator verwenden. IAM ist ein AWS Dienst, den Sie ohne zusätzliche Kosten nutzen können. 

 

**Topics**
+ [Identity and Access Management für Amazon DynamoDB](security-iam.md)
+ [Verwenden von IAM-Richtlinienbedingungen für die differenzierte Zugriffskontrolle](specifying-conditions.md)

# Identity and Access Management für Amazon DynamoDB
<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 steuern, wer für die Nutzung von DynamoDB-Ressourcen *authentifiziert* (angemeldet) und *autorisiert* (mit Berechtigungen ausgestattet) werden kann. 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)
+ [Funktionsweise von Amazon DynamoDB mit IAM](security_iam_service-with-iam.md)
+ [Beispiele für identitätsbasierte Richtlinien für Amazon DynamoDB](security_iam_id-based-policy-examples.md)
+ [Fehlerbehebung für Amazon-DynamoDB-Identität und -Zugriff](security_iam_troubleshoot.md)
+ [IAM-Richtlinie zum Verhindern des Erwerbs von reservierter DynamoDB-Kapazität](iam-policy-prevent-purchase-reserved-capacity.md)

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

Wie Sie AWS Identity and Access Management (IAM) verwenden, hängt von Ihrer Rolle ab:
+ **Servicebenutzer** – Fordern Sie von Ihrem Administrator Berechtigungen an, wenn Sie nicht auf Features zugreifen können (siehe [Fehlerbehebung für Amazon-DynamoDB-Identität und -Zugriff](security_iam_troubleshoot.md)).
+ **Serviceadministrator** – Bestimmen Sie den Benutzerzugriff und stellen Sie Berechtigungsanfragen (siehe [Funktionsweise von Amazon DynamoDB mit IAM](security_iam_service-with-iam.md)).
+ **IAM-Administrator** – Schreiben Sie Richtlinien zur Zugriffsverwaltung (siehe [Beispiele für identitätsbasierte Richtlinien für Amazon DynamoDB](security_iam_id-based-policy-examples.md)).

## 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>

Es hat sich bewährt, dass menschliche Benutzer für den Zugriff AWS-Services mithilfe temporärer Anmeldeinformationen einen Verbund mit einem Identitätsanbieter verwenden müssen.

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.

### 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 sich daraus ergebenden 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*.

# Funktionsweise von Amazon DynamoDB mit IAM
<a name="security_iam_service-with-iam"></a>

Bevor Sie IAM zum Verwalten des Zugriffs auf DynamoDB verwenden, informieren Sie sich, welche IAM-Funktionen Sie mit DynamoDB verwenden können.






| IAM-Feature | DynamoDB-Unterstützung | 
| --- | --- | 
|  [Identitätsbasierte Richtlinien](#security_iam_service-with-iam-id-based-policies)  |   Ja  | 
|  [Ressourcenbasierte Richtlinien](#security_iam_service-with-iam-resource-based-policies)  |   Ja  | 
|  [Richtlinienaktionen](#security_iam_service-with-iam-id-based-policies-actions)  |   Ja  | 
|  [Richtlinienressourcen](#security_iam_service-with-iam-id-based-policies-resources)  |   Ja  | 
|  [Bedingungsschlüssel für die Richtlinie](#security_iam_service-with-iam-id-based-policies-conditionkeys)  |   Ja  | 
|  [ACLs](#security_iam_service-with-iam-acls)  |   Nein   | 
|  [ABAC (Tags in Richtlinien)](#security_iam_service-with-iam-tags)  |   Ja  | 
|  [Temporäre Anmeldeinformationen](#security_iam_service-with-iam-roles-tempcreds)  |   Ja  | 
|  [Prinzipalberechtigungen](#security_iam_service-with-iam-principal-permissions)  |   Ja  | 
|  [Servicerollen](#security_iam_service-with-iam-roles-service)  |   Ja  | 
|  [Service-verknüpfte Rollen](#security_iam_service-with-iam-roles-service-linked)  |   Ja  | 

*Einen allgemeinen Überblick darüber, wie DynamoDB und andere AWS Dienste mit den meisten IAM-Funktionen 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).*

## Identitätsbasierte Richtlinien für DynamoDB
<a name="security_iam_service-with-iam-id-based-policies"></a>

**Unterstützt Richtlinien auf Identitätsbasis:** Ja

Identitätsbasierte Richtlinien sind JSON-Berechtigungsrichtliniendokumente, die Sie einer Identität anfügen können, wie z. B. IAM-Benutzern, -Benutzergruppen oder -Rollen. Diese Richtlinien steuern, welche Aktionen die Benutzer und Rollen 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*.

Mit identitätsbasierten IAM-Richtlinien können Sie angeben, welche Aktionen und Ressourcen zugelassen oder abgelehnt werden. Darüber hinaus können Sie die Bedingungen festlegen, unter denen Aktionen zugelassen oder abgelehnt werden. Informationen zu sämtlichen Elementen, die Sie in einer JSON-Richtlinie verwenden, finden Sie in der [IAM-Referenz für JSON-Richtlinienelemente](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html) im *IAM-Benutzerhandbuch*.

### Beispiele für identitätsbasierte Richtlinien für DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-examples"></a>



Beispiele für identitätsbasierte DynamoDB-Richtlinien finden Sie unter [Beispiele für identitätsbasierte Richtlinien für Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Ressourcenbasierte Richtlinien in DynamoDB
<a name="security_iam_service-with-iam-resource-based-policies"></a>

**Unterstützt ressourcenbasierte Richtlinien:** Ja

Ressourcenbasierte Richtlinien sind JSON-Richtliniendokumente, die Sie an eine Ressource anfügen. Beispiele für ressourcenbasierte Richtlinien sind IAM-*Rollen-Vertrauensrichtlinien* 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. Für die Ressource, an welche die Richtlinie angehängt ist, legt die Richtlinie fest, welche Aktionen ein bestimmter Prinzipal unter welchen Bedingungen für diese Ressource ausführen kann. Sie müssen in einer ressourcenbasierten Richtlinie [einen Prinzipal angeben](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html). Zu den Prinzipalen können Konten, Benutzer, Rollen, Verbundbenutzer oder gehören. AWS-Services

Um kontoübergreifenden Zugriff zu ermöglichen, können Sie ein gesamtes Konto oder IAM-Entitäten in einem anderen Konto als Prinzipal in einer ressourcenbasierten Richtlinie angeben. 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*.

## Richtlinienaktionen für DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-actions"></a>

**Unterstützt Richtlinienaktionen:** Ja

Administratoren können mithilfe von AWS JSON-Richtlinien angeben, wer Zugriff auf was hat. Das heißt, welcher **Prinzipal** **Aktionen** für welche **Ressourcen** und unter welchen **Bedingungen** ausführen kann.

Das Element `Action` einer JSON-Richtlinie beschreibt die Aktionen, mit denen Sie den Zugriff in einer Richtlinie zulassen oder verweigern können. Nehmen Sie Aktionen in eine Richtlinie auf, um Berechtigungen zur Ausführung des zugehörigen Vorgangs zu erteilen.



Eine Liste der DynamoDB-Aktionen finden Sie unter [Von Amazon DynamoDB definierte Aktionen](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-actions-as-permissions) in der *Service-Autorisierungs-Referenz*.

Richtlinienaktionen in DynamoDB verwenden das folgende Präfix vor der Aktion:

```
aws
```

Um mehrere Aktionen in einer einzigen Anweisung anzugeben, trennen Sie sie mit Kommata:

```
"Action": [
      "aws:action1",
      "aws:action2"
         ]
```





Beispiele für identitätsbasierte DynamoDB-Richtlinien finden Sie unter [Beispiele für identitätsbasierte Richtlinien für Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Richtlinienressourcen für DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-resources"></a>

**Unterstützt Richtlinienressourcen:** Ja

Administratoren können mithilfe von AWS JSON-Richtlinien angeben, wer Zugriff auf was hat. Das heißt, welcher **Prinzipal** **Aktionen** für welche **Ressourcen** und unter welchen **Bedingungen** ausführen kann.

Das JSON-Richtlinienelement `Resource` gibt die Objekte an, auf welche die Aktion angewendet wird. Als Best Practice geben Sie eine Ressource mit dem zugehörigen [Amazon-Ressourcennamen (ARN)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) an. Verwenden Sie für Aktionen, die keine Berechtigungen auf Ressourcenebene unterstützen, einen Platzhalter (\$1), um anzugeben, dass die Anweisung für alle Ressourcen gilt.

```
"Resource": "*"
```

*Eine Liste der DynamoDB-Ressourcentypen und ihrer ARNs Eigenschaften finden Sie unter [Von Amazon DynamoDB definierte Ressourcen in der Service Authorization](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-resources-for-iam-policies) Reference.* Informationen zu den Aktionen, mit denen Sie den ARN einzelner Ressourcen angeben können, finden Sie unter [Von Amazon DynamoDB definierte Aktionen](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-actions-as-permissions).





Beispiele für identitätsbasierte DynamoDB-Richtlinien finden Sie unter [Beispiele für identitätsbasierte Richtlinien für Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Richtlinien-Bedingungsschlüssel für DynamoDB
<a name="security_iam_service-with-iam-id-based-policies-conditionkeys"></a>

**Unterstützt servicespezifische Richtlinienbedingungsschlüssel:** Ja

Administratoren können mithilfe von AWS JSON-Richtlinien angeben, wer Zugriff auf was hat. Das heißt, welcher **Prinzipal** **Aktionen** für welche **Ressourcen** und unter welchen **Bedingungen** ausführen kann.

Das Element `Condition` gibt an, wann Anweisungen auf der Grundlage definierter Kriterien ausgeführt werden. Sie können bedingte Ausdrücke erstellen, die [Bedingungsoperatoren](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) verwenden, z. B. ist gleich oder kleiner als, damit die Bedingung in der Richtlinie mit Werten in der Anforderung übereinstimmt. Eine Übersicht aller AWS globalen Bedingungsschlüssel finden Sie unter [Kontextschlüssel für AWS globale Bedingungen](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) im *IAM-Benutzerhandbuch*.

Eine Liste von DynamoDB-Bedingungsschlüsseln finden Sie unter [Bedingungsschlüssel für Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-policy-keys) in der *Service-Autorisierungs-Referenz*. Informationen dazu, mit welchen Aktionen und Ressourcen Sie einen Bedingungsschlüssel verwenden können, finden Sie unter [Von Amazon DynamoDB definierte Aktionen](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html#amazondynamodb-actions-as-permissions).

Beispiele für identitätsbasierte DynamoDB-Richtlinien finden Sie unter [Beispiele für identitätsbasierte Richtlinien für Amazon DynamoDB](security_iam_id-based-policy-examples.md).

## Zugriffskontrolllisten (ACLs) in DynamoDB
<a name="security_iam_service-with-iam-acls"></a>

**Unterstützt ACLs**: Nein 

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.

## Attributbasierte Zugriffskontrolle (Attribute-Based Access Control, ABAC) mit DynamoDB
<a name="security_iam_service-with-iam-tags"></a>

**Unterstützt ABAC (Tags in Richtlinien):** Ja

Die attributbasierte Zugriffskontrolle (ABAC) ist eine Autorisierungsstrategie, bei der Berechtigungen basierend auf Attributen, auch als Tags bezeichnet, definiert werden. Sie können Tags an IAM-Entitäten und AWS Ressourcen anhängen und dann ABAC-Richtlinien so entwerfen, dass Operationen möglich sind, wenn das Tag des Prinzipals mit dem Tag auf der Ressource übereinstimmt.

Um den Zugriff auf der Grundlage von Tags zu steuern, geben Sie im Bedingungselement einer[ Richtlinie Tag-Informationen ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html)an, indem Sie die Schlüssel `aws:ResourceTag/key-name`, `aws:RequestTag/key-name`, oder Bedingung `aws:TagKeys` verwenden.

Wenn ein Service alle drei Bedingungsschlüssel für jeden Ressourcentyp unterstützt, lautet der Wert für den Service **Ja**. Wenn ein Service alle drei Bedingungsschlüssel für nur einige Ressourcentypen unterstützt, lautet der Wert **Teilweise**.

*Weitere Informationen zu ABAC finden Sie unter [Definieren von Berechtigungen mit ABAC-Autorisierung](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) im IAM-Benutzerhandbuch*. Um ein Tutorial mit Schritten zur Einstellung von ABAC anzuzeigen, siehe [Attributbasierte Zugriffskontrolle (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html) verwenden im *IAM-Benutzerhandbuch*.

## Verwenden temporärer Anmeldeinformationen mit DynamoDB
<a name="security_iam_service-with-iam-roles-tempcreds"></a>

**Unterstützt temporäre Anmeldeinformationen:** Ja

Temporäre Anmeldeinformationen ermöglichen den kurzfristigen Zugriff auf AWS Ressourcen und werden automatisch erstellt, wenn Sie einen Verbund verwenden oder die Rollen wechseln. AWS empfiehlt, temporäre Anmeldeinformationen dynamisch zu generieren, anstatt langfristige Zugriffsschlüssel zu verwenden. Weitere Informationen finden Sie unter [Temporäre Anmeldeinformationen in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) und [AWS-Services , die mit IAM funktionieren](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html) im *IAM-Benutzerhandbuch*.

## Serviceübergreifende Prinzipal-Berechtigungen für DynamoDB
<a name="security_iam_service-with-iam-principal-permissions"></a>

**Unterstützt Forward Access Sessions (FAS):** Ja

 Forward Access Sessions (FAS) verwenden die Berechtigungen des Prinzipals, der einen aufruft AWS-Service, kombiniert mit der Anforderung, Anfragen AWS-Service an nachgeschaltete Dienste zu stellen. Einzelheiten zu den Richtlinien für FAS-Anforderungen finden Sie unter [Zugriffssitzungen weiterleiten](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_forward_access_sessions.html). 

## Servicerollen für DynamoDB
<a name="security_iam_service-with-iam-roles-service"></a>

**Unterstützt Servicerollen:** Ja

 Eine Servicerolle ist eine [IAM-Rolle](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html), die ein Service annimmt, um Aktionen in Ihrem Namen auszuführen. Ein IAM-Administrator kann eine Servicerolle innerhalb von IAM erstellen, ändern und löschen. Weitere Informationen finden Sie unter [Erstellen einer Rolle zum Delegieren von Berechtigungen an einen AWS-Service](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) im *IAM-Benutzerhandbuch*. 

**Warnung**  
Das Ändern der Berechtigungen für eine Servicerolle könnte die Funktionalität von DynamoDB beeinträchtigen. Bearbeiten Sie Servicerollen nur, wenn DynamoDB dazu Anleitungen gibt.

## Serviceverknüpfte Rollen für DynamoDB
<a name="security_iam_service-with-iam-roles-service-linked"></a>

**Unterstützt serviceverknüpfte Rollen:** Ja

 Eine serviceverknüpfte Rolle ist eine Art von Servicerolle, die mit einer verknüpft ist. AWS-Service Der Service kann die Rolle übernehmen, um eine Aktion in Ihrem Namen auszuführen. Dienstbezogene Rollen werden in Ihrem Dienst angezeigt AWS-Konto und gehören dem Dienst. Ein IAM-Administrator kann die Berechtigungen für Service-verknüpfte Rollen anzeigen, aber nicht bearbeiten. 

Details zum Erstellen oder Verwalten von serviceverknüpften Rollen finden Sie unter [AWS -Services, die mit IAM funktionieren](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-services-that-work-with-iam.html). Suchen Sie in der Tabelle nach einem Service mit einem `Yes` in der Spalte **Service-linked role** (Serviceverknüpfte Rolle). Wählen Sie den Link **Yes** (Ja) aus, um die Dokumentation für die serviceverknüpfte Rolle für diesen Service anzuzeigen.

### Unterstützte serviceverknüpfte Rollen in DynamoDB
<a name="security_iam_service-with-iam-roles-service-linked-supported-by-dynamodb"></a>

Die folgenden serviceverknüpften Rollen werden in DynamoDB unterstützt.
+ DynamoDB verwendet die serviceverknüpfte Rolle **AWSServiceRoleForDynamoDBReplication**für die globale Tabellenreplikation zwischen. AWS-Regionen Weitere Informationen [Sicherheit von globalen DynamoDB-Tabellen](globaltables-security.md) zur serviceverknüpften Rolle finden Sie unter **AWSServiceRoleForDynamoDBReplication**.
+ DynamoDB Accelerator (DAX) verwendet die dienstverknüpfte Rolle ** AWSServiceRoleForDAX für die Konfiguration und Wartung eines DAX-Clusters**. Weitere Informationen [Verwendung von serviceverknüpften IAM-Rollen für DAX](using-service-linked-roles.md) zur dienstverknüpften **AWSServiceRoleForDAX-Rolle** finden Sie unter.

Zusätzlich zu diesen serviceverknüpften DynamoDB-Rollen verwendet DynamoDB Application Auto Scaling Service für die automatische Verwaltung der Durchsatzeinstellungen für Tabellen mit dem Modus bereitgestellter Kapazität. Der Application Auto Scaling Scaling-Dienst verwendet die dienstverknüpfte Rolle ** AWSServiceRoleForApplicationAutoScaling\$1DynamoDBTable**, um die Durchsatzeinstellungen in DynamoDB-Tabellen zu verwalten, für die Auto Scaling aktiviert ist. Weitere Informationen finden Sie unter [Serviceverknüpfte Rollen für Application Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html).

# Beispiele für identitätsbasierte Richtlinien für Amazon DynamoDB
<a name="security_iam_id-based-policy-examples"></a>

Benutzer und Rollen haben standardmäßig nicht die Berechtigung, DynamoDB-Ressourcen zu erstellen oder zu ändern. Ein IAM-Administrator muss IAM-Richtlinien erstellen, die Benutzern die Berechtigung erteilen, Aktionen für die Ressourcen auszuführen, die sie benötigen.

Informationen dazu, wie Sie unter Verwendung dieser beispielhaften JSON-Richtliniendokumente eine identitätsbasierte IAM-Richtlinie erstellen, finden Sie unter [Erstellen von IAM-Richtlinien (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html) im *IAM-Benutzerhandbuch*.

*Einzelheiten zu den von DynamoDB definierten Aktionen und Ressourcentypen, einschließlich des Formats ARNs für die einzelnen Ressourcentypen, finden Sie unter [Aktionen, Ressourcen und Bedingungsschlüssel für Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html) in der Service Authorization Reference.*

**Topics**
+ [Best Practices für Richtlinien](#security_iam_service-with-iam-policy-best-practices)
+ [Verwenden der DynamoDB-Konsole](#security_iam_id-based-policy-examples-console)
+ [Gewähren der Berechtigung zur Anzeige der eigenen Berechtigungen für Benutzer](#security_iam_id-based-policy-examples-view-own-permissions)
+ [Verwenden von identitätsbasierten Richtlinien mit Amazon DynamoDB](using-identity-based-policies.md)

## Best Practices für Richtlinien
<a name="security_iam_service-with-iam-policy-best-practices"></a>

Identitätsbasierte Richtlinien legen fest, ob jemand DynamoDB-Ressourcen in Ihrem Konto erstellen, darauf zugreifen oder sie löschen kann. Dies kann zusätzliche Kosten für Ihr verursachen AWS-Konto. Beachten Sie beim Erstellen oder Bearbeiten identitätsbasierter Richtlinien die folgenden Richtlinien und Empfehlungen:
+ **Erste Schritte mit AWS verwalteten Richtlinien und Umstellung auf Berechtigungen mit den geringsten Rechten** — Verwenden Sie die *AWS verwalteten Richtlinien*, die Berechtigungen für viele gängige Anwendungsfälle gewähren, um damit zu beginnen, Ihren Benutzern und Workloads Berechtigungen zu gewähren. Sie sind in Ihrem verfügbar. AWS-Konto Wir empfehlen Ihnen, die Berechtigungen weiter zu reduzieren, indem Sie vom AWS Kunden verwaltete Richtlinien definieren, die speziell auf Ihre Anwendungsfälle zugeschnitten sind. Weitere Informationen finden Sie unter [Von AWS verwaltete Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) oder [Von AWS verwaltete Richtlinien für Auftragsfunktionen](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_job-functions.html) im *IAM-Benutzerhandbuch*.
+ **Anwendung von Berechtigungen mit den geringsten Rechten** – Wenn Sie mit IAM-Richtlinien Berechtigungen festlegen, gewähren Sie nur die Berechtigungen, die für die Durchführung einer Aufgabe erforderlich sind. Sie tun dies, indem Sie die Aktionen definieren, die für bestimmte Ressourcen unter bestimmten Bedingungen durchgeführt werden können, auch bekannt als *die geringsten Berechtigungen*. Weitere Informationen zur Verwendung von IAM zum Anwenden von Berechtigungen finden Sie unter [ Richtlinien und Berechtigungen in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) im *IAM-Benutzerhandbuch*.
+ **Verwenden von Bedingungen in IAM-Richtlinien zur weiteren Einschränkung des Zugriffs** – Sie können Ihren Richtlinien eine Bedingung hinzufügen, um den Zugriff auf Aktionen und Ressourcen zu beschränken. Sie können beispielsweise eine Richtlinienbedingung schreiben, um festzulegen, dass alle Anforderungen mithilfe von SSL gesendet werden müssen. Sie können auch Bedingungen verwenden, um Zugriff auf Serviceaktionen zu gewähren, wenn diese für einen bestimmten Zweck verwendet werden AWS-Service, z. CloudFormation B. Weitere Informationen finden Sie unter [IAM-JSON-Richtlinienelemente: Bedingung](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) im *IAM-Benutzerhandbuch*.
+ **Verwenden von IAM Access Analyzer zur Validierung Ihrer IAM-Richtlinien, um sichere und funktionale Berechtigungen zu gewährleisten** – IAM Access Analyzer validiert neue und vorhandene Richtlinien, damit die Richtlinien der IAM-Richtliniensprache (JSON) und den bewährten IAM-Methoden entsprechen. IAM Access Analyzer stellt mehr als 100 Richtlinienprüfungen und umsetzbare Empfehlungen zur Verfügung, damit Sie sichere und funktionale Richtlinien erstellen können. Weitere Informationen finden Sie unter [Richtlinienvalidierung mit IAM Access Analyzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-policy-validation.html) im *IAM-Benutzerhandbuch*.
+ **Multi-Faktor-Authentifizierung (MFA) erforderlich** — Wenn Sie ein Szenario haben, das IAM-Benutzer oder einen Root-Benutzer in Ihrem System erfordert AWS-Konto, aktivieren Sie MFA für zusätzliche Sicherheit. Um MFA beim Aufrufen von API-Vorgängen anzufordern, fügen Sie Ihren Richtlinien MFA-Bedingungen hinzu. Weitere Informationen finden Sie unter [Sicherer API-Zugriff mit MFA](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html) im *IAM-Benutzerhandbuch*.

Weitere Informationen zu bewährten Methoden in IAM finden Sie unter [Best Practices für die Sicherheit in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) im *IAM-Benutzerhandbuch*.

## Verwenden der DynamoDB-Konsole
<a name="security_iam_id-based-policy-examples-console"></a>

Für den Zugriff auf die Amazon-DynamoDB-Konsole müssen Sie über einen Mindestsatz von Berechtigungen verfügen. Diese Berechtigungen müssen es Ihnen ermöglichen, Details zu den DynamoDB-Ressourcen in Ihrem aufzulisten und anzuzeigen. AWS-Konto Wenn Sie eine identitätsbasierte Richtlinie erstellen, die strenger ist als die mindestens erforderlichen Berechtigungen, funktioniert die Konsole nicht wie vorgesehen für Entitäten (Benutzer oder Rollen) mit dieser Richtlinie.

Sie müssen Benutzern, die nur die API AWS CLI oder die API aufrufen, keine Mindestberechtigungen für die Konsole gewähren. AWS Stattdessen sollten Sie nur Zugriff auf die Aktionen zulassen, die der API-Operation entsprechen, die die Benutzer ausführen möchten.

Um sicherzustellen, dass Benutzer und Rollen die DynamoDB-Konsole weiterhin verwenden können, fügen Sie den Entitäten auch die DynamoDB `ConsoleAccess` - oder `ReadOnly` AWS verwaltete Richtlinie hinzu. Weitere Informationen finden Sie unter [Hinzufügen von Berechtigungen zu einem Benutzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) im *IAM-Benutzerhandbuch*.

## Gewähren der Berechtigung zur Anzeige der eigenen Berechtigungen für Benutzer
<a name="security_iam_id-based-policy-examples-view-own-permissions"></a>

In diesem Beispiel wird gezeigt, wie Sie eine Richtlinie erstellen, die IAM-Benutzern die Berechtigung zum Anzeigen der eingebundenen Richtlinien und verwalteten Richtlinien gewährt, die ihrer Benutzeridentität angefügt sind. Diese Richtlinie umfasst Berechtigungen zum Ausführen dieser Aktion auf der Konsole oder programmgesteuert mithilfe der OR-API. AWS CLI AWS 

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ViewOwnUserInfo",
            "Effect": "Allow",
            "Action": [
                "iam:GetUserPolicy",
                "iam:ListGroupsForUser",
                "iam:ListAttachedUserPolicies",
                "iam:ListUserPolicies",
                "iam:GetUser"
            ],
            "Resource": ["arn:aws:iam::*:user/${aws:username}"]
        },
        {
            "Sid": "NavigateInConsole",
            "Effect": "Allow",
            "Action": [
                "iam:GetGroupPolicy",
                "iam:GetPolicyVersion",
                "iam:GetPolicy",
                "iam:ListAttachedGroupPolicies",
                "iam:ListGroupPolicies",
                "iam:ListPolicyVersions",
                "iam:ListPolicies",
                "iam:ListUsers"
            ],
            "Resource": "*"
        }
    ]
}
```

# Verwenden von identitätsbasierten Richtlinien mit Amazon DynamoDB
<a name="using-identity-based-policies"></a>

Dieses Thema behandelt die Verwendung identitätsbasierter AWS Identity and Access Management (IAM) -Richtlinien mit Amazon DynamoDB und bietet Beispiele. Die folgenden Beispiele zu identitätsbasierten Richtlinien verdeutlichen, wie ein Kontoadministrator IAM-Identitäten (d.h. Benutzern, Gruppen und Rollen) Berechtigungsrichtlinien zuweisen und somit Berechtigungen zum Durchführen von Operationen an Amazon-DynamoDB-Ressourcen erteilen kann.

Dieses Thema besteht aus folgenden Abschnitten:
+ [Erforderliche IAM-Berechtigungen für die Verwendung der Amazon-DynamoDB-Konsole](#console-permissions)
+ [AWS verwaltete (vordefinierte) IAM-Richtlinien für Amazon DynamoDB](#access-policy-examples-aws-managed)
+ [Beispiele für vom Kunden verwaltete Richtlinien](#access-policy-examples-for-sdk-cli)



Nachstehend finden Sie ein Beispiel für eine Berechtigungsrichtlinie.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DescribeQueryScanBooksTable",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeTable",
                "dynamodb:Query",
                "dynamodb:Scan"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:111122223333:table/Books"
        }
    ]
}
```

------

 Die obige Richtlinie enthält eine Anweisung, die Berechtigungen für drei DynamoDB-Aktionen (`dynamodb:DescribeTable``dynamodb:Query`, und`dynamodb:Scan`) für eine Tabelle in der `us-west-2` AWS Region gewährt, die dem von angegebenen AWS Konto gehört. `account-id` Der *Amazon-Ressourcenname (ARN)* in dem `Resource`-Wert gibt die Tabelle an, für die die Berechtigungen zutreffen.

## Erforderliche IAM-Berechtigungen für die Verwendung der Amazon-DynamoDB-Konsole
<a name="console-permissions"></a>

Um mit der DynamoDB-Konsole arbeiten zu können, muss ein Benutzer über Mindestberechtigungen verfügen, die es ihm ermöglichen, mit den DynamoDB-Ressourcen seines AWS Kontos zu arbeiten. Zusätzlich zu diesen DynamoDB-Berechtigungen erfordert die Konsole Berechtigungen von den folgenden Services:
+  CloudWatch Amazon-Berechtigungen zur Anzeige von Metriken und Grafiken.
+ AWS Data Pipeline Berechtigungen zum Exportieren und Importieren von DynamoDB-Daten. 
+  AWS Identity and Access Management Berechtigungen für den Zugriff auf Rollen, die für Exporte und Importe erforderlich sind.
+ Amazon Simple Notification Service berechtigt, Sie zu benachrichtigen, wenn ein CloudWatch Alarm ausgelöst wird.
+ AWS Lambda Berechtigungen zur Verarbeitung von DynamoDB Streams Streams-Datensätzen.

Wenn Sie eine IAM-Richtlinie erstellen, die strenger ist als die mindestens erforderlichen Berechtigungen, funktioniert die Konsole nicht wie vorgesehen für Benutzer mit dieser IAM-Richtlinie. Um sicherzustellen, dass diese Benutzer die DynamoDB-Konsole weiterhin verwenden können, fügen Sie dem Benutzer auch die `AmazonDynamoDBReadOnlyAccess` AWS verwaltete Richtlinie hinzu, wie unter beschrieben. [AWS verwaltete (vordefinierte) IAM-Richtlinien für Amazon DynamoDB](#access-policy-examples-aws-managed)

Sie müssen Benutzern, die nur die Amazon DynamoDB-API AWS CLI oder die Amazon DynamoDB DynamoDB-API aufrufen, keine Mindestberechtigungen für die Konsole gewähren.

**Anmerkung**  
 Wenn Sie auf einen VPC-Endpunkt verweisen, müssen Sie auch den DescribeEndpoints API-Aufruf für die anfordernden IAM-Prinzipale mit der IAM-Aktion (dynamodb:) autorisieren. DescribeEndpoints Weitere Informationen finden Sie unter [Erforderliche Richtlinie für Endpunkte](inter-network-traffic-privacy.md#inter-network-traffic-DescribeEndpoints). 

## AWS verwaltete (vordefinierte) IAM-Richtlinien für Amazon DynamoDB
<a name="access-policy-examples-aws-managed"></a>

AWS adressiert einige gängige Anwendungsfälle durch die Bereitstellung eigenständiger IAM-Richtlinien, die von erstellt und verwaltet werden. AWS Diese AWS verwalteten Richtlinien gewähren die erforderlichen Berechtigungen für allgemeine Anwendungsfälle, sodass Sie nicht erst untersuchen müssen, welche Berechtigungen benötigt werden. Weitere Informationen finden Sie unter [AWS -verwaltete Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies) im *IAM-Benutzerhandbuch*.

Die folgenden AWS verwalteten Richtlinien, die Sie Benutzern in Ihrem Konto zuordnen können, sind spezifisch für DynamoDB und nach Anwendungsszenarien gruppiert:
+ **AmazonDynamoDBReadOnlyAccess**— Gewährt schreibgeschützten Zugriff auf DynamoDB-Ressourcen über die. AWS-Managementkonsole
+ **AmazonDynamoDBFullZugriff** — Gewährt vollen Zugriff auf DynamoDB-Ressourcen über die. AWS-Managementkonsole

Sie können diese Richtlinien für AWS verwaltete Berechtigungen überprüfen, indem Sie sich bei der IAM-Konsole anmelden und dort nach bestimmten Richtlinien suchen.

**Wichtig**  
Die bewährte Methode besteht darin, benutzerdefinierte IAM-Richtlinien zu erstellen, die den Benutzern, Rollen oder Gruppen, die diese Berechtigungen benötigen, die [geringste Berechtigung](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) gewähren. 

## Beispiele für vom Kunden verwaltete Richtlinien
<a name="access-policy-examples-for-sdk-cli"></a>

In diesem Abschnitt finden Sie Beispiele für Benutzerrichtlinien, die Berechtigungen für verschiedene DynamoDB-Aktionen gewähren. Diese Richtlinien funktionieren, wenn Sie AWS SDKs oder die AWS CLI verwenden. Wenn Sie die Konsole verwenden, müssen Sie zusätzliche konsolenspezifische Berechtigungen erteilen. Weitere Informationen finden Sie unter [Erforderliche IAM-Berechtigungen für die Verwendung der Amazon-DynamoDB-Konsole](#console-permissions).

**Anmerkung**  
Alle folgenden Richtlinienbeispiele verwenden eine der AWS Regionen und enthalten fiktive Konto- IDs und Tabellennamen.

Beispiele:
+ [IAM-Richtlinie zum Erteilen von Berechtigungen für alle DynamoDB-Aktionen in einer Tabelle](grant-permissions-to-any-action-on-table.md)
+ [IAM-Richtlinie zum Gewähren von Schreibgeschützten Berechtigungen für Elemente in einer DynamoDB-Tabelle](read-only-permissions-on-table-items.md)
+ [IAM-Richtlinie zum Erteilen des Zugriffs auf eine bestimmte DynamoDB-Tabelle und ihre Indizes](iam-policy-specific-table-indexes.md)
+ [IAM-Richtlinie zum Lesen, Schreiben, Aktualisieren und Löschen des Zugriffs auf eine DynamoDB-Tabelle](iam-policy-example-data-crud.md)
+ [IAM-Richtlinie zur Trennung von DynamoDB-Umgebungen im selben Konto AWS](iam-policy-separate-environments.md)
+ [IAM-Richtlinie zum Verhindern des Erwerbs von reservierter DynamoDB-Kapazität](iam-prevent-purchase-reserved-capacity.md)
+ [IAM-Richtlinie zum Gewähren von Lesezugriff für einen DynamoDB Stream (nicht für die Tabelle)](iam-policy-read-stream-only.md)
+ [IAM-Richtlinie, um einer AWS Lambda Funktion den Zugriff auf DynamoDB-Stream-Datensätze zu ermöglichen](iam-policy-example-lamda-process-dynamodb-streams.md)
+ [IAM-Richtlinie für Lese- und Schreibzugriff auf einen DynamoDB-Accelerator-(DAX)-Cluster](iam-policy-example-read-write-dax-access.md)

 Das *IAM-Benutzerhandbuch* umfasst [drei zusätzliche DynamoDB-Beispiele](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_examples.html):
+ [Amazon DynamoDB: Gewährt Zugriff auf eine bestimmte Tabelle](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_specific-table.html)
+ [Amazon DynamoDB: Gewährt Zugriff auf bestimmte Spalten](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_columns.html)
+ [Amazon DynamoDB: Ermöglicht basierend auf einer Amazon-Cognito-ID den zeilenweisen Zugriff auf DynamoDB](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_dynamodb_rows.html)

# IAM-Richtlinie zum Erteilen von Berechtigungen für alle DynamoDB-Aktionen in einer Tabelle
<a name="grant-permissions-to-any-action-on-table"></a>

Die folgende Berechtigungsrichtlinie erteilt Berechtigungen für *alle* DynamoDB-Aktionen in einer Tabelle namens `Books`. Der im angegebene Ressourcen-ARN `Resource` identifiziert eine Tabelle in einer bestimmten AWS Region. Wenn Sie den Tabellennamen `Books` im`Resource`-ARN durch ein Platzhalterzeichen (\$1) ersetzen, lassen Sie *alle* DynamoDB-Aktionen für *alle* Tabellen im Konto zu. Berücksichtigen Sie sorgfältig die möglichen Auswirkungen auf die Sicherheit, bevor Sie ein Platzhalterzeichen für diese oder eine IAM-Richtlinie verwenden.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllAPIActionsOnBooks",
            "Effect": "Allow",
            "Action": "dynamodb:*",
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books"
        }
    ]
}
```

------

**Anmerkung**  
Dies ist ein Beispiel für die Verwendung eines Platzhalterzeichens (\$1), das *Alle* Aktionen, einschließlich Administration, Datenvorgänge, Überwachung und Kauf von reservierten DynamoDB-Kapazitäten. Stattdessen empfiehlt es sich, jede Aktion explizit anzugeben, die gewährt werden soll, und nur was dieser Benutzer, die Rolle oder die Gruppe benötigt.

# IAM-Richtlinie zum Gewähren von Schreibgeschützten Berechtigungen für Elemente in einer DynamoDB-Tabelle
<a name="read-only-permissions-on-table-items"></a>

Die folgende Berechtigungsrichtlinie erteilt ausschließlich Berechtigungen für die `GetItem`, `BatchGetItem`, `Scan`, `Query` und `ConditionCheckItem`DynamoDB-Aktionen und legt somit einen schreibgeschützten Zugriff auf eine Tabelle `Books` fest.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "ReadOnlyAPIActionsOnBooks",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:BatchGetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:ConditionCheckItem"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books"
        }
    ]
}
```

------

# IAM-Richtlinie zum Erteilen des Zugriffs auf eine bestimmte DynamoDB-Tabelle und ihre Indizes
<a name="iam-policy-specific-table-indexes"></a>

Mit der folgenden Richtlinie werden die Berechtigungen für Datenänderungsaktionen für eine DynamoDB-Tabelle mit dem Namen `Books` und alle Indizes dieser Tabelle. Weitere Informationen zu der Funktionsweise von Indizes finden Sie unter [Verbessern des Datenzugriffs mit sekundären Indizes in DynamoDB](SecondaryIndexes.md).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessTableAllIndexesOnBooks",
            "Effect": "Allow",
            "Action": [
              "dynamodb:PutItem",
              "dynamodb:UpdateItem",
              "dynamodb:DeleteItem",
              "dynamodb:BatchWriteItem",
              "dynamodb:GetItem",
              "dynamodb:BatchGetItem",
              "dynamodb:Scan",
              "dynamodb:Query",
              "dynamodb:ConditionCheckItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books",
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/index/*"
            ]
        }
    ]
}
```

------

# IAM-Richtlinie zum Lesen, Schreiben, Aktualisieren und Löschen des Zugriffs auf eine DynamoDB-Tabelle
<a name="iam-policy-example-data-crud"></a>

Verwenden Sie diese Richtlinie, wenn Sie Ihrer Anwendung erlauben müssen, Daten in Amazon-DynamoDB-Tabellen, -Indizes und -Streams zu erstellen, zu lesen, zu aktualisieren und zu löschen. Ersetzen Sie gegebenenfalls den Namen der AWS Region, Ihre Konto-ID und den Tabellennamen oder das Platzhalterzeichen (\$1).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "DynamoDBIndexAndStreamAccess",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetShardIterator",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:DescribeStream",
                "dynamodb:GetRecords",
                "dynamodb:ListStreams"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/index/*",
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/stream/*"
            ]
        },
        {
            "Sid": "DynamoDBTableAccess",
            "Effect": "Allow",
            "Action": [
                "dynamodb:BatchGetItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:ConditionCheckItem",
                "dynamodb:PutItem",
                "dynamodb:DescribeTable",
                "dynamodb:DeleteItem",
                "dynamodb:GetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:UpdateItem"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Books"
        },
        {
            "Sid": "DynamoDBDescribeLimitsAccess",
            "Effect": "Allow",
            "Action": "dynamodb:DescribeLimits",
            "Resource": [
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books",
                "arn:aws:dynamodb:us-west-2:123456789012:table/Books/index/*"
            ]
        }
    ]
}
```

------

Um diese Richtlinie auf alle DynamoDB-Tabellen in allen AWS Regionen für dieses Konto auszudehnen, verwenden Sie einen Platzhalter (\$1) für die Region und den Tabellennamen. Beispiel:

```
"Resource":[
                "arn:aws:dynamodb:*:123456789012:table/*",
                "arn:aws:dynamodb:*:123456789012:table/*/index/*"
                ]
```

# IAM-Richtlinie zur Trennung von DynamoDB-Umgebungen im selben Konto AWS
<a name="iam-policy-separate-environments"></a>

Angenommen, Sie verfügen über separate Umgebungen, wobei jede Umgebung ihre eigene Version einer Tabelle namens `ProductCatalog` unterhält. Wenn Sie zwei `ProductCatalog` Tabellen in demselben AWS Konto erstellen, kann sich die Arbeit in einer Umgebung aufgrund der Art und Weise, wie Berechtigungen eingerichtet sind, auf die andere Umgebung auswirken. Beispielsweise werden Kontingente für die Anzahl gleichzeitiger Vorgänge auf der Kontrollebene (z. B.`CreateTable`) auf AWS Kontoebene festgelegt.

Daher reduziert jede Aktion in einer Umgebung die Anzahl der Operationen, die in der anderen Umgebung verfügbar sind. Es besteht auch das Risiko, dass der Code in der Umgebung möglicherweise versehentlich auf Tabellen in der anderen Umgebung zugreift.

**Anmerkung**  
Wenn Sie Produktions- und Test-Workloads trennen möchten, um den potenziellen „Explosionsradius“ eines Ereignisses zu steuern, empfiehlt es sich, separate AWS -Konten für Test- und Produktions-Workloads zu erstellen. Weitere Informationen finden Sie unter [AWS Kontenverwaltung und Trennung](https://docs.aws.amazon.com//wellarchitected/latest/security-pillar/aws-account-management-and-separation.html).

Weiter gehen wir davon aus, dass Sie über zwei Entwickler verfügen, Amit und Alice, die die `ProductCatalog`-Tabelle testen. Anstatt dass jeder Entwickler ein separates AWS Konto benötigt, können sich Ihre Entwickler dasselbe AWS Testkonto teilen. In diesem Testkonto können Sie eine Kopie derselben Tabelle für jeden Entwickler zur Bearbeitung erstellen, beispielsweise `Alice_ProductCatalog` und `Amit_ProductCatalog`. In diesem Fall können Sie die Benutzer Alice und Amit in dem AWS Konto erstellen, das Sie für die Testumgebung erstellt haben. Sie können dann diesen Benutzern Berechtigungen erteilen, damit sie in den Tabellen, die sie besitzen, DynamoDB-Aktionen durchführen können. 

Um diesen Benutzern IAM-Berechtigungen zu erteilen, können Sie Folgendes tun:
+ Erstellen Sie eine separate Richtlinie für jeden Benutzer und weisen jede Richtlinie getrennt ihrem Benutzer zu. Sie können beispielsweise die folgende Richtlinie der Benutzerin Alice zuweisen, um ihr Zugriff auf alle DynamoDB-Aktionen in der Tabelle `Alice_ProductCatalog` zu gewähren: 

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "AllAPIActionsOnAliceTable",
              "Effect": "Allow",
              "Action": [
                "dynamodb:DeleteItem",
                "dynamodb:DescribeContributorInsights",
                "dynamodb:RestoreTableToPointInTime",
                "dynamodb:ListTagsOfResource",
                "dynamodb:CreateTableReplica",
                "dynamodb:UpdateContributorInsights",
                "dynamodb:CreateBackup",
                "dynamodb:DeleteTable",
                "dynamodb:UpdateTableReplicaAutoScaling",
                "dynamodb:UpdateContinuousBackups",
                "dynamodb:TagResource",
                "dynamodb:DescribeTable",
                "dynamodb:GetItem",
                "dynamodb:DescribeContinuousBackups",
                "dynamodb:BatchGetItem",
                "dynamodb:UpdateTimeToLive",
                "dynamodb:BatchWriteItem",
                "dynamodb:ConditionCheckItem",
                "dynamodb:UntagResource",
                "dynamodb:PutItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteTableReplica",
                "dynamodb:DescribeTimeToLive",
                "dynamodb:RestoreTableFromBackup",
                "dynamodb:UpdateTable",
                "dynamodb:DescribeTableReplicaAutoScaling",
                "dynamodb:GetShardIterator",
                "dynamodb:DescribeStream",
                "dynamodb:GetRecords",
                "dynamodb:DescribeLimits",
                "dynamodb:ListStreams"
              ],
              "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/Alice_ProductCatalog/*"
          }
      ]
  }
  ```

------

  Anschließend können Sie eine ähnliche Richtlinie mit einer anderen Ressource (`Amit_ProductCatalog`-Tabelle) für den Benutzer Amit erstellen. 
+ Anstatt die Richtlinien einzelnen Benutzern zuzuweisen, können Sie IAM-Richtlinienvariablen zum Schreiben einer einzelnen Richtlinie verwenden und sie einer Gruppe anfügen. Sie müssen eine Gruppe erstellen und für dieses Beispiel die Benutzer Alice und Amit der Gruppe hinzufügen. Das folgende Beispiel gewährt Berechtigungen, um alle DynamoDB-Aktionen in der Tabelle `${aws:username}_ProductCatalog` durchzuführen. Die Richtlinienvariable `${aws:username}` wird durch den Benutzernamen des Anforderers bei der Evaluierung der Richtlinie ersetzt. Wenn Alice beispielsweise eine Anforderung für das Hinzufügen eines Elements sendet, wird die Aktion nur zugelassen, wenn Alice der `Alice_ProductCatalog`-Tabelle Elemente hinzufügt. 

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Sid": "ActionsOnUserSpecificTable",
              "Effect": "Allow",
              "Action": [
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem",
                "dynamodb:BatchWriteItem",
                "dynamodb:GetItem",
                "dynamodb:BatchGetItem",
                "dynamodb:Scan",
                "dynamodb:Query",
                "dynamodb:ConditionCheckItem"
              ],
              "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/${aws:username}_ProductCatalog"
          },
          {
              "Sid": "AdditionalPrivileges",
              "Effect": "Allow",
              "Action": [
                  "dynamodb:ListTables",
                  "dynamodb:DescribeTable",
                  "dynamodb:DescribeContributorInsights"
              ],
              "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/*"
          }
      ]
  }
  ```

------

**Anmerkung**  
Bei der Verwendung von IAM-Richtlinienvariablen müssen Sie explizit die `2012-10-17`-Version der IAM-Zugriffsrichtliniensprache in der Richtlinie angeben. Die Standardversion der IAM-Zugriffsrichtliniensprache (`2008-10-17`) unterstützt keine Richtlinienvariablen. 

Anstelle der Identifizierung einer bestimmten Tabelle als Ressource können Sie ein Platzhalterzeichen (\$1) verwenden, um Berechtigungen für alle Tabellen zu gewähren, in denen der Name dem Namen des Benutzers vorangesetzt wird, der die Anforderung stellt. Siehe folgendes Beispiel.

```
"Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/${aws:username}_*"
```

# IAM-Richtlinie zum Verhindern des Erwerbs von reservierter DynamoDB-Kapazität
<a name="iam-prevent-purchase-reserved-capacity"></a>

Mit Amazon DynamoDBs reservierter Kapazität bezahlen Sie im Vorfeld eine einmalige Gebühr und verpflichten sich zur Zahlung für eine Mindestnutzung während eines bestimmten Zeitraums mit erheblichen Einsparungen. Sie können den verwenden AWS-Managementkonsole , um reservierte Kapazität einzusehen und zu erwerben. Möglicherweise möchten Sie jedoch nicht, dass alle Benutzer in Ihrer Organisation reservierte Kapazität erwerben können. Weitere Informationen über reservierte Kapazität finden Sie unter [Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing).

DynamoDB bietet die folgenden API-Operationen für die Steuerung des Zugriffs auf das reservierte Kapazitätsmanagement:
+ `dynamodb:DescribeReservedCapacity` – gibt die Käufe der reservierten Kapazität zurück, die momentan bestehen
+ `dynamodb:DescribeReservedCapacityOfferings` – gibt Details über die Pläne der reservierten Kapazität zurück, die momentan von AWS angeboten werden.
+ `dynamodb:PurchaseReservedCapacityOfferings` – führt einen tatsächlichen Kauf von reservierter Kapazität durch

Der AWS-Managementkonsole verwendet diese API-Aktionen, um Informationen zur reservierten Kapazität anzuzeigen und Käufe zu tätigen. Sie können diese Operationen nicht von einem Anwendungsprogramm abrufen, da sie nur über die Konsole aufgerufen werden können. Sie können jedoch den Zugriff auf diese Operationen in einer IAM-Berechtigungsrichtlinie zulassen oder verweigern.

Die folgende Richtlinie ermöglicht es Benutzern, Käufe und Angebote für reservierte Kapazität mithilfe von AWS-Managementkonsole einzusehen. Neue Käufe werden jedoch verweigert.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowReservedCapacityDescriptions",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeReservedCapacity",
                "dynamodb:DescribeReservedCapacityOfferings"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        },
        {
            "Sid": "DenyReservedCapacityPurchases",
            "Effect": "Deny",
            "Action": "dynamodb:PurchaseReservedCapacityOfferings",
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        }
    ]
}
```

------

Beachten Sie, dass diese Richtlinie das Platzhalterzeichen (\$1) verwendet, um Beschreibungsberechtigungen für alle, zu ermöglichen und den Kauf von reservierter DynamoDB-Kapazität für alle zu verweigern.

# IAM-Richtlinie zum Gewähren von Lesezugriff für einen DynamoDB Stream (nicht für die Tabelle)
<a name="iam-policy-read-stream-only"></a>

Wenn Sie DynamoDB Streams für eine Tabelle aktivieren, werden Informationen über jede Änderung an den Elementen in der Tabelle erfasst. Weitere Informationen finden Sie unter [Ändern Sie die Datenerfassung für DynamoDB Streams](Streams.md).

In einigen Fällen möchten Sie möglicherweise verhindern, dass eine Anwendung Daten aus einer DynamoDB-Tabelle liest, während weiterhin der Zugriff auf den Stream dieser Tabelle gewährt wird. Sie können beispielsweise so konfigurieren AWS Lambda , dass ein Stream abgefragt und eine Lambda-Funktion aufgerufen wird, wenn Elementaktualisierungen erkannt werden, und dann zusätzliche Verarbeitungen durchführen.

Die folgenden Aktionen sind für die Steuerung des Zugriffs auf DynamoDB Streams verfügbar:
+ `dynamodb:DescribeStream`
+ `dynamodb:GetRecords`
+ `dynamodb:GetShardIterator`
+ `dynamodb:ListStreams`

Das folgende Beispielrichtlinie erteilt Benutzerberechtigungen, um auf die Streams in einer Tabelle mit dem Namen `GameScores` zuzugreifen. Das letzte Platzhalterzeichen (\$1) in dem ARN entspricht jedem Stream, der mit dieser Tabelle verknüpft ist.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AccessGameScoresStreamOnly",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeStream",
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:ListStreams"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/stream/*"
        }
    ]
}
```

------

Beachten Sie, dass diese Richtlinie Zugriff auf die Streams in der `GameScores`-Tabelle gewährt, aber nicht auf die Tabelle selbst.

# IAM-Richtlinie, um einer AWS Lambda Funktion den Zugriff auf DynamoDB-Stream-Datensätze zu ermöglichen
<a name="iam-policy-example-lamda-process-dynamodb-streams"></a>

Wenn Sie möchten, dass bestimmte Aktionen auf der Grundlage von Ereignissen in einem DynamoDB-Stream ausgeführt werden, können Sie eine AWS Lambda Funktion schreiben, die durch diese Ereignisse ausgelöst wird. Eine solche Lambda-Funktion benötigt Berechtigungen zum Lesen von Daten aus dem DynamoDB-Stream. Weitere Informationen zur Verwendung der Lambda mit DynamoDB Streams finden Sie unter [DynamoDB Streams und -Trigger AWS Lambda](Streams.Lambda.md).

Um Lambda Berechtigungen zu erteilen, verwenden Sie die Berechtigungsrichtlinie, die der IAM-Rolle der Lambda-Funktion zugeordnet ist (-Ausführungsrolle). Geben Sie diese Richtlinie an, wenn Sie die Lambda-Funktion erstellen.

Sie können beispielsweise die folgenden Berechtigungsrichtlinien mit den Ausführungsrollen verknüpfen, um Lambda-Berechtigungen zu erteilen, die aufgeführten DynamoDB-Streams-Aktionen durchzuführen.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "APIAccessForDynamoDBStreams",
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetRecords",
                "dynamodb:GetShardIterator",
                "dynamodb:DescribeStream",
                "dynamodb:ListStreams"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/stream/*"
        }
    ]
}
```

------

Weitere Informationen finden Sie unter [AWS Lambda -Berechtigungen](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html) im *AWS Lambda -Entwicklerhandbuch*.

# IAM-Richtlinie für Lese- und Schreibzugriff auf einen DynamoDB-Accelerator-(DAX)-Cluster
<a name="iam-policy-example-read-write-dax-access"></a>

Die folgende Richtlinie ermöglicht einen Lese-, Schreib-, Aktualisierungs- und Löschzugriff auf einen DynamoDB-Accelerator-(DAX)-Cluster, der aber nicht der DynamoDB-Tabelle zugeordnet ist. Um diese Richtlinie zu verwenden, ersetzen Sie den Namen der AWS Region, Ihre Konto-ID und den Namen Ihres DAX-Clusters.

**Anmerkung**  
Diese Richtlinie ermöglicht den Zugriff auf DAX-Cluster, aber nicht auf die zugehörige DynamoDB-Tabelle. Stellen Sie sicher, dass Ihr DAX-Cluster über die richtige Richtlinie verfügt, um dieselben Vorgänge in der DynamoDB-Tabelle in Ihrem Namen auszuführen. 

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AmazonDynamoDBDAXDataOperations",
            "Effect": "Allow",
            "Action": [
                "dax:GetItem",
                "dax:PutItem",
                "dax:ConditionCheckItem",
                "dax:BatchGetItem",
                "dax:BatchWriteItem",
                "dax:DeleteItem",
                "dax:Query",
                "dax:UpdateItem",
                "dax:Scan"
            ],
            "Resource": "arn:aws:dax:eu-west-1:123456789012:cache/MyDAXCluster"
        }
    ]
}
```

------

Um diese Richtlinie so zu erweitern, dass sie den DAX-Zugriff für alle AWS Regionen für ein Konto abdeckt, verwenden Sie ein Platzhalterzeichen (\$1) für den Namen der Region.

```
"Resource": "arn:aws:dax:*:123456789012:cache/MyDAXCluster"
```







# Fehlerbehebung für Amazon-DynamoDB-Identität und -Zugriff
<a name="security_iam_troubleshoot"></a>

Verwenden Sie die folgenden Informationen, um häufige Probleme zu diagnostizieren und zu beheben, die beim Arbeiten mit DynamoDB und IAM auftreten könnten.

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

## Ich bin nicht autorisiert, eine Aktion in DynamoDB auszuführen.
<a name="security_iam_troubleshoot-no-permissions"></a>

Wenn Ihnen AWS-Managementkonsole mitgeteilt wird, dass Sie nicht berechtigt sind, eine Aktion auszuführen, müssen Sie sich an Ihren Administrator wenden, um Unterstützung zu erhalten. Ihr Administrator ist die Person, die Ihnen Ihren Benutzernamen und Ihr Passwort zur Verfügung gestellt hat.

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

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

In diesem Fall bittet Mateo seinen Administrator um die Aktualisierung seiner Richtlinien, um unter Verwendung der Aktion `my-example-widget` auf die Ressource `aws:GetWidget` zugreifen zu können.

## Ich bin nicht berechtigt, iam durchzufü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 DynamoDB ü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 Fehler tritt beispielsweise auf, wenn ein IAM-Benutzer mit dem Namen `marymajor` versucht, die Konsole zu verwenden, um eine Aktion in DynamoDB 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 DynamoDB-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 dazu, ob DynamoDB diese Funktionen unterstützt, finden Sie unter [Funktionsweise von Amazon DynamoDB mit IAM](security_iam_service-with-iam.md).
+ *Informationen dazu, wie Sie Zugriff auf Ihre Ressourcen in AWS-Konten Ihrem Besitz gewähren können, finden Sie im IAM-Benutzerhandbuch unter [Gewähren des Zugriffs für einen IAM-Benutzer in einem anderen AWS-Konto , dem Sie](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_aws-accounts.html) gehören.*
+ 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*.

# IAM-Richtlinie zum Verhindern des Erwerbs von reservierter DynamoDB-Kapazität
<a name="iam-policy-prevent-purchase-reserved-capacity"></a>

Mit Amazon DynamoDBs reservierter Kapazität bezahlen Sie im Vorfeld eine einmalige Gebühr und verpflichten sich zur Zahlung für eine Mindestnutzung während eines bestimmten Zeitraums mit erheblichen Einsparungen. Sie können die verwenden, um reservierte AWS-Managementkonsole Kapazität einzusehen und zu erwerben. Möglicherweise möchten Sie jedoch nicht, dass alle Benutzer in Ihrer Organisation reservierte Kapazität erwerben können. Weitere Informationen über reservierte Kapazität finden Sie unter [Amazon DynamoDB](https://aws.amazon.com/dynamodb/pricing).

DynamoDB bietet die folgenden API-Operationen für die Steuerung des Zugriffs auf das reservierte Kapazitätsmanagement:
+ `dynamodb:DescribeReservedCapacity` – gibt die Käufe der reservierten Kapazität zurück, die momentan bestehen
+ `dynamodb:DescribeReservedCapacityOfferings` – gibt Details über die Pläne der reservierten Kapazität zurück, die momentan von AWS angeboten werden.
+ `dynamodb:PurchaseReservedCapacityOfferings` – führt einen tatsächlichen Kauf von reservierter Kapazität durch

Der AWS-Managementkonsole verwendet diese API-Aktionen, um Informationen zur reservierten Kapazität anzuzeigen und Käufe zu tätigen. Sie können diese Operationen nicht von einem Anwendungsprogramm abrufen, da sie nur über die Konsole aufgerufen werden können. Sie können jedoch den Zugriff auf diese Operationen in einer IAM-Berechtigungsrichtlinie zulassen oder verweigern.

Die folgende Richtlinie ermöglicht es Benutzern, Käufe und Angebote für reservierte Kapazität mithilfe von AWS-Managementkonsole einzusehen. Neue Käufe werden jedoch verweigert.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowReservedCapacityDescriptions",
            "Effect": "Allow",
            "Action": [
                "dynamodb:DescribeReservedCapacity",
                "dynamodb:DescribeReservedCapacityOfferings"
            ],
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        },
        {
            "Sid": "DenyReservedCapacityPurchases",
            "Effect": "Deny",
            "Action": "dynamodb:PurchaseReservedCapacityOfferings",
            "Resource": "arn:aws:dynamodb:us-west-2:123456789012:*"
        }
    ]
}
```

------

Beachten Sie, dass diese Richtlinie das Platzhalterzeichen (\$1) verwendet, um Beschreibungsberechtigungen für alle, zu ermöglichen und den Kauf von reservierter DynamoDB-Kapazität für alle zu verweigern.

# Verwenden von IAM-Richtlinienbedingungen für die differenzierte Zugriffskontrolle
<a name="specifying-conditions"></a>

Wenn Sie in DynamoDB Berechtigungen gewähren, können Sie Bedingungen angeben, die bestimmen, wie eine Berechtigungsrichtlinie wirksam wird. 

## -Übersicht
<a name="FGAC_DDB.Overview"></a>

In DynamoDB haben Sie die Möglichkeit, beim Erteilen von Berechtigungen mithilfe einer IAM-Richtlinie Bedingungen anzugeben (siehe [Identity and Access Management für Amazon DynamoDB](security-iam.md)). Beispielsweise ist Folgendes möglich:
+ Erteilen von Berechtigungen, damit den Benutzern schreibgeschützter Zugriff auf bestimmte Elemente und Attribute in einer Tabelle oder einem sekundären Index gewährt wird.
+ Erteilen von Berechtigungen, damit den Benutzern lesegeschützter Zugriff auf bestimmte Attribute in einer Tabelle, basierend auf der Identität dieses Benutzers, gewährt wird.

In DynamoDB können Sie Bedingungen in einer IAM-Richtlinie mit Bedingungsschlüsseln angeben, wie im Anwendungsfall in folgendem Abschnitt dargestellt.

### Anwendungsfall für Berechtigungen
<a name="FGAC_DDB.OverviewUseCase"></a>

Zusätzlich zur Kontrolle des Zugriffs auf DynamoDB-API-Aktionen können Sie auch den Zugriff auf einzelne Datenelemente und Attribute kontrollieren. Sie können z. B. Folgendes tun:
+ Erteilen von Berechtigungen für eine Tabelle, aber Einschränken des Zugriffs auf bestimmte Elemente in dieser Tabelle basierend auf bestimmten Primärschlüsselwerten. Ein Beispiel wäre eine Social-Network-Anwendung für Spiele, in der alle gespeicherten Spieldaten eines Benutzers in einer einzelnen Tabelle gespeichert werden, der Benutzer aber keinen Zugriff auf die Datenelemente hat, die er nicht besitzt. Dies wird in der folgenden Darstellung gezeigt:  
![\[Ein Anwendungsfall, der einem Benutzer Zugriff auf Tabellenebene gewährt, aber den Zugriff auf bestimmte Datenelemente einschränkt\]](http://docs.aws.amazon.com/de_de/amazondynamodb/latest/developerguide/images/info-hiding-horizontal.png)
+ Ausblenden von Informationen, so dass nur eine Teilmenge der Attribute für den Benutzer sichtbar ist. Ein Beispiel dafür ist eine Anwendung, die Flugdaten für nahegelegene Flughäfen, basierend auf dem Standort des Benutzers, anzeigt. Namen von Airlines, Ankunfts- und Abflugzeiten und Flugnummer werden alle angezeigt. Jedoch werden Attribute, wie z. B. Pilotennamen oder die Anzahl der Passagiere ausgeblendet, wie in der folgenden Abbildung dargestellt:   
![\[Ein Anwendungsfall, bei dem Benutzern nur eine Teilmenge der Daten angezeigt wird, bestimmte Datenattribute jedoch ausgeblendet werden\]](http://docs.aws.amazon.com/de_de/amazondynamodb/latest/developerguide/images/info-hiding-vertical.png)

Zur Implementierung dieser Art von differenzierter Zugriffskontrolle, schreiben Sie eine IAM-Berechtigungsrichtlinie, die Bedingungen für den Zugriff auf Sicherheitsanmeldeinformationen und den dazugehörigen Berechtigungen angibt. Anschließend wenden Sie die Richtlinie für die -Benutzer, -Gruppen oder -Rollen an, die Sie mithilfe der IAM-Konsole erstellen. Ihre IAM-Richtlinie kann den Zugriff auf einzelne Elemente in einer Tabelle oder auf die Attribute dieser Elemente oder auf beides gleichzeitig beschränken.

Sie können wahlweise den Web-Identitätsverbund verwenden, um den Zugriff von Benutzern zu kontrollieren, die durch Login with Amazon, Facebook oder Google authentifiziert werden. Weitere Informationen finden Sie unter [Verwenden des Web-Identitätsverbunds](WIF.md).

Sie verwenden das IAM-`Condition`-Element, um eine differenzierte Zugriffskontrollrichtlinie zu implementieren. Indem ein `Condition`-Element einer Berechtigungsrichtlinie hinzugefügt wird, können Sie den Zugriff auf Elemente und Attribute in DynamoDB-Tabellen und -Indizes, basierend auf Ihren besonderen Geschäftsanforderungen, gewähren oder verweigern. 

Im folgenden Video wird die differenzierte Zugriffskontrolle in DynamoDB unter Verwendung von IAM-Richtlinienbedingungen erläutert.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/LbEmo_yulb0?si=VTSlNHVocAEYwhJi/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/LbEmo_yulb0?si=VTSlNHVocAEYwhJi)


## Grundlegendes zur detaillierten Zugriffskontrolle in DynamoDB
<a name="FGAC_DDB.UnderstandingFineGrainedAccess"></a>

Die detaillierte Zugriffskontrolle in DynamoDB ermöglicht es Ihnen, präzise Berechtigungsgrenzen auf mehreren Ebenen festzulegen:

1. **Zugriffskontrolle auf Elementebene:** Beschränken Sie Benutzer darauf, nur auf Elemente zuzugreifen, die bestimmte Schlüsselwerte enthalten, die in der Regel ihrer Identität oder ihrem Berechtigungsbereich entsprechen.

1. **Zugriffskontrolle auf Attributebene:** Beschränken Sie, welche Attribute (Spalten) Benutzer anzeigen oder ändern können, sodass Sie vertrauliche Informationen schützen und gleichzeitig Zugriff auf nicht vertrauliche Daten innerhalb derselben Elemente gewähren können.

1. **Vorgangsspezifische Kontrollen:** Wenden Sie je nach Art des ausgeführten Vorgangs unterschiedliche Berechtigungsregeln an.

Diese Kontrollen werden durch IAM-Richtlinien unter Verwendung von DynamoDB-spezifischen Bedingungsschlüsseln implementiert.

## Festlegung von Bedingungen: Verwenden von Bedingungsschlüsseln
<a name="FGAC_DDB.ConditionKeys"></a>

AWS stellt eine Reihe vordefinierter Bedingungsschlüssel (AWS allgemeine Bedingungsschlüssel) für alle AWS Dienste bereit, die IAM für die Zugriffskontrolle unterstützen. Sie können beispielsweise den `aws:SourceIp`-Bedingungsschlüssel verwenden, um die IP-Adresse des Anforderers zu prüfen, bevor eine Aktion durchgeführt werden darf. Weitere Informationen und eine Liste der AWS-weiten Schlüssel finden Sie unter [Verfügbare Schlüssel für Bedingungen](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys) im IAM-Benutzerhandbuch.

Im Folgenden sind die dienstspezifischen DynamoDB-Bedingungsschlüssel aufgeführt, die für DynamoDB gelten.

**`dynamodb:LeadingKeys`**  
Repräsentiert das erste Schlüsselattribut der Tabelle – mit anderen Worten, der Partitionsschlüssel. Der Schlüsselname `LeadingKeys` ist im Plural, sogar wenn der Schlüssel mit Einzelelementaktionen verwendet wird. Zudem müssen Sie den Modifikator `ForAllValues` verwenden, wenn `LeadingKeys` in einer Bedingung genutzt wird.

**`dynamodb:Select`**  
Repräsentiert den Parameter `Select` einer Anforderung. `Select` kann jeden der folgenden Werte annehmen:  
+ `ALL_ATTRIBUTES`
+ `ALL_PROJECTED_ATTRIBUTES`
+ `SPECIFIC_ATTRIBUTES`
+ `COUNT`
Dieser Bedingungsschlüssel wird zwar häufig mit Abfrage- und Scanvorgängen in Verbindung gebracht, gilt aber für alle DynamoDB-Operationen, die Artikelattribute zurückgeben, und ist für die Steuerung des Attributzugriffs über alle API-Aktionen hinweg unerlässlich. Durch die Verwendung StringEqualsIfExists oder ähnlicher Beschränkungen für diesen Bedingungsschlüssel werden Einschränkungen auf Operationen angewendet, für die dieser Bedingungsschlüssel gilt, während er bei Vorgängen, bei denen er nicht zutrifft, ignoriert wird.

**`dynamodb:Attributes`**  
Stellt eine Liste der Attribute der *obersten Ebene* dar, auf die durch eine Anfrage zugegriffen wird. Auf ein Attribut der obersten Ebene wird durch eine Anfrage zugegriffen, wenn es oder ein darin enthaltenes verschachteltes Attribut in den Anforderungsparametern angegeben ist. Bei einer `GetItem` Anfrage, die einen Wert `ProjectionExpression` von angibt`"Name, Address.City"`, würde die `dynamodb:Attributes` Liste beispielsweise „Name“ und „Adresse“ enthalten. Wenn der `Attributes` Parameter in einer detaillierten Zugriffskontrollrichtlinie aufgeführt ist, sollten Sie auch Einschränkungen `ReturnValues` und `Select` Parameter in Betracht ziehen, um den eingeschränkten Zugriff auf bestimmte Attribute für mehrere API-Aktionen wie`GetItem`, und sicherzustellen. `Query` `Scan`   
Diese Bedingung wird nur für die in der Anfrage angegebenen Attribute (z. B. in a ProjectionExpression) ausgewertet, nicht für Attribute in der Antwort. Wenn in der Anfrage kein Wert angegeben ProjectionExpression wird, werden alle Attribute unabhängig von etwaigen Attributbeschränkungen in der Richtlinie zurückgegeben. Einzelheiten zur ordnungsgemäßen Sicherung des Attributzugriffs finden Sie weiter unten im Abschnitt „Sicherstellen, dass attributbasierte Einschränkungen durchgesetzt werden“.

**`dynamodb:ReturnValues`**  
Stellt den `ReturnValues` Parameter einer Anfrage dar. Abhängig von der API-Aktion `ReturnValues` kann dies einer der folgenden Werte sein:   
+ `ALL_OLD`
+ `UPDATED_OLD`
+ `ALL_NEW`
+ `UPDATED_NEW`
+ `NONE`

**`dynamodb:ReturnConsumedCapacity`**  
Repräsentiert den Parameter `ReturnConsumedCapacity` einer Anforderung. `ReturnConsumedCapacity` kann einen der folgenden Werte annehmen:  
+ `TOTAL`
+ `NONE`

**`dynamodb:FirstPartitionKeyValues`**  
Stellt das erste Schlüsselattribut einer Tabelle dar, mit anderen Worten, den ersten Partitionsschlüssel. Der Schlüsselname `FirstPartitionKeyValues` ist im Plural, sogar wenn der Schlüssel mit Einzelelementaktionen verwendet wird. Darüber hinaus müssen Sie den `ForAllValues` Modifikator verwenden, wenn Sie ihn `FirstPartitionKeyValues` in einer Bedingung verwenden. `FirstPartitionKeyValues`und `LeadingKeys` kann austauschbar verwendet werden.

**`dynamodb:SecondPartitionKeyValues`**  
Ähnlich `dynamodb:FirstPartitionKeyValues`. Stellt den zweiten Partitionsschlüssel der Ressourcen dar. Der Schlüsselname `SecondPartitionKeyValues` ist im Plural, sogar wenn der Schlüssel mit Einzelelementaktionen verwendet wird.

**`dynamodb:ThirdPartitionKeyValues`**  
Ähnlich `dynamodb:FirstPartitionKeyValues`. Stellt den dritten Partitionsschlüssel der Ressourcen dar. Der Schlüsselname `ThirdPartitionKeyValues` ist im Plural, sogar wenn der Schlüssel mit Einzelelementaktionen verwendet wird.

**`dynamodb:FourthPartitionKeyValues`**  
Ähnlich `dynamodb:FirstPartitionKeyValues`. Stellt den vierten Partitionsschlüssel der Ressourcen dar. Der Schlüsselname `FourthPartitionKeyValues` ist im Plural, sogar wenn der Schlüssel mit Einzelelementaktionen verwendet wird.

### Stellt sicher, dass attributbasierte Einschränkungen durchgesetzt werden
<a name="FGAC_DDB.EnsuringAttributeRestrictions"></a>

Bei der Verwendung von attributbasierten Bedingungen zur Beschränkung des Zugriffs auf bestimmte Attribute ist es wichtig zu verstehen, wie diese Bedingungen bewertet werden:
+ **Attributbedingungen werden nur für Attribute ausgewertet, die in der Anfrage angegeben** sind, nicht für Attribute in der Antwort.
+ **Bei Lesevorgängen ohne ProjectionExpression** (GetItem, Query, Scan usw.) werden alle Attribute zurückgegeben, unabhängig von den Attributbeschränkungen in Ihrer Richtlinie. Um diese potenzielle Offenlegung vertraulicher Daten zu verhindern, implementieren Sie sowohl Attributbedingungen (`dynamodb:Attributes`) als auch eine Bedingung, die vorschreibt, dass bestimmte Attribute angefordert werden müssen (`dynamodb:Select`).
+ **Bei Schreibvorgängen** (PutItem, UpdateItem, DeleteItem) kann der ReturnValues Parameter vollständige Elemente zurückgeben, wodurch möglicherweise eingeschränkte Attribute verfügbar gemacht werden, selbst wenn der Schreibvorgang selbst Ihrer Richtlinie entspricht. Um diese Offenlegung zu verhindern, implementieren Sie in Ihrer Richtlinie sowohl Attributbedingungen (`dynamodb:Attributes`) als auch Einschränkungen für ReturnValues (`dynamodb:ReturnValues`).

### Begrenzen des Benutzerzugriffs
<a name="FGAC_DDB.LimitingAccess"></a>

Viele IAM-Berechtigungsrichtlinien erlauben Benutzern, nur auf die Elemente in einer Tabelle zuzugreifen, in denen der Partitions-Schlüsselwert der Benutzer-ID entspricht. Beispielsweise begrenzen die zuvor genannten Grenzwerte der Spielanwendung den Zugriff so, dass Benutzer nur auf Spieldaten Zugriff haben, die mit ihrer Benutzer-ID verknüpft sind. Die IAM-Ersetzungsvariablen `${www.amazon.com:user_id}`, `${graph.facebook.com:id}` und `${accounts.google.com:sub}` enthalten Benutzer-IDs für Login with Amazon, Facebook und Google. Um zu erfahren, wie eine Anwendung sich bei einem dieser Identitätsanbieter anmeldet und diese IDs erhält, klicken Sie auf [Verwenden des Web-Identitätsverbunds](WIF.md).

**Wichtig**  
Eine differenzierte Zugriffskontrolle wird nicht unterstützt, um die Replikation globaler Tabellen einzuschränken. Die Anwendung von Richtlinienbedingungen für eine differenzierte Zugriffskontrolle auf [Service-Prinzipale oder serviceverknüpfte Rollen](globaltables-security.md) von DynamoDB, die für die Replikation globaler Tabellen verwendet werden, kann die Replikation innerhalb einer globalen Tabelle unterbrechen. 

**Anmerkung**  
Jedes der Beispiele im folgenden Abschnitt legt die `Effect`-Klausel auf `Allow` fest und gibt nur die Aktionen, Ressourcen und Parameter an, die erlaubt sind. Zugriff hat lediglich das, was in der IAM-Richtlinie aufgeführt ist.  
In einigen Fällen ist es möglich, diese Richtlinien umzuschreiben, damit sie auf Verweigerung basieren (dies bedeutet, die `Effect`-Klausel auf `Deny` festzulegen und die gesamte Logik in der Richtlinie umzukehren). Allerdings empfehlen wir, die Nutzung von Richtlinien, die auf einer Verweigerung basieren, mit DynamoDB zu vermeiden, weil es verglichen mit Richtlinien, die auf einer Berechtigung basieren, schwierig ist, sie korrekt zu schreiben. Darüber hinaus können zukünftige Änderungen an der DynamoDB-API (oder Änderungen an den vorhandenen API-Eingaben) eine Richtlinie, die auf Verweigerung basiert, wirkungslos machen.

### Beispielrichtlinien: Verwenden von Bedingungen für die differenzierte Zugriffskontrolle
<a name="FGAC_DDB.Examples"></a>

In diesem Abschnitt werden einige Richtlinien für die Implementierung einer differenzierten Zugriffskontrolle auf DynamoDB-Tabellen und Indizes dargestellt.

**Anmerkung**  
Alle Beispiele verwenden die Region us-west-2 und enthalten ein fiktives Konto. IDs

#### Beispiel 1. Grundlegende Zugriffskontrolle auf Basis von Partitionsschlüsseln mit Attributeinschränkungen
<a name="FGAC_DDB.Examples.BasicPartitionKeyAccess"></a>

Nehmen wir beispielsweise eine mobile Spielanwendung, mit der Spieler aus einer Auswahl verschiedener Spiele wählen und diese auch spielen können. Die App verwendet eine DynamoDB-Tabelle mit dem Namen`GameScores`, um Highscores und andere Benutzerdaten zu verfolgen. Jedes Element in der Tabelle wird durch eine Benutzer-ID und den Namen des Spiels, das der Benutzer gespielt hat, eindeutig identifiziert. Die `GameScores`-Tabelle verfügt über einen Primärschlüssel, der aus einem Partitionsschlüssel (`UserId`) und einem Sortierschlüssel (`GameTitle`) besteht. Benutzer haben nur Zugriff auf Spieldaten, die mit ihrer Benutzer-ID verknüpft sind. Ein Benutzer, der ein Spiel spielen möchte, muss zu einer IAM-Rolle mit dem Namen `GameRole` gehören, der eine Sicherheitsrichtlinie zugewiesen ist.

Um Benutzerberechtigungen in dieser Anwendung zu verwalten, können Sie eine Berechtigungsrichtlinie wie die folgende schreiben:

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAccessToOnlyItemsMatchingUserID",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query",
            "dynamodb:PutItem",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem",
            "dynamodb:BatchWriteItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ],
               "dynamodb:Attributes":[
                  "UserId",
                  "GameTitle",
                  "Wins",
                  "Losses",
                  "TopScore",
                  "TopScoreDateTime"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

Zusätzlich zum Gewähren von Berechtigungen für bestimmte `Action`-Aktionen (Element `GameScores`) in der Tabelle `Resource` (Element ) verwendet das Element `Condition` folgende DynamoDB-spezifische Bedingungsschlüssel, die die Berechtigungen wie folgt begrenzen:
+ `dynamodb:LeadingKeys` – Dieser Bedingungsschlüssel gewährt Benutzern ausschließlich den Zugriff auf die Elemente, in denen der Partitions-Schlüsselwert ihrer Benutzer-ID entspricht. Diese `${www.amazon.com:user_id}`-ID ist eine Ersetzungsvariable. Weitere Informationen zu Ersetzungsvariablen finden Sie unter [Verwenden des Web-Identitätsverbunds](WIF.md).
+ `dynamodb:Attributes` – Dieser Bedingungsschlüssel begrenzt den Zugriff auf angegebene Attribute, sodass nur die Aktionen, die in der Berechtigungsrichtlinie aufgeführt sind, die Werte für diese Attribute zurückgeben können. Zusätzlich stellt die `StringEqualsIfExists`-Klausel sicher, dass die Anwendung immer eine Liste der spezifischen Attribute bereitstellen muss, nach denen gehandelt wird, und dass die Anwendung nicht alle Attribute anfordern kann.

Wenn eine IAM-Richtlinie evaluiert wird, wird das Ergebnis immer entweder True (Zugriff erlaubt) oder False (Zugriff verweigert) sein. Wenn irgendein Teil des `Condition`-Elements False ist, dann wird die gesamte Richtlinie als False gewertet und der Zugriff wird verweigert.

**Wichtig**  
Wenn Sie `dynamodb:Attributes` verwenden, müssen Sie die Namen aller Primärschlüssel und Indexschlüsselattribute für die Tabelle und alle sekundären Indizes, die in der Richtlinie aufgeführt sind, angeben. Andernfalls kann DynamoDB diese Schlüsselattribute nicht verwenden, um die angeforderte Aktion durchzuführen.

IAM-Richtliniendokumente können nur die folgenden Unicode-Zeichen enthalten: horizontale Tabulatorschritt (U\$10009), Zeilenvorschub (U\$1000A), Wagenrücklauf (U\$1000D) und Zeichen im Bereich von U\$10020 bis U\$100FF.

#### Beispiel 2: Erteilen Sie Berechtigungen, die den Zugriff auf Elemente mit einem bestimmten Partitionsschlüsselwert einschränken
<a name="FGAC_DDB.Examples.PartitionKeyValue"></a>

Die folgende Berechtigungsrichtlinie erteilt Berechtigungen, die eine Reihe von DynamoDB-Aktionen in der `GamesScore` Tabelle erlauben. Sie verwendet den `dynamodb:LeadingKeys`-Bedingungsschlüssel, um Benutzeraktionen nur für diejenigen Elemente einzuschränken, deren `UserID`-Partitions-Schlüsselwert der eindeutigen Benutzer-ID von „Login with Amazon“ für diese Anwendung entspricht.

**Wichtig**  
Die Liste von Aktionen schließt Berechtigungen für `Scan` nicht mit ein, weil `Scan` alle Elemente zurückgibt, unabhängig von den Hauptschlüsseln.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"FullAccessToUserItems",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query",
            "dynamodb:PutItem",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem",
            "dynamodb:BatchWriteItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ]
            }
         }
      }
   ]
}
```

------

**Anmerkung**  
Wenn Sie Richtlinienvariablen verwenden, müssen Sie Version 2012-10-17 in der Richtlinie explizit angeben. Die Standardversion der Zugriffsrichtliniensprache, 2008-10-17, unterstützt keine Richtlinienvariablen.

Um schreibgeschützten Zugriff zu implementieren, können Sie alle Aktionen entfernen, die die Daten ändern können. In der folgenden Richtlinie werden nur die Aktionen in die Bedingung integriert, die schreibgeschützten Zugriff erteilen.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"ReadOnlyAccessToUserItems",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ]
            }
         }
      }
   ]
}
```

------

**Wichtig**  
Wenn Sie `dynamodb:Attributes` verwenden, müssen Sie die Namen aller Primärschlüssel und Indexschlüsselattribute für die Tabelle und alle sekundären Indizes, die in der Richtlinie aufgeführt sind, angeben. Andernfalls kann DynamoDB diese Schlüsselattribute nicht verwenden, um die angeforderte Aktion durchzuführen.

#### Beispiel 3: Erteilen Sie Berechtigungen, die den Zugriff auf bestimmte Attribute in einer Tabelle einschränken
<a name="FGAC_DDB.Examples.SpecificAttributes"></a>

Die folgende Berechtigungsrichtlinie erlaubt den Zugriff auf nur zwei bestimmte Attribute in einer Tabelle, indem sie den `dynamodb:Attributes`-Bedingungsschlüssel hinzufügt. Diese Attribute können in einem bedingten Schreib- oder Scan-Filter gelesen, geschrieben oder evaluiert werden.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"LimitAccessToSpecificAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:UpdateItem",
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:BatchGetItem",
            "dynamodb:Scan"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:Attributes":[
                  "UserId",
                  "TopScore"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES",
               "dynamodb:ReturnValues":[
                  "NONE",
                  "UPDATED_OLD",
                  "UPDATED_NEW"
               ]
            }
         }
      }
   ]
}
```

------

**Anmerkung**  
Die Richtlinie verfolgt einen Listen-Ansatz, der den Zugriff auf eine benannte Gruppe von Attributen erteilt. Sie können eine äquivalente Richtlinie schreiben, die stattdessen den Zugriff auf andere Attribute verweigert. Wir empfehlen diesen Ansatz einer Ablehnungsliste nicht. Benutzer können die Namen dieser verweigerten Attribute bestimmen, indem sie dem Prinzip der geringsten Rechte folgen, wie es in Wikipedia unter http://en.wikipedia erklärt wird. org/wiki/Principle\$1of\$1least\$1privilege und verwenden einen Ansatz mit einer Zulassungsliste, um alle zulässigen Werte aufzuzählen, anstatt die verweigerten Attribute anzugeben.

Diese Richtlinie erlaubt `PutItem`, `DeleteItem` und `BatchWriteItem` nicht. Diese Aktionen ersetzen immer das gesamte vorherige Element. Dies würde Benutzern ermöglichen, die vorherigen Werte für Attribute, auf die sie nicht zugriffsberechtigt sind, zu löschen.

Die `StringEqualsIfExists`-Klausel in der Berechtigungsrichtlinie gewährleistet Folgendes:
+ Wenn der Benutzer den Parameter `Select` angibt, dann muss sein Wert `SPECIFIC_ATTRIBUTES` sein. Diese Anforderung verhindert, dass die API-Aktion jegliche Attribute, die nicht zulässig sind, zurückgibt, z. B. von einer Indexprojektion.
+ Wenn der Benutzer den Parameter `ReturnValues` angibt, dann muss sein Wert `NONE`, `UPDATED_OLD` oder `UPDATED_NEW` sein. Dies ist erforderlich, weil die `UpdateItem`-Aktion ebenfalls implizite Lesevorgänge durchführt, um zu überprüfen, ob ein zu ersetzendes Element existiert, und damit vorherige Attributwerte, wenn angefordert, zurückgegeben werden können. Eine solche Einschränkung von `ReturnValues` stellt sicher, dass Benutzer nur die zulässigen Attribute lesen oder schreiben können.
+ Die `StringEqualsIfExists`-Klausel gewährleistet, dass nur einer dieser Parameter – `Select` oder `ReturnValues` – pro Anforderung im Kontext der zulässigen Aktionen genutzt werden kann.

Es folgen einige Variationen dieser Richtlinie:
+ Um nur Leseaktionen zu erlauben, können Sie `UpdateItem` aus der Liste der zulässigen Aktionen entfernen. Da keine der verbleibenden Aktionen `ReturnValues` akzeptiert, können Sie `ReturnValues` aus der Bedingung entfernen. Sie können auch `StringEqualsIfExists` zu `StringEquals` ändern, weil der Parameter `Select` immer einen Wert hat (`ALL_ATTRIBUTES`, sofern nicht anders angegeben).
+ Um nur Leseaktionen zu erlauben, können Sie alles außer `UpdateItem` aus der Liste der zulässigen Aktionen entfernen. Da `UpdateItem` den Parameter `Select` nicht verwendet, können Sie `Select` aus der Bedingung entfernen. Sie müssen auch `StringEqualsIfExists` zu `StringEquals` ändern, weil der Parameter `ReturnValues` immer einen Wert hat (`NONE` sofern nicht anders angegeben).
+ Um alle Attribute zu erlauben, deren Name einem Muster entspricht, verwenden Sie `StringLike` anstatt `StringEquals` und verwenden Sie Platzhalter (\$1) für mehrere Zeichen.

#### Beispiel 4: Erteilen Sie Berechtigungen, um Aktualisierungen bestimmter Attribute zu verhindern
<a name="FGAC_DDB.Examples.PreventUpdates"></a>

Die folgende Berechtigungsrichtlinie beschränkt den Benutzerzugriff, so dass nur die Aktualisierung bestimmter Attribute zulässig ist, die von dem `dynamodb:Attributes`-Bedingungsschlüssel identifiziert wurden. Die `StringNotLike`-Bedingung hindert eine Anwendung daran, die Attribute zu aktualisieren, die mithilfe des `dynamodb:Attributes`-Bedingungsschlüssels angegeben wurden.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"PreventUpdatesOnCertainAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:UpdateItem"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/GameScores",
         "Condition":{
            "ForAllValues:StringNotLike":{
               "dynamodb:Attributes":[
                  "FreeGamesAvailable",
                  "BossLevelUnlocked"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES",
               "dynamodb:ReturnValues":[
                  "NONE",
                  "UPDATED_OLD",
                  "UPDATED_NEW"
               ]
            }
         }
      }
   ]
}
```

------

Beachten Sie Folgendes:
+ Die `UpdateItem`-Aktion benötigt, wie andere Schreibaktionen, Lesezugriff auf die Elemente, damit sie Werte vor und nach dem Aktualisieren zurückgeben kann. In der Richtlinie beschränken Sie die Aktionen, so dass nur auf Attribute zugegriffen werden kann, die für eine Aktualisierung zulässig sind, indem der `dynamodb:ReturnValues`-Bedingungsschlüssel angegeben wird. Der Bedingungsschlüssel beschränkt `ReturnValues` in der Anforderung auf das Angeben von `NONE`, `UPDATED_OLD` oder `UPDATED_NEW` und schließt `ALL_OLD` oder `ALL_NEW` nicht mit ein.
+ Der `StringEqualsIfExists` Operator stellt sicher, dass, falls `dynamodb:Select` oder in der Anfrage vorhanden `dynamodb:ReturnValues` ist, diese den angegebenen Werten entsprechen muss. Dadurch wird verhindert, dass Operationen vollständige Elemente zurückgeben.
+ Wenn Sie die Aktualisierung von Attributen einschränken, sollten Sie auch kontrollieren, welche Daten zurückgegeben werden können, um die Offenlegung von Informationen über geschützte Attribute zu verhindern.
+ Die `PutItem`- und `DeleteItem`-Aktionen ersetzen ein gesamtes Element und erlauben daher Anwendungen, beliebige Attribute zu ändern. Wenn Sie also eine Anwendung darauf beschränken, nur bestimmte Attribute zu aktualisieren, sollten Sie für diese APIs keine Genehmigung erteilen.

#### Beispiel 5: Erteilen Sie Berechtigungen, um nur projizierte Attribute in einem Index abzufragen
<a name="FGAC_DDB.Examples.QueryProjectedAttributes"></a>

Die folgende Berechtigungsrichtlinie erlaubt Abfragen über einen sekundären Index (`TopScoreDateTimeIndex`), indem der `dynamodb:Attributes`-Bedingungsschlüssel verwendet wird. Die Richtlinie beschränkt auch Abfragen auf das Anfordern nur bestimmter Attribute, die in den Index projiziert wurden.

Um eine Anwendung aufzufordern, eine Liste von Attributen in der Abfrage anzugeben, gibt die Richtlinie auch den Bedingungsschlüssel `dynamodb:Select` an, um sicherzustellen, dass der Parameter `Select` der `Query`-DynamoDB-Aktion `SPECIFIC_ATTRIBUTES` lautet. Die Liste von Attributen ist auf eine spezifische Liste beschränkt, die mithilfe des `dynamodb:Attributes`-Bedingungsschlüssels bereitgestellt wird.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"QueryOnlyProjectedIndexAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:Query"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:Attributes":[
                  "TopScoreDateTime",
                  "GameTitle",
                  "Wins",
                  "Losses",
                  "Attempts"
               ]
            },
            "StringEquals":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

Die folgende Berechtigungsrichtlinie ist ähnlich, aber die Abfrage muss alle Attribute anfordern, die in den Index projiziert wurden.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"QueryAllIndexAttributes",
         "Effect":"Allow",
         "Action":[
            "dynamodb:Query"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex"
         ],
         "Condition":{
            "StringEquals":{
               "dynamodb:Select":"ALL_PROJECTED_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

#### Beispiel 6: Erteilen Sie Berechtigungen, um den Zugriff auf bestimmte Attribute und Partitionsschlüsselwerte einzuschränken
<a name="FGAC_DDB.Examples.AttributesAndKeyValues"></a>

Die folgende Berechtigungsrichtlinie erlaubt bestimmte DynamoDB-Aktionen in einer Tabelle (angegeben im Element `Action`) und einem Tabellenindex (angegeben im Element `Resource`). Die Richtlinie verwendet den `dynamodb:LeadingKeys` Bedingungsschlüssel, um Berechtigungen nur auf die Elemente zu beschränken, deren Partitionsschlüsselwert mit der Facebook-ID des Benutzers übereinstimmt.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	                    
   "Statement":[
      {
         "Sid":"LimitAccessToCertainAttributesAndKeyValues",
         "Effect":"Allow",
         "Action":[
            "dynamodb:UpdateItem",
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:BatchGetItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores",
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores/index/TopScoreDateTimeIndex"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${graph.facebook.com:id}"
               ],
               "dynamodb:Attributes":[
                  "attribute-A",
                  "attribute-B"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES",
               "dynamodb:ReturnValues":[
                  "NONE",
                  "UPDATED_OLD",
                  "UPDATED_NEW"
               ]
            }
         }
      }
   ]
}
```

------

Beachten Sie Folgendes:
+ Durch die Richtlinie (`UpdateItem`) zulässige Schreibaktionen können nur Attribut-A oder Attribut-B geändert werden.
+ Da die Richtlinie `UpdateItem` zulässt, kann eine Anwendung neue Elemente einfügen und die ausgeblendeten Attribute sind in den neuen Elementen dann Null. Wenn diese Attribute in `TopScoreDateTimeIndex` projiziert werden, bietet die Richtlinie den zusätzlichen Vorteil, dass Abfragen verhindert werden, die Abrufe aus der Tabelle verursachen.
+ Anwendungen können nur die in `dynamodb:Attributes` aufgeführten Attribute lesen. Mit dieser vorhandenen Richtlinie muss eine Anwendung den Parameter `Select` auf `SPECIFIC_ATTRIBUTES` in Leseanforderungen festlegen und es können nur Listenattribute angefordert werden. Die Anwendung kann bei Schreibanforderungen `ReturnValues` nicht auf `ALL_OLD` oder `ALL_NEW` festlegen und sie kann keine bedingten Schreibvorgänge basierend auf beliebigen anderen Attributen durchführen.

#### Beispiel 7: Verweigern Sie Berechtigungen, um den Zugriff auf bestimmte Attribute in einer Tabelle zu beschränken
<a name="FGAC_DDB.Examples.DenySpecificAttributes"></a>

Die folgende Richtlinie verweigert den Zugriff auf vertrauliche Attribute und stellt sicher, dass diese Einschränkung nicht durch das Auslassen eines Projektionsausdrucks umgangen werden kann. Sie ermöglicht den allgemeinen Zugriff auf die `CustomerData` Tabelle und verweigert gleichzeitig ausdrücklich den Zugriff auf Attribute. `SSN` `CreditCardNumber`

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:Scan"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/CustomerData"
      },
      {
         "Effect":"Deny",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:Scan"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/CustomerData",
         "Condition":{
            "ForAnyValue:StringEquals":{
               "dynamodb:Attributes":[
                  "SSN",
                  "CreditCardNumber"
               ]
            }
         }
      },
      {
         "Effect":"Deny",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:Query",
            "dynamodb:Scan"
         ],
         "Resource":"arn:aws:dynamodb:us-west-2:123456789012:table/CustomerData",
         "Condition":{
            "StringNotEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

## Verwandte Themen
<a name="w2aac39c21c15c11"></a>
+  [Identity and Access Management für Amazon DynamoDB](security-iam.md) 
+ [DynamoDB-API-Berechtigungen: Referenzliste für Aktionen, Ressourcen und Bedingungen](api-permissions-reference.md)

# Verwenden des Web-Identitätsverbunds
<a name="WIF"></a>

Wenn Sie eine Anwendung schreiben, die für eine große Anzahl von Benutzern bestimmt ist, können Sie optional den *Web-Identitätsverbund* für die Authentifizierung und Autorisierung verwenden. Mit dem Web-Identitätsverbund ist es nicht mehr erforderlich, einzelne -Benutzer zu erstellen. Stattdessen können sich Benutzer bei einem Identitätsanbieter anmelden und dann temporäre Sicherheitsanmeldedaten von AWS -Security-Token-Service (AWS STS) abrufen. Die App kann diese Anmeldeinformationen dann verwenden, um auf AWS Dienste zuzugreifen.

Ein Web-Identitätsverbund unterstützt die folgenden Identitätsanbieter:
+ Login with Amazon
+ Facebook
+ Google

## Weitere Ressourcen für den Web-Identitätsverbund
<a name="WIF.AdditionalResources"></a>

Die folgenden Ressourcen können Ihnen dabei helfen, mehr über den Web-Identitätsverbund zu erfahren:
+ Der Post [Web Identity Federation verwendet AWS SDK für .NET](https://aws.amazon.com/blogs/developer/web-identity-federation-using-the-aws-sdk-for-net) im AWS Entwicklerblog um zu erläutern, wie der Web-Identitätsverbund mit Facebook verwendet wird. Sie enthält Codefragmente in C\$1, die zeigen, wie eine IAM-Rolle mit Webidentität übernommen wird und wie temporäre Sicherheitsanmeldedaten für den Zugriff auf eine Ressource verwendet werden. AWS 
+ Die [AWS Mobile SDK for iOS](https://aws.amazon.com/sdkforios/) und die [AWS Mobile SDK für Android](https://aws.amazon.com/sdkforandroid/) enthalten Beispiel-Apps. Sie enthalten Code, der zeigt, wie die Identitätsanbieter aufgerufen werden und wie dann die Informationen von diesen Anbietern verwendet werden, um temporäre Sicherheitsanmeldeinformationen zu beziehen und zu nutzen.
+ Der Artikel [Web Identity Federation with Mobile Applications](https://aws.amazon.com/articles/4617974389850313) behandelt den Web-Identitätsverbund und zeigt ein Beispiel dafür, wie der Web-Identitätsverbund für den Zugriff auf eine Ressource verwendet werden kann. AWS 

## Beispielrichtlinie für einen Web-Identitätsverbund
<a name="WIF.Example"></a>

Um zu zeigen, wie Sie den Web-Identitätsverbund mit DynamoDB verwenden können, schauen Sie sich noch einmal die *GameScores*Tabelle an, die in eingeführt wurde. [Verwenden von IAM-Richtlinienbedingungen für die differenzierte Zugriffskontrolle](specifying-conditions.md) Hier ist der Primärschlüssel für. *GameScores*


****  

| Tabellenname | Primärschlüsseltyp | Partitions-Schlüsselname und -Typ | Sortierschlüsselname und -Typ | 
| --- | --- | --- | --- | 
| GameScores (UserId, GameTitle, ...) | Zusammengesetzt | Name des Attributs: UserId Typ: Zeichenfolge | Name des Attributs: GameTitle Typ: Zeichenfolge | 

Angenommen, dass eine mobile Spielanwendung diese Tabelle verwendet und diese Anwendung Tausenden oder sogar Millionen von Benutzern unterstützen muss. Bei dieser Größenordnung wird es sehr schwierig, einzelne App-Benutzer zu verwalten und sicherzustellen, dass jeder Benutzer nur auf seine eigenen Daten in der *GameScores*Tabelle zugreifen kann. Glücklicherweise verfügen viele Benutzer bereits über Konten bei einem externen Identitätsanbieter wie Facebook, Google oder Login with Amazon. So ist es durchaus sinnvoll, einen dieser Anbieter für die Authentifizierungsaufgaben zu nutzen.

Um dies mit dem Web-Identitätsverbund durchzuführen, muss der Anwendungsentwickler die Anwendung bei einem Identitätsanbieter (wie Login with Amazon) registrieren und eine eindeutige Anwendungs-ID erhalten. Als nächstes muss der Entwickler eine IAM-Rolle erstellen. (In diesem Beispiel ist diese Rolle benannt *GameRole*.) An die Rolle muss ein IAM-Richtliniendokument angehängt sein, in dem die Bedingungen angegeben sind, unter denen die App auf die *GameScores*Tabelle zugreifen kann.

Wenn ein Benutzer ein Spiel spielen möchte, meldet er sich mit seinem „Login with Amazon“-Konto bei der Spielanwendung an. Die App ruft dann AWS -Security-Token-Service (AWS STS) auf, gibt das Login mit der Amazon-App-ID an und fordert die Mitgliedschaft bei an *GameRole*. AWS STS gibt temporäre AWS Anmeldeinformationen an die App zurück und ermöglicht ihr, vorbehaltlich des *GameRole*Richtliniendokuments, den Zugriff auf die *GameScores*Tabelle.

Das folgende Diagramm zeigt, wie diese einzelnen Komponenten zusammenpassen.

![\[Workflow einer Gaming-App. Die App verwendet Amazon ID und AWS STS um temporäre Anmeldeinformationen für den Zugriff auf eine DynamoDB-Tabelle zu erhalten.\]](http://docs.aws.amazon.com/de_de/amazondynamodb/latest/developerguide/images/wif-overview.png)


**Übersicht eines Web-Identitätsverbunds**

1. Die Anwendung ruft einen externen Identitätsanbieter auf, um den Benutzer und die Anwendung zu authentifizieren. Der Identitätsanbieter gibt ein Web-Identitäts-Token an die Anwendung zurück.

1. Die App ruft das Web-Identity-Token auf AWS STS und übergibt es als Eingabe. AWS STS autorisiert die App und gibt ihr temporäre AWS Zugangsdaten. Die App darf gemäß der Sicherheitsrichtlinie der Rolle eine IAM-Rolle (*GameRole*) annehmen und auf AWS Ressourcen zugreifen.

1. Die App ruft DynamoDB auf, um auf die *GameScores*Tabelle zuzugreifen. Da sie das übernommen hat *GameRole*, unterliegt die App den Sicherheitsrichtlinien, die mit dieser Rolle verknüpft sind. Das Richtliniendokument verhindert, dass die Anwendung auf Daten zugreift, die dem Benutzer nicht gehören.

Hier ist noch einmal die Sicherheitsrichtlinie dafür *GameRole*, die gezeigt wurde in[Verwenden von IAM-Richtlinienbedingungen für die differenzierte Zugriffskontrolle](specifying-conditions.md):

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAccessToOnlyItemsMatchingUserID",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query",
            "dynamodb:PutItem",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem",
            "dynamodb:BatchWriteItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ],
               "dynamodb:Attributes":[
                  "UserId",
                  "GameTitle",
                  "Wins",
                  "Losses",
                  "TopScore",
                  "TopScoreDateTime"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

Die `Condition` Klausel bestimmt, welche Elemente in der App sichtbar *GameScores*sind. Dies geschieht durch das Vergleichen von Login with Amazon mit den `UserId`-Partitions-Schlüsselwerten in `GameScores`. Nur die Elemente des aktuellen Benutzers können verarbeitet werden, indem Sie eine der DynamoDB-Aktionen verwenden, die in dieser Richtlinie aufgeführt sind. Auf andere Elemente in der Tabelle kann nicht zugegriffen werden. Außerdem kann nur auf die spezifischen Attribute, die in der Richtlinie aufgeführt sind, zugegriffen werden.

# Vorbereiten der Nutzung des Web-Identitätsverbunds
<a name="WIF.PreparingForUse"></a>

Wenn Sie ein Anwendungsentwickler sind und den Web-Identitätsverbund für Ihre Anwendung verwenden möchten, führen Sie die folgenden Schritte aus:

1. **Anmelden als Entwickler bei einem externen Identitätsanbieter.** Die folgenden externen Links stellen Informationen zur Anmeldung mit unterstützten Identitätsanbietern bereit:
   + [Login with Amazon-Entwicklerzentrum](http://login.amazon.com/)
   + [Registrierung](https://business.facebook.com/business/loginpage) auf der Facebook-Seite
   + [Verwenden von OAuth 2.0 für den Zugriff APIs auf Google](https://developers.google.com/accounts/docs/OAuth2) auf der Google-Website

1. **Registrieren der Anwendung bei dem Identitätsanbieter.** Wenn Sie dies tun, stellt der Anbieter Ihnen eine ID zur Verfügung, die in Ihrer Anwendung eindeutig ist. Wenn Sie möchten, dass Ihre Anwendung mit mehreren Identitätsanbietern arbeitet, müssen Sie eine Anwendungs-ID von jedem einzelnen Anbieter abrufen.

1. **Erstellen Sie eine oder mehrere IAM-Rollen. **Sie benötigen eine Rolle für jeden Identitätsanbieter für jede Anwendung. Sie können beispielsweise eine Rolle erstellen, die von einer Anwendung übernommen werden kann, in der der Benutzer sich mit Login with Amazon angemeldet hat, eine zweite Rolle für die gleiche Anwendung, in der der Benutzer sich mit Facebook angemeldet hat und eine dritte Rolle für die Anwendung, in der sich der Benutzer mit Google angemeldet hat.

   Im Rahmen des Rollenerstellungsprozesses, müssen Sie eine IAM-Richtlinie der Rolle zuordnen. Ihr Richtliniendokument sollte die DynamoDB-Ressourcen, die für Ihre Anwendung erforderlich sind, und die Berechtigungen für den Zugriff auf diese Ressourcen definieren.

Weitere Informationen finden Sie unter [Informationen zum Web-Identitätsverbund](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html) im *IAM-Benutzerhandbuch*. 

**Anmerkung**  
Als Alternative können Sie Amazon Cognito verwenden. AWS -Security-Token-Service Amazon Cognito ist der bevorzugte Service für die Verwaltung von temporären Anmeldeinformationen für mobile Anwendungen. Weitere Informationen finden Sie unter [Abrufen von Anmeldeinformationen](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-credentials.html) im *Entwicklerhandbuch zu Amazon Cognito*. 

## Generieren einer IAM-Richtlinie mit der DynamoDB-Konsole
<a name="WIF.PreparingForUse.DDBConsole"></a>

Die DynamoDB-Konsole kann Ihnen helfen, eine IAM-Richtlinie für die Verwendung mit dem Web-Identitätsverbund zu erstellen. Dazu wählen Sie eine DynamoDB-Tabelle aus und geben den Identitätsanbieter, Aktionen und Attribute an, die in der Richtlinie enthalten sein sollen. Die DynamoDB-Konsole erstellt dann eine Richtlinie, die Sie einer IAM-Rolle zuordnen können.

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die DynamoDB-Konsole unter. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

1.  Wählen Sie im Navigationsbereich **Tables** (Tabellen) aus. 

1.  Wählen Sie in der Liste der Tabellen die Tabelle aus, für die Sie die IAM-Richtlinie erstellen möchten. 

1.  Wählen Sie die Schaltfläche **Aktionen** und **Zugriffskontrollrichtlinie erstellen** aus. 

1.  Wählen Sie den Identitätsanbieter, Aktionen und Attribute für die Richtlinie aus. 

    Wenn Sie die gewünschten Einstellungen vorgenommen haben, wählen Sie **Richtlinie generieren** aus. Die erstellte Richtlinie wird angezeigt. 

1.  Wählen Sie auf **Dokumentation anzeigen** aus und befolgen Sie die erforderlichen Schritte, um die generierte Richtlinie einer IAM-Rolle zuzuordnen. 

# Schreiben Ihrer Anwendung, um den Web-Identitätsverbund zu nutzen
<a name="WIF.RunningYourApp"></a>

Um den Web-Identitätsverbund zu verwenden, muss die Anwendung die IAM-Rolle übernehmen, die Sie erstellt haben. Von diesem Punkt an berücksichtigt die Anwendung die Zugriffsrichtlinie, die mit der Rolle verknüpft ist.

Wenn Ihre Anwendung den Web-Identitätsverbund zur Laufzeit nutzt, muss sie die folgenden Schritte befolgen:

1. **Authentifizieren mit einem externen Identitätsanbieter.** Ihre Anwendung muss den Identitätsanbieter mithilfe der Schnittstelle, die er bereitstellt, aufrufen. Die genaue Art und Weise, wie Sie den Benutzer authentifizieren, hängt von dem Anbieter und der Plattform ab, auf der Sie die Anwendung ausführen. Wenn der Benutzer nicht bereits angemeldet ist, kümmert sich der Identitätsanbieter in der Regel um die Anzeige einer Anmeldeseite dieses Anbieters.

   Nachdem der Identitätsanbieter den Benutzer authentifiziert hat, gibt der Anbieter ein Web-Identitäts-Token an Ihre Anwendung zurück. Das Format dieses Tokens hängt von dem Anbieter ab, ist in der Regel aber eine sehr lange Zeichenfolge.

1. **Besorgen Sie sich temporäre AWS Sicherheitsanmeldeinformationen.** Zu diesem Zweck sendet die App eine `AssumeRoleWithWebIdentity`-Anforderung an AWS -Security-Token-Service (AWS STS). Diese Anforderung enthält Folgendes:
   + Das Web-Identitäts-Token aus dem vorherigen Schritt
   + Die Anwendungs-ID des Identitätsanbieters
   + Der Amazon-Ressourcenname (ARN) der IAM;-Rolle, die Sie für diesen Identitätsanbieter für diese Anwendung erstellt haben

   AWS STS gibt eine Reihe von AWS Sicherheitsanmeldeinformationen zurück, die nach einer bestimmten Zeit ablaufen (standardmäßig 3.600 Sekunden).

   Das Folgende ist eine Beispielanforderung und -antwort von einer `AssumeRoleWithWebIdentity`-Aktion in AWS STS. Das Web-Identitäts-Token wurde von dem „Login with Amazon“-Identitätsanbieter erhalten.

   ```
   GET / HTTP/1.1
   Host: sts.amazonaws.com
   Content-Type: application/json; charset=utf-8
   URL: https://sts.amazonaws.com/?ProviderId=www.amazon.com
   &DurationSeconds=900&Action=AssumeRoleWithWebIdentity
   &Version=2011-06-15&RoleSessionName=web-identity-federation
   &RoleArn=arn:aws:iam::123456789012:role/GameRole
   &WebIdentityToken=Atza|IQEBLjAsAhQluyKqyBiYZ8-kclvGTYM81e...(remaining characters omitted)
   ```

   

   ```
   <AssumeRoleWithWebIdentityResponse
     xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
     <AssumeRoleWithWebIdentityResult>
       <SubjectFromWebIdentityToken>amzn1.account.AGJZDKHJKAUUSW6C44CHPEXAMPLE</SubjectFromWebIdentityToken>
       <Credentials>
         <SessionToken>AQoDYXdzEMf//////////wEa8AP6nNDwcSLnf+cHupC...(remaining characters omitted)</SessionToken>
         <SecretAccessKey>8Jhi60+EWUUbbUShTEsjTxqQtM8UKvsM6XAjdA==</SecretAccessKey>
         <Expiration>2013-10-01T22:14:35Z</Expiration>
         <AccessKeyId>06198791C436IEXAMPLE</AccessKeyId>
       </Credentials>
       <AssumedRoleUser>
         <Arn>arn:aws:sts::123456789012:assumed-role/GameRole/web-identity-federation</Arn>
         <AssumedRoleId>AROAJU4SA2VW5SZRF2YMG:web-identity-federation</AssumedRoleId>
       </AssumedRoleUser>
     </AssumeRoleWithWebIdentityResult>
     <ResponseMetadata>
       <RequestId>c265ac8e-2ae4-11e3-8775-6969323a932d</RequestId>
     </ResponseMetadata>
   </AssumeRoleWithWebIdentityResponse>
   ```

1. **Auf AWS Ressourcen zugreifen.** Die Antwort von AWS STS enthält Informationen, die die Anwendung benötigt, um auf DynamoDB-Ressourcen zuzugreifen:
   + Die Felder `AccessKeyID`-, `SecretAccessKey`- und `SessionToken` beinhalten Sicherheitsanmeldeinformationen, die nur für diesen Benutzer und diese Anwendung gültig sind. 
   + Das `Expiration`-Feld gibt die Frist für diese Anmeldeinformationen an, nach der sie nicht mehr gültig sind.
   + Das `AssumedRoleId`-Feld enthält den Namen einer sitzungsspezifischen IAM-Rolle, der von der Anwendung übernommen wurde. Die Anwendung berücksichtigt die Zugriffskontrollen im IAM–Richtliniendokument für die Dauer dieser Sitzung.
   + Das `SubjectFromWebIdentityToken`-Feld enthält die eindeutige ID, die in einer IAM-Richtlinienvariablen für diesen bestimmten Identitätsanbieter erscheint. Die Folgenden sind die IAM-Richtlinienvariablen für unterstützte Anbieter und einige Beispielwerte für diese:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/amazondynamodb/latest/developerguide/WIF.RunningYourApp.html)

Beispiele für IAM-Richtlinien, in denen diese Richtlinienvariablen verwendet werden, finden Sie unter [Beispielrichtlinien: Verwenden von Bedingungen für die differenzierte Zugriffskontrolle](specifying-conditions.md#FGAC_DDB.Examples).

Weitere Informationen zur AWS STS Generierung temporärer Zugangsdaten finden Sie unter [Temporäre Sicherheitsanmeldedaten anfordern](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) im *IAM-Benutzerhandbuch*.

# DynamoDB-API-Berechtigungen: Referenzliste für Aktionen, Ressourcen und Bedingungen
<a name="api-permissions-reference"></a>

[Identity and Access Management für Amazon DynamoDB](security-iam.md)Wenn Sie eine Berechtigungsrichtlinie für eine IAM-Identität (identitätsbasierte Richtlinie) verfassen, können Sie die Liste von [Aktionen, Ressourcen und Bedingungsschlüssel für Amazon DynamoDB](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazondynamodb.html) im *IAM-Benutzerhandbuch*-Referenz verwenden. Auf der Seite werden alle DynamoDB-API-Operationen, die entsprechenden Aktionen, für die Sie Berechtigungen zur Ausführung der Aktion erteilen können, und die AWS Ressource, für die Sie die Berechtigungen erteilen können, aufgeführt. Die Aktionen geben Sie im Feld `Action` und den Wert für die Ressource im Feld `Resource` der Richtlinie an.

Sie können in Ihren DynamoDB-Richtlinien AWS-weite Bedingungsschlüssel verwenden, um Bedingungen auszudrücken. *Eine vollständige Liste der AWS-weiten Schlüssel finden Sie in der [Referenz zu den IAM-JSON-Richtlinienelementen](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys) im IAM-Benutzerhandbuch.*

Zusätzlich zu den AWS-weiten Bedingungsschlüsseln verfügt DynamoDB über eigene spezifische Schlüssel, die Sie in Bedingungen verwenden können. Weitere Informationen finden Sie unter [Verwenden von IAM-Richtlinienbedingungen für die differenzierte Zugriffskontrolle](specifying-conditions.md).

## Verwandte Themen
<a name="w2aac39c21c15c15b9"></a>
+  [Identity and Access Management für Amazon DynamoDB](security-iam.md)
+ [Verwenden von IAM-Richtlinienbedingungen für die differenzierte Zugriffskontrolle](specifying-conditions.md)