

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.

# Erste Schritte mit dem ausgehenden Identitätsverbund
<a name="id_roles_providers_outbound_getting_started"></a>

Diese Anleitung zeigt Ihnen, wie Sie den ausgehenden Identitätsverbund für Ihr AWS Konto aktivieren und Ihr erstes JSON Web Token (JWT) erhalten (mithilfe der [ GetWebIdentityToken ](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) API). Sie aktivieren die Funktion, stellen eine Vertrauensbeziehung zu einem externen Dienst her, konfigurieren IAM-Berechtigungen und fordern ein Token entweder mithilfe der AWS CLI oder des AWS SDK für Python (Boto3) an.

## Voraussetzungen
<a name="outbound-federation-prerequisites"></a>

Stellen Sie vor Beginn sicher, dass Sie über Folgendes verfügen:
+ Aktuelle Version der AWS CLI oder Python 3.8 (oder höher) und Boto3 installiert (für SDK-Beispiele) AWS 
+ Ein externes Dienstkonto, in dem Sie Vertrauensbeziehungen konfigurieren können (z. B. ein externer Cloud-Anbieter, SaaS-Anbieter oder eine Testanwendung)

**Anmerkung**  
Die `GetWebIdentityToken` API ist auf dem STS Global-Endpunkt nicht verfügbar.
Die von der `GetWebIdentityToken` API generierten JSON Web Tokens (JWTs) können nicht für den OpenID Connect (OIDC) -Verbund mit (über die AWS API) verwendet werden. [ AssumeRoleWithWebIdentity ](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)

## Aktivieren Sie den ausgehenden Identitätsverbund für Ihr Konto
<a name="enable-outbound-federation"></a>

Sie müssen den ausgehenden Identitätsverbund aktivieren, bevor Sie Token anfordern können. Sie können die Funktion mithilfe der AWS Management Console oder programmgesteuert mithilfe der API aktivieren. [ EnableOutboundWebIdentityFederation ](https://docs.aws.amazon.com/IAM/latest/APIReference/API_EnableOutboundWebIdentityFederation.html)

### Verwendung der AWS CLI
<a name="enable-using-cli"></a>

```
aws iam enable-outbound-web-identity-federation
```

### Verwenden AWS SDK für Python
<a name="enable-using-sdk"></a>

```
import boto3

# Create IAM client
iam_client = boto3.client('iam')

# Enable outbound identity federation
response = iam_client.enable_outbound_web_identity_federation()
print(f"Feature enabled. Issuer URL: {response['IssuerUrl']}")
print(f"Status: {response['Status']}")
```

### Verwendung der AWS Konsole
<a name="enable-using-console"></a>

Navigieren Sie zu IAM und wählen Sie ** im linken Navigationsmenü im ** Abschnitt ** Zugriffsverwaltung die Option ** Kontoeinstellungen aus

![Das Menüelement Kontoeinstellungen ist in der linken Navigationsleiste im Bereich Zugriffsverwaltung hervorgehoben.](http://docs.aws.amazon.com/de_de/IAM/latest/UserGuide/images/outbound-screen-1.png)


Sobald Sie die Funktion aktiviert haben, notieren Sie sich Ihre kontospezifische Aussteller-URL. Sie werden diese URL verwenden, wenn Sie Vertrauensbeziehungen in externen Diensten konfigurieren. Sie können diese Aussteller-URL bei Bedarf auch mithilfe der [ GetOutboundWebIdentityFederationInfo ](https://docs.aws.amazon.com/IAM/latest/APIReference/API_GetOutboundWebIdentityFederationInfo.html) API abrufen.

![Die Outbound Identity Federation-Schnittstelle zeigt den Status Aktiviert mit der Schaltfläche „Deaktivieren“ und der URL des Token-Ausstellers an.](http://docs.aws.amazon.com/de_de/IAM/latest/UserGuide/images/outbound-screen-2.png)


## Stellen Sie eine Vertrauensbeziehung zum externen Dienst her
<a name="establish-trust-relationship"></a>

Konfigurieren Sie den externen Dienst so, dass er Tokens, die von Ihrem AWS Konto ausgestellt wurden, vertraut und akzeptiert. Die spezifischen Schritte variieren je nach Dienst, beinhalten aber im Allgemeinen:
+ Registrierung der URL Ihres AWS Kontoausstellers als vertrauenswürdiger Identitätsanbieter
+ Konfigurieren Sie, welche Angaben überprüft werden sollen (Zielgruppe, Betreffmuster)
+ Zuordnung von Token-Ansprüchen zu Berechtigungen im externen Dienst

Detaillierte Konfigurationsanweisungen finden Sie in der Dokumentation zum externen Dienst.

## Konfigurieren Sie die IAM-Berechtigungen.
<a name="configure-iam-permissions"></a>

Erstellen Sie eine IAM-Richtlinie, die die Berechtigung zum Aufrufen der [ GetWebIdentityToken ](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) API gewährt, und hängen Sie die Richtlinie an eine IAM-Rolle an, die Token generieren muss.

Diese Beispielrichtlinie gewährt Zugriff auf die Token-Generierung mit bestimmten Einschränkungen. Sie erlaubt das Anfordern von Tokens nur für die Zielgruppe https://api.example.com "" und erzwingt eine maximale Token-Lebensdauer von 5 Minuten (300 Sekunden). Eine Liste der Bedingungsschlüssel, mit denen Sie Token-Eigenschaften erzwingen können, finden Sie unter. [IAM und AWS STS Bedingungskontextschlüssel](reference_policies_iam-condition-keys.md)

### Beispiel für eine IAM-Richtlinie
<a name="example-iam-policy"></a>

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sts:GetWebIdentityToken",
            "Resource": "*",
            "Condition": {
                "ForAllValues:StringEquals": {
                    "sts:IdentityTokenAudience": "https://api.example.com"
                },
                "NumericLessThanEquals": {
                    "sts:DurationSeconds": 300
                }
            }
        }
    ]
}
```

## Fordern Sie Ihr erstes JSON-Web-Token (JWT) an
<a name="request-first-jwt"></a>

Sie können ein JSON-Web-Token mithilfe der [ GetWebIdentityToken ](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetWebIdentityToken.html) API anfordern. Sie können beim Aufrufen der API die folgenden Parameter angeben:
+ **Zielgruppe (erforderlich): ** Der beabsichtigte Empfänger des Tokens. Dieser Wert füllt die Angabe „aud“ im JWT aus. Externe Dienste überprüfen diese Behauptung, um sicherzustellen, dass das Token für sie bestimmt war.
+ **SigningAlgorithm (erforderlich): ** Der kryptografische Algorithmus, der zum Signieren des Tokens verwendet wurde. Gültige Werte sind ES384 und RS256. Verwenden Sie ES384 für optimale Sicherheit und Leistung oder RS256 für eine umfassendere Kompatibilität mit Systemen, die ECDSA nicht unterstützen.
+ **DurationSeconds (optional): ** Die Lebensdauer des Tokens in Sekunden. Gültige Werte liegen im Bereich von 60 bis 3600. Der Standardwert ist 300 (5 Minuten). Für eine erhöhte Sicherheit empfehlen wir eine kürzere Token-Lebensdauer.
+ **Tags (optional): ** Eine Liste von Schlüssel-Wert-Paaren, die als benutzerdefinierte Ansprüche in das Token aufgenommen werden sollen. Externe Dienste können diese Ansprüche für eine detaillierte Autorisierung verwenden.

Die API gibt die folgenden Felder zurück:
+ **IdentityToken: ** Das signierte JWT als Base64url-kodierte Zeichenfolge. Schließen Sie dieses Token in Anfragen an externe Dienste ein.
+ **Ablauf: ** Der UTC-Zeitstempel für den Zeitpunkt, zu dem das Token abläuft.

### Verwendung der AWS CLI
<a name="using-aws-cli"></a>

```
aws sts get-web-identity-token \
    --audience "https://api.example.com" \
    --signing-algorithm ES384 \
    --duration-seconds 300 \
    --tags Key=team,Value=data-engineering \
           Key=environment,Value=production \
           Key=cost-center,Value=analytics
```

### Verwenden AWS SDK für Python
<a name="using-aws-sdk-python"></a>

```
import boto3

sts_client = boto3.client('sts')

response = sts_client.get_web_identity_token(
    Audience=['https://api.example.com'],
    DurationSeconds=300,
    SigningAlgorithm='RS256',
    Tags=[
        {'Key': 'team', 'Value': 'data-engineering'},
        {'Key': 'environment', 'Value': 'production'},
        {'Key': 'cost-center', 'Value': 'analytics'}
    ]
)

token = response['WebIdentityToken']
```

Sie können das JWT auch dekodieren, um seinen Inhalt mithilfe von Standard-JWT-Bibliotheken wie PyJWT Python-jose für Python, Nimbus JOSE\+JWT für Java oder Debuggern wie jwt.io zu überprüfen. [Token-Ansprüche verstehen](id_roles_providers_outbound_token_claims.md)Weitere Informationen zu den im Token enthaltenen Ansprüchen finden Sie unter.

## Verwenden Sie das Token mit einem externen Dienst
<a name="use-token-with-external-service"></a>

Nachdem Sie das Token erhalten haben, fügen Sie es in Anfragen an den externen Dienst ein. Die Methode ist je nach Dienst unterschiedlich, aber die meisten Dienste akzeptieren Token im Authorization-Header. Der externe Dienst sollte eine Token-Validierungslogik implementieren, die die JWKS-Schlüssel vom bekannten Endpunkt Ihres Ausstellers abruft, die Signatur des Tokens überprüft und wichtige Ansprüche validiert, bevor Sie Zugriff auf Ihre Workloads gewähren. AWS 

## Rufen Sie Bestätigungsschlüssel und Metadaten von den OpenID Connect (OIDC) -Endpunkten ab
<a name="fetch-verification-keys"></a>

Die eindeutige Aussteller-URL für Ihr AWS Konto hostet die OpenID Connect (OIDC) Discovery-Endpunkte, die Bestätigungsschlüssel und Metadaten enthalten, die für die Token-Verifizierung erforderlich sind.

Die URL des OIDC-Discovery-Endpunkts enthält Metadaten, die einige Anbieter zur Verifizierung von Tokens verwenden. Sie ist verfügbar unter:

```
{issuer_url}/.well-known/openid-configuration
```

Der JWKS-Endpunkt (JSON Web Key Set) enthält Schlüssel, die zur Überprüfung von Token-Signaturen verwendet werden. Er ist verfügbar unter:

```
{issuer_url}/.well-known/jwks.json
```

### Holen Sie sich JWKS mit curl
<a name="fetch-jwks-curl"></a>

```
curl https://{issuer_url}/.well-known/jwks.json
```

Antwort:

```
{
  "keys": [
    {
      "kty": "EC",
      "use": "sig",
      "kid": "key-id-1",
      "alg": "ES384",
      "crv": "P-384",
      "x": "base64-encoded-x-coordinate",
      "y": "base64-encoded-y-coordinate"
    },
    {
      "kty": "RSA",
      "use": "sig",
      "kid": "key-id-2",
      "n": "base64-encoded-modulus",
      "e": "AQAB"
    }
  ]
}
```

### Verwenden AWS SDK für Python
<a name="fetch-using-sdk"></a>

```
import requests

# Fetch Openid Configuration
open_id_config_response = requests.get("https://{issuer_url}/.well-known/openid-configuration")
open_id_config = open_id_config_response.json()

# Fetch JWKS
jwks_response = requests.get("https://{issuer_url}/.well-known/jwks.json")
jwks = jwks_response.json()
```

Wir empfehlen, diese Schlüssel zwischenzuspeichern, um zu vermeiden, dass sie bei jeder Token-Überprüfung abgerufen werden.

### Unverzichtbare Validierungen von Ansprüchen
<a name="essential-claim-validations"></a>
+ **Betreff (Sub): ** Stellen Sie sicher, dass der betreffende Antrag das erwartete IAM-Prinzipal-ARN-Muster enthält.
+ **Ablauf (gültig): ** Stellen Sie sicher, dass das Token nicht abgelaufen ist. JWT-Bibliotheken handhaben dies in der Regel automatisch.
+ **Zielgruppe (aud): ** Stellen Sie sicher, dass die Zielgruppe Ihrem erwarteten Wert entspricht. Dadurch wird verhindert, dass Token, die für andere Dienste bestimmt sind, zusammen mit Ihren verwendet werden.
+ **Aussteller (in): ** Stellen Sie sicher, dass der Aussteller mit dem/den AWS Konten übereinstimmt, denen Sie vertrauen. Pflegen Sie eine Liste vertrauenswürdiger Aussteller-URLs.

Wann immer möglich, sollten Sie zusätzliche AWS spezifische Ansprüche überprüfen, um eine differenzierte Zugriffskontrolle in Ihrem externen Dienst zu implementieren. Überprüfen Sie beispielsweise den org\_id-Anspruch, um den Zugriff auf IAM-Prinzipale in Ihrer AWS Organisation einzuschränken, überprüfen Sie principal\_tags, um eine attributbasierte Zugriffskontrolle durchzusetzen (z. B. nur Produktionsumgebungen oder bestimmte Teams zuzulassen), oder überprüfen Sie Sitzungskontextansprüche wie lambda\_source\_function\_arn oder ec2\_instance\_source\_vpc, um den Zugriff auf der Grundlage der Rechenressource einzuschränken. Eine vollständige Liste der im Token enthaltenen Ansprüche [ finden Sie unter ](id_roles_providers_outbound_token_claims.md) Grundlegendes zu Token-Ansprüchen.