本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 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 中的对象,并且存储桶和对象上的权限不禁止实例配置文件。
查看存储桶的权限
-
打开 Amazon S3 管理控制台
。 -
选择存储桶。
-
选择属性,然后选择权限。
-
验证您的账户已被授予存储桶的读取权限。
-
如果已附加存储桶策略,请选择存储桶策略以查看分配到存储桶的权限。