从安全设计来看,访问控制是非常重要的。除非是完全公开的网页,可以没有任何限制的访问
在实施访问控制的应用application中呢,你的秘钥管理控制在哪个level呢
level -2 没有访问控制,注意这是-2 负二,不是level 2
level-1 所有的密码都是password,这个比level-2 强点,但也没强到哪里去,随便一猜就能猜到了。。。
level 0 hardcode everywhere 导出硬编码,写个代码里面各种token key password,这会是非常大的问题,代码传到git后就完成不受控了啊 谁都可能下载代码,然后这个secret就到处都是,想删都不知道去哪里删,坏菜不。。。在代码review的时候尝尝会看到这种问题,不能忍。。
level 1 pull out 到config文件中,只能说好过硬编码。。。把secret都放到配置文件或者环境变量里了,但仍然有风险,拿到config还是明文的secret啊。。。
level 2 加密config file配置文件,看起来安全多了,still 加密的key怎么存储?谁在什么时候访问了,没有logging 没有audit,,不够安全
level 3使用专用的secret manager来管理secret
Secrets Manager可以帮助改善安全态势,不再需要在应用程序源代码中硬编码凭据。将凭据存储在Secrets Manager中有助于避免检查您的应用程序或组件的人可能对其进行的攻击。可以将硬编码的凭据替换为对Secrets Manager服务的运行时调用,以便在需要凭据时动态检索凭据。
secret仅在需要消费它的时候用,平时就不可见了 ,access by demand 更安全了呢。。。
level 4 dynamic ephemeral credentials
相比于leve3哈,秘钥不能一直用,得有个效期呢,秘钥需要更新轮换,请上专业的hashicrop vault。有secret managment,数据加密,,,,,,
Vault by HashiCorp (vaultproject.io)
安全应该做到哪个level? depends,看数据资产的情况,公开数据完全没必要上level 4了是吧
在security和convenience 中选个平衡点吧