

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.

# IAM-Tutorial: Verwenden Sie eine CloudFormation Vorlage, um eine SAML-föderierte IAM-Rolle zu erstellen
<a name="tutorial_saml-federated-role"></a>

Wenn Sie in Ihrem AWS Konto einen vorhandenen SAML Identity Provider (IdP) konfiguriert haben, können Sie föderierte IAM-Rollen erstellen, die diesem IdP vertrauen. In diesem Tutorial erfahren Sie, wie Sie mithilfe einer CloudFormation Vorlage eine SAML-Verbund-IAM-Rolle erstellen, die von Benutzern übernommen werden kann, die über Ihren externen IdP authentifiziert wurden.

Die Vorlage erstellt eine verbundene IAM-Rolle mit einer Vertrauensrichtlinie, die es Ihrem SAML-IDP ermöglicht, die Rolle anzunehmen. Benutzer, die von Ihrem externen IDP authentifiziert wurden, können diese Rolle übernehmen, um auf AWS -Ressourcen zuzugreifen, basierend auf den mit der Rolle verknüpften Berechtigungen.

Die bereitgestellte Ressource enthält Folgendes:
+ Eine verbundene IAM-Rolle, die Ihrem vorhandenen SAML-IDP vertraut.
+ Konfigurierbare verwaltete Richtlinien, die der Rolle zugeordnet werden können, um bestimmte Berechtigungen zu gewähren.
+ Optionale Einstellungen für die Berechtigungsgrenze und die Sitzungsdauer.

## Voraussetzungen
<a name="tutorial_saml-federated-role-prereqs"></a>

In diesem Tutorial wird davon ausgegangen, dass Folgendes bereits vorhanden ist:
+ Ein vorhandener SAML-IdP, der in Ihrem AWS Konto konfiguriert ist. Wenn dies nicht der Fall ist, können Sie ihn mithilfe des [IAM-Tutorial: Verwenden Sie eine CloudFormation Vorlage, um einen SAML Identity Provider (IdP) zu erstellen](tutorial_saml-idp.md)-Tutorials erstellen.
+ Der ARN Ihres SAML-IDP, den Sie bei der Erstellung des Stacks als Parameter angeben müssen.
+ Python 3.6 oder höher ist auf Ihrem lokalen Computer installiert, um den Python-Befehl auszuführen, der in diesem Tutorial zum Formatieren der XML-Datei für die SAML-Metadaten Ihres IDP verwendet wird.

## Erstellen Sie eine SAML-Verbundrolle mit CloudFormation
<a name="tutorial_saml-federated-role-create"></a>

Um die SAML-Verbundrolle zu erstellen, erstellen Sie eine CloudFormation Vorlage und verwenden sie, um einen Stack zu erstellen, der die Rolle enthält.

### Erstellen der -Vorlage
<a name="tutorial_saml-federated-role-file"></a>

Erstellen Sie zunächst die CloudFormation Vorlage.

