Nozioni di base su RDS Proxy - Amazon Relational Database Service

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à.

Nozioni di base su RDS Proxy

Nelle sezioni seguenti, puoi scoprire come configurare e gestire RDS Proxy. Puoi anche scoprire come impostare le opzioni di sicurezza correlate che Queste opzioni controllano chi può accedere a ciascun proxy e in che modo ogni proxy si connette alle istanze DB.

Configurazione dei prerequisiti di rete

L'utilizzo di RDS Proxy richiede la disponibilità di un cloud privato virtuale (VPC) comune tra l'istanza RDS DB, il cluster DB e il proxy RDS. Questo VPC deve avere un minimo di due sottoreti che si trovano in zone di disponibilità diverse. Il tuo account può possedere queste sottoreti o condividerle con altri account. Per ulteriori informazioni sui VPC condivisi, consultare Utilizzo dei VPC condivisi.

Le risorse dell'applicazione client come Amazon EC2, Lambda o Amazon ECS possono trovarsi nello stesso VPC del proxy. In alternativa, possono trovarsi in un VPC separato dal proxy. Se hai effettuato correttamente la connessione a un'istanza database RDS , sono già disponibili le risorse di rete necessarie.

Recupero delle informazioni sulle sottoreti

Per creare un proxy, è necessario fornire le sottoreti e il VPC in cui opera il proxy. Il seguente esempio di Linux mostra AWS CLI i comandi che esaminano i VPC e le sottoreti di proprietà dell'utente. Account AWS In particolare, si passano gli ID delle sottoreti come parametri quando si crea un proxy utilizzando la CLI.

aws ec2 describe-vpcs aws ec2 describe-internet-gateways aws ec2 describe-subnets --query '*[].[VpcId,SubnetId]' --output text | sort

Il seguente esempio di Linux mostra AWS CLI i comandi per determinare gli ID di sottorete corrispondenti a una specifica istanza RDS DB del cluster DB. Trova l'ID VPC per l'istanza DB. Esamina il VPC per trovarne le sottoreti. Il seguente esempio di Linux mostra come.

$ #From the DB instance, trace through the DBSubnetGroup and Subnets to find the subnet IDs. $ aws rds describe-db-instances --db-instance-identifier my_instance_id --query '*[].[DBSubnetGroup]|[0]|[0]|[Subnets]|[0]|[*].SubnetIdentifier' --output text
subnet_id_1 subnet_id_2 subnet_id_3 ...
$ #From the DB instance, find the VPC. $ aws rds describe-db-instances --db-instance-identifier my_instance_id --query '*[].[DBSubnetGroup]|[0]|[0].VpcId' --output text
my_vpc_id
$ aws ec2 describe-subnets --filters Name=vpc-id,Values=my_vpc_id --query '*[].[SubnetId]' --output text
subnet_id_1 subnet_id_2 subnet_id_3 subnet_id_4 subnet_id_5 subnet_id_6

Pianificazione della capacità degli indirizzi IP

Server proxy per RDS regola automaticamente la sua capacità secondo le necessità in base alle dimensioni e al numero di istanze database registrate. Alcune operazioni potrebbero richiedere anche una capacità proxy aggiuntiva, ad esempio l'aumento delle dimensioni di un database registrato o operazioni di manutenzione interne del proxy RDS. Durante queste operazioni, il proxy può aver bisogno di più indirizzi IP per fornire la capacità aggiuntiva. Questi indirizzi aggiuntivi consentono al proxy di dimensionare senza interessare il carico di lavoro. La mancanza di indirizzi IP liberi nelle sottoreti impedisce al proxy di aumentare le dimensioni, causando eventuali latenze elevate nell'esecuzione di query o errori di connessione del client. RDS ti avvisa tramite l'evento RDS-EVENT-0243 quando non ci sono abbastanza indirizzi IP liberi nelle tue sottoreti. Per informazioni su questo evento, consulta Utilizzo degli eventi RDS Proxy.

Di seguito sono riportati i numeri minimi consigliati di indirizzi IP da lasciare liberi nelle sottoreti per il proxy in base alle dimensioni delle classi delle istanze DB.

DB instance class (Classe istanza database) Numero minimo di indirizzi IP liberi

db.*.xlarge o più piccola

10

db.*.2xlarge

15

db.*.4xlarge

25

db.*.8xlarge

45

db.*.12xlarge

60

db.*.16xlarge

75

db.*.24xlarge

110

Questi numeri consigliati di indirizzi IP sono stime per un proxy con solo l'endpoint predefinito. Un proxy con endpoint aggiuntivi o repliche di lettura potrebbe richiedere più indirizzi IP liberi. Per ogni endpoint aggiuntivo, ti consigliamo di riservare altri tre indirizzi IP. Per ogni replica di lettura, ti consigliamo di riservare gli indirizzi IP aggiuntivi specificati nella tabella in base alle dimensioni della replica di lettura.

