【发布时间】:2021-04-16 00:17:39
【问题描述】:
我试图了解为什么使用 KMS 加密存储在 AWS Parameter Store (SSM) 中的参数比将参数保存在 nginx 服务器上的 .env 文件中更好的解决方案。 就 nginx 服务器设置而言,.env 文件不会公开,因此除非有人闯入服务器,否则无法查看它。
nginx 配置将public 文件夹设置为根目录
root /home/user/app/public;
看起来共识是,如果有人设法闯入服务器,他们将能够以纯文本形式查看存储在 .env 文件内容中的所有参数,因此安全性低于 Parameter Store。
但是,AWS Parameter Store 不也是这样吗? (主要问题)
在php文件中,我从Parameter Store加载参数的方式是使用SSM Client。
例如
$client = new SsmClient([
'version' => 'latest',
'region' => 'us-west-2',
]);
$credentials = $client->getParameters([
'Names' => ['MY_KEY', 'MY_SECRET'],
'WithDecryption' => true
]);
$key = $credentials['Parameters'][0]['Value'];
$secret = $credentials['Parameters'][1]['Value'];
如果有人闯入服务器,他们将能够执行这些操作并检索任何参数。 那么是什么让 SSM 比 .env 更安全?
【问题讨论】: