2

我有三个 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 证书,但我只想知道是否有办法更安全地执行此操作。

非常感谢任何帮助。谢谢!

4

1 回答 1

1

请注意,S3 可以使用 ACL 授予对其他账户的访问权限,因此只要授予跨账户访问权限,它们不在同一个 AWS 账户下应该不是问题。

将其与 IAM 角色结合使用仍应支持您的用例,而无需在代码中放置非循环键。

请参阅此处了解如何授予跨账户访问权限:https ://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example2.html

于 2018-04-10T13:04:42.833 回答