1. Klicken Sie im Abschnitt „[Vorlage](#tutorial_saml-federated-role-template)“ auf das Kopiersymbol auf der Registerkarte **JSON** oder **YAML**, um den Inhalt der Vorlage zu kopieren.

1. Fügen Sie den Inhalt der Vorlage in eine neue Datei ein.

1. Speichern Sie die Datei lokal.

### Erstellen Sie den -Stack
<a name="tutorial_saml-federated-role-stack"></a>

Verwenden Sie als Nächstes die Vorlage, die Sie gespeichert haben, um einen CloudFormation Stack bereitzustellen.

1. Öffnen Sie die CloudFormation Konsole unter [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/).

1. Auf der Seite **Stacks** wählen Sie im Menü **Stack erstellen** die Option **Mit neuen Ressourcen (Standard)** aus.

1. Legen Sie die Vorlage fest:

   1. Wählen Sie unter **Voraussetzung** die Option **Vorhandene Vorlage wählen** aus.

   1. Wählen Sie unter **Vorlage angeben** die Option **Eine Vorlagendatei hochladen** aus.

   1. Klicken Sie auf **Datei auswählen**, navigieren Sie zur gewünschten Vorlagendatei und wählen Sie diese aus.

   1. Wählen Sie **Weiter** aus.

1. Geben Sie die folgenden Stack-Details an:

   1. Geben Sie einen Stack-Namen ein.

   1. Geben Sie für **SAMLProviderARN** den ARN Ihres vorhandenen SAML-IdP ein. Dies sollte im Format `arn:aws:iam::123456789012:saml-provider/YourProviderName` sein.

      Beispiel: `arn:aws:iam::123456789012:saml-provider/CompanyIdP`
**Anmerkung**  
Wenn Sie Ihren SAML-IdP mithilfe des [IAM-Tutorial: Verwenden Sie eine CloudFormation Vorlage, um einen SAML Identity Provider (IdP) zu erstellen](tutorial_saml-idp.md) Tutorials erstellt haben, finden Sie den Provider-ARN auf der Registerkarte Ausgaben dieses CloudFormation Stacks.

   1. Denn Sie können dieses Feld leer lassen **RoleName**, um automatisch einen Namen basierend auf dem Stacknamen zu generieren, oder einen benutzerdefinierten Namen für die IAM-Rolle eingeben.

      Beispiel: `SAML-Developer-Access` oder `SAML-ReadOnly-Role`

   1. Akzeptieren Sie für andere Parameter die Standardwerte oder geben Sie je nach Ihren Anforderungen Ihre eigenen ein:
      + **RoleSessionDuration**- Maximale Sitzungsdauer in Sekunden (3600-43200, Standard 7200)

        Beispiel: `14400` (4 Stunden)
      + **RolePermissionsBoundary**- Optionaler ARN einer Berechtigungsgrenzrichtlinie

        Beispiel: `arn:aws:iam::123456789012:policy/DeveloperBoundary`
      + **RolePath**— Pfad für die IAM-Rolle (Standard ist/)

        Beispiel: `/saml-roles/`
      + **ManagedPolicy1-5** — Optional können bis ARNs zu 5 verwaltete Richtlinien angehängt werden

        Beispiel für ManagedPolicy 1: `arn:aws:iam::aws:policy/ReadOnlyAccess`

        Beispiel für ManagedPolicy 2: `arn:aws:iam::123456789012:policy/CustomPolicy`

   1. Wählen Sie **Weiter** aus.

1. Konfigurieren Sie die Stack-Optionen:

   1. Wählen Sie unter **Optionen für Stack-Fehler** die Option **Löschen aller neu erstellten Ressourcen** aus.
**Anmerkung**  
Durch Auswahl dieser Option vermeiden Sie möglicherweise anfallende Kosten für Ressourcen, deren Löschrichtlinie deren Beibehaltung auch bei einem Fehler bei der Stack-Erstellung vorsieht.

   1. Akzeptieren Sie alle anderen Standardwerte.

   1. Markieren Sie unter **Funktionen** das Kästchen, um zu bestätigen, dass CloudFormation dadurch IAM-Ressourcen in Ihrem Konto erstellt werden könnten.

   1. Wählen Sie **Weiter** aus.

1. Überprüfen Sie die Stack-Details und klicken Sie auf **Absenden**.

CloudFormation erstellt den Stack. Sobald die Stack-Erstellung abgeschlossen ist, können die Stack-Ressourcen verwendet werden. Auf der Registerkarte **Ressourcen** der Stack-Detailseite können Sie die in Ihrem Konto bereitgestellten Ressourcen anzeigen.

Der Stack gibt den folgenden Wert aus, den Sie auf der Registerkarte **Ausgaben** einsehen können:
+ **RoleARN**: Der ARN der erstellten IAM-Rolle (z. B. `arn:aws:iam::123456789012:role/SAML-Developer-Access` oder `arn:aws:iam::123456789012:role/stack-name-a1b2c3d4` bei Verwendung eines automatisch generierten Namens).

Sie benötigen diesen Rollen-ARN, um Ihren IDP so zu konfigurieren, dass er die entsprechenden SAML-Attribute für die Rollenübernahme sendet.

## Testen der verbundenen SAML-Rolle
<a name="tutorial_saml-federated-role-using"></a>

Nachdem die verbundene SAML-Rolle erstellt wurde, können Sie ihre Konfiguration überprüfen und die Verbundeinrichtung testen.

1. Öffnen Sie unter [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) die IAM-Konsole.

1. Wählen Sie im Navigationsbereich **Rollen**.

1. Suchen Sie Ihre neu erstellte verbundene Rolle und wählen Sie sie aus.

   Wenn Sie einen benutzerdefinierten Rollennamen angegeben haben, suchen Sie nach diesem Namen. Wenn Sie den RoleName Parameter leer gelassen haben, hat die Rolle einen automatisch generierten Namen, der auf dem Stacknamen und einer eindeutigen Kennung basiert.

1. Wählen Sie die Registerkarte **Vertrauensstellungen**, um die Vertrauensrichtlinie zu überprüfen.

   Die Vertrauensrichtlinie sollte anzeigen, dass Ihr SAML-IDP berechtigt ist, diese Rolle zu übernehmen, sofern die SAML-Zielgruppe (`SAML:aud`) mit `https://signin.aws.amazon.com/saml` übereinstimmt.

1. Wählen Sie die Registerkarte **Berechtigungen** aus, um die zugeordneten Richtlinien zu überprüfen.

   Hier sehen Sie alle verwalteten Richtlinien, die der Rolle bei der Erstellung zugeordnet wurden.

1. Beachten Sie die auf der Seite mit der Zusammenfassung der Rolle angezeigte **Rollen-ARN**.

   Sie benötigen diesen ARN, um Ihren externen IDP so zu konfigurieren, dass Benutzer diese Rolle übernehmen können.

Ihre verbundene SAML-Rolle ist jetzt einsatzbereit. Konfigurieren Sie Ihren externen IdP so, dass er den ARN dieser Rolle in SAML-Assertionen einbezieht, und authentifizierte Benutzer können diese Rolle übernehmen, um auf Ressourcen zuzugreifen. AWS 

## Bereinigung: Ressourcen löschen
<a name="tutorial_saml-federated-role-delete"></a>

Im letzten Schritt löschen Sie den Stack und die darin enthaltenen Ressourcen.

1. Öffnen Sie die Konsole. CloudFormation 

1. Wählen Sie auf der Seite **Stacks** den aus der Vorlage erstellten Stack aus und klicken Sie auf **Löschen**. Bestätigen Sie dann **Löschen**.

   CloudFormation initiiert das Löschen des Stacks und aller darin enthaltenen Ressourcen.

## CloudFormation Details zur Vorlage
<a name="tutorial_saml-federated-role-template-details"></a>

### Ressourcen
<a name="tutorial_saml-federated-role-template-resources"></a>

Die CloudFormation Vorlage für dieses Tutorial erstellt die folgende Ressource in Ihrem Konto:
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html): Eine verbundene IAM-Rolle, die von Benutzern übernommen werden kann, die sich über Ihren SAML-IDP authentifiziert haben.

### Konfiguration
<a name="tutorial_saml-federated-role-configuration"></a>

Die Vorlage enthält die folgenden konfigurierbaren Parameter:
+ **RoleName**- Name der IAM-Rolle (leer lassen für den automatisch generierten Namen)
+ **SAMLProviderARN** — ARN des SAML-IdP (erforderlich)
+ **RoleSessionDuration**- Maximale Sitzungsdauer in Sekunden (3600-43200, Standard 7200)
+ **RolePermissionsBoundary**- Optionaler ARN der Grenzrichtlinie für Berechtigungen
+ **RolePath**— Pfad für die IAM-Rolle (Standard/)
+ **ManagedPolicy1-5** — Optional können bis ARNs zu 5 verwaltete Richtlinien angehängt werden

## CloudFormation Vorlage
<a name="tutorial_saml-federated-role-template"></a>

Speichern Sie den folgenden JSON- oder YAML-Code als separate Datei, um ihn als CloudFormation Vorlage für dieses Tutorial zu verwenden.

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

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Description": "[AWSDocs] IAM: tutorial_saml-federated-role",
  "Parameters": {
    "RoleName": {
      "Type": "String",
      "Description": "Name of the IAM Role (leave empty for auto-generated name like '{StackName}-{UniqueId}')",
      "Default": "",
      "AllowedPattern": "^$|^[\\w+=,.@-]{1,64}$",
      "ConstraintDescription": "Must be empty or 1-64 characters and can contain alphanumeric characters and +=,.@-"
    },
    "SAMLProviderARN": {
      "Type": "String",
      "Description": "ARN of the SAML Identity Provider",
      "AllowedPattern": "^arn:aws:iam::\\d{12}:saml-provider/[a-zA-Z0-9._-]+$",
      "ConstraintDescription": "Must be a valid SAML provider ARN"
    },
    "RoleSessionDuration": {
      "Type": "Number",
      "Description": "The maximum session duration (in seconds) that you want to set for the specified role (3600-43200)",
      "MinValue": 3600,
      "MaxValue": 43200,
      "Default": 7200
    },
    "RolePermissionsBoundary": {
      "Type": "String",
      "Description": "Optional ARN of the permissions boundary policy (leave empty for none)",
      "Default": ""
    },
    "RolePath": {
      "Type": "String",
      "Description": "Path for the IAM role (must start and end with /)",
      "Default": "/",
      "AllowedPattern": "^\/.*\/$|^\/$",
      "ConstraintDescription": "Role path must start and end with forward slash (/)"
    },
    "RoleManagedPolicy1": {
      "Type": "String",
      "Description": "Optional managed policy ARN 1",
      "Default": ""
    },
    "RoleManagedPolicy2": {
      "Type": "String",
      "Description": "Optional managed policy ARN 2",
      "Default": ""
    },
    "RoleManagedPolicy3": {
      "Type": "String",
      "Description": "Optional managed policy ARN 3",
      "Default": ""
    },
    "RoleManagedPolicy4": {
      "Type": "String",
      "Description": "Optional managed policy ARN 4",
      "Default": ""
    },
    "RoleManagedPolicy5": {
      "Type": "String",
      "Description": "Optional managed policy ARN 5",
      "Default": ""
    }
  },
  "Conditions": {
    "HasCustomRoleName": {"Fn::Not": [{"Fn::Equals": [{"Ref": "RoleName"}, ""]}]},
    "HasPermissionsBoundary": {"Fn::Not": [{"Fn::Equals": [{"Ref": "RolePermissionsBoundary"}, ""]}]},
    "HasPolicy1": {"Fn::Not": [{"Fn::Equals": [{"Ref": "RoleManagedPolicy1"}, ""]}]},
    "HasPolicy2": {"Fn::Not": [{"Fn::Equals": [{"Ref": "RoleManagedPolicy2"}, ""]}]},
    "HasPolicy3": {"Fn::Not": [{"Fn::Equals": [{"Ref": "RoleManagedPolicy3"}, ""]}]},
    "HasPolicy4": {"Fn::Not": [{"Fn::Equals": [{"Ref": "RoleManagedPolicy4"}, ""]}]},
    "HasPolicy5": {"Fn::Not": [{"Fn::Equals": [{"Ref": "RoleManagedPolicy5"}, ""]}]}
  },
  "Resources": {
    "SAMLFederatedRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "RoleName": {"Fn::If": ["HasCustomRoleName", {"Ref": "RoleName"}, {"Ref": "AWS::NoValue"}]},
        "Description": "IAM role with SAML provider trust",
        "MaxSessionDuration": {"Ref": "RoleSessionDuration"},
        "PermissionsBoundary": {"Fn::If": ["HasPermissionsBoundary", {"Ref": "RolePermissionsBoundary"}, {"Ref": "AWS::NoValue"}]},
        "Path": {"Ref": "RolePath"},
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",		 	 	 
          "Statement": [
            {
              "Effect": "Allow",
              "Principal": {
                "Federated": {"Ref": "SAMLProviderARN"}
              },
              "Action": "sts:AssumeRoleWithSAML",
              "Condition": {
                "StringEquals": {
                  "SAML:aud": "https://signin.aws.amazon.com/saml"
                }
              }
            }
          ]
        },
        "ManagedPolicyArns": {
          "Fn::Split": [
            ",",
            {
              "Fn::Join": [
                ",",
                [
                  {"Fn::If": ["HasPolicy1", {"Ref": "RoleManagedPolicy1"}, {"Ref": "AWS::NoValue"}]},
                  {"Fn::If": ["HasPolicy2", {"Ref": "RoleManagedPolicy2"}, {"Ref": "AWS::NoValue"}]},
                  {"Fn::If": ["HasPolicy3", {"Ref": "RoleManagedPolicy3"}, {"Ref": "AWS::NoValue"}]},
                  {"Fn::If": ["HasPolicy4", {"Ref": "RoleManagedPolicy4"}, {"Ref": "AWS::NoValue"}]},
                  {"Fn::If": ["HasPolicy5", {"Ref": "RoleManagedPolicy5"}, {"Ref": "AWS::NoValue"}]}
                ]
              ]
            }
          ]
        }
      }
    }
  },
  "Outputs": {
    "RoleARN": {
      "Description": "ARN of the created IAM Role",
      "Value": {"Fn::GetAtt": ["SAMLFederatedRole", "Arn"]},
      "Export": {
        "Name": {"Fn::Sub": "${AWS::StackName}-RoleARN"}
      }
    }
  }
}
```

------
#### [ YAML ]

```
AWSTemplateFormatVersion: '2010-09-09'
Description: '[AWSDocs] IAM: tutorial_saml-federated-role'

