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, per impostazione predefinita il token scade automaticamente dopo un'ora. Se si utilizza AWS CLI o SDKs per creare il token, l'impostazione predefinita è 15 minuti. La durata massima è di 604.800 secondi, ovvero una settimana. Per connetterti nuovamente ad Aurora DSQL dal tuo client, puoi utilizzare lo stesso token di autenticazione se non è scaduto, oppure puoi 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 inConnessione 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. È possibile generare il token dalla console.

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

  2. Scegli l'ID del cluster per il quale desideri generare un token di autenticazione. Se non hai ancora creato un cluster, segui i passaggi indicati in Fase 1: Creare un cluster Aurora DSQL a regione singola oFase 4: Creare un cluster multiregionale.

  3. Scegli Connect, quindi seleziona Get Token.

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

  5. Copia il token di autenticazione generato e usalo perAccesso ad Aurora DSQL tramite client SQL.

Per ulteriori informazioni sui ruoli di 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 eseguire le seguenti operazioni:

  • Crea un cluster Aurora DSQL.

  • Aggiungi un'autorizzazione per eseguire l'operazione Amazon S3 get-object per recuperare oggetti dall' Account AWS esterno dell'organizzazione. Per ulteriori informazioni, consulta la Amazon S3 User Guide.

Per generare un token di autenticazione utilizzando AWS CloudShell
  1. Accedi a AWS Management Console 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. Segui Installazione o aggiornamento alla versione più recente di AWS CLI per installare il AWS CLI.

    sudo ./aws/install --update
  4. Esegui il comando seguente per generare un token di autenticazione per il admin ruolo. Sostituiscilo us-east-1 con la tua regione e your_cluster_endpoint con l'endpoint del tuo cluster.

    Nota

    Se non ti connetti comeadmin, usa generate-db-connect-auth-token invece.

    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 funzionamento non autorizzato con una policy IAM? .

  5. Usa il seguente comando da usare psql per avviare una connessione al tuo cluster.

    PGSSLMODE=require \ psql --dbname postgres \ --username admin \ --host cluster_endpoint
  6. Dovresti vedere una richiesta di immissione della password. Copia il token che hai generato e assicurati di non includere spazi o caratteri aggiuntivi. Incollalo nel seguente prompt dapsql.

    Password for user admin:
  7. Premere Invio. Dovresti vedere 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 negazione dell'accesso, consulta Risoluzione dei problemi di IAM e Come posso risolvere gli errori di accesso negato o non autorizzato con una policy IAM? .

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

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

Se il cluster lo èACTIVE, puoi generare un token di autenticazione sulla CLI utilizzando il aws dsql comando. Utilizzate una delle seguenti tecniche:

  • Se ti stai connettendo con il admin ruolo, usa l'generate-db-connect-admin-auth-tokenopzione.

  • Se ti connetti con un ruolo di database personalizzato, usa l'generate-db-connect-auth-tokenopzione.

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

  • your_cluster_endpoint— L'endpoint del cluster. Segue il formatoyour_cluster_identifier.dsql.region.on.aws, come nell'esempio01abc2ldefg3hijklmnopqurstu.dsql.us-east-1.on.aws.

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

Gli esempi seguenti impostano l'ora di scadenza del token in 3600 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 il SDKs per generare un token in Aurora DSQL

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

  • 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) — Il luogo Regione AWS in cui si trova il cluster, ad esempio us-east-2 ous-east-1.

Python SDK

È possibile generare il token nei seguenti modi:

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

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

Puoi generare il token nei seguenti modi:

  • 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) { 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

Puoi generare il token nei seguenti modi:

  • Se ti stai connettendo con il 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

Puoi generare il token nei seguenti modi:

  • Se ti stai connettendo con il 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.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

Puoi generare il token nei seguenti modi:

  • 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

Puoi generare il token nei seguenti modi:

  • Se ti stai connettendo con il 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::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
Nota

L'SDK ufficiale per .NET non include una chiamata API integrata per generare un token di autenticazione per Aurora DSQL. È invece necessario utilizzareDSQLAuthTokenGenerator, che è una classe di utilità. Il seguente esempio di codice mostra come generare il token di autenticazione per.NET.

È possibile generare il token nei seguenti modi:

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

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

L'esempio seguente utilizza la classe di DSQLAuthTokenGenerator utilità per generare il token di autenticazione per un utente con il admin ruolo. insert-dsql-cluster-endpointSostituiscilo con l'endpoint del 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
Nota

L'SDK Golang non fornisce un metodo integrato per generare un token prefirmato. È necessario costruire manualmente la richiesta firmata, come mostrato nel seguente esempio di codice.

Nel seguente esempio di codice, specifica l'utente action based on the PostgreSQL:

  • Se ti stai connettendo con il admin ruolo, usa l'azione. DbConnectAdmin

  • Se ti stai connettendo con un ruolo di database personalizzato, usa l'DbConnectazione.

Oltre a yourClusterEndpoint eregion, l'esempio seguente utilizzaaction. Specificare il in action base all'utente 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 }