Использовать переменную окружения в файле ebextensions

У меня есть три аккаунта AWS. Я сохранил свои файлы сертификатов SSL в S3 в одной из учетных записей AWS (скажем, AWS1). Я создал роль IAM, которая предоставляет "GetObject" доступ к корзинам S3 в AWS1. Затем я настроил файл ebextensions для приложения с одним экземпляром, запущенного в другой учетной записи AWS (например, AWS2), для загрузки сертификатов SSL из корзины S3 в AWS1 с использованием AccessKey и Secret для роли IAM, которую я создал в AWS1.

Ниже приведена часть моего файла http-single-instance.config в.ebextensions для приложения, которое у меня есть в AWS2

Resources:
AWSEBAutoScalingGroup:
Metadata:
  AWS::CloudFormation::Authentication:
    S3Auth:
      type: "s3"
      buckets: ["aws1-bucket"]
      accessKeyId: "AWS1IAMACCESSKEY"
      secretKey: "AWS1IAMSECRET"

Но, как вы видите, мне пришлось поместить секретные значения IAM AWS1 в исходный код приложения в 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-сертификатами, загружаемыми по мере необходимости, но я просто хочу знать, есть ли способ сделать это более безопасно.

Любая помощь очень ценится. Спасибо!

1 ответ

Обратите внимание, что S3 может предоставлять доступ к другим учетным записям с использованием ACL, поэтому не должно возникнуть проблем, если они не находятся под одной учетной записью AWS, если предоставляется доступ к нескольким учетным записям.

Использование этого в сочетании с ролями IAM должно по-прежнему поддерживать ваш сценарий использования без размещения в коде невращающихся ключей.

Чтобы узнать, как предоставить кросс-аккаунт, см. Здесь: https://docs.aws.amazon.com/AmazonS3/latest/dev/example-walkthroughs-managing-access-example2.html

Другие вопросы по тегам