

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.

# Verwenden der attributbasierten Zugriffskontrolle mit DynamoDB
<a name="attribute-based-access-control"></a>

Die [attributebasierte Zugriffskontrolle (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) ist eine Autorisierungsstrategie, die Zugriffsberechtigungen auf der Grundlage von [Tag-Bedingungen](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.html) in Ihren identitätsbasierten Richtlinien oder anderen AWS Richtlinien, wie ressourcenbasierten Richtlinien und IAM-Richtlinien der Organisation, definiert. Sie können Tags an DynamoDB-Tabellen anhängen, die dann anhand der Tag-basierten Bedingungen ausgewertet werden. Die mit einer Tabelle verknüpften Indizes übernehmen die Tags, die Sie der Tabelle hinzufügen. Sie können für jede DynamoDB-Tabelle bis zu 50 Tags hinzufügen. Die maximale Größe, die für alle Tags in einer Tabelle unterstützt wird, beträgt 10 KB. Weitere Informationen zum Taggen von DynamoDB-Ressourcen und zu Tagging-Einschränkungen finden Sie unter [Tagging von Ressourcen in DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tagging.Operations.html) and [Markierungseinschränkungen in DynamoDB](Tagging.md#TaggingRestrictions).

Weitere Informationen zur Verwendung von Tags zur Steuerung des Zugriffs auf AWS Ressourcen finden Sie in den folgenden Themen im IAM-Benutzerhandbuch:
+ [Wofür ist ABAC AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)
+ [Steuern des Zugriffs auf AWS Ressourcen mithilfe von Tags](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)

Mit ABAC können Sie unterschiedliche Zugriffsebenen für Ihre Teams und Anwendungen erzwingen, um mit weniger Richtlinien Aktionen für DynamoDB-Tabellen auszuführen. Sie können ein Tag im [Bedingungselement](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) einer IAM-Richtlinie angeben, um den Zugriff auf Ihre DynamoDB-Tabellen oder -Indizes zu kontrollieren. Diese Bedingungen bestimmen die Zugriffsebene, die ein IAM-Prinzipal, ein Benutzer oder eine Rolle auf DynamoDB-Tabellen und -Indizes erhält. Wenn ein IAM-Prinzipal eine Zugriffsanforderung an DynamoDB stellt, werden die Tags der Ressource und Identität anhand der Tag-Bedingungen in der IAM-Richtlinie ausgewertet. Danach wird die Richtlinie nur wirksam, wenn die Tag-Bedingungen erfüllt sind. Auf diese Weise können Sie eine IAM-Richtlinie erstellen, die effektiv eine der folgenden Aussagen enthält:
+ *Erlaube dem Benutzer, nur die Ressourcen zu verwalten, die über ein Tag mit dem Schlüssel `X` und dem Wert `Y` verfügen*.
+ *Verweigere allen Benutzern den Zugriff auf Ressourcen, die mit dem Schlüssel `X` getaggt sind.*

Sie können beispielsweise eine Richtlinie erstellen, die es Benutzern ermöglicht, eine Tabelle nur zu aktualisieren, wenn sie über das Tag-Schlüssel-Wert-Paar `"environment": "staging"` verfügt. Sie können den ResourceTag Bedingungsschlüssel [aws:](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag) verwenden, um den Zugriff auf eine Tabelle auf der Grundlage der Tags, die an diese Tabelle angehängt sind, zu erlauben oder zu verweigern.

Sie können attributebasierte Bedingungen bei der Erstellung der Richtlinie oder zu einem späteren Zeitpunkt mithilfe von AWS API AWS-Managementkonsole, AWS Command Line Interface (AWS CLI), AWS SDK oder angeben. AWS CloudFormation

Im folgenden Beispiel ist die [UpdateItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html)Aktion für eine Tabelle mit dem Namen zulässig, `MusicTable` wenn sie einen Tag-Schlüssel mit dem Namen `environment` und dem Wert enthält. `production`

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "dynamodb:UpdateItem"
      ],
      "Resource": "arn:aws:dynamodb:*:*:table/MusicTable",
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/environment": "production"
        }
      }
    }
  ]
}
```

------

**Topics**
+ [Weshalb sollte ich ABAC verwenden?](#why-use-abac)
+ [Bedingungsschlüssel für die Implementierung von ABAC mit DynamoDB](#condition-keys-implement-abac)
+ [Überlegungen zur Verwendung von ABAC mit DynamoDB](#abac-considerations)
+ [Aktivieren von ABAC in DynamoDB](abac-enable-ddb.md)
+ [Verwenden von ABAC mit DynamoDB-Tabellen und -Indizes](abac-implementation-ddb-tables.md)
+ [Beispiele für die Verwendung von ABAC mit DynamoDB-Tabellen und -Indizes](abac-example-use-cases.md)
+ [Behebung häufiger ABAC-Fehler für DynamoDB-Tabellen und -Indizes](abac-troubleshooting.md)

## Weshalb sollte ich ABAC verwenden?
<a name="why-use-abac"></a>
+ **Einfachere Richtlinienverwaltung:** Sie verwenden weniger Richtlinien, da Sie keine verschiedenen Richtlinien erstellen müssen, um die Zugriffsebene für jeden IAM-Prinzipal zu definieren.
+ **Skalierbare Zugriffskontrolle:** Die Skalierung der Zugriffskontrolle ist mit ABAC einfacher, da Sie Ihre Richtlinien nicht aktualisieren müssen, wenn Sie neue DynamoDB-Ressourcen erstellen. Sie können Tags verwenden, um den Zugriff auf IAM-Prinzipale zu autorisieren, die Tags enthalten, die den Tags der Ressource entsprechen. Sie können neue IAM-Prinzipale oder DynamoDB-Ressourcen einbinden und entsprechende Tags anwenden, um automatisch die erforderlichen Berechtigungen zu gewähren, ohne Änderungen an den Richtlinien vornehmen zu müssen.
+ **Detaillierte Berechtigungsverwaltung:** Als bewährte Methode sollten Sie beim Erstellen von Richtlinien die [geringste Berechtigung gewähren](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege). Mit ABAC können Sie Tags für den IAM-Prinzipal erstellen und verwenden, um ihm Zugriff auf bestimmte Aktionen und Ressourcen zu gewährten, die den Tags für den IAM-Prinzipal entsprechen. 
+ **Ausrichtung am Unternehmensverzeichnis:** Sie können Tags vorhandenen Mitarbeiterattributen aus Ihrem Unternehmensverzeichnis zuordnen, um Ihre Zugriffskontrollrichtlinien an Ihre Organisationsstruktur anzupassen.

## Bedingungsschlüssel für die Implementierung von ABAC mit DynamoDB
<a name="condition-keys-implement-abac"></a>

Sie können die folgenden Bedingungsschlüssel in Ihren AWS Richtlinien verwenden, um die Zugriffsebene auf Ihre DynamoDB-Tabellen und -Indizes zu steuern:
+ [aws: ResourceTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag): Steuert den Zugriff basierend darauf, ob das Tag-Schlüssel-Wert-Paar in einer DynamoDB-Tabelle oder einem DynamoDB-Index mit dem Tag-Schlüssel und -Wert in einer Richtlinie übereinstimmt oder nicht. Dieser Bedingungsschlüssel ist für alle relevant, die mit einer vorhandenen Tabelle oder einem APIs vorhandenen Index arbeiten.

  Die `dynamodb:ResourceTag`-Bedingungen werden so ausgewertet, als hätten Sie einer Ressource keine Tags angehängt.
+ [aws: RequestTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag): Ermöglicht den Vergleich des Tag-Schlüssel-Wert-Paars, das in der Anfrage übergeben wurde, mit dem Tag-Paar, das Sie in der Richtlinie angeben. Dieser Bedingungsschlüssel ist relevant für diejenigen APIs , die Tags als Teil der Nutzlast der Anfrage enthalten. Dazu APIs gehören [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)und. [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html)
+ [aws:TagKeys:](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys) Vergleicht die Tag-Schlüssel in einer Anfrage mit den Schlüsseln, die Sie in der Richtlinie angeben. Dieser Bedingungsschlüssel ist relevant für diejenigen APIs , die Tags als Teil der Nutzlast der Anfrage enthalten. Dazu APIs gehören `CreateTable``TagResource`, und`UntagResource`.

## Überlegungen zur Verwendung von ABAC mit DynamoDB
<a name="abac-considerations"></a>

Wenn Sie ABAC mit DynamoDB-Tabellen oder -Indizes verwenden, berücksichtigen Sie die folgenden Überlegungen:
+ Tagging und ABAC werden für DynamoDB Streams nicht unterstützt.
+ Tagging und ABAC werden für DynamoDB-Backups nicht unterstützt. Um ABAC mit Backups zu verwenden, empfehlen wir die Verwendung von [AWS Backup](https://docs.aws.amazon.com/aws-backup/latest/devguide/whatisbackup.html).
+ Tags werden in wiederhergestellten Tabellen nicht beibehalten. Sie müssen den wiederhergestellten Tabellen Tags hinzufügen, bevor Sie Tag-basierte Bedingungen in Ihren Richtlinien verwenden können.

# Aktivieren von ABAC in DynamoDB
<a name="abac-enable-ddb"></a>

In den meisten AWS-Konten Fällen ist ABAC standardmäßig aktiviert. Mithilfe der [DynamoDB-Konsole](https://console.aws.amazon.com/dynamodb/) können Sie überprüfen, ob ABAC für Ihr Konto aktiviert ist. Stellen Sie dazu sicher, dass Sie die DynamoDB-Konsole mit einer Rolle öffnen, die über die [dynamodb](#required-permissions-abac): -Berechtigung verfügt. GetAbacStatus Öffnen Sie dann die Seite **Einstellungen** der DynamoDB-Konsole.

Wenn Sie die Registerkarte **Attributbasierte Zugriffskontrolle** nicht sehen oder wenn auf der Registerkarte der Status **An** angezeigt wird, ist ABAC für Ihr Konto aktiviert. Wenn auf der Registerkarte **Attributbasierte Zugangskontrolle** jedoch wie in der folgenden Abbildung gezeigt der Status **Aus** angezeigt wird, ist ABAC für Ihr Konto nicht aktiviert.

## Attributbasierte Zugriffskontrolle – nicht aktiviert
<a name="abac-disabled-image"></a>

![\[Seite Einstellungen der DynamoDB-Konsole, auf der die Registerkarte Attributbasierte Zugriffskontrolle angezeigt wird\]](http://docs.aws.amazon.com/de_de/amazondynamodb/latest/developerguide/images/ddb-console-settings-page.png)


ABAC ist nicht aktiviert, weshalb tagbasierte Bedingungen, die in ihren identitätsbasierten Richtlinien oder anderen Richtlinien angegeben sind, noch geprüft werden müssen. AWS-Konten Wenn ABAC für Ihr Konto nicht aktiviert ist, werden die Tag-basierten Bedingungen in Ihren Richtlinien, die auf DynamoDB-Tabellen oder -Indizes angewendet werden sollen, so ausgewertet, als wären keine Tags für Ihre Ressourcen oder API-Anforderungen vorhanden. Wenn ABAC für Ihr Konto aktiviert ist, werden die Tag-basierten Bedingungen in den Richtlinien Ihres Kontos unter Berücksichtigung der mit Ihren Tabellen oder API-Anforderungen verknüpften Tags ausgewertet.

Um ABAC für Ihr Konto zu aktivieren, empfehlen wir, zunächst Ihre Richtlinien wie im Abschnitt [Richtlinienprüfung](#policy-audit-for-abac) beschrieben zu überprüfen. Schließen Sie dann die [erforderlichen Berechtigungen für ABAC](#required-permissions-abac) in Ihre IAM-Richtlinie ein. Führen Sie abschließend die unter [Aktivieren von ABAC in der Konsole](#abac-enable-console) beschriebenen Schritte aus, um ABAC für Ihr Konto in der aktuellen Region zu aktivieren. Nachdem Sie ABAC aktiviert haben, können Sie die Option innerhalb der nächsten sieben Kalendertage nach der Aktivierung wieder deaktivieren.

**Topics**
+ [Überprüfen Ihrer Richtlinien vor der Aktivierung von ABAC](#policy-audit-for-abac)
+ [IAM-Berechtigungen, die für die Aktivierung von ABAC erforderlich sind](#required-permissions-abac)
+ [Aktivieren von ABAC in der Konsole](#abac-enable-console)

## Überprüfen Ihrer Richtlinien vor der Aktivierung von ABAC
<a name="policy-audit-for-abac"></a>

Bevor Sie ABAC für Ihr Konto aktivieren, prüfen Sie Ihre Richtlinien, um sicherzustellen, dass die Tag-basierten Bedingungen, die möglicherweise in den Richtlinien Ihres Kontos enthalten sind, wie vorgesehen eingerichtet sind. Durch die Prüfung Ihrer Richtlinien können Sie Überraschungen durch Autorisierungsänderungen in Ihren DynamoDB-Workflows vermeiden, nachdem ABAC aktiviert wurde. Beispiele für die Verwendung von attributbasierten Bedingungen mit Tags sowie das Vorher-Nachher-Verhalten der ABAC-Implementierung finden Sie unter [Beispiele für die Verwendung von ABAC mit DynamoDB-Tabellen und -IndizesBeispielanwendungsfälle](abac-example-use-cases.md).

## IAM-Berechtigungen, die für die Aktivierung von ABAC erforderlich sind
<a name="required-permissions-abac"></a>

Sie benötigen die `dynamodb:UpdateAbacStatus`-Berechtigung, um ABAC für Ihr Konto in der aktuellen Region zu aktivieren. Um zu überprüfen, ob ABAC für Ihr Konto aktiviert ist, benötigen Sie außerdem die `dynamodb:GetAbacStatus`-Berechtigung. Mit dieser Berechtigung können Sie den ABAC-Status für ein Konto in einer beliebigen Region anzeigen. Sie benötigen diese Berechtigungen zusätzlich zu den Berechtigungen, die für den Zugriff auf die DynamoDB-Konsole erforderlich sind.

Die folgende IAM-Richtlinie gewährt die Berechtigung, ABAC zu aktivieren und ihren Status für ein Konto in der aktuellen Region anzuzeigen.

```
{
"version": "2012-10-17", 		 	 	 &TCX5-2025-waiver;
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:UpdateAbacStatus",
                "dynamodb:GetAbacStatus"
             ],
            "Resource": "*"
        }
    ]
}
```

## Aktivieren von ABAC in der Konsole
<a name="abac-enable-console"></a>

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 die Region, für die Sie ABAC aktivieren möchten.

1. Wählen Sie im linken Navigationsbereich die Option **Einstellungen** aus.

1. Führen Sie auf der Seite **Settings (Einstellungen)** die folgenden Schritte aus:

   1. Wählen Sie auf der Registerkarte **Attributbasierte Zugriffskontrolle** die Option **Aktivieren** aus.

   1. Wählen im Feld **Einstellung für die attributbasierte Zugriffskontrolle bestätigen** die Option **Aktivieren** aus, um Ihre Auswahl zu bestätigen.

      Dadurch wird ABAC für die aktuelle Region aktiviert und auf der Registerkarte **Attributbasierte Zugriffskontrolle** wird der Status **Ein** angezeigt.

      Wenn Sie ABAC nach der Aktivierung in der Konsole wieder deaktivieren möchten, können Sie die Deaktivierung innerhalb der nächsten sieben Kalendertage nach der Aktivierung durchführen. Wählen Sie dafür **Deaktivieren** auf der Registerkarte **Attributbasierte Zugriffskontrolle** auf der Seite **Einstellungen** aus.
**Anmerkung**  
Das Aktualisieren des ABAC-Status ist ein asynchroner Vorgang. Wenn die Tags in Ihren Richtlinien nicht sofort ausgewertet werden, müssen Sie möglicherweise einige Zeit warten, da die Änderungen letztendlich konsistent angewendet werden.

# Verwenden von ABAC mit DynamoDB-Tabellen und -Indizes
<a name="abac-implementation-ddb-tables"></a>

Die folgenden Schritte zeigen, wie Sie Berechtigungen mithilfe von ABAC einrichten. In diesem Beispielszenario fügen Sie einer DynamoDB-Tabelle Tags hinzu und erstellen eine IAM-Rolle mit einer Richtlinie, die Tag-basierte Bedingungen beinhaltet. Anschließend testen Sie die zulässigen Berechtigungen für die DynamoDB-Tabelle, indem Sie die Tag-Bedingungen erfüllen.

**Topics**
+ [Schritt 1: Hinzufügen von Tags zu einer DynamoDB-Tabelle](#abac-add-table-tags)
+ [Schritt 2: Erstellen einer IAM-Rolle mit einer Richtlinie, die Tag-basierte Bedingungen enthält](#abac-create-iam-role)
+ [Schritt 3: Testen der Berechtigungen](#abac-test-permissions)

## Schritt 1: Hinzufügen von Tags zu einer DynamoDB-Tabelle
<a name="abac-add-table-tags"></a>

Sie können Tags zu neuen oder vorhandenen DynamoDB-Tabellen hinzufügen, indem Sie die AWS API AWS-Managementkonsole, AWS Command Line Interface (AWS CLI), das AWS SDK oder verwenden. AWS CloudFormation Der folgende CLI-Befehl [tag-resource](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/tag-resource.html) fügt beispielsweise einer Tabelle namens `MusicTable` ein Tag hinzu.

```
aws dynamodb tag-resource —resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/MusicTable —tags Key=environment,Value=staging
```

## Schritt 2: Erstellen einer IAM-Rolle mit einer Richtlinie, die Tag-basierte Bedingungen enthält
<a name="abac-create-iam-role"></a>

[Erstellen Sie eine IAM-Richtlinie](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) mithilfe des [ResourceTagBedingungsschlüssels aws: /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag), um das in der IAM-Richtlinie angegebene Tag-Schlüssel-Wert-Paar mit dem Schlüssel-Wert-Paar zu vergleichen, das an die Tabelle angehängt ist. Die folgende Beispielrichtlinie ermöglicht es Benutzern, Elemente in Tabellen abzulegen oder zu aktualisieren, wenn diese Tabellen das Tag-Schlüssel-Wert-Paar `"environment": "staging"` enthalten. Wenn eine Tabelle das angegebene Tag-Schlüssel-Wert-Paar nicht enthält, werden diese Aktionen verweigert.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem",
                "dynamodb:UpdateItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/environment": "staging"
                }
            }
        }
    ]
}
```

