Paso de la autenticación de IAM estándar a la autenticación de IAM integral para RDS Proxy - Amazon Relational Database Service

Paso de la autenticación de IAM estándar a la autenticación de IAM integral para RDS Proxy

Si actualmente utiliza la autenticación de IAM estándar para RDS Proxy, en la que los clientes se autentican en el proxy mediante IAM pero el proxy se conecta a la base de datos mediante secretos, puede migrar a la autenticación de IAM integral, en la que tanto las conexiones de cliente a proxy como de proxy a base de datos utilizan la autenticación de IAM.

Cambio a autenticación integral de IAM
  1. Actualización de los permisos del rol de IAM de RDS Proxy

    Cree una política de permisos de proxy actualizada que incluya Secrets Manager y permisos de 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" ] } ] }

    Actualice la política del rol del proxy:

    aws iam put-role-policy \ --role-name RDSProxyRole \ --policy-name UpdatedProxyPermissions \ --policy-document file://updated-proxy-policy.json
  2. Modificación del RDS Proxy para habilitar la autenticación integral de IAM

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

    Compruebe que el estado de RDS Proxy sea disponible y DefaultAuthScheme sea IAM_AUTH antes de continuar para garantizar que no haya ningún tiempo de inactividad durante la migración.

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

    Resultado previsto:

    { "DBProxies": [ { "DBProxyName": "my-database-proxy", "DBProxyArn": "arn:aws:rds:us-east-1:123456789012:db-proxy:prx-0123456789abcdef", "Status": "available", ... "DefaultAuthScheme": "IAM_AUTH" } ] }
  3. Habilitación de la autenticación de IAM en la base de datos

    aws rds modify-db-cluster \ --db-cluster-identifier my-database-cluster \ --enable-iam-database-authentication \ --region us-east-1
  4. Configuración del usuario de la base de datos para la autenticación de IAM

    Para RDS para PostgreSQL:

    GRANT rds_iam TO jane_doe;

    Para RDS para MySQL y RDS para MariaDB:

    ALTER USER 'jane_doe' IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS'; ALTER USER 'jane_doe'@'%' REQUIRE SSL;
  5. No es necesario realizar cambios en el código de aplicación del cliente. El proceso de conexión sigue siendo el mismo:

    Para RDS para 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"

    Para RDS para MySQL y RDS para MariaDB:

    # 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