Menghasilkan token otentikasi di Amazon Aurora DSQL - Amazon Aurora DSQL

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menghasilkan token otentikasi di Amazon Aurora DSQL

Untuk terhubung ke Amazon Aurora DSQL dengan klien SQL, buat token otentikasi untuk digunakan sebagai kata sandi. Token ini hanya digunakan untuk mengautentikasi koneksi. Setelah koneksi dibuat, koneksi tetap valid bahkan jika token otentikasi kedaluwarsa.

Jika Anda membuat token otentikasi menggunakan AWS konsol, token secara otomatis kedaluwarsa dalam satu jam secara default. Jika Anda menggunakan AWS CLI atau SDKs untuk membuat token, defaultnya adalah 15 menit. Durasi maksimum adalah 604.800 detik, yaitu satu minggu. Untuk terhubung ke Aurora DSQL dari klien Anda lagi, Anda dapat menggunakan token otentikasi yang sama jika belum kedaluwarsa, atau Anda dapat membuat yang baru.

Untuk memulai membuat token, buat kebijakan IAM dan cluster di Aurora DSQL. Kemudian gunakan AWS konsol, AWS CLI, atau AWS SDKs untuk menghasilkan token.

Minimal, Anda harus memiliki izin IAM yang tercantumMenghubungkan ke klaster Anda menggunakan IAM, tergantung pada peran database yang Anda gunakan untuk terhubung.

Gunakan AWS konsol untuk menghasilkan token otentikasi di Aurora DSQL

Aurora DSQL mengautentikasi pengguna dengan token daripada kata sandi. Anda dapat menghasilkan token dari konsol.

Untuk menghasilkan token otentikasi
  1. Masuk ke AWS Management Console dan buka konsol Aurora DSQL di. https://console.aws.amazon.com/dsql

  2. Pilih ID cluster cluster yang ingin Anda buat token otentikasi. Jika Anda belum membuat cluster, ikuti langkah-langkah di Langkah 1: Buat cluster Aurora DSQL Single-region atauLangkah 4: Buat cluster Multi-region.

  3. Pilih Connect dan kemudian pilih Get Token.

  4. Pilih apakah Anda ingin terhubung sebagai admin atau dengan peran basis data kustom.

  5. Salin token otentikasi yang dihasilkan dan gunakan untukMengakses Aurora DSQL menggunakan klien SQL.

Untuk mempelajari lebih lanjut tentang peran basis data kustom dan IAM di Aurora DSQL, lihat. Otentikasi dan otorisasi untuk Aurora DSQL

Gunakan AWS CloudShell untuk menghasilkan token otentikasi di Aurora DSQL

Sebelum Anda dapat membuat token otentikasi menggunakan AWS CloudShell, pastikan Anda melakukan hal berikut:

Untuk menghasilkan token otentikasi menggunakan AWS CloudShell
  1. Masuk ke AWS Management Console dan buka konsol Aurora DSQL di. https://console.aws.amazon.com/dsql

  2. Di kiri bawah AWS konsol, pilih AWS CloudShell.

  3. Ikuti Menginstal atau memperbarui ke versi terbaru AWS CLI untuk menginstal. AWS CLI

    sudo ./aws/install --update
  4. Jalankan perintah berikut untuk menghasilkan token otentikasi untuk admin peran tersebut. Ganti us-east-1 dengan Wilayah Anda dan your_cluster_endpoint dengan titik akhir cluster Anda sendiri.

    catatan

    Jika Anda tidak terhubung sebagaiadmin, gunakan sebagai generate-db-connect-auth-token gantinya.

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

    Jika Anda mengalami masalah, lihat Memecahkan Masalah IAM dan Bagaimana cara memecahkan masalah akses ditolak atau kesalahan operasi yang tidak sah dengan kebijakan IAM? .

  5. Gunakan perintah berikut untuk digunakan psql untuk memulai koneksi ke cluster Anda.

    PGSSLMODE=require \ psql --dbname postgres \ --username admin \ --host cluster_endpoint
  6. Anda akan melihat prompt untuk memberikan kata sandi. Salin token yang Anda buat, dan pastikan Anda tidak menyertakan spasi atau karakter tambahan. Tempelkan ke prompt berikut daripsql.

    Password for user admin:
  7. Tekan Enter. Anda akan melihat prompt PostgreSQL.

    postgres=>

    Jika Anda mendapatkan kesalahan akses ditolak, pastikan identitas IAM Anda memiliki dsql:DbConnectAdmin izin. Jika Anda memiliki izin dan terus mendapatkan kesalahan penolakan akses, lihat Memecahkan masalah IAM dan Bagaimana saya bisa memecahkan masalah kesalahan operasi yang ditolak atau tidak sah dengan kebijakan IAM? .

Untuk mempelajari lebih lanjut tentang peran basis data kustom dan IAM di Aurora DSQL, lihat. Otentikasi dan otorisasi untuk Aurora DSQL

