

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.

# Verwendung der attributbasierten Zugriffskontrolle in Lambda
<a name="attribute-based-access-control"></a>

Mit [attributbasierter Zugriffskontrolle (ABAC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html) können Sie Tags verwenden, um den Zugriff auf Ihre Lambda-Ressourcen zu steuern. Sie können Tags an bestimmte Lambda-Ressourcen anhängen, sie an bestimmte API-Anfragen anhängen oder sie an den AWS Identity and Access Management (IAM-) Principal anhängen, der die Anfrage stellt. *Weitere Informationen darüber, wie attributebasierten Zugriff AWS gewährt wird, finden Sie im IAM-Benutzerhandbuch unter [Steuern des Zugriffs auf AWS Ressourcen mithilfe von Tags](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html).*

Sie können ABAC verwenden, um die [geringsten Berechtigungen zu gewähren](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege), ohne einen Amazon-Ressourcennamen (ARN) oder ein ARN-Muster in der IAM-Richtlinie anzugeben. Stattdessen können Sie ein Tag im [Bedingungselement](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition.html) einer IAM-Richtlinie angeben, um den Zugriff zu steuern. Die Skalierung ist mit ABAC einfacher, da Sie Ihre IAM-Richtlinien nicht aktualisieren müssen, wenn Sie neue Ressourcen erstellen. Fügen Sie stattdessen Tags zu den neuen Ressourcen hinzu, um den Zugriff zu steuern.

In Lambda funktionieren Tags für die folgenden Ressourcen:
+ Funktionen – Weitere Informationen zu Tagging-Funktionen finden Sie unter [Verwenden von Tags für Lambda-Funktionen](configuration-tags.md).
+ Codesignaturkonfigurationen – Weitere Informationen zum Markieren von Codesignaturkonfigurationen finden Sie unter [Verwendung von Tags in Codesignatur-Konfigurationen](tags-csc.md).
+ Zuordnungen von Ereignisquellen – Weitere Informationen zum Markieren von Zuordnungen von Ereignisquellen finden Sie unter [Verwendung von Tags für Zuordnungen von Ereignisquellen](tags-esm.md).

Tags werden für Ebenen nicht unterstützt.

Sie können die folgenden Bedingungsschlüssel verwenden, um auf Tag basierende IAM-Richtlinienregeln zu schreiben:
+ [aws: ResourceTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag): Steuert den Zugriff anhand der Tags, die an eine Lambda-Ressource angehängt sind.
+ [aws: RequestTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag): Erfordert, dass Tags in einer Anfrage vorhanden sind, z. B. beim Erstellen einer neuen Funktion.
+ [aws: PrincipalTag /tag-key](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principaltag) [https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags_users.html](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags_users.html)
+  [aws:TagKeys:](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys) Steuert, ob bestimmte Tag-Schlüssel in einer Anfrage verwendet werden können.

 Sie können nur Bedingungen für Aktionen angeben, die diese Bedingungen unterstützen. Eine Liste der Bedingungen, die von jeder Lambda-Aktion unterstützt werden, finden Sie unter [Aktionen, Ressourcen und Bedingungsschlüssel für AWS Lambda](https://docs.aws.amazon.com//service-authorization/latest/reference/list_awslambda.html) in der Referenz zur Dienstautorisierung. Informationen zur Unterstützung von **aws: ResourceTag /tag-key** finden Sie unter „Ressourcentypen definiert von“. AWS Lambda Informationen zu **aws: RequestTag /tag-key** und **aws: TagKeys** support finden Sie unter „Aktionen definiert von“. AWS Lambda

**Topics**
+ [

# Sichern Sie Ihre Funktionen per Tag
](attribute-based-access-control-example.md)

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