Nota

Il proxy RDS non supporta più di 215 indirizzi IP in un VPC.

Configurazione delle credenziali del database in AWS Secrets Manager

Per ogni proxy creato, utilizza innanzitutto il servizio Secrets Manager per memorizzare set di credenziali composti da nome utente e password. Si crea un segreto Secrets Manager separato per ogni account utente del database a cui il proxy si connette sul cluster DB dell'istanza RDS DB.

Nella console Secrets Manager, crei questi segreti con valori per i password campi username e. Ciò consente al proxy di connettersi agli utenti del database corrispondenti su un cluster associato al proxy. A tale scopo, puoi utilizzare l'impostazione Credentials for other database (Credenziali per altri database), Credentials for RDS database (Credenziali per database RDS) o Other type of secrets (Altro tipo di segreti). Inserisci i valori appropriati per i campi Nome utente e Password e i valori per tutti gli altri campi obbligatori. Il proxy ignora altri campi, ad esempio Host e Port (Porta) se sono presenti nel segreto. Tali dettagli sono forniti automaticamente dal proxy.

Puoi anche scegliere Other type of secrets (Altro tipo di segreti). In questo caso, crei il segreto con le chiavi denominate username e password.

Per connetterti tramite il proxy come utente specifico del database, assicurati che la password associata a un segreto corrisponda alla password del database di quell'utente. In caso di mancata corrispondenza, è possibile aggiornare il segreto associato in Secrets Manager. In questo caso, è comunque possibile connettersi ad altri account in cui le credenziali segrete e le password del database corrispondono.

Nota

Per RDS per SQL Server, RDS Proxy necessita di un segreto in Secrets Manager che faccia distinzione tra maiuscole e minuscole per il codice dell'applicazione indipendentemente dalle impostazioni di confronto delle istanze DB. Ad esempio, se l'applicazione può utilizzare entrambi i nomi utente «Admin» o «admin», configura il proxy con segreti sia per «Admin» che per «admin». RDS Proxy non supporta la distinzione tra maiuscole e minuscole per nome utente nel processo di autenticazione tra client e proxy.

Per ulteriori informazioni sul confronto in SQL Server, consulta la documentazione di Microsoft SQL Server.

Quando crei un proxy tramite l'API AWS CLI o RDS, specifichi gli Amazon Resource Names (ARN) dei segreti corrispondenti. per tutti gli account utente del database a cui il proxy può accedere. In AWS Management Console, scegli i segreti in base ai loro nomi descrittivi.

Per istruzioni sulla creazione di segreti in Secrets Manager, consulta la pagina Creazione di un segreto nella documentazione di Secrets Manager. Puoi utilizzare una delle seguenti tecniche:

  • Utilizza Secrets Manager nella console.

  • Per utilizzare la CLI al fine di creare un segreto Secrets Manager da utilizzare con RDS Proxy, utilizza un comando come il seguente.

    aws secretsmanager create-secret --name "secret_name" --description "secret_description" --region region_name --secret-string '{"username":"db_user","password":"db_user_password"}'
  • Puoi anche creare una chiave personalizzata per crittografare il tuo segreto di Secrets Manager. Il comando seguente crea una chiave di esempio.

    PREFIX=my_identifier aws kms create-key --description "$PREFIX-test-key" --policy '{ "Id":"$PREFIX-kms-policy", "Version":"2012-10-17", "Statement": [ { "Sid":"Enable IAM User Permissions", "Effect":"Allow", "Principal":{"AWS":"arn:aws:iam::account_id:root"}, "Action":"kms:*","Resource":"*" }, { "Sid":"Allow access for Key Administrators", "Effect":"Allow", "Principal": { "AWS": ["$USER_ARN","arn:aws:iam:account_id::role/Admin"] }, "Action": [ "kms:Create*", "kms:Describe*", "kms:Enable*", "kms:List*", "kms:Put*", "kms:Update*", "kms:Revoke*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:TagResource", "kms:UntagResource", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource":"*" }, { "Sid":"Allow use of the key", "Effect":"Allow", "Principal":{"AWS":"$ROLE_ARN"}, "Action":["kms:Decrypt","kms:DescribeKey"], "Resource":"*" } ] }'

Ad esempio, i seguenti comandi creano segreti di Secrets Manager per due utenti del database:

aws secretsmanager create-secret \ --name secret_name_1 --description "db admin user" \ --secret-string '{"username":"admin","password":"choose_your_own_password"}' aws secretsmanager create-secret \ --name secret_name_2 --description "application user" \ --secret-string '{"username":"app-user","password":"choose_your_own_password"}'

Per creare questi segreti crittografati con la tua AWS KMS chiave personalizzata, usa i seguenti comandi:

aws secretsmanager create-secret \ --name secret_name_1 --description "db admin user" \ --secret-string '{"username":"admin","password":"choose_your_own_password"}' --kms-key-id arn:aws:kms:us-east-2:account_id:key/key_id aws secretsmanager create-secret \ --name secret_name_2 --description "application user" \ --secret-string '{"username":"app-user","password":"choose_your_own_password"}' --kms-key-id arn:aws:kms:us-east-2:account_id:key/key_id

Per visualizzare i segreti di proprietà del tuo AWS account, usa un comando come il seguente.

aws secretsmanager list-secrets

Quando crei un proxy utilizzando la CLI, invii gli ARN (Amazon Resource Names) di uno o più segreti al parametro --auth. Il seguente esempio di Linux mostra come preparare un rapporto con solo il nome e l'ARN di ogni segreto di proprietà dell'account AWS . In questo esempio viene utilizzato il parametro --output table disponibile in AWS CLI versione 2. Se stai usando la AWS CLI versione 1, usa --output text invece.

aws secretsmanager list-secrets --query '*[].[Name,ARN]' --output table

Per verificare di aver memorizzato le credenziali corrette e nel formato corretto in un segreto, utilizza un comando come il seguente. Sostituisci il nome breve o l'ARN del segreto con your_secret_name.

aws secretsmanager get-secret-value --secret-id your_secret_name

L'output dovrebbe includere una riga che visualizza un valore codificato JSON come il seguente.

"SecretString": "{\"username\":\"your_username\",\"password\":\"your_password\"}",

Configurazione delle politiche AWS Identity and Access Management (IAM)

Dopo aver creato i segreti in Secrets Manager, puoi creare una policy IAM in grado di accedere a tali segreti. Per informazioni generali sull'utilizzo di IAM, consulta Gestione accessi e identità per Amazon RDS.

Suggerimento

La procedura seguente si applica se si utilizza la console IAM. Se utilizzi AWS Management Console for RDS, RDS può creare automaticamente la policy IAM per te. In tal caso, è possibile ignorare la seguente procedura.

Per creare una policy IAM che acceda ai segreti Secrets Manager da utilizzare con il proxy
  1. Accedere alla console IAM. Segui il processo di creazione del ruolo, come descritto in Creazione di ruoli IAM, scegliendo Creazione di un ruolo per delegare le autorizzazioni a un servizio. AWS

    Scegli Servizio AWS in Tipo di entità attendibile. In Caso d'uso, seleziona RDS nell'elenco a discesa Casi d'uso per altri servizi AWS . Scegli RDS – Aggiungi ruolo al database.

  2. Per il nuovo ruolo, esegui il passaggio Add inline policy (Aggiungi policy inline) . Utilizzare le stesse procedure generali di Modifica dei criteri IAM. Incollare il seguente JSON nella casella di testo JSON. Sostituire l'ID account. Sostituisci la tua regione con. AWS us-east-2 Sostituisci il nome della risorsa Amazon (ARN) dei segreti creati, consulta Specificazione delle chiavi KMS nelle istruzioni della policy IAM. Per l'kms:Decryptazione, sostituisci l'ARN AWS KMS key predefinito o la tua chiave KMS. La scelta dipende da quale hai usato per crittografare i segreti di Gestione dei segreti.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": [ "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_1", "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_2" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-2:account_id:key/key_id", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com" } } } ] }
  3. Modifica la policy di attendibilità per questo ruolo IAM. Incollare il seguente JSON nella casella di testo JSON.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Il seguente comando esegue la stessa operazione tramite AWS CLI.

PREFIX=my_identifier USER_ARN=$(aws sts get-caller-identity --query "Arn" --output text) aws iam create-role --role-name my_role_name \ --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":["rds.amazonaws.com"]},"Action":"sts:AssumeRole"}]}' ROLE_ARN=arn:aws:iam::account_id:role/my_role_name aws iam put-role-policy --role-name my_role_name \ --policy-name $PREFIX-secret-reader-policy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": [ "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_1", "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_2" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-2:account_id:key/key_id", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com" } } } ] }

Creazione di un RDS Proxy

Per gestire le connessioni per un set specificato di istanze DB, puoi creare un proxy. Puoi associare un proxy a un'istanza database RDS per MariaDB, RDS per Microsoft SQL Server, RDS per MySQL o RDS per PostgreSQL.

