在 Amazon S3 中安全地存储私有密钥 - Amazon Elastic Beanstalk
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Amazon S3 中安全地存储私有密钥

用于对公有证书签名的私有密钥是私有的,不应提交到源代码。通过将私有密钥上传到 Amazon S3,然后将 Elastic Beanstalk 配置为在应用程序部署期间从 Amazon S3 下载文件,可以避免将私有密钥存储在配置文件中。

以下示例显示了配置文件资源文件部分从 Amazon S3 存储桶下载私有密钥文件。

例 .ebextensions/privatekey.config
Resources: AWSEBAutoScalingGroup: Metadata: AWS::CloudFormation::Authentication: S3Auth: type: "s3" buckets: ["elasticbeanstalk-us-west-2-123456789012"] roleName: "Fn::GetOptionSetting": Namespace: "aws:autoscaling:launchconfiguration" OptionName: "IamInstanceProfile" DefaultValue: "aws-elasticbeanstalk-ec2-role" files: # Private key "/etc/pki/tls/certs/server.key": mode: "000400" owner: root group: root authentication: "S3Auth" source: https://elasticbeanstalk-us-west-2-123456789012.s3.us-west-2.amazonaws.com/server.key

将示例中的存储桶名称和 URL 替换为您自己的。此文件中的第一个条目将名为 S3Auth 的身份验证方法添加到环境的 Auto Scaling 组的元数据中。如果您为环境配置了自定义实例配置文件,则将使用自定义实例配置文件,否则应用默认值 aws-elasticbeanstalk-ec2-role。默认实例配置文件具有从 Elastic Beanstalk 存储桶读取的权限。如果您使用不同的存储桶,请向实例配置文件添加权限

第二个条目使用 S3Auth 身份验证方法从指定 URL 下载私有密钥并将其保存到 /etc/pki/tls/certs/server.key。然后,代理服务器可以从此位置读取私有密钥以终止实例的 HTTPS 连接

分配到您的环境的 EC2 实例的实例配置文件必须具有从指定存储桶读取密钥对象的权限。验证实例配置文件有权读取 IAM 中的对象,并且存储桶和对象上的权限不禁止实例配置文件。

查看存储桶的权限
  1. 打开 Amazon S3 管理控制台

  2. 选择存储桶。

  3. 选择属性,然后选择权限

  4. 验证您的账户已被授予存储桶的读取权限。

  5. 如果已附加存储桶策略,请选择存储桶策略以查看分配到存储桶的权限。