【问题标题】:how to manage aws elastic beanstalk db password in a secure way如何以安全的方式管理 aws elastic beanstalk db 密码
【发布时间】:2018-06-01 06:08:18
【问题描述】:

我们在 eb 环境之外有一个 db 实例,密码存储在一个属性文件中,该文件将与 jar 一起压缩并上传和部署。这不是很安全,因为密码实际上是随身携带的。 (与旧的部署方式相比,其中密码存储在服务器上,通过 JNDI 与其他连接信息一起提取)。有没有更好的方法以更安全的方式管理数据库密码?

【问题讨论】:

    标签: amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

    考虑使用AWS Parameter Store 来管理数据库密码等应用程序机密。

    AWS Systems Manager Parameter Store 提供安全的分层 用于配置数据管理和机密管理的存储。你 可以存储密码、数据库字符串和许可证代码等数据 作为参数值。您可以将值存储为纯文本或加密 数据。然后,您可以使用您指定的唯一名称来引用值 创建参数时指定。高度可扩展,可用, Parameter Store 经久耐用,由 AWS 云提供支持。 参数 商店免费提供

    【讨论】:

    • 如何将 Parameter Store 中的值获取到 EB 配置中?默认情况下,Elastic Beanstalk 没有可用的 aws ssm get-parameter 选项。如果您在 EB 中启动自己的 docker 容器,这似乎是可能的,但正如您的回答所暗示的,这绝对不是一个直截了当的“开箱即用”解决方案。
    【解决方案2】:

    我同意 Rodrigo M 的观点,即 AWS Parameter Store 是一个好主意。这是一个小方法:

    Elastic Beanstalk 在 EC2 上运行。当您在 EC2 上运行 AWS CLI 时,它会自动拥有分配给 EC2 的任何 IAM 角色的权限。因此,这意味着您可以创建一个 IAM 角色,该角色授予 EC2 实例获取密钥的权限,然后在启动时在您的应用程序代码中获取它。

    IAM:例如,将 AmazonSSMReadOnlyAccess 策略附加到 aws-elasticbeanstalk-ec2-role。这会让你继续前进。可能有更严格和更安全的方法来做到这一点,例如,这里有一个示例https://aws.amazon.com/blogs/compute/managing-secrets-for-amazon-ecs-applications-using-parameter-store-and-iam-roles-for-tasks/ 的策略只允许访问命名参数,而不是所有参数。

    有一个开发工具包允许您从应用程序中使用 AWS CLI。见https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SSM.html

    npm install aws-sdk
    

    然后在您的代码中:

    const AWS = require('aws-sdk');
    const ssm = new AWS.SSM({'region': 'us-east-1'});
    
    var params = {
      Name: 'db-pw',
      WithDecryption: true
    };
    ssm.getParameter(params, function(err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else {
        const dbPw = data.Parameter.Value;
      }
    });
    

    这在今天的一个小测试中对我有用。对我来说似乎没问题,但我不是安全专家,所以我会在产品中使用它之前与同事检查安全方面。

    【讨论】:

    • Elastic Beanstalk 还支持从 SSM 参数存储自动注入到您的环境变量中,如下所示:{{resolve:ssm:</path/to/ssm/secret>:<version nubmer>}} e.g. {{resolve:ssm:/myapp/db-secret>:1}}。注意目前使用这个方法only supports plain text configuration, not encrypted one.
    猜你喜欢
    • 2016-02-14
    • 2021-08-18
    • 1970-01-01
    • 2015-06-19
    • 2018-07-01
    • 2014-10-15
    • 2021-01-07
    • 2015-04-03
    • 1970-01-01
    相关资源
    最近更新 更多