我有三个 AWS 账户。我已将我的 SSL 证书文件存储在其中一个 AWS 账户(比如 AWS1)中的 S3 中。我创建了一个 IAM 角色,该角色授予“GetObject”对 AWS1 中的 S3 存储桶的访问权限。然后,我为我在另一个 AWS 账户(比如 AWS2)中运行的单个实例应用程序配置了一个 ebextensions 文件,以使用我在 AWS1 中创建的 IAM 角色的 AccessKey 和 Secret 从 AWS1 中的 S3 存储桶下载 SSL 证书。
以下是我在 AWS2 中的应用程序的 .ebextensions 中的 http-single-instance.config 文件的一部分
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth:
type: "s3"
buckets: ["aws1-bucket"]
accessKeyId: "AWS1IAMACCESSKEY"
secretKey: "AWS1IAMSECRET"
但正如您所看到的,我必须将 AWS1 IAM 密钥值直接放在 AWS2 中的应用程序源代码中才能使其正常工作。除了将 accessKeyId 和 secretKey 的值放在实际的源代码中之外,是否可以从环境变量或 S3 以某种方式加载这些值?所以最后,如果我能得到类似的东西
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth:
type: "s3"
buckets: ["aws1-bucket"]
accessKeyId: {AWS2ENVACCESSKEYID}
secretKey: {AWS2ENVSECRETKEY}
对于在同一 AWS 账户中运行的应用程序,我已按照本文档中提供的说明进行操作 - https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/https-storingprivatekeys.html并且效果很好。我目前拥有的解决方案还可以根据需要使用正在下载的 SSL 证书,但我只想知道是否有办法更安全地执行此操作。
非常感谢任何帮助。谢谢!