管理密钥

时间:2017-02-08 20:48:23

标签: git amazon-web-services secret-key

我有一个应用程序将AWS密钥存储在Github上的私人仓库中。

建议使用,因为如果我们的某台计算机“爆炸”,我们将无法访问这些密钥。

我们可以通过我们的计算机来共享密钥,或者通过私人公司的闲暇发送,而不是存储在Github中。

这些似乎都是管理密钥的坏方法。

是否有一个好的存储库/保险库或方法更适合秘密密钥存储和与团队成员共享?

5 个答案:

答案 0 :(得分:1)

您可以使用1Password for Teams,它允许您在受密码保护的加密保管库中共享密码。

作为附注,如果计算机爆炸,将AWS用户锁定在其帐户之外的风险非常低。在任何情况下,帐户所有者都可以为帐户中的任何IAM用户重新生成一组新的AWS密钥。只要帐户所有者可以连接到AWS账户,您就是安全的。

答案 1 :(得分:1)

避免使用代码存储凭据,它们会变得非常脆弱,后果可能是不可逆转的。使用IAM角色授予访问权限并仅使用密钥进行开发会更好,每个开发人员最好使用不同的密钥,以便根据需要轮换它们。

查看AWS Security Best Practices白皮书了解更多详情。

答案 2 :(得分:0)

密钥与许多秘密一样,不应该尽可能地共享。

对于AWS用户:

  1. 每个用户(员工,队友等)都应该为他们创建自己的IAM用户。
  2. 每个IAM用户都有自己生成的一组访问密钥/机密,仅供该用户使用。
  3. 这个系统有很多好处:

    1. 由于密钥不是共享的,因此它们更容易被泄露,
    2. 由于密钥未共享,如果密钥被泄露,则只有一个用户受到影响;没有其他队友受到影响。
    3. 可以根据自己的要求为每个IAM用户授予不同的权限。
    4. 使用CloudTrail,您可以审核每个用户在AWS账户中的操作。
    5. 并避免在源代码管理(git或任何其他)中保存此类内容。

答案 3 :(得分:0)

密钥管理的首要规则是最小化密钥存储的位置数量。因此,对于像AWS键这样的东西,开发人员应该将自己的密钥存储在他们的机器上。对于应用服务器所需的密钥,这些密钥应仅存储在应用服务器上。

  

建议使用,因为如果我们的某台计算机爆炸了#34;,我们将无法访问这些密钥。

解决此问题的最佳方法是旋转按键。理想情况下,如果需要,您应该始终处于可以快速/轻松生成新密钥的位置,例如在安全事件的情况下。如果丢失了一些你完全搞砸的主密钥,请将其存储在安全的存储应用程序中,例如1Password,其中您的保险库使用额外的密码进行加密。

  

我们可以通过我们的计算机来共享密钥,或者通过私人公司的闲暇发送,而不是存储在Github中。

     

这些似乎都是管理密钥的坏方法。

作为一般规则,永远不要将AWS密钥(或任何其他敏感密钥或密码)存储在Github或Slack公司。你在松弛中分享的任何东西都永远存在于日志中,所以如果你的公司松懈受到损害 - 或者如果Slack遭到入侵(已经发生过几次) - 潜在攻击者可以使用日志中的任何内容。

  

是否有更好的存储库/保险库或方法更适合秘密密钥存储并与团队成员共享?

要存储密钥(长期存储),请使用1密码。对于共享密钥(短期存储),请使用ShareSecret(免责声明,我是ShareSecret的创始人)。

答案 4 :(得分:0)

您可以使用仅存储密钥并且仅允许特定用户通过IAM组和用户访问此存储桶的S3存储桶。在项目开始时,这似乎是合理的。

如果您需要更严格的知识,我知道一些大型科技公司会使用:

https://github.com/hashicorp/vault