Anbieterkette für Standardanmeldedaten in der AWS SDK for Java 2.x - AWS SDK for Java 2.x

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.

Anbieterkette für Standardanmeldedaten in der AWS SDK for Java 2.x

Die standardmäßige Anbieterkette für AWS Anmeldeinformationen in der sucht AWS SDK for Java 2.x automatisch an einer vordefinierten Reihenfolge von Speicherorten nach Anmeldeinformationen, sodass sich Anwendungen authentifizieren können, AWS-Services ohne dass die Quellen für Anmeldeinformationen explizit angegeben werden müssen.

Die standardmäßige Anbieterkette für Anmeldeinformationen wird von der DefaultCredentialsProviderKlasse implementiert. Sie delegiert sequentiell an andere Implementierungen von Anbietern für Anmeldeinformationen, die an verschiedenen Stellen nach der Konfiguration suchen. Der erste Anbieter für Anmeldeinformationen, der alle erforderlichen Konfigurationselemente finden kann, bewirkt das Ende der Kette.

Um die standardmäßige Anbieterkette für Anmeldeinformationen zur Bereitstellung temporärer Anmeldeinformationen zu verwenden, erstellen Sie einen Service Client Builder, geben aber keinen Anbieter für Anmeldeinformationen an. Der folgende Codeausschnitt erstellt einenDynamoDbClient, der die standardmäßige Anbieterkette für Anmeldeinformationen verwendet, um Konfigurationseinstellungen zu finden und abzurufen.

// Any external Region configuration is overridden. // The SDK uses the default credentials provider chain because no specific credentials provider is specified. Region region = Region.US_WEST_2; DynamoDbClient ddb = DynamoDbClient.builder() .region(region) .build();

Reihenfolge beim Abrufen der Anmeldeinformationseinstellungen

