我有三个AWS账户。我已将SSL证书文件存储在其中一个AWS账户(例如AWS1)中的S3中。我创建了一个IAM角色,它授予AWS1中S3存储桶的“GetObject”访问权限。然后,我为我在另一个AWS账户(例如AWS2)中运行的单个实例应用程序配置了ebextensions文件,以使用我在AWS1中创建的IK角色的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证书,但我只是想知道是否有办法更安全地执行此操作。
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
请注意,S3可以使用ACL授予对其他帐户的访问权限,因此只要授予跨帐户访问权限,就不应该存在不属于同一AWS账户的问题。
将其与IAM角色结合使用仍应支持您的用例,而无需在代码中放置非旋转键。
请点击此处了解如何授予跨帐户访问权限:https://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example2.html