Generieren eines Authentifizierungstokens in Amazon Aurora DSQL - Amazon Aurora DSQL

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.

Generieren eines Authentifizierungstokens in Amazon Aurora DSQL

Um mit einem SQL-Client eine Verbindung zu Amazon Aurora DSQL herzustellen, generieren Sie ein Authentifizierungstoken, das als Passwort verwendet wird. Dieses Token wird nur zur Authentifizierung der Verbindung verwendet. Nachdem die Verbindung hergestellt wurde, bleibt die Verbindung gültig, auch wenn das Authentifizierungstoken abläuft.

Wenn Sie mit der AWS Konsole ein Authentifizierungstoken erstellen AWS CLI, läuft das oder SDKs, das Token standardmäßig automatisch in 15 Minuten ab. Die maximale Dauer beträgt 604.800 Sekunden, also eine Woche. Um von Ihrem Client aus erneut eine Verbindung zu Aurora DSQL herzustellen, können Sie dasselbe Authentifizierungstoken verwenden, sofern es nicht abgelaufen ist, oder Sie können ein neues Token generieren.

Um mit der Generierung eines Tokens zu beginnen, erstellen Sie eine IAM-Richtlinie und einen Cluster in Aurora DSQL. Verwenden Sie dann die AWS Konsole oder AWS CLI, AWS SDKs um ein Token zu generieren.

Je nachdem, welche Datenbankrolle Sie für die Verbindung verwenden, benötigen Sie mindestens die unter Verbindungsaufbau mit Ihrem Cluster mithilfe von IAM aufgeführten IAM-Berechtigungen.

Verwenden Sie die AWS Konsole, um ein Authentifizierungstoken in Aurora DSQL zu generieren

Aurora DSQL authentifiziert Benutzer mit einem Token und nicht mit einem Passwort. Sie können das Token über die Konsole erstellen.

Generieren eines Authentifizierungstokens
  1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Aurora DSQL-Konsole unterhttps://console.aws.amazon.com/dsql.

  2. Wählen Sie die Cluster-ID des Clusters, für den Sie ein Authentifizierungstoken erstellen möchten. Wenn Sie noch keinen Cluster erstellt haben, folgen Sie den Schritten unter Schritt 1: Erstellen eines Einzelregions-Clusters mit Aurora DSQL oder Schritt 4 (optional): Erstellen Sie einen Cluster mit mehreren Regionen.

  3. Wählen Sie Verbinden und dann Token abrufen aus.

  4. Wählen Sie aus, ob Sie die Verbindung als admin oder mit einer benutzerdefinierten Datenbankrolle herstellen möchten.

  5. Kopieren Sie das generierte Authentifizierungstoken und verwenden Sie es für Greifen Sie mithilfe von SQL-Clients auf Aurora DSQL zu.

Weitere Informationen zu benutzerdefinierten Datenbankrollen und IAM in Aurora DSQL finden Sie unter Authentifizierung und Autorisierung für Aurora DSQL.

Wird verwendet AWS CloudShell , um ein Authentifizierungstoken in Aurora DSQL zu generieren

Bevor Sie mit ein Authentifizierungstoken generieren können AWS CloudShell, stellen Sie sicher, dass Sie einen Aurora DSQL-Cluster erstellen.

Um ein Authentifizierungstoken zu generieren, verwenden Sie AWS CloudShell
  1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Aurora DSQL-Konsole unterhttps://console.aws.amazon.com/dsql.

  2. Wählen AWS CloudShell Sie unten links in der AWS Konsole.

  3. Führen Sie den folgenden Befehl aus, um ein Authentifizierungstoken für die admin-Rolle zu generieren. us-east-1Ersetzen Sie es durch Ihre Region und your_cluster_endpoint durch den Endpunkt Ihres eigenen Clusters.

    Anmerkung

    Wenn Sie die Verbindung nicht als admin herstellen, verwenden Sie stattdessen generate-db-connect-auth-token.

    aws dsql generate-db-connect-admin-auth-token \ --expires-in 3600 \ --region us-east-1 \ --hostname your_cluster_endpoint

    Falls Sie auf Probleme stoßen, finden Sie weitere Informationen unter Problembehandlung bei IAM und Wie kann ich Fehler mit einer IAM-Richtlinie beheben, bei denen der Zugriff verweigert wurde oder bei nicht autorisierten Vorgängen?.

  4. Verwenden Sie den folgenden Befehl, um mithilfe von psql eine Verbindung zu Ihrem Cluster herzustellen.

    PGSSLMODE=require \ psql --dbname postgres \ --username admin \ --host cluster_endpoint
  5. Sie sollten nun einen Prompt zur Passworteingab sehen. Kopieren Sie das von Ihnen generierte Token und stellen Sie sicher, dass Sie keine zusätzlichen Leerzeichen oder Zeichen mitkopieren. Fügen Sie es in den folgenden psql-Prompt ein.

    Password for user admin:
  6. Drücken Sie die Eingabetaste. Sie sollten nun einen PostgreSQL-Prompt sehen.

    postgres=>

    Wenn Sie die Fehlermeldung „Zugriff verweigert“ erhalten, stellen Sie sicher, dass Ihre IAM-Identität über die entsprechende dsql:DbConnectAdmin-Berechtigung verfügt. Wenn Sie über die entsprechende Berechtigung verfügen und weiterhin die Fehlermeldung „Zugriff verweigert“ erhalten, finden Sie weitere Informationen unter Problembehandlung bei IAM und Wie kann ich Fehler mit einer IAM-Richtlinie beheben, bei der der Zugriff verweigert wurde oder bei nicht autorisierten Vorgängen?.

