Использовать переменную окружения в файле 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