Configurazione delle credenziali del database in AWS Secrets Manager RDS Proxy - Amazon Aurora

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

Configurazione delle credenziali del database in AWS Secrets Manager RDS Proxy

Il proxy RDS in Amazon RDS viene utilizzato AWS Secrets Manager per archiviare e gestire le credenziali del database in modo sicuro. Invece di incorporare le credenziali nell'applicazione, si associa un proxy a un segreto di Secrets Manager che contiene i dettagli di autenticazione necessari. Si crea un segreto Secrets Manager separato per ogni account utente del database a cui il proxy si connette sul cluster Aurora .

Creazione di segreti da utilizzare con RDS Proxy

Prima di creare un proxy, è necessario creare almeno un segreto che memorizzi le credenziali del database.

Per creare un segreto
  1. Apri la console Secrets Manager all'indirizzo https://console.aws.amazon.com/secretsmanager/.

  2. Scegli Archivia un nuovo segreto.

  3. Scegli Credenziali per il database Amazon RDS.

  4. Inserisci un nome utente e una password. Le credenziali inserite devono corrispondere alle credenziali di un utente del database esistente nel database RDS associato. RDS Proxy utilizza queste credenziali per autenticare e stabilire connessioni al database per conto delle applicazioni.

    In caso di mancata corrispondenza, puoi aggiornare il segreto in modo che corrisponda alla password del database. Finché non aggiorni il segreto, i tentativi di connessione tramite il proxy utilizzando quel segreto hanno esito negativo, ma le connessioni che utilizzano altri segreti validi continuano a funzionare.

    Nota

    Per RDS per SQL Server, RDS Proxy richiede un segreto con distinzione tra maiuscole e minuscole in Secrets Manager, indipendentemente dalle impostazioni di confronto delle istanze DB. Se l'applicazione consente nomi utente con lettere maiuscole diverse, ad esempio «Admin» e «admin», è necessario creare segreti separati per ciascuno. RDS Proxy non supporta l'autenticazione del nome utente senza distinzione tra maiuscole e minuscole tra client e proxy.

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

  5. Per Database, seleziona il database Amazon RDS a cui accederà il segreto.

  6. Inserisci altre impostazioni per il segreto, quindi scegli Store. Per istruzioni complete, consulta Creazione di un AWS Secrets Manager segreto nella Guida AWS Secrets Manager per l'utente.

Quando crei un proxy tramite AWS CLI, specifichi gli Amazon Resource Names (ARNs) 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 creare un segreto di Secrets Manager da utilizzare con RDS Proxy, usa il comando create-secret:

    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.

    aws kms create-key --description "test-key" --policy '{ "Id":"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 vedere i segreti di proprietà del tuo AWS account, usa il comando list-secrets:

aws secretsmanager list-secrets

Quando crei un proxy utilizzando la CLI, passi gli Amazon Resource Names (ARNs) di uno o più segreti al --auth parametro. L'esempio seguente mostra come preparare un rapporto con solo il nome e l'ARN di ogni segreto posseduto dal tuo AWS account. Questo esempio utilizza il --output table parametro disponibile nella 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 confermare che il segreto contenga le credenziali corrette nel formato corretto, utilizzate il get-secret-valuecomando. Sostituisci your_secret_name con il nome breve o l'ARN del segreto.

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

L'output contiene una riga con un valore codificato in JSON simile al seguente:

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