Parameters:
  RoleName:
    Type: String
    Description: 'Name of the IAM Role (leave empty for auto-generated name like ''{StackName}-{UniqueId}'')'
    Default: ""
    AllowedPattern: '^$|^[\w+=,.@-]{1,64}$'
    ConstraintDescription: 'Must be empty or 1-64 characters and can contain alphanumeric characters and +=,.@-'
  
  SAMLProviderARN:
    Type: String
    Description: 'ARN of the SAML Identity Provider'
    AllowedPattern: '^arn:aws:iam::\d{12}:saml-provider/[a-zA-Z0-9._-]+$'
    ConstraintDescription: 'Must be a valid SAML provider ARN'
  
  RoleSessionDuration:
    Type: Number
    Description: 'The maximum session duration (in seconds) that you want to set for the specified role (3600-43200)'
    MinValue: 3600
    MaxValue: 43200
    Default: 7200
    
  RolePermissionsBoundary:
    Type: String
    Description: Optional ARN of the permissions boundary policy (leave empty for none)
    Default: ""

  RolePath:
    Type: String
    Description: 'Path for the IAM role (must start and end with /)'
    Default: "/"
    AllowedPattern: '^\/.*\/$|^\/$'
    ConstraintDescription: 'Role path must start and end with forward slash (/)'
  
  RoleManagedPolicy1:
    Type: String
    Description: Optional managed policy ARN 1
    Default: ""
  RoleManagedPolicy2:
    Type: String
    Description: Optional managed policy ARN 2
    Default: ""
  RoleManagedPolicy3:
    Type: String
    Description: Optional managed policy ARN 3
    Default: ""
  RoleManagedPolicy4:
    Type: String
    Description: Optional managed policy ARN 4
    Default: ""
  RoleManagedPolicy5:
    Type: String
    Description: Optional managed policy ARN 5
    Default: ""