------

## Schritt 3: Testen der Berechtigungen
<a name="abac-test-permissions"></a>

1. Hängen Sie die IAM-Richtlinie einem Testbenutzer oder einer Testrolle in Ihrem AWS-Konto zu. Stellen Sie sicher, dass der von Ihnen verwendete IAM-Prinzipal nicht bereits über eine andere Richtlinie Zugriff auf die DynamoDB-Tabelle hat.

1. Achten Sie darauf, dass Ihre DynamoDB-Tabelle den `"environment"`-Tag-Schlüssel mit dem Wert `"staging"` enthält.

1. Führen Sie die Aktionen `dynamodb:PutItem` und `dynamodb:UpdateItem` für die mit Tags versehene Tabelle aus. Diese Aktionen sollten erfolgreich sein, wenn das `"environment": "staging"`-Tag-Schlüssel-Wert-Paar vorhanden ist.

   Wenn Sie diese Aktionen für eine Tabelle ausführen, die nicht über das `"environment": "staging"`-Tag-Schlüssel-Wert-Paar verfügt, schlägt Ihre Anforderung mit einem `AccessDeniedException`-Fehler fehl.

Sie können sich auch die anderen im folgenden Abschnitt beschriebenen [Beispielanwendungsfälle](abac-example-use-cases.md) ansehen, um ABAC zu implementieren und weitere Tests durchzuführen.