Weitere Informationen zu benutzerdefinierten Datenbankrollen und IAM in Aurora DSQL finden Sie unter Authentifizierung und Autorisierung für Aurora DSQL.

Verwenden Sie das AWS CLI , um ein Authentifizierungstoken in Aurora DSQL zu generieren

Wenn Ihr Cluster ACTIVE ist, können Sie mit dem aws dsql-Befehl ein Authentifizierungstoken auf der CLI generieren. Sie können eine der folgenden Techniken verwenden:

Anmerkung

Die Token-Generierung ist ein lokaler Vorgang, bei dem die Anfrage mit Ihren aktuellen IAM-Anmeldeinformationen signiert wird. Es wird kein Kontakt hergestellt AWS , um die Anmeldeinformationen zu überprüfen. Wenn Ihre Anmeldeinformationen abgelaufen oder ungültig sind, ist die Token-Generierung trotzdem erfolgreich, aber der Verbindungsversuch schlägt fehl. Stellen Sie sicher, dass Ihre IAM-Anmeldeinformationen gültig sind, bevor Sie ein Token generieren.

  • Wenn Sie eine Verbindung mit der admin-Rolle herstellen, verwenden Sie die generate-db-connect-admin-auth-token-Option.

  • Wenn Sie eine Verbindung mit einer benutzerdefinierten Datenbankrolle herstellen, verwenden Sie die generate-db-connect-auth-token-Option.

Im folgenden Beispiel werden die nachstehenden Attribute verwendet, um ein Authentifizierungstoken für die admin-Rolle zu generieren.

  • your_cluster_endpoint— Der Endpunkt des Clusters. Das Attribut folgt dem Format your_cluster_identifier.dsql.region.on.aws wie im Beispiel 01abc2ldefg3hijklmnopqurstu.dsql.us-east-1.on.aws gezeigt.

  • region— Der AWS-Region, wie us-east-2 oderus-east-1.

In den folgenden Beispielen wird die Ablaufzeit für das Token auf 3600 Sekunden (1 Stunde) festgelegt.

Linux and macOS
aws dsql generate-db-connect-admin-auth-token \ --region region \ --expires-in 3600 \ --hostname your_cluster_endpoint
Windows
aws dsql generate-db-connect-admin-auth-token ^ --region=region ^ --expires-in=3600 ^ --hostname=your_cluster_endpoint

Verwenden Sie das SDKs , um ein Token in Aurora DSQL zu generieren

Sie können ein Authentifizierungstoken für Ihren Cluster generieren, wenn er sich im Status ACTIVE befindet. In den SDK-Beispielen werden die folgenden Attribute verwendet, um ein Authentifizierungstoken für die admin-Rolle zu generieren:

  • your_cluster_endpoint(oderyourClusterEndpoint) — Der Endpunkt Ihres Aurora DSQL-Clusters. Das Benennungsformat ist your_cluster_identifier.dsql.region.on.aws wie im Beispiel 01abc2ldefg3hijklmnopqurstu.dsql.us-east-1.on.aws.

  • region(oderRegionEndpoint) — Der, AWS-Region in dem sich Ihr Cluster befindet, z. B. us-east-2 oderus-east-1.

Python SDK
Tipp

AWS empfiehlt die Verwendung vonAurora DSQL-Konnektor für Python, die die Token-Generierung automatisch durchführt.

Sie können das Token wie folgt erstellen:

  • Wenn Sie eine Verbindung mit der admin Rolle herstellen, verwenden Siegenerate_db_connect_admin_auth_token.

  • Wenn Sie eine Verbindung mit einer benutzerdefinierten Datenbankrolle herstellen, verwenden Siegenerate_connect_auth_token.

