我们有一个用例,从用户那里获取包括密码在内的输入,并将其传递给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有一个存储秘密的服务,秘密管理器。通过使用此服务,您将创建一个机密,其中包含您的实例需要在其用户数据中访问的机密。然后,通过AWS CLI为您的实例提供一个IAM角色,该角色具有获取机密值的权限。
或者,您也可以使用AWS SSM参数存储服务,将机密存储为SecureString类型。这将类似于机密管理器,通过AWS CLI检索机密,然后在脚本中使用它。
还有第三方解决方案,如Hashicorp Vault,如果您不想将机密存储在AWS解决方案中,也可以提供类似的功能。