# Beispiele für die Verwendung von ABAC mit DynamoDB-Tabellen und -Indizes
<a name="abac-example-use-cases"></a>

Die folgenden Beispiele zeigen einige Anwendungsfälle zur Implementierung von attributbasierten Bedingungen mithilfe von Tags.

**Topics**
+ [Beispiel 1: Eine Aktion mit aws zulassen: ResourceTag](#abac-allow-example-resource-tag)
+ [Beispiel 2: Eine Aktion mit aws zulassen: RequestTag](#abac-allow-example-request-tag)
+ [Beispiel 3: Eine Aktion mit aws ablehnen: TagKeys](#abac-deny-example-tag-key)

## Beispiel 1: Eine Aktion mit aws zulassen: ResourceTag
<a name="abac-allow-example-resource-tag"></a>

Mithilfe des `aws:ResourceTag/tag-key`-Bedingungsschlüssels können Sie das Tag-Schlüssel-Wert-Paar, das in einer IAM-Richtlinie angegeben ist, mit dem Schlüssel-Wert-Paar vergleichen, das in einer DynamoDB-Tabelle angehängt ist. Sie können beispielsweise eine bestimmte Aktion zulassen, z. B. [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)wenn die Tag-Bedingungen in einer IAM-Richtlinie und einer Tabelle übereinstimmen. Führen Sie dazu die folgenden Schritte aus:

------
#### [ Using the AWS CLI ]

1. Erstellen Sie eine -Tabelle. Im folgenden Beispiel wird der AWS CLI Befehl [create-table verwendet, um eine Tabelle](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/create-table.html) mit dem Namen zu erstellen. `myMusicTable`

   ```
   aws dynamodb create-table \
     --table-name myMusicTable \
     --attribute-definitions AttributeName=id,AttributeType=S \
     --key-schema AttributeName=id,KeyType=HASH \
     --provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
     --region us-east-1
   ```

1. Fügen Sie dieser Tabelle ein Tag hinzu. Im folgenden Beispiel für den AWS CLI Befehl [tag-resource](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/tag-resource.html) wird das Schlüssel-Wert-Paar für das Tag hinzugefügt. `Title: ProductManager` `myMusicTable`

   ```
   aws dynamodb tag-resource --region us-east-1 --resource-arn arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable --tags Key=Title,Value=ProductManager
   ```

1. Erstellen Sie eine [Inline-Richtlinie](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) und fügen Sie sie einer Rolle hinzu, an die die [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) AWS verwaltete Richtlinie angehängt ist, wie im folgenden Beispiel gezeigt.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "dynamodb:PutItem",
         "Resource": "arn:aws:dynamodb:*:*:table/*",
         "Condition": {
           "StringEquals": {
             "aws:ResourceTag/Title": "ProductManager"
           }
         }
       }
     ]
   }
   ```

------

   Mit dieser Richtlinie kann die Aktion `PutItem` für die Tabelle ausgeführt werden, wenn der Tag-Schlüssel und -Wert, die der Tabelle angehängt sind, mit den in der Richtlinie angegebenen Tags übereinstimmen.

1. Nehmen Sie die Rolle mit den in Schritt 3 beschriebenen Richtlinien an.

1. Verwenden Sie den AWS CLI Befehl [put-item](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/put-item.html), um ein Element in den zu platzieren. `myMusicTable`

   ```
   aws dynamodb put-item \
       --table-name myMusicTable --region us-east-1 \
       --item '{
           "id": {"S": "2023"},
           "title": {"S": "Happy Day"},
           "info": {"M": {
               "rating": {"N": "9"},
               "Artists": {"L": [{"S": "Acme Band"}, {"S": "No One You Know"}]},
               "release_date": {"S": "2023-07-21"}
           }}
       }'
   ```

1. Scannen Sie die Tabelle, um zu überprüfen, ob das Element der Tabelle hinzugefügt wurde.

   ```
   aws dynamodb scan --table-name myMusicTable  --region us-east-1
   ```

------
#### [ Using the AWS SDK for Java 2.x ]

1. Erstellen Sie eine -Tabelle. Das folgende Beispiel verwendet die [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)API, um eine Tabelle mit dem Namen zu erstellen. `myMusicTable`

   ```
   DynamoDbClient dynamoDB = DynamoDbClient.builder().region(region).build();
   CreateTableRequest createTableRequest = CreateTableRequest.builder()
       .attributeDefinitions(
           Arrays.asList(
               AttributeDefinition.builder()
               .attributeName("id")
               .attributeType(ScalarAttributeType.S)
               .build()
           )
       )
       .keySchema(
           Arrays.asList(
               KeySchemaElement.builder()
               .attributeName("id")
               .keyType(KeyType.HASH)
               .build()
           )
       )
       .provisionedThroughput(ProvisionedThroughput.builder()
           .readCapacityUnits(5L)
           .writeCapacityUnits(5L)
           .build()
       )
       .tableName("myMusicTable")
       .build();
   
   CreateTableResponse createTableResponse = dynamoDB.createTable(createTableRequest);
   String tableArn = createTableResponse.tableDescription().tableArn();
   String tableName = createTableResponse.tableDescription().tableName();
   ```

1. Fügen Sie dieser Tabelle ein Tag hinzu. Die [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html)API im folgenden Beispiel fügt dem Tag das Schlüssel-Wert-Paar `Title: ProductManager` hinzu. `myMusicTable`

   ```
   TagResourceRequest tagResourceRequest = TagResourceRequest.builder()
       .resourceArn(tableArn)
       .tags(
           Arrays.asList(
               Tag.builder()
               .key("Title")
               .value("ProductManager")
               .build()
           )
       )
       .build();
   dynamoDB.tagResource(tagResourceRequest);
   ```

1. Erstellen Sie eine [Inline-Richtlinie](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) und fügen Sie sie einer Rolle hinzu, an die die [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) AWS verwaltete Richtlinie angehängt ist, wie im folgenden Beispiel gezeigt.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": "dynamodb:PutItem",
         "Resource": "arn:aws:dynamodb:*:*:table/*",
         "Condition": {
           "StringEquals": {
             "aws:ResourceTag/Title": "ProductManager"
           }
         }
       }
     ]
   }
   ```

