本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 RDS Proxy 的資料庫登入資料
Amazon RDS 中的 RDS Proxy 會使用 AWS Secrets Manager 來安全地存放和管理資料庫登入資料。您可以將代理與包含必要身分驗證詳細資訊的 Secrets Manager 秘密建立關聯,而不是在應用程式中內嵌憑證。您在 Aurora 資料庫叢集上為代理連線的每個資料庫使用者帳戶建立個別的 Secrets Manager 秘密。
或者,您可以將 RDS Proxy 設定為使用end-to-end IAM 身分驗證,這樣就不需要在 Secrets Manager 中存放資料庫登入資料。RDS Proxy 會針對client-to-proxy連線和 proxy-to-database連線使用 IAM 身分驗證。這提供完全整合的 IAM 型身分驗證解決方案,不需要管理秘密或密碼。如需新增 IAM 資料庫使用者的相關資訊,請參閱 使用 IAM 身分驗證建立資料庫帳戶。
建立要與 RDS Proxy 搭配使用的秘密
建立代理之前,您必須先建立至少一個存放資料庫憑證的秘密。
若要建立機密
請開啟位於 https://console.aws.amazon.com/secretsmanager/
的機密管理員控制台。 -
選擇 Store a new secret (存放新機密)。
-
選擇 Amazon RDS 資料庫的憑證。
-
輸入使用者名稱和密碼。您輸入的憑證必須符合存在於相關聯 RDS 資料庫中資料庫使用者的憑證。RDS Proxy 使用這些憑證來代表應用程式驗證和建立與資料庫的連線。
如果不相符,您可以更新秘密以符合資料庫密碼。在您更新秘密之前,嘗試使用該秘密透過代理連線會失敗,但使用其他有效秘密的連線仍然可運作。
注意
對於 RDS for SQL Server,RDS Proxy 需要在 Secrets Manager 中設定區分大小寫的秘密,無論資料庫執行個體定序設定為何。如果您的應用程式允許具有不同大小寫的使用者名稱,例如 "Admin" 和 "admin",您必須為每個使用者名稱建立個別秘密。RDS Proxy 不支援用戶端和代理之間的不區分大小寫使用者名稱身分驗證。
如需有關 SQL Server 中定序的詳細資訊,請參閱 Microsoft SQL Server
文件。 -
對於資料庫,請選取秘密將會存取的 Amazon RDS 資料庫。
-
填入秘密的其他設定,然後選擇儲存。如需完整指示,請參閱《AWS Secrets Manager 使用者指南》中的建立 AWS Secrets Manager 秘密。
當您透過 建立代理時 AWS CLI,您可以指定對應秘密的 Amazon Resource Name (ARNs)。您可以針對代理可以存取的所有資料庫使用者帳戶執行此操作。在 中 AWS Management Console,您可以依秘密的描述性名稱來選擇秘密。
-
若要建立 Secrets Manager 秘密以搭配 RDS Proxy 使用,請使用 create-secret 命令:
aws secretsmanager create-secret \ --name "secret_name" \ --description "secret_description" \ --regionregion_name\ --secret-string '{"username":"db_user","password":"db_user_password"}' -
您也可以建立自訂金鑰來加密 Secrets Manager 秘密。以下命令會建立範例金鑰。
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":"*" } ] }'
例如,下列命令會為兩個資料庫使用者建立 Secrets Manager 秘密:
aws secretsmanager create-secret \ --namesecret_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 \ --namesecret_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_idaws 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 帳戶擁有的秘密,請使用 list-secrets 命令:
aws secretsmanager list-secrets
當您使用 CLI 建立代理時,您會將一個或多個秘密的 Amazon Resource Names (ARN) 傳遞給 --auth 參數。下列範例顯示如何僅使用 AWS 帳戶擁有的每個秘密名稱和 ARN 來準備報告。此範例使用第 2 AWS CLI 版中可用的 --output table 參數。如果您使用的是第 1 AWS CLI 版,請--output text改用 。
aws secretsmanager list-secrets --query '*[].[Name,ARN]' --output table
若要確認秘密包含正確格式的正確憑證,請使用 get-secret-value 命令。將 取代為秘密的簡短名稱或 ARN。your_secret_name
aws secretsmanager get-secret-value --secret-idyour_secret_name
輸出包含具有類似下列項目的 JSON 編碼值的行:
... "SecretString": "{\"username\":\"your_username\",\"password\":\"your_password\"}", ...