laravel-rds-proxy-iam maintained by paeire
laravel-rds-proxy-iam
Librería para conectar Laravel a AWS RDS Proxy usando IAM DB Auth (sin credenciales estáticas).
Instalación
composer require paeire/laravel-rds-proxy-iam
Configuración base
En config/database.php:
'connections' => [
'mysql' => [
'driver' => 'mysql-iam-proxy',
'host' => env('DB_HOST'),
'port' => env('DB_PORT', 3306), // puerto local (túnel/proxy)
'database' => env('DB_DATABASE'),
'username' => env('DB_USERNAME'),
// host/port usados para firmar el token IAM
'token_host' => env('DB_TOKEN_HOST', env('DB_HOST')),
'token_port' => env('DB_TOKEN_PORT', 3306),
'aws_region' => env('AWS_REGION', 'us-east-1'),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
],
],
Orden de carga (importante)
El provider ahora registra el driver durante register() y engancha beforeResolving/afterResolving para cargarse lo antes posible.
Si tu aplicación resuelve DB muy temprano (en otro provider), registra este provider antes:
- Laravel 11: en
bootstrap/providers.php, colocaPaeire\RdsProxyIam\IamServiceProvider::classal inicio. - Laravel 10 o menor: en
config/app.php, colócalo antes de providers que usen DB enregister().
Seguridad y utilidades incluidas
- Ya no se registran
passwordni token IAM en logs. - Validación estricta de configuración requerida.
- Soporte TLS con
ssl_cay verificación (ssl_verify, defaulttrue). connect_timeout(default5).force_readonlypara reforzar sesión de solo lectura.session_init_statementspara ejecutar SQL al abrir conexión.
Opciones soportadas
Se pueden definir en la conexión de Laravel y, como fallback, por env:
host/DB_HOSTport/DB_PORTdatabase/DB_DATABASEusername/DB_USERNAMEtoken_host/DB_TOKEN_HOSTtoken_port/DB_TOKEN_PORTaws_region/AWS_REGIONssl_ca/DB_SSL_CAssl_verify/DB_SSL_VERIFY(truepor defecto)connect_timeout/DB_CONNECT_TIMEOUT(5por defecto)force_readonly/DB_FORCE_READONLYsession_init_statements/DB_SESSION_INIT_STATEMENTS(string con;o array)enable_cleartext_plugin(truepor defecto)