【问题标题】:How to securely store the amazon access token for Amazon KMS如何安全地存储 Amazon KMS 的亚马逊访问令牌
【发布时间】:2020-05-16 18:45:43
【问题描述】:

我正在探索亚马逊 KMS 托管服务,它似乎可以安全地存储主密钥和数据密钥。 我能够使用 AWS KMS API / CLI 从加密的数据密钥中将数据密钥解密为纯文本。

但我有一个担心,要访问亚马逊 KMS 以解密数据密钥,我需要传递访问令牌和加密的数据密钥。

那么我可以在哪里安全地存储亚马逊访问令牌和加密数据密钥?

感谢任何想法。

谢谢,
哈利

【问题讨论】:

  • 您可以使用 Secret Manager 来存储令牌并添加额外的安全层,您也可以使用 KMS 对其进行加密。

标签: amazon-web-services encryption aws-kms key-management


【解决方案1】:

我需要传递访问令牌和加密数据密钥。

确实,您需要在调用任何 AWS 服务之前对客户端进行身份验证和授权。

也许您可以详细说明 亚马逊访问令牌 的含义。实际上,您需要存储访问密钥和访问密钥以及可选的(临时)会话令牌以正确授权服务。我假设在“亚马逊访问令牌”下您的意思是客户端凭据。

我可以在哪里安全地存储亚马逊访问令牌和加密数据密钥?

对于数据密钥 - 加密的数据密钥可以与数据一起存储/发送(如果您为每次加密生成一个新密钥)或作为配置(如果您计划重复使用该密钥),这已经安全加密。

如果您的客户端(使用 KMS 的代码)在 AWS 基础设施上运行,您可以使用 service roles 来允许从服务访问 KMS 服务,而无需明确存储身份凭证。如果客户端也在 AWS 上运行,这是默认(也是最佳)方式。

如果您从 AWS 外部访问 KMS 服务,您的应用程序需要具有客户端凭证。如前所述,理论上您也可以使用 Secret Manager,但无论如何您都需要凭据才能访问该服务。

【讨论】:

  • 感谢您的更新,为了清楚起见,我有一个在 AWS EC2 实例中运行的 docker 服务。目前,我在应用程序中有加密的数据密钥(从 AWS KMS 接收),并且在文件中有访问密钥和访问密钥。我想知道是否有一种安全的方式来保存 AWS 凭证?
  • @Harry 如果它在 EC2 上运行,您可能想要使用服务角色并且根本不需要存储任何凭据。但是 - 当客户端在基于 EC2 的 docker 上运行时,您需要 proxy 调用元数据服务。 (元数据服务是一个 AWS 端点,AWS SDK 在 EC2 上运行时如何自动获取服务角色凭证)如果您想在配置文件中使用凭证,那么最好的选择是限制对配置文件的访问(权限、标签、. .)
  • 谢谢,那Access Secret Manager有什么用呢?
  • @Harry Secret Manager 旨在存储凭证和敏感配置(用于其他非 AWS 服务),要访问密钥管理器,您也需要拥有 aws 凭证或服务角色
  • 我同意你的回答,谢谢。因此,如果我的理解是正确的,我可以将来自 AWS KMS 的加密数据密钥存储在 Amazon 密钥管理器中(而不是将其存储在配置文件中)并访问亚马逊密钥管理器,我需要具有来自 AWS ECS 的服务相关角色到 AWS 秘密管理器获取没有凭据的加密数据密钥,声明正确吗?
猜你喜欢
  • 2012-09-11
  • 1970-01-01
  • 1970-01-01
  • 2016-07-23
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
  • 2019-06-13
  • 2019-06-21
相关资源
最近更新 更多