

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.

# Sichern Sie Ihre Funktionen per Tag
<a name="attribute-based-access-control-example"></a>

Die folgenden Schritte zeigen eine Möglichkeit, wie Sie mit ABAC Berechtigungen für Funktionen einrichten können. In diesem Beispielszenario erstellen Sie vier IAM-Berechtigungsrichtlinien. Anschließend fügen Sie diese Richtlinien einer neuen IAM-Rolle hinzu. Schließlich erstellen Sie einen IAM-Benutzer und erteilen diesem Benutzer die Berechtigung, die neue Rolle zu übernehmen.

**Topics**
+ [Voraussetzungen](#abac-prerequisites)
+ [Schritt 1: Tags für neue Funktionen anfordern](#require-tag-on-create)
+ [Schritt 2: Aktionen basierend auf Tags zulassen, die einer Lambda-Funktion und einem IAM-Prinzipal zugeordnet sind](#restrict-actions-function-tags)
+ [Schritt 3: Erteilen von Listenberechtigungen](#abac-list-permissions)
+ [Schritt 4: Erteilen von IAM-Berechtigungen](#abac-iam-permissions)
+ [Schritt 5: Erstellen der IAM-Rolle](#abac-create-role)
+ [Schritt 6: Erstellen eines IAM-Benutzers](#abac-create-user)
+ [Schritt 7: Testen der Berechtigungen](#abac-test)
+ [Schritt 8: Bereinigen Ihrer Ressourcen](#abac-clean-up)

## Voraussetzungen
<a name="abac-prerequisites"></a>

Stellen Sie sicher, dass Sie über eine [Lambda-Ausführungsrolle](lambda-intro-execution-role.md) verfügen. Sie verwenden diese Rolle, wenn Sie IAM-Berechtigungen erteilen und eine Lambda-Funktion erstellen.

## Schritt 1: Tags für neue Funktionen anfordern
<a name="require-tag-on-create"></a>

Wenn Sie ABAC mit Lambda verwenden, empfiehlt es sich, dass alle Funktionen über Tags verfügen. Auf diese Weise können Sie sicherstellen, dass Ihre ABAC-Berechtigungsrichtlinien wie erwartet funktionieren.

[Erstellen Sie eine IAM-Richtlinie](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor) ähnlich dem folgenden Beispiel. Diese Richtlinie verwendet die TagKeys Bedingungsschlüssel [aws: RequestTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag), [aws: ResourceTag /tag-key und [aws:](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys)](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag), um zu verlangen, dass sowohl neue Funktionen als auch der IAM-Prinzipal, der die Funktionen erstellt, das Tag haben. `project` Der `ForAllValues`-Modifikator stellt sicher, dass `project` das einzige zulässige Tag ist. Wenn Sie den `ForAllValues`-Modifikator nicht angeben, können die Benutzer der Funktion andere Tags hinzufügen, solange diese auch `project` übergeben.

**Example – Tags für neue Funktionen anfordern**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
      "Effect": "Allow",
      "Action": [
        "lambda:CreateFunction",
        "lambda:TagResource"
      ],
      "Resource": "arn:aws:lambda:*:*:function:*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/project": "${aws:PrincipalTag/project}",
          "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
        },
        "ForAllValues:StringEquals": {
          "aws:TagKeys": "project"
        }
      }
    }
  }
```

## Schritt 2: Aktionen basierend auf Tags zulassen, die einer Lambda-Funktion und einem IAM-Prinzipal zugeordnet sind
<a name="restrict-actions-function-tags"></a>

Erstellen Sie eine zweite IAM-Richtlinie mithilfe des [ResourceTagBedingungsschlüssels aws: /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag), um zu verlangen, dass das Tag des Prinzipals mit dem Tag übereinstimmt, das an die Funktion angehängt ist. Die folgende Beispielrichtlinie erlaubt es Prinzipalen mit dem `project`-Tag, Funktionen mit dem `project`-Tag aufzurufen. Wenn eine Funktion andere Tags hat, wird die Aktion verweigert.

**Example – Erfordert übereinstimmende Tags für Funktion und IAM-Prinzipal**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "lambda:InvokeFunction",
          "lambda:GetFunction"
        ],
        "Resource": "arn:aws:lambda:*:*:function:*",
        "Condition": {
          "StringEquals": {
            "aws:ResourceTag/project": "${aws:PrincipalTag/project}"
          }
        }
      }
    ]
  }
```

## Schritt 3: Erteilen von Listenberechtigungen
<a name="abac-list-permissions"></a>

Erstellen Sie eine Richtlinie, die es dem Prinzipal ermöglicht, Lambda-Funktionen und IAM-Rollen aufzulisten. Dadurch kann der Prinzipal alle Lambda-Funktionen und IAM-Rollen auf der Konsole und beim Aufrufen der API-Aktionen sehen.

**Example – Erteilen von Lambda- und IAM-Listenberechtigungen**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "AllResourcesLambdaNoTags",
        "Effect": "Allow",
        "Action": [
          "lambda:GetAccountSettings",
          "lambda:ListFunctions",
          "iam:ListRoles"
        ],
        "Resource": "*"
      }
    ]
  }
```

## Schritt 4: Erteilen von IAM-Berechtigungen
<a name="abac-iam-permissions"></a>

**Erstellen Sie eine Richtlinie, die iam: zulässt. PassRole** Diese Berechtigung ist erforderlich, wenn Sie einer Funktion eine Ausführungsrolle zuweisen. Ersetzen Sie in der folgenden Beispielrichtlinie den Beispiel-ARN durch den ARN Ihrer Lambda-Ausführungsrolle.

**Anmerkung**  
Verwenden Sie den `ResourceTag`-Bedingungsschlüssel nicht in einer Richtlinie mit der `iam:PassRole`-Aktion. Sie können das Tag nicht für eine IAM-Rolle verwenden, um zu steuern, wer Zugriff zur Weiterleitung diese Rolle haben soll. Weitere Informationen zu den Berechtigungen, die für die Übergabe einer Rolle an einen Dienst erforderlich sind, finden Sie unter [Einem Benutzer Berechtigungen zur Übergabe einer Rolle an einen AWS Dienst gewähren](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html).

**Example – Erteilt die Berechtigung zum Übergeben der Ausführungsrolle**    
****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": [
          "iam:PassRole"
        ],
        "Resource": "arn:aws:iam::111122223333:role/lambda-ex"
      }
    ]
  }
```

## Schritt 5: Erstellen der IAM-Rolle
<a name="abac-create-role"></a>

Es hat sich bewährt, [Rollen zum Delegieren von Berechtigungen](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#delegate-using-roles) zu verwenden. [Erstellen Sie eine IAM-Rolle](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) mit dem Namen `abac-project-role`:
+ In **Schritt 1: Vertrauenswürdige Entität auswählen**: Wählen Sie wählen **AWS -Konto** und wählen Sie dann **Dieses Konto**.
+ In **Schritt 2: Hinzufügen von Berechtigungen**: Fügen Sie die vier IAM-Richtlinien hinzu, die Sie in den vorherigen Schritten erstellt haben.
+ In **Schritt 3: Benennen, Überprüfen und Erstellen**: Wählen Sie **Tag hinzufügen**. Geben Sie für **Key (Schlüssel)** `project` ein. Geben Sie keinen **Value** (Wert) ein.

## Schritt 6: Erstellen eines IAM-Benutzers
<a name="abac-create-user"></a>

[Erstellen Sie einen IAM-Benutzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console) mit dem Namen `abac-test-user`. Wählen Sie im Abschnitt **Set permissions** (Berechtigungen festlegen) die Option **Attach existing policies directly** (Vorhandene Richtlinien direkt anhängen) und dann **Create policy** (Richtlinie erstellen) aus. Geben Sie die folgende Richtliniendefinition ein. Ersetzen Sie *111122223333* durch Ihre [AWS -Konto-ID](https://docs.aws.amazon.com/general/latest/gr/acct-identifiers.html#FindingYourAccountIdentifiers). Diese Richtlinie erlaubt es `abac-test-user`, `abac-project-role` anzunehmen.

**Example – IAM-Benutzer die Übernahme der ABAC-Rolle erlauben**  

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::111122223333:role/abac-project-role"
    }
  }
```

------

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

1. Melden Sie sich an der AWS Konsole an als`abac-test-user`. Weitere Informationen finden Sie unter [Anmeldung als IAM-Benutzer](https://docs.aws.amazon.com/IAM/latest/UserGuide/console.html#user-sign-in-page).

1. Wechseln Sie zur `abac-project-role`-Rolle. Weitere Informationen finden Sie unter [Wechseln zu einer Rolle (Konsole)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html).

1. [Erstellen einer Lambda-Funktion](configuration-tags.md#using-tags-with-the-console):
   + Wählen Sie unter **Permissions** (Berechtigungen) die Option **Change default execution role** (Standardausführungsrolle ändern) und dann unter **Execution role** (Ausführungsrolle) die Option **Use an existing role** (Vorhandene Rolle verwenden). Wählen Sie dieselbe Ausführungsrolle aus, die Sie in [Schritt 4: Erteilen von IAM-Berechtigungen](#abac-iam-permissions) verwendet haben.
   + Wählen Sie unter **Advanced settings** (Erweiterte Einstellungen) die Option **Enable tags** (Tags ermöglichen) und wählen Sie dann **Add new tag** (Neues Tag hinzufügen). Geben Sie für **Key (Schlüssel)** `project` ein. Geben Sie keinen **Value** (Wert) ein.

1. [Testen der Funktion](testing-functions.md).

1. Erstellen Sie eine zweite Lambda-Funktion und fügen Sie ein anderes Tag hinzu, z. B. `environment`. Dieser Vorgang sollte fehlschlagen, da die ABAC-Richtlinie, die Sie in [Schritt 1: Tags für neue Funktionen anfordern](#require-tag-on-create) erstellt haben, dem Prinzipal nur erlaubt, Funktionen mit dem `project`-Tag zu erstellen.

1. Erstellen Sie eine dritte Funktion ohne Tags. Dieser Vorgang sollte fehlschlagen, weil die ABAC-Richtlinie, die Sie in [Schritt 1: Tags für neue Funktionen anfordern](#require-tag-on-create) erstellt haben, dem Prinzipal nicht erlaubt, Funktionen ohne Tags zu erstellen.

Mit dieser Autorisierungsstrategie können Sie den Zugriff steuern, ohne für jeden neuen Benutzer neue Richtlinien erstellen zu müssen. Um neuen Benutzern Zugriff zu gewähren, erteilen Sie ihnen einfach die Berechtigung, die Rolle zu übernehmen, die ihrem zugewiesenen Projekt entspricht.

## Schritt 8: Bereinigen Ihrer Ressourcen
<a name="abac-clean-up"></a>

**Löschen Sie die IAM-Rolle wie folgt:**

1. Öffnen Sie die Seite [Roles (Rollen)](https://console.aws.amazon.com/iam/home#/roles) in der IAM-Konsole.

1. Wählen Sie die Rolle aus, die Sie im [Schritt 5](#abac-create-role) erstellt haben.

1. Wählen Sie **Löschen** aus.

1. Geben Sie den Namen der Rolle in das Texteingabefeld ein, um den Löschvorgang zu bestätigen.

1. Wählen Sie **Löschen** aus.

**So löschen Sie den IAM-Benutzer**

1. Öffnen Sie die [Seite Users](https://console.aws.amazon.com/iam/home#/users) in der IAM-Konsole.

1. Wählen Sie den IAM-Benutzer aus, den Sie in [Schritt 6](#abac-create-user) erstellt haben.

1. Wählen Sie **Löschen** aus.

1. Geben Sie den Namen des Benutzers in das Texteingabefeld ein, um den Löschvorgang zu bestätigen.

1. Wählen Sie **Benutzer löschen**.

**So löschen Sie die Lambda-Funktion:**

1. Öffnen Sie die Seite [Funktionen](https://console.aws.amazon.com/lambda/home#/functions) der Lambda-Konsole.

1. Wählen Sie die Funktion aus, die Sie erstellt haben.

1. Wählen Sie **Aktionen**, **Löschen** aus.

1. Geben Sie **confirm** in das Texteingabefeld ein und wählen Sie **Delete** (Löschen) aus.