Création d’un jeton d’authentification dans Amazon Aurora DSQL - Amazon Aurora DSQL

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Création d’un jeton d’authentification dans Amazon Aurora DSQL

Pour vous connecter à Amazon Aurora DSQL avec un client SQL, générez un jeton d’authentification à utiliser comme mot de passe. Ce jeton est utilisé uniquement pour l’authentification de la connexion. Une fois la connexion établie, la connexion reste valide même si le jeton d’authentification expire.

Si vous créez un jeton d'authentification à l'aide de la AWS console, le jeton expire automatiquement dans une heure par défaut. Si vous utilisez le AWS CLI ou SDKs pour créer le jeton, la valeur par défaut est de 15 minutes. La durée maximale est de 604 800 secondes, soit une semaine. Pour vous reconnecter à Aurora DSQL depuis votre client, vous pouvez utiliser le même jeton d’authentification s’il n’a pas expiré, ou vous pouvez en générer un nouveau.

Pour commencer à générer un jeton, créez une politique IAM et un cluster dans Aurora DSQL. Utilisez ensuite la AWS console ou AWS CLI le AWS SDKs pour générer un jeton.

Vous devez disposer au minimum des autorisations IAM répertoriées dans Connexion à votre cluster à l’aide d’IAM, selon le rôle de base de données que vous utilisez pour vous connecter.

Utiliser la AWS console pour générer un jeton d'authentification dans Aurora DSQL

Aurora DSQL authentifie les utilisateurs à l’aide d’un jeton plutôt que d’un mot de passe. Vous pouvez générer le jeton à partir de la console.

Pour créer un jeton d’authentification
  1. Connectez-vous à la console Aurora AWS Management Console DSQL et ouvrez-la à https://console.aws.amazon.com/dsql l'adresse.

  2. Choisissez l’ID du cluster pour lequel vous souhaitez générer un jeton d’authentification. Si vous n’avez pas encore créé de cluster, suivez les étapes décrites dans Étape 1 : création d’un cluster à une seule région Aurora DSQL ou Étape 4 (facultatif) : créer un cluster multirégional.

  3. Choisissez Connecter, puis sélectionnez Obtenir un jeton.

  4. Choisissez si vous voulez vous connecter en tant qu’admin ou avec un rôle de base de données personnalisé.

  5. Copiez le jeton d’authentification généré et utilisez-le pour Accédez à Aurora DSQL à l'aide de clients SQL.

Pour plus d’informations sur les rôles de base de données personnalisés et IAM dans Aurora DSQL, consultez Authentification et autorisation pour Aurora DSQL.

AWS CloudShell À utiliser pour générer un jeton d'authentification dans Aurora DSQL

Avant de pouvoir générer un jeton d'authentification à l'aide de AWS CloudShell, assurez-vous de créer un cluster Aurora DSQL.

Pour générer un jeton d'authentification à l'aide de AWS CloudShell
  1. Connectez-vous à la console Aurora AWS Management Console DSQL et ouvrez-la à https://console.aws.amazon.com/dsql l'adresse.

  2. En bas à gauche de la AWS console, choisissez AWS CloudShell.

  3. Exécutez la commande suivante pour générer un jeton d’authentification pour le rôle admin. us-east-1Remplacez-le par votre région et your_cluster_endpoint par le point de terminaison de votre propre cluster.

    Note

    Si vous ne vous connectez pas en tant que admin, utilisez generate-db-connect-auth-token à la place.

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

    Si vous rencontrez des erreurs, consultez Résoudre les problèmes liés à IAM et Comment résoudre les erreurs d’accès refusé ou d’opération non autorisée avec une politique IAM ?.

  4. Utilisez la commande suivante pour utiliser psql afin de démarrer une connexion à votre cluster.

    PGSSLMODE=require \ psql --dbname postgres \ --username admin \ --host cluster_endpoint
  5. Vous devriez être invité à saisir un mot de passe. Copiez le jeton que vous avez généré et assurez-vous de ne pas inclure d’espaces ni de caractères supplémentaires. Collez-le dans le formulaire d’invite psql suivant.

    Password for user admin:
  6. Appuyez sur Entrée. Vous devriez obtenir une invite PostgreSQL.

    postgres=>

    Si vous obtenez une erreur d’accès refusé, assurez-vous que votre identité IAM dispose de l’autorisation dsql:DbConnectAdmin. Si vous êtes autorisé et que vous continuez à recevoir des erreurs d’accès refusé, consultez Résoudre les problèmes liés à IAM et Comment résoudre les erreurs d’accès refusé ou d’opération non autorisée avec une politique IAM ?.

Pour plus d’informations sur les rôles de base de données personnalisés et IAM dans Aurora DSQL, consultez Authentification et autorisation pour Aurora DSQL.

Utilisez le AWS CLI pour générer un jeton d'authentification dans Aurora DSQL

Lorsque votre cluster est ACTIVE, vous pouvez générer un jeton d’authentification sur l’interface de ligne de commande (CLI) à l’aide de la commande aws dsql. Utilisez l’une des techniques suivantes :

  • Si vous vous connectez avec le rôle admin, utilisez l’option generate-db-connect-admin-auth-token.

  • Si vous vous connectez avec le rôle de base de données personnalisé, utilisez l’option generate-db-connect-auth-token.

L’exemple suivant utilise les attributs suivants pour générer un jeton d’authentification pour le rôle admin.

  • your_cluster_endpoint— Le point de terminaison du cluster. Il suit le format your_cluster_identifier.dsql.region.on.aws, comme dans l’exemple 01abc2ldefg3hijklmnopqurstu.dsql.us-east-1.on.aws.

  • region— Le Région AWS, comme us-east-2 ouus-east-1.

