2

Docker コンテナーに Web アプリがあり、外部に公開され、HTTPS トラフィックのみを処理する (NGINX を実行している) 別のコンテナーを介してプロキシしたいと考えています。両方のコンテナは、同じ EC2 インスタンス上の ECS によってホストされます。NGINX コンテナに S3 または IAM から SSL 秘密鍵を取得させる最善の方法は何ですか?

セキュリティ上の理由から、Docker イメージに秘密鍵を含めたくないことに注意してください。コンテナの作成時に、環境変数から AWS ユーザー資格情報を取得して、S3 または IAM から秘密鍵を取得したいと考えています。

Amazon Elastic Beanstalk にはこれを実現する優れた方法がありますが、ECS にはそのようなものはないと思います。S3/IAM クライアントをインストールし、環境内の資格情報を使用してキーをダウンロードするには、Docker エントリポイントを作成する (または Nginx コマンドをラップする) 必要があると考えています。AWS はより良い方法を提供していますか? Elastic Load Balancing が解決策のようですが、LB と EC2 インスタンス間のセキュリティ対策に関する情報が見つかりません。

4

1 に答える 1

1

質問にはいくつかの部分がありますが、

Nginx と Web アプリを同じインスタンスに配置するには、両方のコンテナーを同じ ecs タスクの一部として定義します。nginx から webapp コンテナーへの docker リンクを作成することをお勧めします。これにより、webapp コンテナー ポートを外部に公開することを回避できます。ホストに公開される唯一のポートは nginx ポートになります。

コンテナーの起動時にキーを安全に取得する方法の 1 つは、カスタム シェル スクリプトを使用してコンテナーで nginx サービスを開始することです。このためには、独自の docker コンテナを構築する必要があります。Docker ビルド ファイルで、カスタム シェル スクリプトを使用してコンテナーの開始を定義します。シェル スクリプトでは、aws cli を使用して s3 からファイルを取得するロジックを作成できます。取得後、nginx サービスを開始できます。aws cli を使用すると、ec2 インスタンスで利用可能な認証情報を使用できます。ベース Docker イメージに aws cli がない場合は、追加する必要があります。

于 2016-05-16T13:12:27.720 に答える