從標準 IAM 身分驗證移至 RDS Proxy end-to-end IAM 身分驗證 - Amazon Aurora

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

從標準 IAM 身分驗證移至 RDS Proxy end-to-end IAM 身分驗證

如果您目前使用 RDS Proxy 的標準 IAM 身分驗證,其中用戶端使用 IAM 向代理進行身分驗證,但代理使用秘密連接到資料庫,則可以遷移到用戶端end-to-end代理和proxy-to-database連線都使用 IAM 身分驗證的端對端 IAM 身分驗證。 client-to-proxy

移至end-to-end IAM 身分驗證
  1. 更新 RDS Proxy IAM 角色許可

    建立包含 Secrets Manager 和 許可的已更新代理rds:db-connect許可政策:

    # Create updated proxy permission policy cat > updated-proxy-policy.json ≪ EOF
    { "Version": "2012-10-17", "Statement": [ { "Sid": "GetSecretsValue", "Action": [ "secretsmanager:GetSecretValue" ], "Effect": "Allow", "Resource": [ "arn:aws:secretsmanager:us-east-1:123456789012:secret:secretName-1234f" ] }, { "Sid": "RdsDBConnect", "Action": [ "rds-db:connect" ], "Effect": "Allow", "Resource": [ "arn:aws:rds-db:us-east-1:123456789012:dbuser:cluster-ABCDEFGHIJKL01234/jane_doe" ] } ] }

    更新代理您的角色政策:

    aws iam put-role-policy \ --role-name RDSProxyRole \ --policy-name UpdatedProxyPermissions \ --policy-document file://updated-proxy-policy.json
  2. 修改 RDS Proxy 以啟用end-to-end IAM 身分驗證

    aws rds modify-db-proxy \ --db-proxy-name my-database-proxy \ --default-auth-scheme IAM_AUTH \ --region us-east-1

    確認 RDS Proxy 狀態為可用,並且在繼續以確保遷移期間零停機時間DefaultAuthSchemeIAM_AUTH之前。

    aws rds describe-db-proxies --db-proxy-name my-database-proxy --region us-east-1

    預期的輸出結果:

    { "DBProxies": [ { "DBProxyName": "my-database-proxy", "DBProxyArn": "arn:aws:rds:us-east-1:123456789012:db-proxy:prx-0123456789abcdef", "Status": "available", ... "DefaultAuthScheme": "IAM_AUTH" } ] }
  3. 在資料庫上啟用 IAM 身分驗證

    aws rds modify-db-cluster \ --db-cluster-identifier my-database-cluster \ --enable-iam-database-authentication \ --region us-east-1
  4. 設定資料庫使用者進行 IAM 身分驗證

    對於 Aurora PostgreSQL:

    GRANT rds_iam TO jane_doe;

    對於 Aurora MySQL:

    ALTER USER 'jane_doe' IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS'; ALTER USER 'jane_doe'@'%' REQUIRE SSL;
  5. 您的用戶端應用程式程式碼不需要變更。連線程序保持不變:

    對於 Aurora PostgreSQL:

    # Generate authentication token export PGPASSWORD=$(aws rds generate-db-auth-token \ --hostname my-database-proxy.proxy-ABCDEFGHIJKL01234.us-east-1.rds.amazonaws.com \ --port 5432 \ --username jane_doe \ --region us-east-1) # Connect to database through proxy psql "host=my-database-proxy.proxy-ABCDEFGHIJKL01234.us-east-1.rds.amazonaws.com port=5432 user=jane_doe dbname=postgres password=$PGPASSWORD sslmode=require sslrootcert=us-east-1-bundle.pem"

    對於 Aurora MySQL:

    # Generate authentication token export MYSQL_PWD=$(aws rds generate-db-auth-token \ --hostname my-database-proxy.proxy-ABCDEFGHIJKL01234.us-east-1.rds.amazonaws.com \ --port 3306 \ --username jane_doe \ --region us-east-1) # Connect to database through proxy mysql -h my-database-proxy.proxy-ABCDEFGHIJKL01234.us-east-1.rds.amazonaws.com \ -P 3306 \ -u jane_doe \ --ssl-ca=us-east-1-bundle.pem \ --enable-cleartext-plugin