Les exemples suivants définissent le délai d’expiration du jeton dans 3 600 secondes (1 heure).

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

Utilisez le SDKs pour générer un jeton dans Aurora DSQL

Vous pouvez générer un jeton d’authentification pour votre cluster lorsqu’il est à l’état ACTIVE. L’exemple de kits SDK utilise les attributs suivants pour générer un jeton d’authentification pour le rôle admin :

  • your_cluster_endpoint(ouyourClusterEndpoint) : point de terminaison de votre cluster Aurora DSQL. Le format de dénomination est your_cluster_identifier.dsql.region.on.aws, comme dans l’exemple 01abc2ldefg3hijklmnopqurstu.dsql.us-east-1.on.aws.

  • region(ouRegionEndpoint) — L' Région AWS endroit dans lequel se trouve votre cluster, tel que us-east-2 ouus-east-1.

Python SDK

Vous pouvez générer le jeton des manières suivantes :

  • Si vous vous connectez avec le rôle admin, utilisez generate_db_connect_admin_auth_token.

  • Si vous vous connectez avec le rôle de base de données personnalisé, utilisez generate_connect_auth_token.

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

Vous pouvez générer le jeton des manières suivantes :

  • Si vous vous connectez avec le rôle admin, utilisez GenerateDBConnectAdminAuthToken.

  • Si vous vous connectez avec le rôle de base de données personnalisé, utilisez GenerateDBConnectAuthToken.

#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) { Aws::SDKOptions options; Aws::InitAPI(options); 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; Aws::ShutdownAPI(options); return token; }
JavaScript SDK

Vous pouvez générer le jeton des manières suivantes :

  • Si vous vous connectez avec le rôle admin, utilisez getDbConnectAdminAuthToken.

  • Si vous vous connectez avec le rôle de base de données personnalisé, utilisez getDbConnectAuthToken.

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

Vous pouvez générer le jeton des manières suivantes :

  • Si vous vous connectez avec le rôle admin, utilisez generateDbConnectAdminAuthToken.

  • Si vous vous connectez avec le rôle de base de données personnalisé, utilisez generateDbConnectAuthToken.

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.create()) .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

Vous pouvez générer le jeton des manières suivantes :

  • Si vous vous connectez avec le rôle admin, utilisez db_connect_admin_auth_token.

  • Si vous vous connectez avec le rôle de base de données personnalisé, utilisez db_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

Vous pouvez générer le jeton des manières suivantes :

  • Si vous vous connectez avec le rôle admin, utilisez generate_db_connect_admin_auth_token.

  • Si vous vous connectez avec le rôle de base de données personnalisé, utilisez generate_db_connect_auth_token.

require 'aws-sdk-dsql' def generate_token(your_cluster_endpoint, region) credentials = Aws::SharedCredentials.new() begin 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 }) rescue => error puts error.full_message end end
.NET
Note

Le kit SDK officiel pour .NET n’inclut pas d’appel d’API intégré pour générer un jeton d’authentification pour Aurora DSQL. À la place, vous devez utiliser DSQLAuthTokenGenerator, qui est une classe d’utilitaire. L’exemple de code suivant décrit comment générer le jeton d’authentification pour .NET.

Vous pouvez générer le jeton des manières suivantes :

  • Si vous vous connectez avec le rôle admin, utilisez DbConnectAdmin.

  • Si vous vous connectez avec le rôle de base de données personnalisé, utilisez DbConnect.

L’exemple suivant utilise la classe d’utilitaire DSQLAuthTokenGenerator pour générer le jeton d’authentification pour un utilisateur avec le rôle admin. Remplacez-le insert-dsql-cluster-endpoint par le point de terminaison de votre cluster.

using Amazon; using Amazon.DSQL.Util; using Amazon.Runtime; var yourClusterEndpoint = "insert-dsql-cluster-endpoint"; AWSCredentials credentials = FallbackCredentialsFactory.GetCredentials(); var token = DSQLAuthTokenGenerator.GenerateDbConnectAdminAuthToken(credentials, RegionEndpoint.USEast1, yourClusterEndpoint); Console.WriteLine(token);
Golang
Note

Le kit SDK Golang ne fournit pas de méthode intégrée pour générer un jeton pré-signé. Vous devez construire manuellement la demande signée, comme illustré dans l’exemple de code suivant.

Dans l’exemple de code suivant, spécifiez l’action en fonction de l’utilisateur PostgreSQL :

  • Si vous vous connectez avec le rôle admin, utilisez l’action DbConnectAdmin.

  • Si vous vous connectez avec le rôle de base de données personnalisé, utilisez l’action DbConnect.

En plus de yourClusterEndpoint etregion, l'exemple suivant utiliseaction. Spécifiez le action en fonction de l'utilisateur PostgreSQL.

func GenerateDbConnectAdminAuthToken(yourClusterEndpoint string, region string, action string) (string, error) { // Fetch credentials sess, err := session.NewSession() if err != nil { return "", err } creds, err := sess.Config.Credentials.Get() if err != nil { return "", err } staticCredentials := credentials.NewStaticCredentials( creds.AccessKeyID, creds.SecretAccessKey, creds.SessionToken, ) // The scheme is arbitrary and is only needed because validation of the URL requires one. endpoint := "https://" + yourClusterEndpoint req, err := http.NewRequest("GET", endpoint, nil) if err != nil { return "", err } values := req.URL.Query() values.Set("Action", action) req.URL.RawQuery = values.Encode() signer := v4.Signer{ Credentials: staticCredentials, } _, err = signer.Presign(req, nil, "dsql", region, 15*time.Minute, time.Now()) if err != nil { return "", err } url := req.URL.String()[len("https://"):] return url, nil }