------

   Mit dieser Richtlinie kann die Aktion `PutItem` für die Tabelle ausgeführt werden, wenn der Tag-Schlüssel und -Wert, die der Tabelle angehängt sind, mit den in der Richtlinie angegebenen Tags übereinstimmen.

1. Nehmen Sie die Rolle mit den in Schritt 3 beschriebenen Richtlinien an.

1. Verwenden Sie die [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)API, um ein Element in den zu platzieren`myMusicTable`.

   ```
   HashMap<String, AttributeValue> info = new HashMap<>();
   info.put("rating", AttributeValue.builder().s("9").build());
   info.put("artists", AttributeValue.builder().ss(List.of("Acme Band","No One You Know").build());
   info.put("release_date", AttributeValue.builder().s("2023-07-21").build());
   
   HashMap<String, AttributeValue> itemValues = new HashMap<>();
   itemValues.put("id", AttributeValue.builder().s("2023").build());
   itemValues.put("title", AttributeValue.builder().s("Happy Day").build());
   itemValues.put("info", AttributeValue.builder().m(info).build());
   
   
   PutItemRequest putItemRequest = PutItemRequest.builder()
                   .tableName(tableName)
                   .item(itemValues)
                   .build();
   dynamoDB.putItem(putItemRequest);
   ```

