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 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 creare un cluster Aurora DSQL.
Per generare un token di autenticazione utilizzando AWS CloudShell
-
Accedi a AWS Management Console e apri la console Aurora DSQL all'indirizzo. https://console.aws.amazon.com/dsql
-
In basso a sinistra della AWS console, scegli. AWS CloudShell
-
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.
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? .
-
Usa il seguente comando da usare psql
per avviare una connessione al tuo cluster.
PGSSLMODE=require \
psql --dbname postgres \
--username admin \
--host cluster_endpoint
-
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:
-
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 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. Utilizza una delle seguenti tecniche:
-
Se ti stai connettendo con il admin
ruolo, usa l'generate-db-connect-admin-auth-token
opzione.
-
Se ti connetti con un ruolo di database personalizzato, usa l'generate-db-connect-auth-token
opzione.
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
-
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-endpoint
Sostituiscilo 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
-
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'DbConnect
azione.
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
}