Impostazione delle credenziali del database in AWS Secrets Manager - 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à.

Impostazione 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. In questo modo il proxy può 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\"}",