Per creare un proxy
  1. Accedi AWS Management Console e apri la console Amazon RDS all'indirizzo https://console.aws.amazon.com/rds/.

  2. Nel riquadro di navigazione scegli Proxies (Proxy).

  3. Scegli Create proxy (Crea proxy).

  4. Scegli tutte le impostazioni per il tuo proxy.

    Per la configurazione del proxy, fornire informazioni per quanto segue:

    • Famiglia di motori. Questa impostazione determina il protocollo di rete del database riconosciuto dal proxy quando interpreta il traffico di rete verso e dal database. Per RDS per MariaDB o RDS per MySQL, scegli MariaDB and MySQL (MariaDB e MySQL). Per RDS per PostgreSQL, scegli PostgreSQL. Per RDS per SQL Server, scegli SQL Server.

    • Identificatore proxy. Specificane un nome univoco all'interno dell'ID AWS dell'account e AWS della regione corrente.

    • Timeout della connessione client per inattività. Scegli un periodo di tempo in cui una connessione client può rimanere inattiva prima che il proxy la chiuda. Il valore predefinito è 1.800 secondi (30 minuti). Una connessione client è considerata inattiva quando l'applicazione non invia una nuova richiesta entro il tempo specificato dopo il completamento della richiesta precedente. La connessione al database sottostante rimane aperta e viene restituita al pool di connessioni. Pertanto, è disponibile per essere riutilizzata per nuove connessioni client.

      Per fare in modo che il proxy rimuova in modo proattivo le connessioni obsolete, riducete il timeout della connessione del client inattivo. Quando il carico di lavoro aumenta, per risparmiare sui costi di creazione delle connessioni, aumenta il timeout della connessione dei client inattivi».

    Per la configurazione del gruppo di destinazione, fornire informazioni per quanto segue:

    • Database. Scegli un'istanza RDS DB cluster a cui accedere tramite questo proxy. L'elenco include solo istanze DB e cluster con motori di database compatibili, versioni del motore e altre impostazioni. Se l'elenco è vuoto, crea una nuova istanza database o un cluster compatibile con RDS Proxy. A tale scopo, segui la procedura in Creazione di un'istanza database Amazon RDS. Quindi prova a creare nuovamente il proxy.

    • Connessioni massime del pool di connessioni. Specificare un valore compreso tra 1 e 100. Questa impostazione rappresenta la percentuale del valore max_connections che RDS Proxy può utilizzare per le relative connessioni. Se intendi utilizzare un solo proxy con questa istanza database o cluster, puoi impostarlo su 100. Per informazioni dettagliate su come RDS Proxy utilizza questa impostazione, consulta MaxConnectionsPercentuale.

    • Filtri di pinning della sessione. (Facoltativo) Questa opzione consente di forzare Server proxy per Amazon RDS a non eseguire il pin per determinati tipi di stati di sessione rilevati. Ciò elude le misure di sicurezza predefinite per il multiplexing delle connessioni al database tra connessioni client. Attualmente, l'impostazione non è supportata per PostgreSQL. L'unica scelta è. EXCLUDE_VARIABLE_SETS

      L'attivazione di questa impostazione può far sì che le variabili di sessione di una connessione influiscano sulle altre connessioni. Ciò può causare errori o problemi di correttezza se le query dipendono dai valori delle variabili di sessione impostati al di fuori della transazione corrente. Valuta l'utilizzo di questa opzione dopo aver verificato che sia sicuro per le applicazioni condividere le connessioni al database tra connessioni client.

      I seguenti modelli possono essere considerati sicuri:

      • Istruzioni SET in cui non viene apportata alcuna modifica al valore della variabile di sessione effettiva, ovvero non viene apportata alcuna modifica alla variabile di sessione.

      • Modifichi il valore della variabile di sessione ed esegui un'istruzione nella stessa transazione.

      Per ulteriori informazioni, consulta Evitare il pinning.

    • Timeout del prestito di connessione. In alcuni casi, è possibile che il proxy utilizzi talvolta tutte le connessioni di database disponibili. In questi casi, è possibile specificare per quanto tempo il proxy attende che una connessione di database diventi disponibile prima di restituire un errore di timeout. È possibile specificare un periodo fino a un massimo di cinque minuti. Questa impostazione si applica solo quando il proxy ha il numero massimo di connessioni aperte e tutte le connessioni sono già in uso.

    • Query di inizializzazione. (Opzionale) Puoi specificare una o più istruzioni SQL per l'esecuzione del proxy all'apertura di ogni nuova connessione al database. L'impostazione viene in genere utilizzata con SET le istruzioni per assicurarsi che ogni connessione abbia impostazioni identiche, come fuso orario e set di caratteri. Per più istruzioni, utilizzare il punto e virgola come separatore. È inoltre possibile includere più variabili in una singola istruzione SET, ad esempio SET x=1, y=2.

    Per l'autenticazione, fornisci informazioni per quanto segue:

    • Ruolo IAM. Scegli un ruolo IAM che disponga dell'autorizzazione per accedere ai segreti Secrets Manager scelti in precedenza. In alternativa, puoi creare un nuovo ruolo IAM da AWS Management Console.

    • Segreti di Secrets Manager. Scegli almeno un segreto di Secrets Manager che contenga le credenziali utente del database che consentano al proxy di accedere al cluster DB dell'istanza RDS DB.

    • Tipo di autenticazione client. Scegli il tipo di autenticazione utilizzato dal proxy per le connessioni dei client. La tua scelta si applica a tutti i segreti di Secrets Manager che associ a questo proxy. Se devi specificare un tipo di autenticazione client diverso per ogni segreto, crea il proxy utilizzando invece l'API AWS CLI o l'API.

    • Autenticazione IAM. Scegli se richiedere, consentire o non consentire l'autenticazione IAM per le connessioni al proxy. L'opzione per consentire è valida solo per i proxy per RDS per SQL Server. La tua scelta si applica a tutti i segreti di Secrets Manager che associ a questo proxy. Se devi specificare un'autenticazione IAM diversa per ogni segreto, crea il proxy utilizzando invece l'API AWS CLI o l'API.

    Per Connettività, fornire informazioni per quanto segue:

    • Richiedi Transport Layer Security. Scegli questa impostazione se desideri che il proxy applichi TLS/SSL per tutte le connessioni client. Per una connessione crittografata o non crittografata a un proxy, il proxy utilizza la stessa impostazione di crittografia quando effettua la connessione al database sottostante.

    • Sottoreti. Questo campo è precompilato con tutte le sottoreti associate al VPC. Rimuovere le sottoreti non necessarie per questo proxy. Devi lasciare almeno due sottoreti.

    Configurazione di connettività aggiuntiva:

    • Gruppo di sicurezza VPC. Scegli un gruppo di sicurezza VPC esistente. In alternativa, puoi creare un nuovo gruppo di sicurezza da AWS Management Console. È necessario configurare le regole in entrata per consentire alle applicazioni di accedere al proxy. È inoltre necessario configurare le regole in uscita per consentire il traffico proveniente dalle destinazioni del database.

      Nota

      Questo gruppo di sicurezza deve consentire le connessioni dal proxy al database. Lo stesso gruppo di protezione viene utilizzato per l'ingresso dalle applicazioni al proxy e per l'uscita dal proxy al database. Si supponga, ad esempio, di utilizzare lo stesso gruppo di protezione per il database e il proxy. In questo caso, assicurarsi di specificare che le risorse di tale gruppo di protezione possono comunicare con altre risorse dello stesso gruppo di protezione.

      Quando si utilizza un VPC condiviso, non è possibile utilizzare il gruppo di sicurezza predefinito per il VPC o uno appartenente a un altro account. Scegli un gruppo di sicurezza appartenente all'account. Se non esiste, creane uno. Per ulteriori informazioni su questa limitazione, consulta Utilizzo di VPC condivisi.

      RDS implementa un proxy su più zone di disponibilità per garantire una disponibilità elevata. Per abilitare la comunicazione tra zone di disponibilità per un proxy di questo tipo, la lista di controllo degli accessi (ACL) alla rete della sottorete proxy deve consentire l'uscita specifica della porta del motore e l'ingresso di tutte le porte. Per ulteriori informazioni sulle ACL di rete, consulta Come controllare il traffico verso le sottoreti utilizzando le liste di controllo degli accessi di rete. Se l'ACL di rete per il proxy e la destinazione sono identici, devi aggiungere una regola di ingresso del protocollo TCP in cui Origine è impostata sul VPC CIDR. È inoltre necessario aggiungere una regola di uscita del protocollo TCP specifica per la porta del motore in cui la destinazione è impostata sul VPC CIDR.

    (Facoltativo) Fornire una configurazione avanzata:

    • Enable enhanced logging (Abilita registrazione avanzata. Puoi attivare questa impostazione per risolvere problemi di compatibilità o prestazioni del proxy.

      Quando questa impostazione è abilitata, RDS Proxy include informazioni dettagliate sulle prestazioni del proxy nei suoi registri. Queste informazioni consentono di eseguire il debug di problemi relativi al comportamento SQL o alle prestazioni e alla scalabilità delle connessioni proxy. Pertanto, abilita questa impostazione solo per il debug e quando sono state adottate misure di sicurezza per salvaguardare le informazioni sensibili che appaiono nei registri.

      Per ridurre al minimo il sovraccarico associato al proxy, RDS Proxy disattiva automaticamente questa impostazione 24 ore dopo l'attivazione. Abilitare temporaneamente la risoluzione di un problema specifico.

  5. Scegli Create Proxy (Crea Proxy).

Per creare un proxy utilizzando il AWS CLI, chiamate il comando create-db-proxy con i seguenti parametri obbligatori:

  • --db-proxy-name

  • --engine-family

  • --role-arn

  • --auth

  • --vpc-subnet-ids

Il valore --engine-family prevede la distinzione tra lettere maiuscole e minuscole.

Esempio

PerLinux, o: macOS Unix

aws rds create-db-proxy \ --db-proxy-name proxy_name \ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } \ --auth ProxyAuthenticationConfig_JSON_string \ --role-arn iam_role \ --vpc-subnet-ids space_separated_list \ [--vpc-security-group-ids space_separated_list] \ [--require-tls | --no-require-tls] \ [--idle-client-timeout value] \ [--debug-logging | --no-debug-logging] \ [--tags comma_separated_list]

