スキップしてコンテンツを表示

ALB/ACM で数百テナント分のサブドメインと個別 TLS 証明書を自動発行・振り分けするベストプラクティス

0

【背景】 SaaSの顧客からの通信をマルチテナント化しています。 テナント追加は社内ツールから API を呼び出し、一連の処理を自動実行しています。

  1. クライアント証明書をテナント ID(例: tenant123.example.com)ごとに発行
  2. Nginx の vhost/conf を生成・配置
  3. RDS for MariaDB にスキーマ作成

現在は 1 台の EC2(Ubuntu 22.04)上で Nginx とエージェント (port 8012) が稼働しており、server_name <tenant-id>.example.com で証明書を切り替えています。

【課題】

  • Route 53 ホストゾーン上限(レコード 100)と ALB リスナールール上限が、テナント数 100+ に拡大するとボトルネックになりそう
  • ALB にオフロードしてもテナント追加のたびに ACM 証明書を発行 → ALB へアタッチ → ルール追加、という複数ステップが必要
  • できれば 「テナント追加 API 1 本」 で全自動化したい

【伺いたいこと】

  1. ALB を使った多テナント TLS 終端で、証明書とルールを スケーラブルに自動管理 するベストプラクティスは?
    • 例)Lambda + API Gateway で ACM 発行と ALB への自動アタッチを実装するパターン
  2. 500 テナント規模を想定した場合、Nginx を残す vs ALB/Multi-ALB 構成どちらが運用コスト・制限面で有利?
  3. 結局一番シンプルに実装する手段(自動でなくてもよい)

【環境】

  • リージョン: ap-northeast-1a, 1c (大阪リージョンもあり)
  • EC2: Ubuntu 22.04 + Nginx 1.18
  • DB: RDS for MariaDB 10.6
  • IaC: Terraform (v1.7)

ベストプラクティスや実装例、参考ドキュメントがあればご教示いただけると助かります。

質問済み 9ヶ月前190ビュー
1回答
0

ALB と ACM を使用して数百テナント分のサブドメインと個別 TLS 証明書を自動発行・振り分けするベストプラクティスについて、以下のような方法が考えられます:

  1. スケーラブルな自動管理のベストプラクティス:
  • AWS Certificate Manager (ACM) と AWS Lambda を組み合わせて使用します。
  • テナント追加 API を作成し、API Gateway を通じて Lambda 関数をトリガーします。
  • Lambda 関数で以下の処理を自動化します: a) ACM で新しいテナント用の証明書を発行 b) 発行した証明書を ALB にアタッチ c) ALB のリスナールールを追加して新しいテナントのトラフィックを適切に振り分け
  • Route 53 の制限を回避するため、ワイルドカードサブドメイン(*.example.com)を使用し、ALB で振り分けを行います。
  1. 500テナント規模での比較:
  • ALB/Multi-ALB 構成が有利です:
  • スケーラビリティが高く、管理が容易
  • SSL/TLS 終端を ALB で行うことでEC2インスタンスの負荷を軽減
  • 自動スケーリングとヘルスチェックが組み込まれている
  • Nginx を残す場合:
  • カスタム設定の柔軟性は高いが、管理の複雑さが増す
  • スケーリングが手動になる可能性が高い
  • 証明書管理が複雑になる
  1. 最もシンプルな実装方法:
  • ALB と ACM を使用し、ワイルドカード証明書(*.example.com)を1つだけ発行
  • ALB のリスナールールでホストヘッダーベースの振り分けを設定
  • テナント追加時は ALB のリスナールールのみを更新
  • この方法では個別の証明書管理が不要になり、Route 53 の制限も回避できます

実装にあたっては、AWS Systems Manager Parameter Store や Secrets Manager を使用してテナント情報や証明書を安全に管理することをお勧めします。また、テナント追加プロセスをAWS Step Functions で実装することで、複雑なワークフローを管理しやすくなります。

セキュリティ面では、WAF を ALB と統合して、テナントごとのセキュリティルールを適用することも検討してください。

この方法により、テナント追加のプロセスを大幅に自動化し、スケーラブルな多テナント環境を構築することができます。
Sources
Configure the solution - Scalable Analytics Using Apache Druid on AWS
Install ACM for Nitro Enclaves - AWS

回答済み 9ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

関連するコンテンツ