import boto3 def generate_token(your_cluster_endpoint, region): client = boto3.client("dsql", region_name=region) # use `generate_db_connect_auth_token` instead if you are not connecting as admin. token = client.generate_db_connect_admin_auth_token(your_cluster_endpoint, region) print(token) return token
C++ SDK

Sie können das Token wie folgt erstellen:

  • Wenn Sie eine Verbindung mit der admin Rolle herstellen, verwenden SieGenerateDBConnectAdminAuthToken.

  • Wenn Sie eine Verbindung mit einer benutzerdefinierten Datenbankrolle herstellen, verwenden SieGenerateDBConnectAuthToken.

#include <aws/core/Aws.h> #include <aws/dsql/DSQLClient.h> #include <iostream> using namespace Aws; using namespace Aws::DSQL; std::string generateToken(String yourClusterEndpoint, String region) { DSQLClientConfiguration clientConfig; clientConfig.region = region; DSQLClient client{clientConfig}; std::string token = ""; // If you are not using the admin role to connect, use GenerateDBConnectAuthToken instead const auto presignedString = client.GenerateDBConnectAdminAuthToken(yourClusterEndpoint, region); if (presignedString.IsSuccess()) { token = presignedString.GetResult(); } else { std::cerr << "Token generation failed." << std::endl; } std::cout << token << std::endl; return token; } int main() { Aws::SDKOptions options; Aws::InitAPI(options); // Replace with your cluster endpoint and region std::string token = generateToken("your_cluster_endpoint.dsql.us-east-1.on.aws", "us-east-1"); Aws::ShutdownAPI(options); return 0; }
JavaScript SDK
Tipp

AWS empfiehlt die Verwendung vonAurora DSQL-Konnektoren für Node.js, die die Token-Generierung automatisch übernehmen.

Sie können das Token wie folgt erstellen:

  • Wenn Sie eine Verbindung mit der admin Rolle herstellen, verwenden SiegetDbConnectAdminAuthToken.

  • Wenn Sie eine Verbindung mit einer benutzerdefinierten Datenbankrolle herstellen, verwenden SiegetDbConnectAuthToken.

