如何安全地存储和使用客户的 AWS 密钥

Posted

技术标签:

【中文标题】如何安全地存储和使用客户的 AWS 密钥【英文标题】:How to securly store and use a customer's AWS Secret Key 【发布时间】:2012-08-26 23:49:44 【问题描述】:

是否可以在我的服务器上存储客户的密钥和访问密钥 ID 以允许我代表他们访问 AWS API?

对于密码,只需使用散列来存储加密版本,但我每次调用 AWS 时都需要使用实际的密钥值,因此无法散列。

简单来说,对于每个经过身份验证的用户,我都会像这样存储一个对象:

userdId: [myUserId],
 secretKey: 'jHuiU-jiuhd...',
 accessKeyId: 'abcdef...',
 etc

我可以在每次调用 AWS 时访问它。

现在,我可以对其进行 base64 编码和/甚至自己加密,但在某些阶段我必须对其进行解码和解密才能发出我的请求,并且我需要执行这些选项的所有内容都将存储在服务器上的某个位置。

如果数据保存在服务器上——从不发送回客户端——并且如果从服务器到 AWS 的传输是通过 SSL 完成的,那么这就足够了吗?

【问题讨论】:

您说的是专门配置的 IAM 用户访问密钥,对吧?不是客户端的根访问密钥... 我猜想使用的理想密钥是通过安全令牌服务创建的密钥。我正在考虑的一个选项是提供一个简单的接口(从本地客户端到 AWS),以使用自定义策略(用于联合访问)生成临时令牌,然后让客户端向服务器发送这些详细信息。 【参考方案1】:

如何安全地存储和使用客户的 AWS 密钥

Ansible

如果您使用 Ansible,请考虑使用 Vault to Protect Sensitive Ansible Data。所以你可以配置它来加密私钥等敏感内容。

密钥库

另一种方法是使用Keybase 应用程序,该应用程序在您的所有设备上提供端到端加密数据。

PGP

使用pgp加密加密和解密敏感密钥。

OpenSSL

使用您的public key to encrypt the file,然后使用您的私钥对其进行解密。

SSH 保险库

检查ssh-vault 如何使用 SSH 密钥加密/解密数据。

【讨论】:

以上是关于如何安全地存储和使用客户的 AWS 密钥的主要内容,如果未能解决你的问题,请参考以下文章

在哪里/如何在 Google Colabs 中安全地存储 API 密钥?

如何安全地存储适用于 iOS 的 AWS 服务 ID?

使用PHP / MySQLI / Apache时,在哪里安全地存储证书/密钥?

如何使用 .NET Core 安全地加/解密文件 #yyds干货盘点#

如何在移动应用程序中进行客户端加密时以安全的方式存储我的加密密钥?

如何在 EC2 上集成 AWS 参数存储以使用 Python 代码加密令牌/API 密钥? [关闭]