Per Windows:

aws rds create-db-proxy ^ --db-proxy-name proxy_name ^ --engine-family { MYSQL | POSTGRESQL | SQLSERVER } ^ --auth ProxyAuthenticationConfig_JSON_string ^ --role-arn iam_role ^ --vpc-subnet-ids space_separated_list ^ [--vpc-security-group-ids space_separated_list] ^ [--require-tls | --no-require-tls] ^ [--idle-client-timeout value] ^ [--debug-logging | --no-debug-logging] ^ [--tags comma_separated_list]

Di seguito è riportato un esempio di valore JSON per l'opzione --auth. Questo esempio 
 applica un tipo di autenticazione client diverso a ciascun segreto.

[ { "Description": "proxy description 1", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789123:secret/1234abcd-12ab-34cd-56ef-1234567890ab", "IAMAuth": "DISABLED", "ClientPasswordAuthType": "POSTGRES_SCRAM_SHA_256" }, { "Description": "proxy description 2", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:111122223333:seret/1234abcd-12ab-34cd-56ef-1234567890cd", "IAMAuth": "DISABLED", "ClientPasswordAuthType": "POSTGRES_MD5" }, { "Description": "proxy description 3", "AuthScheme": "SECRETS", "SecretArn": "arn:aws:secretsmanager:us-west-2:111122221111:secret/1234abcd-12ab-34cd-56ef-1234567890ef", "IAMAuth": "REQUIRED" } ]
Suggerimento

