我正在使用 PHP 和 nginx 创建一个应用程序。 RDS密码通过AWS的秘密管理器进行管理,但PHP没有缓存包来管理秘密管理器。 (如果不缓存的话,每次调用页面都会调用Secret Manager,这对于速度和成本来说都是不好的。)
所以,我想提出一个新想法,感谢您对是否存在任何安全问题的反馈。
这个想法是使用nginx的fastcgi_param。 如果在nginx设置中添加fastcgi_param,则可以像PHP代码中的$_SERVER['var']一样使用它。 示例)fastcgi_param VAR1 VALUE1
工作详情如下
#!/bin/bash
aws secretsmanager get-secret-value --secret-id **SECRETID** --query SecretString --version-stage AWSCURRENT --region **REGION** --output text | jq -r 'to_entries|map("\(.key)=\(.value|tostring)")|.[]' > /etc/nginx/fastcgi_params_custom
运行上述脚本时,会在“/etc/nginx”目录中创建一个名为 fastcgi_parms_custom 的文件。
将步骤 2 中创建的文件包含在 nginx 设置的 location ~ .php$ { ... } 块中,如下所示。
include fastcgi_params_custom
echo $_SERVER['username']." ".$_SERVER['password'];
上面的工作中,shell脚本的内容、变量名、权限设置等需要稍微完善一下,但只是简单的在想法层面上写的。 如果有任何安全问题,请告诉我。
(我正在考虑不在AWS控制台的设置中使用自动密码替换,而是通过修改shell脚本创建fastcgi_parms_custom然后重新启动nginx)