我正在尝试弄清楚将服务身份验证器移动到秘密存储的安全性好处。
将数据库身份验证器保存在代码或应用程序服务器配置中显然不是一个好主意。
AWS Secrets Manager可轻松加密机密,并让AWS自动轮换凭证,这是一件好事。显然,轮换db身份验证器有安全好处。如果有人以某种方式窃取了一个数据库验证器,Secrets Manager可能会每天或更频繁地轮换它,如果它是旧的,你就不走运了。
但是,如果您的应用服务器被攻破,它是否没有查询Secrets Manager所需的AWS密钥?源代码也是如此(例如,某种导致数据库u/p的凭证被存储在某个地方)。当然,该应用程序服务器有一个IAM角色,该角色允许此查询,以及访问数据库的网络流量授权。
这与将数据库身份验证器存储在应用程序服务器上有什么不同?简单地说,通过您的代码(通过SDK)以编程方式访问Secrets Manager,为了获得VPC内的密码和正确路径(例如,入站安全组规则、路由表等),某人必须同时泄露您的源代码和应用服务器。才能得到数据?
我想我遗漏了什么!
发布于 2018-11-16 01:25:26
简单地说,Secrets Manager允许您不必在必须分发到服务器的源代码或配置文件中存储密码。然而,正如您所指出的,如果您的主机被攻破,所有的赌注都会失效,没有什么能阻止攻击者从内存中读取您的秘密。
至于亚马逊网络服务的凭证,如果这是一个EC2实例,你也会想要使用roles for EC2,这样亚马逊网络服务就会自动轮换并将你的凭证传递给主机。
https://stackoverflow.com/questions/53289866
复制