Die Anbieterkette für Standardanmeldedaten des SDK for Java 2.x sucht anhand einer vordefinierten Reihenfolge nach Konfigurationen in Ihrer Umgebung.

  1. Java-Systemeigenschaften

    • Das SDK verwendet die SystemPropertyCredentialsProviderKlasse, um temporäre Anmeldeinformationen aus den aws.accessKeyId aws.sessionToken Java-Systemeigenschaften zu laden. aws.secretAccessKey

      Anmerkung

      Informationen zum Einstellen von Java-Systemeigenschaften finden Sie im Tutorial Systemeigenschaften auf der offiziellen Website der Java-Tutorials.

  2. Umgebungsvariablen

    • Das SDK verwendet die EnvironmentVariableCredentialsProviderKlasse, um temporäre Anmeldeinformationen aus den AWS_SESSION_TOKEN Umgebungsvariablen AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY, und zu laden.

  3. Web-Identitätstoken und IAM-Rollen-ARN

    • Das SDK verwendet die WebIdentityTokenFileCredentialsProviderKlasse, um Anmeldeinformationen zu laden, indem es mithilfe eines Web-Identitätstoken eine Rolle annimmt.

    • Der Anbieter für Anmeldeinformationen sucht nach den folgenden Umgebungsvariablen oder JVM-Systemeigenschaften:

      • AWS_WEB_IDENTITY_TOKEN_FILE or aws.webIdentityTokenFile

      • AWS_ROLE_ARN oder aws.roleArn

      • AWS_ROLE_SESSION_NAMEoder aws.roleSessionName (optional)

    • Nachdem das SDK die Werte erfasst hat, ruft es AWS Security Token Service (STS) auf und verwendet die temporären Anmeldeinformationen, die es zurückgibt, um Anfragen zu signieren.

    • Laufzeitumgebungen wie Amazon Elastic Kubernetes Service (EKS) stellen Web-Identitätstoken automatisch zur Verfügung AWS SDKs, sodass Anwendungen temporäre AWS Anmeldeinformationen abrufen können.

  4. Die geteilten credentials Dateien und Dateien config

    • Das SDK verwendet die ProfileCredentialsProvider, um IAM Identity Center Single Sign-On-Einstellungen oder temporäre Anmeldeinformationen aus dem [default] Profil in den gemeinsam genutzten credentials Dateien zu laden. config

      Das AWS SDKs Referenzhandbuch zu Tools enthält detaillierte Informationen darüber, wie das SDK for Java mit dem IAM Identity Center Single Sign-On-Token zusammenarbeitet, um temporäre Anmeldeinformationen abzurufen, die das SDK zum Aufrufen verwendet. AWS-Services

      Anmerkung

      Die config Dateien credentials und werden von verschiedenen AWS SDKs Tools gemeinsam genutzt. Weitere Informationen finden Sie unter The. aws/credentials and .aws/configDateien im Referenzhandbuch AWS SDKs und im Tools-Referenzhandbuch.

    • Da ein Profil in den geteilten config Dateien credentials und Dateien viele verschiedene Einstellungen enthalten kann, werden die Benutzer an eine Reihe anderer Anbieter ProfileCredentialsProvider delegiert, um unter dem [default] Profil nach Einstellungen zu suchen:

      • Grundlegende Anmeldeinformationen (KlasseStaticCredentialsProvider): Wenn das Profil aws_access_key_id und enthältaws_secret_access_key.

      • Sitzungsanmeldedaten (KlasseStaticSessionCredentialsProvider): Wenn das Profil aws_access_key_idaws_secret_access_key, und enthältaws_session_token.

      • Prozessanmeldedaten (KlasseProcessCredentialsProvider): Wenn das Profil enthältcredential_process.

      • SSO-Anmeldeinformationen (KlasseSsoCredentialsProvider): Wenn das Profil SSO-bezogene Eigenschaften wiesso_role_name, enthält. sso_account_id

      • Anmeldeinformationen für Web-Identitätstoken (KlasseWebIdentityTokenCredentialsProvider): Wenn das Profil und enthältrole_arn. web_identity_token_file

      • Rollenbasierte Anmeldeinformationen mit Quellprofil (KlasseStsAssumeRoleCredentialsProvider): Wenn das Profil und enthältrole_arn. source_profile

      • Rollenbasierte Anmeldeinformationen mit Anmeldeinformationsquelle (KlasseStsAssumeRoleWithSourceCredentialsProvider): Wenn das Profil und enthält. role_arn credential_source

        • Wanncredential_source = Environment: Es verwendet eine Kette von und SystemPropertyCredentialsProvider EnvironmentVariableCredentialsProvider

        • Wanncredential_source = Ec2InstanceMetadata: Es benutzt InstanceProfileCredentialsProvider

        • Wanncredential_source = EcsContainer: Es verwendet ContainerCredentialsProvider

  5. Amazon ECS Anmeldeinformationen für Container

    • Das SDK verwendet die ContainerCredentialsProviderKlasse, um temporäre Anmeldeinformationen mithilfe der folgenden Umgebungsvariablen zu laden:

      1. AWS_CONTAINER_CREDENTIALS_RELATIVE_URI oder AWS_CONTAINER_CREDENTIALS_FULL_URI

      2. AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE oder AWS_CONTAINER_AUTHORIZATION_TOKEN

    Der ECS-Container-Agent legt automatisch die AWS_CONTAINER_CREDENTIALS_RELATIVE_URI Umgebungsvariable fest, die auf den Endpunkt der ECS-Anmeldeinformationen verweist. Die anderen Umgebungsvariablen werden normalerweise in bestimmten Szenarien festgelegt, in denen der standardmäßige Endpunkt für ECS-Anmeldeinformationen nicht verwendet wird.

  6. Amazon EC2 Von der IAM-Rolle bereitgestellte Anmeldeinformationen der Instanz

  7. Wenn das SDK die erforderlichen Konfigurationseinstellungen anhand der oben aufgeführten Schritte nicht finden kann, löst es eine Ausnahme mit einer Ausgabe ähnlich der folgenden aus:

    software.amazon.awssdk.core.exception.SdkClientException: Unable to load credentials from any of the providers in the chain AwsCredentialsProviderChain(credentialsProviders=[SystemPropertyCredentialsProvider(), EnvironmentVariableCredentialsProvider(), WebIdentityTokenCredentialsProvider(), ProfileCredentialsProvider(), ContainerCredentialsProvider(), InstanceProfileCredentialsProvider()])

Verwenden Sie den DefaultCredentialsProvider Code

Sie können die standardmäßige Anbieterkette für Anmeldeinformationen explizit in Ihrem Code verwenden. Dies entspricht funktionell der Tatsache, dass Sie überhaupt keinen Anbieter für Anmeldeinformationen angeben, da das SDK DefaultCredentialsProvider standardmäßig verwendet. Wenn Sie ihn jedoch explizit verwenden, kann Ihr Code lesbarer und selbstdokumentierender werden. Es zeigt deutlich, dass Sie beabsichtigen, die standardmäßige Anmeldeinformationskette zu verwenden.

import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; public class ExplicitDefaultCredentialsExample { public static void main(String[] args) { // Explicitly create the DefaultCredentialsProvider. DefaultCredentialsProvider defaultCredentialsProvider = DefaultCredentialsProvider .builder().build(); // Use it with any service client. S3Client s3Client = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(defaultCredentialsProvider) .build(); // Now you can use the client with the default credentials chain. s3Client.listBuckets(); } }

Wenn Sie den Standardanmeldeanmeldeanbieter erstellen, können Sie weitere Konfigurationen bereitstellen:

DefaultCredentialsProvider customizedProvider = DefaultCredentialsProvider.builder() .profileName("custom-profile") // Use a specific profile if the chain gets to the `ProfileCredentialsProvider` stage. .asyncCredentialUpdateEnabled(true) // Enable async credential updates. .build();

Dieser Ansatz gibt Ihnen mehr Kontrolle und bietet gleichzeitig den Komfort der standardmäßigen Anmeldeinformationskette.