Gunakan AWS CLI untuk menghasilkan token otentikasi di Aurora DSQL

Ketika cluster AndaACTIVE, Anda dapat menghasilkan token otentikasi pada CLI dengan menggunakan aws dsql perintah. Gunakan salah satu dari teknik berikut:

  • Jika Anda terhubung dengan admin peran, gunakan generate-db-connect-admin-auth-token opsi.

  • Jika Anda terhubung dengan peran basis data kustom, gunakan generate-db-connect-auth-token opsi.

Contoh berikut menggunakan atribut berikut untuk menghasilkan token otentikasi untuk admin peran tersebut.

  • your_cluster_endpoint— Titik akhir cluster. Ini mengikuti formatyour_cluster_identifier.dsql.region.on.aws, seperti pada contoh01abc2ldefg3hijklmnopqurstu.dsql.us-east-1.on.aws.

  • region— The Wilayah AWS, seperti us-east-2 atauus-east-1.

Contoh berikut mengatur waktu kedaluwarsa token untuk kedaluwarsa dalam 3600 detik (1 jam).

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

Gunakan SDKs untuk menghasilkan token di Aurora DSQL

Anda dapat membuat token otentikasi untuk klaster Anda saat berada dalam ACTIVE status. Contoh SDK menggunakan atribut berikut untuk menghasilkan token otentikasi untuk peran tersebutadmin:

  • your_cluster_endpoint(atauyourClusterEndpoint) — Titik akhir cluster Aurora DSQL Anda. Format penamaan adalahyour_cluster_identifier.dsql.region.on.aws, seperti pada contoh01abc2ldefg3hijklmnopqurstu.dsql.us-east-1.on.aws.

  • region(atauRegionEndpoint) — Wilayah AWS Di mana cluster Anda berada, seperti us-east-2 atauus-east-1.

Python SDK

Anda dapat membuat token dengan cara berikut:

  • Jika Anda terhubung dengan admin peran, gunakangenerate_db_connect_admin_auth_token.

  • Jika Anda terhubung dengan peran database kustom, gunakangenerate_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

Anda dapat membuat token dengan cara berikut:

  • Jika Anda terhubung dengan admin peran, gunakanGenerateDBConnectAdminAuthToken.

  • Jika Anda terhubung dengan peran database kustom, gunakanGenerateDBConnectAuthToken.

#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

Anda dapat membuat token dengan cara berikut:

  • Jika Anda terhubung dengan admin peran, gunakangetDbConnectAdminAuthToken.

  • Jika Anda terhubung dengan peran database kustom, gunakangetDbConnectAuthToken.

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

Anda dapat membuat token dengan cara berikut:

  • Jika Anda terhubung dengan admin peran, gunakangenerateDbConnectAdminAuthToken.

  • Jika Anda terhubung dengan peran database kustom, gunakangenerateDbConnectAuthToken.

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

Anda dapat membuat token dengan cara berikut:

  • Jika Anda terhubung dengan admin peran, gunakandb_connect_admin_auth_token.

  • Jika Anda terhubung dengan peran database kustom, gunakandb_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

Anda dapat membuat token dengan cara berikut:

  • Jika Anda terhubung dengan admin peran, gunakangenerate_db_connect_admin_auth_token.

  • Jika Anda terhubung dengan peran database kustom, gunakangenerate_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
catatan

SDK resmi untuk .NET tidak menyertakan panggilan API bawaan untuk menghasilkan token otentikasi untuk Aurora DSQL. Sebaliknya, Anda harus menggunakanDSQLAuthTokenGenerator, yang merupakan kelas utilitas. Contoh kode berikut menunjukkan cara menghasilkan token otentikasi untuk.NET.

Anda dapat membuat token dengan cara berikut:

  • Jika Anda terhubung dengan admin peran, gunakanDbConnectAdmin.

  • Jika Anda terhubung dengan peran database kustom, gunakanDbConnect.

Contoh berikut menggunakan kelas DSQLAuthTokenGenerator utilitas untuk menghasilkan token otentikasi untuk pengguna dengan admin peran. Ganti insert-dsql-cluster-endpoint dengan titik akhir cluster Anda.

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
catatan

Golang SDK tidak menyediakan metode bawaan untuk menghasilkan token yang telah ditandatangani sebelumnya. Anda harus secara manual membangun permintaan yang ditandatangani, seperti yang ditunjukkan dalam contoh kode berikut.

Dalam contoh kode berikut, tentukan action berdasarkan pengguna PostgreSQL:

  • Jika Anda terhubung dengan admin peran, gunakan DbConnectAdmin tindakan.

  • Jika Anda terhubung dengan peran basis data kustom, gunakan DbConnect tindakan tersebut.

Selain yourClusterEndpoint danregion, contoh berikut menggunakanaction. Tentukan action berdasarkan pengguna 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 }