1. Scannen Sie die Tabelle, um zu überprüfen, ob das Element der Tabelle hinzugefügt wurde.

   ```
   ScanRequest scanRequest = ScanRequest.builder()
                   .tableName(tableName)
                   .build();
                   
   ScanResponse scanResponse = dynamoDB.scan(scanRequest);
   ```

------
#### [ Using the AWS SDK für Python (Boto3) ]

1. Erstellen Sie eine -Tabelle. Das folgende Beispiel verwendet die [CreateTable](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)API, um eine Tabelle mit dem Namen zu erstellen`myMusicTable`.

   ```
   create_table_response = ddb_client.create_table(
       AttributeDefinitions=[
           {
               'AttributeName': 'id',
               'AttributeType': 'S'
           },
       ],
       TableName='myMusicTable',
       KeySchema=[
           {
               'AttributeName': 'id',
               'KeyType': 'HASH'
           },
       ],
           ProvisionedThroughput={
           'ReadCapacityUnits': 5,
           'WriteCapacityUnits': 5
       },
   )
   
   table_arn = create_table_response['TableDescription']['TableArn']
   ```

1. Fügen Sie dieser Tabelle ein Tag hinzu. Die [TagResource](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_TagResource.html)API im folgenden Beispiel fügt dem Tag das Schlüssel-Wert-Paar `Title: ProductManager` hinzu. `myMusicTable`

   ```
   tag_resouce_response = ddb_client.tag_resource(
       ResourceArn=table_arn,
       Tags=[
           {
               'Key': 'Title',
               'Value': 'ProductManager'
           },
       ]
   )
   ```