import { DsqlSigner } from "@aws-sdk/dsql-signer"; async function generateToken(yourClusterEndpoint, region) { const signer = new DsqlSigner({ hostname: yourClusterEndpoint, region, }); try { // Use `getDbConnectAuthToken` if you are _not_ logging in as the `admin` user const token = await signer.getDbConnectAdminAuthToken(); console.log(token); return token; } catch (error) { console.error("Failed to generate token: ", error); throw error; } }
Java SDK
Tipp

AWS empfiehlt die Verwendung vonVerbindung zu Aurora DSQL-Clustern mit einem JDBC-Konnektor herstellen, die die Token-Generierung automatisch durchführt.

Sie können das Token wie folgt erstellen:

  • Wenn Sie eine Verbindung mit der admin Rolle herstellen, verwenden SiegenerateDbConnectAdminAuthToken.

  • Wenn Sie eine Verbindung mit einer benutzerdefinierten Datenbankrolle herstellen, verwenden SiegenerateDbConnectAuthToken.

import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.services.dsql.DsqlUtilities; import software.amazon.awssdk.regions.Region; public class GenerateAuthToken { public static String generateToken(String yourClusterEndpoint, Region region) { DsqlUtilities utilities = DsqlUtilities.builder() .region(region) .credentialsProvider(DefaultCredentialsProvider.builder().build()) .build(); // Use `generateDbConnectAuthToken` if you are _not_ logging in as `admin` user String token = utilities.generateDbConnectAdminAuthToken(builder -> { builder.hostname(yourClusterEndpoint) .region(region); }); System.out.println(token); return token; } }
Rust SDK

Sie können das Token wie folgt erstellen:

  • Wenn Sie eine Verbindung mit der admin Rolle herstellen, verwenden Siedb_connect_admin_auth_token.

  • Wenn Sie eine Verbindung mit einer benutzerdefinierten Datenbankrolle herstellen, verwenden Siedb_connect_auth_token.

use aws_config::{BehaviorVersion, Region}; use aws_sdk_dsql::auth_token::{AuthTokenGenerator, Config}; async fn generate_token(your_cluster_endpoint: String, region: String) -> String { let sdk_config = aws_config::load_defaults(BehaviorVersion::latest()).await; let signer = AuthTokenGenerator::new( Config::builder() .hostname(&your_cluster_endpoint) .region(Region::new(region)) .build() .unwrap(), ); // Use `db_connect_auth_token` if you are _not_ logging in as `admin` user let token = signer.db_connect_admin_auth_token(&sdk_config).await.unwrap(); println!("{}", token); token.to_string() }
Ruby SDK
Tipp

AWS empfiehlt die Verwendung vonVerbindung zu Aurora DSQL-Clustern mit einem Ruby-Konnektor herstellen, die die Token-Generierung automatisch durchführt.

Sie können das Token wie folgt erstellen:

  • Wenn Sie eine Verbindung mit der admin Rolle herstellen, verwenden Siegenerate_db_connect_admin_auth_token.

  • Wenn Sie eine Verbindung mit einer benutzerdefinierten Datenbankrolle herstellen, verwenden Siegenerate_db_connect_auth_token.

require 'aws-sdk-dsql' def generate_token(your_cluster_endpoint, region) credentials = Aws::CredentialProviderChain.new.resolve token_generator = Aws::DSQL::AuthTokenGenerator.new({ :credentials => credentials }) # if you're not using admin role, use generate_db_connect_auth_token instead token = token_generator.generate_db_connect_admin_auth_token({ :endpoint => your_cluster_endpoint, :region => region }) end
PHP SDK

Sie können das Token wie folgt erstellen:

  • Wenn Sie eine Verbindung mit der admin Rolle herstellen, verwenden SiegenerateDbConnectAdminAuthToken.

  • Wenn Sie eine Verbindung mit einer benutzerdefinierten Datenbankrolle herstellen, verwenden SiegenerateDbConnectAuthToken.

<?php require 'vendor/autoload.php'; use Aws\DSQL\AuthTokenGenerator; use Aws\Credentials\CredentialProvider; function generateToken(string $yourClusterEndpoint, string $region): string { $provider = CredentialProvider::defaultProvider(); $generator = new AuthTokenGenerator($provider); // Use generateDbConnectAuthToken if you are not connecting as admin $token = $generator->generateDbConnectAdminAuthToken($yourClusterEndpoint, $region); echo $token . PHP_EOL; return $token; }
.NET
Tipp

AWS empfiehlt die Verwendung vonHerstellen einer Verbindung zu Aurora DSQL-Clustern mit einem .NET-Connector, die die Token-Generierung automatisch durchführt.

Anmerkung

Das offizielle SDK für .NET enthält keinen integrierten API-Aufruf zur Generierung eines Authentifizierungstokens für Aurora DSQL. Stattdessen müssen Sie die Utility-Klasse DSQLAuthTokenGenerator verwenden. Im folgenden Codebeispiel sehen Sie, wie das Authentifizierungstoken für .NET generiert wird.

Sie können das Token wie folgt erstellen:

  • Wenn Sie eine Verbindung mit der admin Rolle herstellen, verwenden SieDbConnectAdmin.

  • Wenn Sie eine Verbindung mit einer benutzerdefinierten Datenbankrolle herstellen, verwenden SieDbConnect.

Im folgenden Beispiel wird die Utility-Klasse DSQLAuthTokenGenerator verwendet, um das Authentifizierungstoken für einen Benutzer mit der Rolle admin zu generieren. Ersetzen Sie es insert-dsql-cluster-endpoint durch Ihren Cluster-Endpunkt.

using Amazon; using Amazon.DSQL.Util; var yourClusterEndpoint = "insert-dsql-cluster-endpoint"; // Use `DSQLAuthTokenGenerator.GenerateDbConnectAuthToken` if you are _not_ logging in as `admin` user var token = DSQLAuthTokenGenerator.GenerateDbConnectAdminAuthToken(RegionEndpoint.USEast1, yourClusterEndpoint); Console.WriteLine(token);
Go
Tipp

AWS empfiehlt die Verwendung vonVerbindung zu Aurora DSQL-Clustern mit einem Go-Connector herstellen, die die Token-Generierung automatisch durchführt.

Das AWS SDK for Go v2 bietet eine integrierte Methode zum Generieren von Authentifizierungstoken im github.com/aws/aws-sdk-go-v2/feature/dsql/authPaket.

  • Wenn Sie eine Verbindung mit der admin Rolle herstellen, verwenden Sieauth.GenerateDBConnectAdminAuthToken.

  • Wenn Sie eine Verbindung mit einer benutzerdefinierten Datenbankrolle herstellen, verwenden Sieauth.GenerateDbConnectAuthToken.

package main import ( "context" "fmt" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/feature/dsql/auth" ) func main() { ctx := context.Background() cfg, err := config.LoadDefaultConfig(ctx, config.WithRegion("region")) if err != nil { panic(err) } // Use auth.GenerateDbConnectAuthToken for non-admin users token, err := auth.GenerateDBConnectAdminAuthToken(ctx, "yourClusterEndpoint", "region", cfg.Credentials) if err != nil { panic(err) } fmt.Println(token) }