Generazione di un token di autenticazione in Amazon Aurora DSQL - Amazon Aurora DSQL

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Generazione di un token di autenticazione in Amazon Aurora DSQL

Per connetterti ad Amazon Aurora DSQL con un client SQL, genera un token di autenticazione da utilizzare come password. Questo token viene utilizzato solo per autenticare la connessione. Una volta stabilita la connessione, la connessione rimane valida anche se il token di autenticazione scade.

Se si crea un token di autenticazione utilizzando la AWS console, il AWS CLI, o SDKs, il token scade automaticamente dopo 15 minuti per impostazione predefinita. La durata massima è di 604.800 secondi, ovvero una settimana. Per connetterti nuovamente ad Aurora DSQL dal client, puoi utilizzare lo stesso token di autenticazione se non è scaduto oppure è possibile generarne uno nuovo.

Per iniziare a generare un token, crea una policy IAM e un cluster in Aurora DSQL. Quindi usa la AWS console o AWS CLI il AWS SDKs per generare un token.

È necessario disporre almeno delle autorizzazioni IAM elencate in Connessione al cluster tramite IAM, a seconda del ruolo del database utilizzato per la connessione.

Usa la AWS console per generare un token di autenticazione in Aurora DSQL

Aurora DSQL autentica gli utenti con un token anziché una password. Puoi generare il token dalla console.

Per generare un token di autenticazione
  1. Accedi a Console di gestione AWS e apri la console Aurora DSQL all'indirizzo. https://console.aws.amazon.com/dsql

  2. Seleziona l’ID del cluster per cui desideri generare un token di autenticazione. Se non è ancora stato creato un cluster, segui i passaggi indicati in Passo 1: Creazione di cluster Aurora DSQL a Regione singola o Fase 4 (opzionale): Creare un cluster multiregionale.

  3. Scegli Connetti, quindi seleziona Ottieni token.

  4. Scegli se vuoi connetterti come admin o con un ruolo del database personalizzato.

  5. Copia il token di autenticazione generato e utilizzalo per Accedi ad Aurora DSQL utilizzando client SQL.

Per maggiori informazioni sui ruoli del database personalizzati e su IAM in Aurora DSQL, consulta Autenticazione e autorizzazione per Aurora DSQL.

AWS CloudShell Da utilizzare per generare un token di autenticazione in Aurora DSQL

Prima di poter generare un token di autenticazione utilizzando AWS CloudShell, assicurati di creare un cluster Aurora DSQL.

Per generare un token di autenticazione utilizzando AWS CloudShell
  1. Accedi a Console di gestione AWS e apri la console Aurora DSQL all'indirizzo. https://console.aws.amazon.com/dsql

  2. In basso a sinistra della AWS console, scegli. AWS CloudShell

  3. Esegui il comando seguente per generare un token di autenticazione per il ruolo admin. Sostituisci us-east-1 con la tua regione e your_cluster_endpoint con l'endpoint del tuo cluster.

    Nota

    Se non ti connetti come admin, utilizza invece generate-db-connect-auth-token.

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

    In caso di problemi, consulta Risoluzione dei problemi di IAM e Come posso risolvere gli errori di accesso negato o di operazione non autorizzata con una policy IAM?

  4. Utilizza il comando seguente per utilizzare psql per aprire una connessione al cluster.

    PGSSLMODE=require \ psql --dbname postgres \ --username admin \ --host cluster_endpoint
  5. Dovrebbe comparire un prompt di immissione della password. Copia il token che generato e assicurati di non includere spazi o caratteri aggiuntivi. Incollalo nel seguente prompt da psql.

    Password for user admin:
  6. Premere Invio. Dovrebbe comparire un prompt di PostgreSQL.

    postgres=>

    Se ricevi un errore di accesso negato, assicurati che la tua identità IAM disponga dell’autorizzazione dsql:DbConnectAdmin. Se disponi dell’autorizzazione e continui a ricevere errori di accesso negato, consulta Risoluzione dei problemi di IAM e Come posso risolvere gli errori di accesso negato o di operazione non autorizzata con una policy IAM?

Per maggiori informazioni sui ruoli del database personalizzati e su IAM in Aurora DSQL, consulta Autenticazione e autorizzazione per Aurora DSQL.

Usa AWS CLI per generare un token di autenticazione in Aurora DSQL

Se il cluster è in stato ACTIVE, è possibile generare un token di autenticazione dalla CLI utilizzando il comando aws dsql. È possibile utilizzare una delle seguenti tecniche:

Nota

La generazione di token è un'operazione locale che firma la richiesta utilizzando le credenziali IAM correnti. Non contatta AWS per convalidare le credenziali. Se le credenziali sono scadute o non sono valide, la generazione del token riesce comunque, ma il tentativo di connessione fallisce. Assicurati che le tue credenziali IAM siano valide prima di generare un token.

  • Se ti stai connettendo con il ruolo admin, utilizza l’opzione generate-db-connect-admin-auth-token.

  • Se ti stai connettendo con un ruolo del database personalizzato, utilizza l’opzione generate-db-connect-auth-token.