1. Erstellen Sie eine [Inline-Richtlinie](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) und fügen Sie sie einer Rolle hinzu, an die die [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) AWS verwaltete Richtlinie angehängt ist, wie im folgenden Beispiel gezeigt.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
           "Effect": "Allow",
           "Action": "dynamodb:PutItem",
           "Resource": "arn:aws:dynamodb:*:*:table/*",
           "Condition": {
               "StringEquals": {
               "aws:ResourceTag/Title": "ProductManager"
               }
           }
           }
       ]
       }
   ```

------

   Mit dieser Richtlinie kann die Aktion `PutItem` für die Tabelle ausgeführt werden, wenn der Tag-Schlüssel und -Wert, die der Tabelle angehängt sind, mit den in der Richtlinie angegebenen Tags übereinstimmen.

1. Nehmen Sie die Rolle mit den in Schritt 3 beschriebenen Richtlinien an.

1. Verwenden Sie die [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)API, um ein Element in den zu platzieren`myMusicTable`.

   ```
   put_item_response = client.put_item(
       TableName = 'myMusicTable'
       Item = {
           'id': '2023',
           'title': 'Happy Day',
           'info': {
               'rating': '9',
               'artists': ['Acme Band','No One You Know'],
               'release_date': '2023-07-21'
           }
       }
   )
   ```

1. Scannen Sie die Tabelle, um zu überprüfen, ob das Element der Tabelle hinzugefügt wurde.

   ```
   scan_response = client.scan(
       TableName='myMusicTable'
   )
   ```

------

**Ohne ABAC**  
Wenn ABAC für Sie nicht aktiviert ist AWS-Konto, stimmen die Tag-Bedingungen in der IAM-Richtlinie und der DynamoDB-Tabelle nicht überein. Folglich gibt die `PutItem`-Aktion aufgrund der Auswirkung der `AmazonDynamoDBReadOnlyAccess`-Richtlinie einen `AccessDeniedException`-Fehler zurück.

```
An error occurred (AccessDeniedException) when calling the PutItem operation: User: arn:aws:sts::123456789012:assumed-role/DynamoDBReadOnlyAccess/Alice is not authorized to perform: dynamodb:PutItem on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable because no identity-based policy allows the dynamodb:PutItem action.
```

**Mit ABAC**  
Wenn ABAC für Sie aktiviert ist AWS-Konto, wird die `put-item` Aktion erfolgreich abgeschlossen und ein neues Element zu Ihrer Tabelle hinzugefügt. Das liegt daran, dass die Inline-Richtlinie in der Tabelle die `PutItem`-Aktion zulässt, wenn die Tag-Bedingungen in der IAM-Richtlinie und der Tabelle übereinstimmen.

## Beispiel 2: Eine Aktion mit aws zulassen: RequestTag
<a name="abac-allow-example-request-tag"></a>

Mithilfe des [RequestTagBedingungsschlüssels aws: /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag) können Sie das Tag-Schlüssel-Wert-Paar, das in Ihrer Anfrage übergeben wurde, mit dem Tag-Paar vergleichen, das in der IAM-Richtlinie angegeben ist. Sie können beispielsweise eine bestimmte Aktion wie `CreateTable` mithilfe von `aws:RequestTag` zulassen, wenn die Tag-Bedingungen nicht übereinstimmen. Führen Sie dazu die folgenden Schritte aus:

------
#### [ Using the AWS CLI ]

1. Erstellen Sie eine [Inline-Richtlinie](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) und fügen Sie sie einer Rolle hinzu, an die die [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/ReadOnlyAccess.html) AWS verwaltete Richtlinie angehängt ist, wie im folgenden Beispiel gezeigt.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/Owner": "John"
                   }
               }
           }
       ]
   }
   ```