Conditions:
  HasCustomRoleName: !Not [!Equals [!Ref RoleName, ""]]
  HasPermissionsBoundary: !Not [!Equals [!Ref RolePermissionsBoundary, ""]]
  HasPolicy1: !Not [!Equals [!Ref RoleManagedPolicy1, ""]]
  HasPolicy2: !Not [!Equals [!Ref RoleManagedPolicy2, ""]]
  HasPolicy3: !Not [!Equals [!Ref RoleManagedPolicy3, ""]]
  HasPolicy4: !Not [!Equals [!Ref RoleManagedPolicy4, ""]]
  HasPolicy5: !Not [!Equals [!Ref RoleManagedPolicy5, ""]]

Resources:
  SAMLFederatedRole:
    Type: 'AWS::IAM::Role'
    Properties:
      RoleName: !If
        - HasCustomRoleName
        - !Ref RoleName
        - !Ref AWS::NoValue
      Description: 'IAM role with SAML provider trust'
      MaxSessionDuration: !Ref RoleSessionDuration
      PermissionsBoundary: !If
        - HasPermissionsBoundary
        - !Ref RolePermissionsBoundary
        - !Ref AWS::NoValue
      Path: !Ref RolePath
      AssumeRolePolicyDocument:
        Version: '2012-10-17		 	 	 '
        Statement:
          - Effect: Allow
            Principal:
              Federated: !Ref SAMLProviderARN
            Action: 'sts:AssumeRoleWithSAML'
            Condition:
              StringEquals:
                'SAML:aud': 'https://signin.aws.amazon.com/saml'
      ManagedPolicyArns:
        !Split
          - ','
          - !Join
            - ','
            - - !If [HasPolicy1, !Ref RoleManagedPolicy1, !Ref 'AWS::NoValue']
              - !If [HasPolicy2, !Ref RoleManagedPolicy2, !Ref 'AWS::NoValue']
              - !If [HasPolicy3, !Ref RoleManagedPolicy3, !Ref 'AWS::NoValue']
              - !If [HasPolicy4, !Ref RoleManagedPolicy4, !Ref 'AWS::NoValue']
              - !If [HasPolicy5, !Ref RoleManagedPolicy5, !Ref 'AWS::NoValue']

Outputs:
  RoleARN:
    Description: 'ARN of the created IAM Role'
    Value: !GetAtt SAMLFederatedRole.Arn
    Export:
      Name: !Sub '${AWS::StackName}-RoleARN'
```

------