マルチテナントのデータアクセスパターンと IAM ポリシー

AWS データストアの活用

Dunieski Otano

AWS Solutions Architect

マルチテナントのセキュリティ侵害

  • SaaS アプリケーションが 1,000 社にサービスを提供
  • アプリコードのバグによりテナント間アクセスが発生
  • A 社の従業員が B 社のデータを閲覧
  • 結果:顧客喪失、訴訟、信頼失墜

テナント

AWS データストアの活用

マルチテナンシーの概要

  • マルチテナンシーとは?
    • 複数の顧客がインフラを共有
  • メリット
    • コスト効率の向上、メンテナンスの簡易化
  • 課題
    • データの完全な分離を確保すること

マルチテナンシー

AWS データストアの活用

テナントごとのパーティションキーパターン

  • 設計
    • tenantId をパーティションキーとして使用
    • すべてのアイテムに tenantId を含める
  • メリット
    • コスト効率が高く、数千規模までスケール可能
  • 要件
    • 厳格なアクセス制御と IAM ポリシー

キー

AWS データストアの活用

テナントごとのテーブル分離パターン

  • 設計
    • テナントごとに専用テーブルを用意
  • メリット
    • 高い分離性、コンプライアンス対応が容易
  • デメリット
    • 管理の複雑化、テーブル数の上限

テーブル分離

AWS データストアの活用

テナントごとのデータベース分離パターン

  • 設計
    • テナントごとに専用データベースを用意
  • メリット
    • 完全な分離、カスタム設定が可能
  • デメリット
    • 最高コスト、運用負荷が大きい

データベース

AWS データストアの活用

テナント分離のための IAM 条件キー

  • dynamodb:LeadingKeys
    • パーティションキーへのアクセスを制限
  • ポリシー例
    • 「tenantId = tenant-123 の場合に許可」
  • 適用
    • AWS が API レベルで強制

ブロッキングポリシー

AWS データストアの活用

多層防御の実装

  • レイヤー 1:アプリケーション
    • コード内で tenantId を検証
  • レイヤー 2:IAM ポリシー
    • 条件キーで分離を強制
  • レイヤー 3:データベース設計
    • パーティションキーによる物理的分離

多層防御

AWS データストアの活用

テストと検証

  • テナント間アクセスのテスト
    • 他テナントのデータへのアクセスを試みる
    • AccessDeniedException で失敗することを確認
  • 監査ログ
    • CloudTrail がすべてのアクセス試行を記録
  • 定期レビュー
    • IAM ポリシーとアクセスパターンを見直す

テスト

AWS データストアの活用

おめでとうございます!

  • AWS データストア:DynamoDB、S3、ElastiCache、OpenSearch
  • 設計と最適化:テーブル設計、ストレージ最適化
  • データの保護:暗号化、シークレット管理、マルチテナント分離

コース完了

AWS データストアの活用

練習しましょう!

AWS データストアの活用

Preparing Video For Download...