Se non conosci già gli ID delle sottoreti da utilizzare per il parametro --vpc-subnet-ids, consulta Configurazione dei prerequisiti di rete per esempi su come trovarli.

Nota

Il gruppo di protezione deve consentire l'accesso al database a cui si connette il proxy. Lo stesso gruppo di protezione viene utilizzato per l'ingresso dalle applicazioni al proxy e per l'uscita dal proxy al database. Si supponga, ad esempio, di utilizzare lo stesso gruppo di protezione per il database e il proxy. In questo caso, assicurarsi di specificare che le risorse di tale gruppo di protezione possono comunicare con altre risorse dello stesso gruppo di protezione.

Quando si utilizza un VPC condiviso, non è possibile utilizzare il gruppo di sicurezza predefinito per il VPC o uno appartenente a un altro account. Scegli un gruppo di sicurezza appartenente all'account. Se non esiste, creane uno. Per ulteriori informazioni su questa limitazione, consulta Utilizzo di VPC condivisi.

Per creare le associazioni corrette per il proxy, si usa anche il comando register-db-proxy-targets. Specificare il tipo di gruppo di destinazione default RDS Proxy crea automaticamente un gruppo di destinazione con questo nome quando si crea ogni proxy.

aws rds register-db-proxy-targets --db-proxy-name value [--target-group-name target_group_name] [--db-instance-identifiers space_separated_list] # rds db instances, or [--db-cluster-identifiers cluster_id] # rds db cluster (all instances)

Per creare un proxy RDS, chiamare l'operazione Amazon RDS API CreateDBProxy. Si passa un parametro con la struttura dei dati. AuthConfig

RDS Proxy crea automaticamente un gruppo di destinazione denominato default quando si crea ogni proxy. È possibile associare un cluster . ProxyTargets

Visualizzazione di un RDS Proxy

Dopo aver creato uno o più proxy RDS, puoi visualizzarli. In questo modo puoi esaminare i dettagli di configurazione e scegliere quali modificare, eliminare e così via.

Affinché le applicazioni di database utilizzino un proxy, è necessario fornire l'endpoint proxy nella stringa di connessione.