------

1. Erstellen Sie eine Tabelle, die das Tag-Schlüssel-Wert-Paar von `"Owner": "John"` enthält.

   ```
   aws dynamodb create-table \
   --attribute-definitions AttributeName=ID,AttributeType=S \
   --key-schema AttributeName=ID,KeyType=HASH  \
   --provisioned-throughput ReadCapacityUnits=1000,WriteCapacityUnits=500 \
   --region us-east-1 \
   --tags Key=Owner,Value=John \
   --table-name myMusicTable
   ```

------
#### [ Using the AWS SDK für Python (Boto3) ]

1. Erstellen Sie eine [Inline-Richtlinie](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) und fügen Sie sie einer Rolle hinzu, an die die [AmazonDynamoDBReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBReadOnlyAccess.html) AWS verwaltete Richtlinie angehängt ist, wie im folgenden Beispiel gezeigt.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/Owner": "John"
                   }
               }
           }
       ]
   }
   ```

------

1. Erstellen Sie eine Tabelle, die das Tag-Schlüssel-Wert-Paar von `"Owner": "John"` enthält.

   ```
   ddb_client = boto3.client('dynamodb')
   
   create_table_response = ddb_client.create_table(
       AttributeDefinitions=[
           {
               'AttributeName': 'id',
               'AttributeType': 'S'
           },
       ],
       TableName='myMusicTable',
       KeySchema=[
           {
               'AttributeName': 'id',
               'KeyType': 'HASH'
           },
       ],
           ProvisionedThroughput={
           'ReadCapacityUnits': 1000,
           'WriteCapacityUnits': 500
       },
       Tags=[
           {
               'Key': 'Owner',
               'Value': 'John'
           },
       ],
   )
   ```

------

**Ohne ABAC**  
Wenn ABAC für Sie nicht aktiviert ist AWS-Konto, stimmen die Tag-Bedingungen in der Inline-Richtlinie und der DynamoDB-Tabelle nicht überein. Folglich schlägt die `CreateTable`-Anforderung fehl und Ihre Tabelle wird nicht erstellt.

```
An error occurred (AccessDeniedException) when calling the CreateTable operation: User: arn:aws:sts::123456789012:assumed-role/Admin/John is not authorized to perform: dynamodb:CreateTable on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable because no identity-based policy allows the dynamodb:CreateTable action.
```

**Mit ABAC**  
Wenn ABAC für Sie aktiviert ist AWS-Konto, wird Ihre Anfrage zur Tabellenerstellung erfolgreich abgeschlossen. Da das Tag-Schlüssel-Wert-Paar von `"Owner": "John"` in der `CreateTable`-Anforderung vorhanden ist, ermöglicht die Inline-Richtlinie dem Benutzer `John`, die Aktion `CreateTable` auszuführen.

## Beispiel 3: Eine Aktion mit aws ablehnen: TagKeys
<a name="abac-deny-example-tag-key"></a>

Mithilfe des TagKeys Bedingungsschlüssels [aws:](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys) können Sie die Tag-Schlüssel in einer Anfrage mit den Schlüsseln vergleichen, die in der IAM-Richtlinie angegeben sind. Sie können beispielsweise eine bestimmte Aktion wie `CreateTable` mithilfe von `aws:TagKeys` verweigern, wenn ein bestimmter Tag-Schlüssel *nicht* in der Anforderung vorhanden ist. Führen Sie dazu die folgenden Schritte aus:

------
#### [ Using the AWS CLI ]

1. Fügen Sie eine vom [Kunden verwaltete Richtlinie](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) zu einer Rolle hinzu, der die AWS verwaltete [AmazonDynamoDBFullAccess-Richtlinie](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBFullAccess.html) zugeordnet ist, wie im folgenden Beispiel gezeigt.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "Null": {
                       "aws:TagKeys": "false"
                   },
                   "ForAllValues:StringNotEquals": {
                       "aws:TagKeys": "CostCenter"
                   }
               }
           }
       ]
   }
   ```

------

1. Nehmen Sie die Rolle an, der die Richtlinie angehängt wurde, und erstellen Sie eine Tabelle mit dem Tag-Schlüssel `Title`.

   ```
   aws dynamodb create-table \
   --attribute-definitions AttributeName=ID,AttributeType=S \
   --key-schema AttributeName=ID,KeyType=HASH  \
   --provisioned-throughput ReadCapacityUnits=1000,WriteCapacityUnits=500 \
   --region us-east-1 \
   --tags Key=Title,Value=ProductManager \
   --table-name myMusicTable
   ```

------
#### [ Using the AWS SDK für Python (Boto3) ]

