代码之家  ›  专栏  ›  技术社区  ›  Neil C. Obremski

您对存储AWS身份验证数据有什么建议?

  •  4
  • Neil C. Obremski  · 技术社区  · 17 年前

    场景:用PHP编写的web应用程序利用 Amazon Web Service 并且必须将访问密钥ID和秘密访问密钥放在手边才能正常工作。目前是否有安全存储这些数据的建议和/或API?

    我的想法是基于从本地服务器变量创建的密钥将其对称加密到一个文件中。这样一来,如果有人通过FTP获得文件副本,丢失了带有复制文件的笔记本电脑等,那就是胡言乱语。我担心的是,一个熟练的攻击者可以上传自己的脚本来解密它。

    这看起来像是 common situation 我从来没有找到一个舒适的解决方案。显然,我不能使用单向哈希,因为我需要原始数据来创建HMAC以发送到AWS。非常欢迎链接到相关S.O.问题。

    3 回复  |  直到 13 年前
        1
  •  1
  •   Mez    17 年前

    啊。安全问题。

    我认为你应该在这里问的问题是,你如何处理php配置文件中的mySQL密码?

    坦率地说,如果有人设法获得了你的文件副本,那么你的安全性无论如何都需要重新考虑。为了我自己的使用,我通常只将密码保存在一个地方(在应该使用密码的服务器上),并确保每次都使用随机生成的密码(将其粘贴到配置文件中,瞧!)

    说实话,如果不是你自己的主机,任何敏感数据都可能受到损害。

    如果它是你自己的主机,我建议在Linux中使用适当的权限,以及 PHPSuExec 以确保只有您编写的脚本可以访问这些文件。

    无论如何,为了回答您最初的问题,您的AWS访问/密钥与MySQL密码相同,好吧,它有可能让某人访问您的服务,但它不会让他们访问您的个人信息。即使使用对称加密,如果您的脚本有安全漏洞,也可以访问信息。

    简单地说,当你把这些钥匙放在除你之外的任何人都能接触到的地方时,你就冒了风险。你有多相信亚马逊的服务器不会受到损害?

    我的建议是尝试添加尽可能多的安全性,但要注意你的帐户,我通常会运行一个cron作业,向我发送一封电子邮件,其中包含我的S3帐户的更改(上传的新文件、新桶等),从中我可以知道发生了什么。

    没有简单的解决方案,这是保护系统每一层的混合体。我的意思是,如果你使用对称加密,密码必须存储在某个地方,对吧?还是你每次都要输入?

    希望这有帮助

        2
  •  0
  •   frankodwyer    17 年前

    我的想法是基于从本地服务器变量创建的密钥将其对称加密到一个文件中。这样一来,如果有人通过FTP获得文件副本,丢失了带有复制文件的笔记本电脑等,那就是胡言乱语。我担心的是,一个熟练的攻击者可以上传自己的脚本来解密它 .

    这不会有什么坏处,但最终它只是通过模糊性实现的安全性,因为可以读取文件的人可能也可以读取和反向工程您的代码。除非每次服务器启动时都输入密码或以其他方式提供秘密,否则加密将无济于事。它只是将问题转移到如何保护加密密钥(服务器也需要访问该密钥)?

    您必须加强和设计您的应用程序和服务器(不要忘记操作系统和对操作系统的远程访问),以便没有未经授权的人可以首先读取系统上的文件。

    如果你担心有人会物理访问这个盒子,那就专注于物理安全来阻止这种情况的发生。

        3
  •  0
  •   Steve Buikhuizen    17 年前

    我按照你的建议使用对称加密。当我启动服务器时,我需要给它一个密钥来解密包含身份验证数据的文件。

    当然,黑客可以通过这种方式进行内存转储并读取密码,但这比读取明文文件要困难得多。没有完美的解决方案,安全性总是风险和易用性之间的折衷。

    因此,服务器安全仍然是关键问题,它只是一个安全程度足够的问题。我建议你看看 Bastille Linux 或者类似的东西来加固你的服务器,但这完全是另一个话题。