Per visualizzare il proxy
  1. Accedi AWS Management Console e apri la console Amazon RDS all'indirizzo https://console.aws.amazon.com/rds/.

  2. Nell'angolo in alto a destra di AWS Management Console, scegli la AWS regione in cui hai creato il proxy RDS.

  3. Nel riquadro di navigazione scegli Proxies (Proxy).

  4. Scegli il nome di un proxy RDS per visualizzarne i dettagli.

  5. Nella pagina dei dettagli, la sezione Target groups mostra come il proxy è associato a un'istanza RDS DB cluster DB specifica. Puoi seguire il collegamento alla pagina di default del gruppo di destinazione per visualizzare ulteriori dettagli sull'associazione tra il proxy e il database. In questa pagina vengono visualizzate le impostazioni specificate durante la creazione del proxy. Includono la percentuale massima di connessione, il timeout del prestito di connessione, la famiglia di motori e i filtri di associazione delle sessioni.

Per visualizzare il proxy utilizzando la CLI, utilizzare il comando describe-db-proxies. Per impostazione predefinita, mostra tutti i proxy di proprietà del tuo account. AWS Per visualizzare i dettagli di un singolo proxy, specificarne il nome con il parametro --db-proxy-name.

aws rds describe-db-proxies [--db-proxy-name proxy_name]

Per visualizzare le altre informazioni associate al proxy, utilizza questi comandi:

aws rds describe-db-proxy-target-groups --db-proxy-name proxy_name aws rds describe-db-proxy-targets --db-proxy-name proxy_name

Utilizza la seguente sequenza di comandi per visualizzare ulteriori dettagli sugli elementi associati al proxy:

  1. Per ottenere un elenco di proxy, eseguire describe-db-proxies.

  2. Per visualizzare i parametri di connessione, ad esempio la percentuale massima di connessioni che il proxy può utilizzare, esegui describe-db-proxy-target-groups --db-proxy-name. Utilizza il nome del proxy come valore del parametro.

  3. Per visualizzare i dettagli del cluster DB dell'istanza RDS DB associato al gruppo di destinazione restituito, esegui describe-db-proxy-targets.

Per visualizzare i proxy utilizzando l'API RDS, utilizza l'operazione DescribedBProxies . Restituisce valori del tipo di dati DbProxy .

Per visualizzare i dettagli delle impostazioni di connessione per il proxy, utilizza gli identificatori proxy di questo valore restituito con l'operazione DescribeDB Groups. ProxyTarget Restituisce i valori del tipo di dati DB ProxyTarget Group.

Per visualizzare l'istanza RDS o il cluster Aurora DB associato al proxy, utilizzare l'ProxyTargetsoperazione DescribeDB. Restituisce valori del tipo di dati DB. ProxyTarget

Connessione a un database tramite RDS Proxy

Il modo per connettersi a un'istanza DB RDS tramite un proxy o collegandosi al database è generalmente lo stesso. Per ulteriori informazioni, consulta Panoramica degli endpoint proxy.

Connessione a un proxy utilizzando l'autenticazione nativa

Utilizza i seguenti passaggi per connetterti a un proxy utilizzando l'autenticazione nativa:

  1. Trova l'endpoint del proxy. In AWS Management Console, puoi trovare l'endpoint nella pagina dei dettagli del proxy corrispondente. Con AWS CLI, è possibile utilizzare il comando describe-db-proxies. L'esempio seguente mostra come.

    # Add --output text to get output as a simple tab-separated list. $ aws rds describe-db-proxies --query '*[*].{DBProxyName:DBProxyName,Endpoint:Endpoint}' [ [ { "Endpoint": "the-proxy.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy" }, { "Endpoint": "the-proxy-other-secret.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-other-secret" }, { "Endpoint": "the-proxy-rds-secret.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-rds-secret" }, { "Endpoint": "the-proxy-t3.proxy-demo.us-east-1.rds.amazonaws.com", "DBProxyName": "the-proxy-t3" } ] ]
  2. Specificate l'endpoint come parametro host nella stringa di connessione per l'applicazione client. Ad esempio, specificare l'endpoint proxy come valore per l'opzione mysql -h o l'opzione psql -h.

  3. Fornisci lo stesso nome utente e la stessa password del database come fai normalmente.

Connessione a un proxy mediante autenticazione IAM

Quando si utilizza l'autenticazione IAM con RDS Proxy, impostare gli utenti del database per l'autenticazione con nomi utente e password regolari. L'autenticazione IAM si applica al recupero RDS Proxy delle credenziali del nome utente e della password da Secrets Manager. La connessione da RDS Proxy al database sottostante non passa tramite IAM.

