AWS EC2用户数据加密

问题描述

我们有一个用例,其中包括从用户那里获取包含密码的输入,并将其传递给EC2实例。在Ec2实例中,我们从URL中找到http://169.254.169.254/latest/user-data/并获取用户数据并设置适当的密码。

问题是用户数据可以通过AWS CLI工具看到:

aws ec2 describe-instance-attribute --instance-id --attribute userData --output text --query "UserData.Value" | base64 --decode

这带来了巨大的安全风险。

发送敏感/机密数据的最佳方法是什么?

我尝试创建一个密钥对,该密钥对在本地实例上创建私钥,在EC2上创建公钥。使用PowerShell进行加密/解密并在EC2中取回它的正确方法是什么?

解决方法

建议的方法是将任何秘密存储在外部源中。

AWS提供了一个用于存储机密的服务Secrets Manager。通过使用此服务,您将创建一个机密,其中包含您的实例需要在其用户数据中访问的机密。然后,为您的实例赋予IAM角色特权,以获取秘密值via the AWS CLI

或者,您也可以使用AWS SSM Parameter Store服务,将机密存储为SecureString类型。检索秘密via the AWS CLI,然后在脚本中使用它,这将类似于秘密管理器。

如果您不想将机密存储在AWS解决方案中,还有Hashicorp Vault等第三方解决方案可以提供类似的功能。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...