L’esempio seguente utilizza i seguenti attributi per generare un token di autenticazione per il ruolo admin.

  • your_cluster_endpoint— L'endpoint del cluster. Segue il formato your_cluster_identifier.dsql.region.on.aws, come nell’esempio 01abc2ldefg3hijklmnopqurstu.dsql.us-east-1.on.aws.

  • region— Il Regione AWS, ad esempio us-east-2 ous-east-1.

Gli esempi seguenti impostano il tempo di scadenza del token in 3.600 secondi (1 ora).

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

Usa SDKs per generare un token in Aurora DSQL

È possibile generare un token di autenticazione per il cluster quando è in stato ACTIVE. Gli esempi basati su SDK utilizzano i seguenti attributi per generare un token di autenticazione per il ruolo admin:

  • your_cluster_endpoint(oyourClusterEndpoint) — L'endpoint del cluster Aurora DSQL. Il formato di denominazione è your_cluster_identifier.dsql.region.on.aws, come nell’esempio 01abc2ldefg3hijklmnopqurstu.dsql.us-east-1.on.aws.

  • region(oRegionEndpoint) — L'area Regione AWS in cui si trova il cluster, ad esempio o. us-east-2 us-east-1

Python SDK
Suggerimento

AWS consiglia di utilizzareConnettore Aurora DSQL per Python, che gestisce automaticamente la generazione di token.

È possibile generare il token nei modi seguenti:

  • Se ti stai connettendo al admin ruolo, usagenerate_db_connect_admin_auth_token.

  • Se ti stai connettendo con un ruolo di database personalizzato, usagenerate_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

È possibile generare il token nei modi seguenti:

  • Se ti stai connettendo con il admin ruolo, usaGenerateDBConnectAdminAuthToken.

  • Se ti stai connettendo con un ruolo di database personalizzato, usaGenerateDBConnectAuthToken.

#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
Suggerimento

AWS consiglia di utilizzareConnettori Aurora DSQL per Node.js, che gestisce automaticamente la generazione di token.

È possibile generare il token nei modi seguenti:

  • Se ti stai connettendo al admin ruolo, usagetDbConnectAdminAuthToken.

  • Se ti stai connettendo con un ruolo di database personalizzato, usagetDbConnectAuthToken.

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
Suggerimento

AWS consiglia di utilizzareConnessione ai cluster Aurora DSQL con un connettore JDBC, che gestisce automaticamente la generazione di token.

È possibile generare il token nei modi seguenti:

  • Se ti stai connettendo al admin ruolo, usagenerateDbConnectAdminAuthToken.

  • Se ti stai connettendo con un ruolo di database personalizzato, usagenerateDbConnectAuthToken.

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

È possibile generare il token nei modi seguenti:

  • Se ti stai connettendo con il admin ruolo, usadb_connect_admin_auth_token.

  • Se ti stai connettendo con un ruolo di database personalizzato, usadb_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
Suggerimento

AWS consiglia di utilizzareConnessione ai cluster Aurora DSQL con un connettore Ruby, che gestisce automaticamente la generazione di token.

È possibile generare il token nei modi seguenti:

  • Se ti stai connettendo al admin ruolo, usagenerate_db_connect_admin_auth_token.

  • Se ti stai connettendo con un ruolo di database personalizzato, usagenerate_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

È possibile generare il token nei modi seguenti:

  • Se ti stai connettendo con il admin ruolo, usagenerateDbConnectAdminAuthToken.

  • Se ti stai connettendo con un ruolo di database personalizzato, usagenerateDbConnectAuthToken.

<?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
Suggerimento

AWS consiglia di utilizzareConnessione ai cluster Aurora DSQL con un connettore.NET, che gestisce automaticamente la generazione di token.

Nota

L’SDK ufficiale per .NET non include una chiamata API integrata per generare un token di autenticazione per Aurora DSQL. È necessario utilizzare invece DSQLAuthTokenGenerator, che è una classe di utilità. Nell’esempio di codice riportato di seguito viene illustrato come generare il token di autenticazione in .NET.

È possibile generare il token nei modi seguenti:

  • Se ti stai connettendo al admin ruolo, usaDbConnectAdmin.

  • Se ti stai connettendo con un ruolo di database personalizzato, usaDbConnect.

L’esempio seguente utilizza la classe di utilità DSQLAuthTokenGenerator per generare il token di autenticazione per un utente con il ruolo admin. insert-dsql-cluster-endpointSostituiscilo con il tuo endpoint del cluster.

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
Suggerimento

AWS consiglia di utilizzareConnessione ai cluster Aurora DSQL con un connettore Go, che gestisce automaticamente la generazione di token.

L' AWS SDK for Go v2 fornisce un metodo integrato per generare token di autenticazione nel pacchetto. github.com/aws/aws-sdk-go-v2/feature/dsql/auth

  • Se ti stai connettendo al admin ruolo, usa. auth.GenerateDBConnectAdminAuthToken

  • Se ti stai connettendo con un ruolo di database personalizzato, usaauth.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) }