Per connetterti al proxy RDS utilizzando l'autenticazione IAM, utilizza la stessa procedura di connessione generale utilizzata per l'autenticazione IAM con un cluster DB di istanze RDS DB. Per informazioni generali sull'utilizzo di IAM, consulta Sicurezza in Amazon RDS.

Le principali differenze nell'utilizzo di IAM per RDS Proxy includono le seguenti:

  • Non si configura ogni singolo utente del database con un plugin di autorizzazione. Gli utenti del database hanno ancora nomi utente e password regolari all'interno del database. Si impostano i segreti Secrets Manager contenenti questi nomi utente e password e si autorizza RDS Proxy a recuperare le credenziali da Secrets Manager.

    L'autenticazione IAM si applica alla connessione tra il programma client e il proxy. Il proxy esegue quindi l'autenticazione nel database utilizzando il nome utente e le credenziali della password recuperate da Secrets Manager.

  • Invece dell'istanza, del cluster o dell'endpoint dell'istanza di lettura, specifica l'endpoint del proxy. Per informazioni dettagliate sull'endpoint proxy, vedere Connessione all'istanza tramite l'autenticazione IAM.

  • Nel caso di autenticazione diretta di database IAM, scegli selettivamente gli utenti del database e configurali per essere identificati con uno speciale plug-in di autenticazione. È quindi possibile connettersi a tali utenti utilizzando l'autenticazione IAM.

    Nel caso d'uso del proxy, è necessario fornire al proxy segreti che contengono nome utente e password di alcuni utenti (autenticazione nativa). Quindi ci si connette al proxy utilizzando l'autenticazione IAM. Qui, si esegue questa operazione generando un token di autenticazione con l'endpoint proxy, non l'endpoint del database. Si utilizza anche un nome utente che corrisponde a uno dei nomi utente per i segreti forniti.

  • Quando ci si connette a un proxy utilizzando l'autenticazione IAM è necessario utilizzare Transport Layer Security (TLS)/Secure Sockets Layer (SSL).

È possibile concedere a un utente specifico l'accesso al proxy modificando la policy IAM. Di seguito è riportato un esempio.

"Resource": "arn:aws:rds-db:us-east-2:1234567890:dbuser:prx-ABCDEFGHIJKL01234/db_user"

Considerazioni per la connessione a un proxy con Microsoft SQL Server

Per connettere un proxy con l'autenticazione IAM, non utilizzare il campo della password. Fornisci invece la proprietà token appropriata per ogni tipo di driver di database nel campo del token. Ad esempio, utilizza la proprietà accessToken per JDBC, la proprietà sql_copt_ss_access_token per ODBC Oppure usa la AccessToken proprietà per il driver.NET. SqlClient Non puoi usare l'autenticazione IAM con i client che non supportano le proprietà dei token.

In alcune condizioni, il proxy non può condividere una connessione al database e associa la connessione dall'applicazione client al proxy a una connessione al database dedicata. Per ulteriori informazioni su queste condizioni, consulta Evitare il pinning.

Considerazioni per la connessione a un proxy con PostgreSQL

Per PostgreSQL, quando un client avvia una connessione a un database PostgreSQL, invia un messaggio di avvio che include coppie di stringhe di nome parametro e valore. Per i dettagli, vedere i StartupMessage in Formati dei messaggi PostgreSQL nella documentazione di PostgreSQL.

Quando si effettua la connessione tramite un proxy RDS, il messaggio di avvio può includere i seguenti parametri attualmente riconosciuti:

  • user

  • database

Il messaggio di avvio può includere anche i seguenti parametri di runtime aggiuntivi:

Per ulteriori informazioni sulla messaggistica PostgreSQL, vedere Frontend/Backend Protocol nella documentazione di PostgreSQL.

Per PostgreSQL, se usi JDBC, ti consigliamo quanto segue per evitare il pinning:

  • Impostare il parametro assumeMinServerVersion di connessione JDBC su almeno 9.0 per evitare il pinning. Ciò impedisce al driver JDBC di eseguire un ulteriore round trip durante l'avvio della connessione quando è in esecuzione. SET extra_float_digits = 3

  • Impostare il parametro di connessione JDBC ApplicationName su any/your-application-name per evitare il pinning. In questo modo si impedisce al driver JDBC di eseguire un ulteriore round trip durante l'avvio della connessione quando viene eseguito SET application_name = "PostgreSQL JDBC Driver". Si noti che il parametro JDBC è ApplicationName ma il parametro StartupMessage PostgreSQL è application_name.

Per ulteriori informazioni, consulta Evitare il pinning. Per ulteriori informazioni sulla connessione tramite JDBC, vedere Connessione al database nella documentazione di PostgreSQL.