同一用户的多个访问密钥
Multiple Access Keys for the Same User
我发现我公司的 AWS 账户中有一个特定用户启用了编程访问。我的任务是为我的一位同事重新创建访问密钥和安全令牌,尽管它已经有了一个。我想停用原来的那个。我觉得从安全的角度来看,最好只有一个 Access Key/Token 而不是多个。
谁能告诉我这是一个不错的选择吗?我的一位同事问我为什么要这样做,当我告诉他我的推理时,我认为他并没有 100% 相信我的推理是好的。您能告诉我对同一用户拥有多个访问 keys/secret 密钥是否有任何优势吗?因为我想不出来。另外,您能否提供涵盖此内容的任何类型的支持文章?
在 AWS IAM Access Keys best practices 我认为这些部分适用:
- 对不同的应用程序使用不同的访问密钥。这样做是为了在访问密钥暴露时隔离权限并撤销各个应用程序的访问密钥。为不同的应用程序设置单独的访问密钥还会在 AWS CloudTrail 日志文件中生成不同的条目,这使您可以更轻松地确定哪个应用程序执行了特定操作。
- 定期轮换访问密钥。 定期更改访问密钥。有关详细信息,请参阅 IAM 用户指南中的轮换访问密钥(AWS CLI、Windows PowerShell 工具和 AWS API)以及 AWS 安全博客上的如何为 IAM 用户轮换访问密钥。
第一项清楚地给出了对单个 IAM 帐户使用多个访问密钥的原因。我认为使用多个键也会使第二项,即键轮换更容易。您可以创建第二个访问密钥集,切换您的应用程序,验证之前的访问密钥集不再用于访问 AWS API,然后删除旧的访问密钥集。
我没有推荐每个用户使用单个访问密钥的文档,但 AWS 确实建议定期轮换访问密钥。请参阅 Managing Access Keys for IAM Users,标题为 "Rotating Access Keys" 的部分。
因此,作为最佳实践,您应该定期执行以下操作(每 30、60、90 天等)
- 为您的用户创建第二个访问密钥
- 无论您在何处使用第一个访问密钥,请将其替换为第二个
- 稍等片刻,确认第一个访问密钥未被使用。
- 确认后,禁用或删除第一个访问密钥
两个访问密钥系统允许在保持访问密钥 disabled/deleted 的时间的同时进行这种轮换,但仍将其使用量降至最低。我一直在使用其他工具,在这些工具中,您必须在生成新密钥时禁用旧密钥。因为有时新密钥生成后需要时间才能使用。
如果用户需要多个访问密钥,那么应该有一个问题,为什么需要一个而不是多个。使用多个用户的好处:
- 权限可以更细化
- 如果密钥泄露,需要更换的地方更少
- 您可以更好地跟踪哪些工具在您的帐户上运行以及何时运行
出于这些原因,我建议只使用一个访问密钥 "in the field"。
我认为,真的,如果有人想为单个用户实际使用 2 个密钥,那他们只是懒惰。
我为每个需要访问的工具创建了单独的 IAM 用户和角色。我从不重复使用它们。
更新
AWS 建议定期轮换访问密钥。
来源:http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html
此外,他们的 "howto" 在密钥轮换过程中使用 IAM 用户的两个分配访问密钥:
来源:https://aws.amazon.com/blogs/security/how-to-rotate-access-keys-for-iam-users/
因此,在任何给定时间每个 IAM 用户的目标是一个访问密钥 "in use"。
我发现我公司的 AWS 账户中有一个特定用户启用了编程访问。我的任务是为我的一位同事重新创建访问密钥和安全令牌,尽管它已经有了一个。我想停用原来的那个。我觉得从安全的角度来看,最好只有一个 Access Key/Token 而不是多个。
谁能告诉我这是一个不错的选择吗?我的一位同事问我为什么要这样做,当我告诉他我的推理时,我认为他并没有 100% 相信我的推理是好的。您能告诉我对同一用户拥有多个访问 keys/secret 密钥是否有任何优势吗?因为我想不出来。另外,您能否提供涵盖此内容的任何类型的支持文章?
在 AWS IAM Access Keys best practices 我认为这些部分适用:
- 对不同的应用程序使用不同的访问密钥。这样做是为了在访问密钥暴露时隔离权限并撤销各个应用程序的访问密钥。为不同的应用程序设置单独的访问密钥还会在 AWS CloudTrail 日志文件中生成不同的条目,这使您可以更轻松地确定哪个应用程序执行了特定操作。
- 定期轮换访问密钥。 定期更改访问密钥。有关详细信息,请参阅 IAM 用户指南中的轮换访问密钥(AWS CLI、Windows PowerShell 工具和 AWS API)以及 AWS 安全博客上的如何为 IAM 用户轮换访问密钥。
第一项清楚地给出了对单个 IAM 帐户使用多个访问密钥的原因。我认为使用多个键也会使第二项,即键轮换更容易。您可以创建第二个访问密钥集,切换您的应用程序,验证之前的访问密钥集不再用于访问 AWS API,然后删除旧的访问密钥集。
我没有推荐每个用户使用单个访问密钥的文档,但 AWS 确实建议定期轮换访问密钥。请参阅 Managing Access Keys for IAM Users,标题为 "Rotating Access Keys" 的部分。
因此,作为最佳实践,您应该定期执行以下操作(每 30、60、90 天等)
- 为您的用户创建第二个访问密钥
- 无论您在何处使用第一个访问密钥,请将其替换为第二个
- 稍等片刻,确认第一个访问密钥未被使用。
- 确认后,禁用或删除第一个访问密钥
两个访问密钥系统允许在保持访问密钥 disabled/deleted 的时间的同时进行这种轮换,但仍将其使用量降至最低。我一直在使用其他工具,在这些工具中,您必须在生成新密钥时禁用旧密钥。因为有时新密钥生成后需要时间才能使用。
如果用户需要多个访问密钥,那么应该有一个问题,为什么需要一个而不是多个。使用多个用户的好处:
- 权限可以更细化
- 如果密钥泄露,需要更换的地方更少
- 您可以更好地跟踪哪些工具在您的帐户上运行以及何时运行
出于这些原因,我建议只使用一个访问密钥 "in the field"。
我认为,真的,如果有人想为单个用户实际使用 2 个密钥,那他们只是懒惰。
我为每个需要访问的工具创建了单独的 IAM 用户和角色。我从不重复使用它们。
更新
AWS 建议定期轮换访问密钥。
来源:http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html
此外,他们的 "howto" 在密钥轮换过程中使用 IAM 用户的两个分配访问密钥:
来源:https://aws.amazon.com/blogs/security/how-to-rotate-access-keys-for-iam-users/
因此,在任何给定时间每个 IAM 用户的目标是一个访问密钥 "in use"。