1. Fügen Sie einer Rolle, der die [verwaltete [AmazonDynamoDBFullAccess-Richtlinie](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonDynamoDBFullAccess.html) zugewiesen ist, eine vom Kunden](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies) AWS verwaltete Richtlinie hinzu, wie im folgenden Beispiel gezeigt.

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": [
                   "dynamodb:CreateTable",
                   "dynamodb:TagResource"
               ],
               "Resource": "arn:aws:dynamodb:*:*:table/*",
               "Condition": {
                   "Null": {
                       "aws:TagKeys": "false"
                   },
                   "ForAllValues:StringNotEquals": {
                       "aws:TagKeys": "CostCenter"
                   }
               }
           }
       ]
   }
   ```

------

1. Nehmen Sie die Rolle an, der die Richtlinie angehängt wurde, und erstellen Sie eine Tabelle mit dem Tag-Schlüssel `Title`.

   ```
   ddb_client = boto3.client('dynamodb')
   
   create_table_response = ddb_client.create_table(
       AttributeDefinitions=[
           {
               'AttributeName': 'id',
               'AttributeType': 'S'
           },
       ],
       TableName='myMusicTable',
       KeySchema=[
           {
               'AttributeName': 'id',
               'KeyType': 'HASH'
           },
       ],
           ProvisionedThroughput={
           'ReadCapacityUnits': 1000,
           'WriteCapacityUnits': 500
       },
       Tags=[
           {
               'Key': 'Title',
               'Value': 'ProductManager'
           },
       ],
   )
   ```

------

**Ohne ABAC**  
Wenn ABAC für Sie nicht aktiviert ist AWS-Konto, sendet DynamoDB die Tag-Schlüssel im `create-table` Befehl nicht an IAM. Die `Null`-Bedingung stellt sicher, dass die Bedingung als `false` ausgewertet wird, wenn in der Anforderung keine Tags vorhanden sind. Da die `Deny`-Richtlinie nicht übereinstimmt, wird der Befehl `create-table` erfolgreich ausgeführt.

**Mit ABAC**  
Wenn ABAC für Sie aktiviert ist AWS-Konto, werden die im `create-table` Befehl übergebenen Tag-Schlüssel an IAM übergeben. Der Tag-Schlüssel `Title` wird anhand des bedingungsbasierten Tag-Schlüssels `CostCenter` ausgewertet, der in der `Deny`-Richtlinie enthalten ist. Der Tag-Schlüssel `Title` stimmt aufgrund des `StringNotEquals`-Operators nicht mit dem in der `Deny`-Richtlinie vorhandenen Tag-Schlüssel überein. Daher schlägt die `CreateTable`-Aktion fehl und Ihre Tabelle wird nicht erstellt. Wenn Sie den Befehl `create-table` ausführen, wird ein`AccessDeniedException`-Fehler zurückgegeben.

```
An error occurred (AccessDeniedException) when calling the CreateTable operation: User: arn:aws:sts::123456789012:assumed-role/DynamoFullAccessRole/ProductManager is not authorized to perform: dynamodb:CreateTable on resource: arn:aws:dynamodb:us-east-1:123456789012:table/myMusicTable with an explicit deny in an identity-based policy.
```

# Behebung häufiger ABAC-Fehler für DynamoDB-Tabellen und -Indizes
<a name="abac-troubleshooting"></a>

Dieses Thema enthält Hinweise zur Fehlerbehebung bei häufigen Fehlern und Problemen, die bei der Implementierung von ABAC in DynamoDB-Tabellen oder -Indizes auftreten können.

## Servicespezifische Bedingungsschlüssel in Richtlinien führen zu einem Fehler
<a name="abac-troubleshooting-service-specific-keys"></a>

Servicespezifische Bedingungsschlüssel werden nicht als gültige Bedingungsschlüssel betrachtet. Wenn Sie solche Schlüssel in Ihren Richtlinien verwendet haben, führen diese zu einem Fehler. Um dieses Problem zu beheben, müssen Sie die servicespezifischen Bedingungsschlüssel durch einen geeigneten [Bedingungsschlüssel für die Implementierung von ABAC](attribute-based-access-control.md#condition-keys-implement-abac) in DynamoDB ersetzen.

Angenommen, Sie haben den `dynamodb:ResourceTag` Bedingungsschlüssel in einer [Inline-Richtlinie](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies) verwendet, die die Anforderung ausführt. [PutItem](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html) Stellen Sie sich vor, dass die Anforderung mit einem `AccessDeniedException`-Fehler fehlschlägt. Das folgende Beispiel zeigt die fehlerhafte Inline-Richtlinie mit dem `dynamodb:ResourceTag`-Bedingungsschlüssel.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*",
            "Condition": {
                "StringEquals": {
                    "dynamodb:ResourceTag/Owner": "John"
                }
            }
        }
    ]
}
```

------

Um dieses Problem zu beheben, ersetzen Sie den `dynamodb:ResourceTag`-Bedingungsschlüssel durch `aws:ResourceTag`, wie im folgenden Beispiel gezeigt.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:PutItem"
            ],
            "Resource": "arn:aws:dynamodb:*:*:table/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/Owner": "John"
                }
            }
        }
    ]
}
```

------

## ABAC kann nicht deaktiviert werden
<a name="abac-troubleshooting-unable-opt-out"></a>

Wenn ABAC für Ihr Konto aktiviert wurde Support, können Sie sich nicht über die DynamoDB-Konsole von ABAC abmelden. Um sich abzumelden, wenden Sie sich an den [Support](https://console.aws.amazon.com/support).

Sie können sich *nur dann* selbst von ABAC abmelden, wenn Folgendes zutrifft:
+ Sie haben die Self-Service-Methode verwendet, um sich [über die DynamoDB-Konsole anzumelden](abac-enable-ddb.md#abac-enable-console).
+ Sie melden sich innerhalb von sieben Kalendertagen nach der Anmeldung ab.