本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS Secrets Manager 為RDS代理伺服器設定資料庫認證
對於您建立的每個代理,您必須先使用 Secrets Manager 服務來儲存使用者名稱和密碼登入資料集。您可以為代理伺服器在資料庫執行個體 上連線的每個資料庫使用者帳戶建立個別的 Secret Manager 密碼。RDS
在 Secrets Manager 主控台中,您可以使用username
和password
欄位的值來建立這些密碼。這樣做可讓 Proxy 連線至您與代理關聯的資料庫執行個RDS體 上對應的資料庫使用者。若要這麼做,您可以使用其他資料庫的認證設定、資RDS料庫的認證或其他類型的密碼。在 [使用者名稱] 和 [密碼] 欄位中填入適當的值,以及任何其他必要欄位的值。如果秘密中有 Host (主機) 和 Port (連接埠) 等其他欄位,代理會忽略這些欄位。這些詳細資訊由代理自動提供。
您也可以選擇 Other type of secrets (其他類型的秘密)。在此情況下,您可以使用名為 username
和 password
的金鑰來建立秘密。
若要以特定資料庫使用者身分透過 Proxy 連線,請確定與密碼相關聯的密碼與該使用者的資料庫密碼相符。如果不相符,您可以在 Secrets Manager 中更新相關聯的私密。在這種情況下,您仍可連線至私密登入資料和資料庫密碼確實相符的其他帳戶。
注意
對RDS於SQL伺服器,RDS代理伺服器需要 Secrets Manager 中的密碼,不論資料庫執行個體定序設定為何,都會與應用程式程式碼區分大小寫。例如,如果您的應用程式可以同時使用使用者名稱「Admin」或「admin」,請同時為「管理員」和「admin」設定代理伺服器。RDSProxy 在用戶端與 Proxy 之間的驗證程序中,不會容納使用者名稱不區分大小寫的情況。
如需有關SQL伺服器中定序的詳細資訊,請參閱 Microsoft SQL 伺服器
當您透過 AWS CLI 或建立代理時 RDSAPI,您可以指定對應密碼的 Amazon 資源名稱 (ARNs)。您可以針對代理可以存取的所有資料庫使用者帳戶執行此操作。在中 AWS Management Console,您可以依其描述性名稱來選擇密碼。
如需有關在 Secrets Manager 中建立秘密的指示,請參閱 Secrets Manager 文件中的建立秘密頁面。請使用下列技術其中之一:
-
在主控台中使用 Secrets Manager
。 -
若要使用CLI建立密碼管理員密碼以與 RDS Proxy 搭配使用,請使用如下命令。
aws secretsmanager create-secret --name "
secret_name
" --description "secret_description
" --regionregion_name
--secret-string '{"username":"db_user","password":"db_user_password"}' -
您也可以建立自訂金鑰來加密 Secrets Manager 密碼。下列命令會建立範例金鑰。
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":"*" } ] }'
例如,下列命令會為兩個資料庫使用者建立 Secret Manager 密碼:
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 \ --namesecret_name_2
--description "application user" \ --secret-string '{"username":"app-user","password":"choose_your_own_password
"}'
若要建立使用自訂 AWS KMS 金鑰加密的這些密碼,請使用下列指令:
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 \ --namesecret_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
若要查看您 AWS 帳戶所擁有的密碼,請使用如下指令。
aws secretsmanager list-secrets
當您使用建立代理時CLI,您會將一個或多個機密的 Amazon 資源名稱 (ARNs) 傳遞給--auth
參數。下面的 Linux 示例演示了如何準備一個報告,只有您ARN的 AWS 帳戶擁有的名稱和每個密碼。此範例使用 --output table
版本 2 中可用的 AWS CLI
參數。如果您使用的是 AWS CLI 版本 1,請--output text
改用。
aws secretsmanager list-secrets --query '*[].[Name,ARN]' --output table
若要確認您是否在祕密中以正確的格式儲存了正確的登入資料,請使用下列命令。取代短名稱或密碼的
。ARNyour_secret_name
aws secretsmanager get-secret-value --secret-id
your_secret_name
輸出應該包含一行,顯示如下所示的 JSON-coded 值。
"SecretString": "{\"username\":\"
your_username
\",\"password\":\"your_password
\"}",