クラウドインテグレーション事業部の森です。
re:invent 2023 に現地参加しております。
SaaS アプリケーションにおける、ECS fargate のマルチテナント構成についてのセッションに参加したためレポートを共有します。
レポートは4つに分かれており、本記事は第2段になります。
Deploying multi-tenant Saas applications on Amazon ECS and AWS Fargate
SaaS を構築することは顧客の信頼を得ることと同等である
と断言しており、それらは以下4つの項目が言えることであると述べていました。
- I trust your software ”to be available when I need it”
- I trust your software ”to keep my data secure”
- I trust your software ”to get new features I need”
- I trust your business ”to be here for the long term”
確かにカスタマー目線では、可用性やデータセキュリティ、新機能の追加や長期間ビジネスが継続することはそのサービスを信頼するに足る項目だと言えます。
反対に、サービスを提供する側から見るとこの項目は実現が最も難しいものの一つに思えますが、サービス提供者はカスタマーファーストを最重要としてこの項目を認識することが重要だと感じました。
この後本セッションでは、上記4つについてそれぞれ細かく説明する内容となっていました。
本記事では以下についてレポートを共有いたします。
- I trust your software ”to keep my data secure”
I trust your software ”to keep my data secure”(私のデータは安全な状態で!)
人間は完璧ではなく、ミスを犯すことを前提措定ください。仮に主キーがユーザーIDに基づいてデータを検索しているものの、ひどい脆弱性として、電話をかける誰かが実際にデータを取得する人であることを確認するのを完全に忘れたコードがあるとします。
ユーザーが社内のまったく別のテナント組織に属している可能性が発生し、そのデータのプールから、テナント間でデータが漏れてしまうのです。
セッションでは例としてかなり重大な脆弱性について述べています。ただし、大小あれどマイクロサービス化に伴い、各テナントごとに分ける必要のある箇所が発生します。
セキュリティやリソースごとの権限関連は、マイクロサービス化に伴い注意すべき点が増加するのが実態だと思います。
そこで、人がミスを発生することを前提とし、セッションではログ取得の重要性について述べていました。
Firelandsは構造化されたデータに変えてくれます。実際にクエリーを実行し、レスポンスを返してもらい、アクションを起こせるようにデータを整理することができます。
これもまた、成功に導くためのシステムを導入し、手作業で行うような作業を軽減することに繋がります。
ログで正しく事象を把握することは非常に重要であり、本セッションではこれが非常に協力で簡単な方法と述べていました。
またデータ保存やネットワークレベルでの分離の重要さについても述べていました。
データの分離化はもちろんのこと、リソースを共有化した際の特定のユーザーによる過剰なトラフィックによる、別ユーザーへの影響(Noisy Neighbours Problem)も回避するために、分離化が必要だと感じました。
コメント
普段の自分の業務に対する示唆としてアプリ段階からログ設計を実施し、運用や監視の段階でもアラート発生時の対応等を事前に決定しておくことがアクションの初速を早め、たとえセキュリティを侵害する事象が発生したとしても、お客様の信頼を少しでも維持することに繋がると思いました。
特に、isolation (分離化) について様々な例を出して徹底的に解説を実施していたため、個人的にSaaSのプロバイダーとして最も重要な要素であると同時に非常にチャレンジングな要素です。
ただし、SaaSの立ち上げ段階から考慮するにしては、isolation は冗長性のためにコストがかかりすぎる可能性があります。
そのため、コストバランスとともに、拡張性だけでなく今後分離しやすいアーキテクチャの設計が重要だと感じました。
第3段はこちら
第3段の I trust your software ”to get new features I need” については以下です。