サイトアイコンmaita tomoya dev io

エンタープライズシステム: セキュリティ・コンプライアンス・可用性の技術選定

case-studies

エンタープライズシステム: セキュリティ・コンプライアンス・可用性の技術選定

はじめに

エンタープライズシステムは、大企業の業務を支える基幹システムです。数百〜数万人のユーザーが日常的に利用し、システム停止は直接的な業務影響や金銭的損失に繋がります。そのため、セキュリティ、コンプライアンス、可用性が最優先の技術選定基準となります。

身近な例えで理解するエンタープライズシステム

エンタープライズシステムは「大病院」のようなものです。

  • セキュリティ = 患者の個人情報を守るための厳重な管理体制
  • コンプライアンス = 医療法に基づく各種規制への対応
  • 可用性 = 24時間365日、救急対応ができる体制
  • スケーラビリティ = 患者数が増えても対応できるベッド数と医師の確保

スタートアップとの最大の違い:

  • スタートアップ = 「速さ」が最優先。壊れても直せば良い
  • エンタープライズ = 「安全性と信頼性」が最優先。壊れてはいけない

全体アーキテクチャ

推奨構成: Java/Spring Boot + Oracle/PostgreSQL + AWS

                    +-------------------+
                    |   AWS WAF         |
                    |   (DDoS防御)      |
                    +--------+----------+
                             |
                    +--------v----------+
                    |   CloudFront      |
                    |   (CDN)           |
                    +--------+----------+
                             |
              +--------------+--------------+
              |                             |
      +-------v-------+           +--------v--------+
      |Next.js        |           |API Gateway      |
      |(管理画面/     |           |(外部API)        |
      | ダッシュボード)|           +--------+--------+
      +-------+-------+                    |
              |                     +-------v-------+
              |                     |NLB/ALB        |
              |                     +-------+-------+
              |                             |
              +-------------+---------------+
                            |
         +------------------+------------------+
         |                  |                  |
  +------v------+   +------v------+   +-------v------+
  |Spring Boot  |   |Spring Boot  |   |Spring Boot   |
  |API Server   |   |Batch Server |   |Auth Server   |
  |(ECS/Fargate)|   |(ECS/EC2)    |   |(ECS/Fargate) |
  +------+------+   +------+------+   +-------+------+
         |                  |                  |
  +------v------+   +------v------+   +-------v------+
  |Aurora       |   |Aurora       |   |Cognito /     |
  |PostgreSQL   |   |PostgreSQL   |   |Active        |
  |(Primary)    |   |(Read Replica)|  |Directory     |
  +------+------+   +-------------+   +--------------+
         |
  +------v------+
  |Aurora       |
  |(Standby -   |
  | Multi-AZ)   |
  +-------------+

  +-------------------------------------------+
  |  セキュリティ/運用                         |
  |  - AWS Config: 構成管理/コンプライアンス    |
  |  - CloudTrail: API操作の監査ログ            |
  |  - GuardDuty: 脅威検出                     |
  |  - SecurityHub: セキュリティ統合管理        |
  |  - Systems Manager: パッチ管理              |
  |  - KMS: 暗号鍵管理                         |
  |  - Secrets Manager: 秘匿情報管理           |
  +-------------------------------------------+

技術選定の詳細

バックエンド: Java (Spring Boot)

候補評価理由
Java (Spring Boot)採用エンタープライズ実績最多、人材豊富、長期サポート
C# (.NET)次点Microsoft環境なら最適
Go検討高パフォーマンスだが、エンタープライズ実績がJavaに劣る
Node.js見送りエンタープライズの複雑なビジネスロジックには型システムが弱い

Java/Spring Bootを選ぶ理由:

  • 20年以上のエンタープライズ実績
  • Spring Securityによる堅牢な認証・認可
  • Spring Batchによる大量バッチ処理
  • 大量のJavaエンジニアが市場にいる
  • LTS(Long Term Support)により長期のサポートが保証される

データベース: PostgreSQL (Aurora) or Oracle

項目Aurora PostgreSQLOracle Database
ライセンスコスト無料(OSS)非常に高い(数百万〜数千万円/年)
パフォーマンス高い非常に高い
可用性Multi-AZ、Global DatabaseRAC、Data Guard
エンタープライズ機能十分最も充実
サポートAWS Premium SupportOracle Premium Support
移行の容易さSCT/DMSで移行可能---
人材の確保比較的容易Oracle DBAが必要

推奨: Aurora PostgreSQL

新規開発であれば、コストとスケーラビリティの観点からAurora PostgreSQLを推奨。既存のOracle環境がある場合は、段階的にPostgreSQLに移行するか、Oracle on RDSを利用。

認証: AWS Cognito + Active Directory

要件実装
社内ユーザー認証Active Directory連携(SAML/OIDC)
外部ユーザー認証Cognito User Pool
SSOSAML 2.0 / OIDC
MFATOTP / SMS / ハードウェアトークン
パスワードポリシー最低12文字、複雑性要件、90日ローテーション
セッション管理JWT + Redis、最大セッション時間8時間

セキュリティ設計

多層防御(Defense in Depth)

[外部ネットワーク]
    |
    v
[Layer 1: Edge] -- AWS WAF, CloudFront, Shield
    |
    v
[Layer 2: Network] -- VPC, Security Group, NACL
    |
    v
[Layer 3: Application] -- ALB, API Gateway (認証/認可)
    |
    v
[Layer 4: Service] -- Spring Security, RBAC
    |
    v
[Layer 5: Data] -- 暗号化(KMS), RLS, 監査ログ

AWSセキュリティサービスの活用

サービス機能必須度
AWS WAFWebアプリケーションファイアウォール必須
AWS ShieldDDoS防御推奨(Advancedは高額)
GuardDuty脅威検出(不正アクセス等)必須
SecurityHubセキュリティ状況の統合管理推奨
CloudTrailAPI操作の監査ログ必須
AWS Configリソース構成の変更追跡必須
KMS暗号鍵の管理必須
Secrets Managerパスワード/APIキーの安全な管理必須
Inspector脆弱性スキャン推奨
MacieS3内の個人情報検出推奨

データ暗号化

対象方法
通信中のデータTLS 1.2以上(ACM証明書)
保存データ(DB)Aurora暗号化(KMS)
保存データ(S3)SSE-KMS
バックアップ暗号化スナップショット
アプリケーション秘匿情報Secrets Manager
ログデータCloudWatch Logs暗号化

コンプライアンス対応

主要なコンプライアンス要件

規制/基準対象主な要件
個人情報保護法全企業個人データの適切な管理
GDPREU関連データ主体の権利、同意管理
SOC2SaaS/クラウドセキュリティ、可用性、機密性
PCI DSS決済関連カード情報の保護
HIPAA医療関連医療情報の保護
ISMAP政府系クラウドサービスのセキュリティ評価

監査ログの設計

ログ種別記録内容保存期間保存先
アクセスログ誰が、いつ、何にアクセスしたか1年CloudWatch + S3
操作ログデータの作成/変更/削除3年Aurora + S3
認証ログログイン/ログアウト、失敗試行1年CloudWatch + S3
APIログAPI呼び出し(CloudTrail)1年S3 + Glacier
変更管理ログインフラの変更(AWS Config)3年S3

可用性設計

可用性のレベル

SLA年間ダウンタイム要件
99.0%87.6時間一般的なシステム
99.9%8.76時間ビジネスクリティカル
99.95%4.38時間重要業務システム
99.99%52.56分金融/医療システム
99.999%5.26分ミッションクリティカル

99.99%を実現するアーキテクチャ

[リージョン: ap-northeast-1]
    |
    +-- [AZ-a]
    |   ├── ECS Task x 2
    |   ├── Aurora Primary
    |   └── ElastiCache Primary
    |
    +-- [AZ-c]
    |   ├── ECS Task x 2
    |   ├── Aurora Replica
    |   └── ElastiCache Replica
    |
    +-- [AZ-d]
        ├── ECS Task x 2
        ├── Aurora Replica
        └── ElastiCache Replica

[DR: ap-northeast-3 (大阪)]
    ├── Aurora Global Database (非同期レプリケーション)
    ├── S3 Cross-Region Replication
    └── Route 53 Health Check + フェイルオーバー

障害対応

障害レベル影響RTORPO対策
単一インスタンス障害なし0分0Auto Scaling、Multi-AZ
単一AZ障害軽微数分0Multi-AZ配置
リージョン障害1時間数分DR(大阪リージョン)

※ RTO: Recovery Time Objective(復旧目標時間) ※ RPO: Recovery Point Objective(復旧目標地点、データ損失許容量)


バッチ処理設計

バッチ処理の分類

種別処理時間実行環境
軽量バッチ数秒〜数分Lambdaメール送信、通知
中量バッチ数分〜数時間ECS Task (Fargate)レポート生成、データ集計
重量バッチ数時間〜ECS Task (EC2)月次決算、大量データ移行

Spring Batchの活用

[月次バッチ処理の例]

EventBridge (毎月1日 AM 2:00)
    |
    v
ECS RunTask (Spring Boot + Spring Batch)
    |
    +-- Step 1: データ抽出(Aurora → CSV)
    +-- Step 2: データ加工(集計処理)
    +-- Step 3: レポート生成(PDF)
    +-- Step 4: 通知(SES/SNS)
    |
    v
S3(レポート保存)

チーム規模と開発スケジュール

エンタープライズプロジェクト体制

役割人数担当
プロジェクトマネージャー1人全体管理
アーキテクト1-2人設計、技術判断
バックエンド6-10人Spring Boot API、バッチ
フロントエンド3-5人管理画面、ダッシュボード
インフラ/SRE2-3人AWS構築、CI/CD、監視
DBA1人DB設計、チューニング
セキュリティ1-2人セキュリティレビュー、ペネトレーションテスト
QA3-5人テスト計画、自動テスト
合計20-30人12-18ヶ月

開発フェーズ

フェーズ期間成果物
要件定義2ヶ月要件定義書
基本設計2ヶ月アーキテクチャ設計書
詳細設計2ヶ月詳細設計書
実装4-6ヶ月ソースコード
結合テスト2ヶ月テスト結果
総合テスト1ヶ月テスト結果
移行/リリース1ヶ月本番リリース

コスト見積り

本番環境(99.9% SLA)

サービス構成月額
ECS/Fargate(APIサーバー)6タスク x 2vCPU x 4GB$500
ECS/Fargate(バッチ)オンデマンド$100
Aurora PostgreSQLdb.r6g.xlarge x 2(Multi-AZ)$1,200
Aurora Read Replicadb.r6g.large x 2$600
ElastiCache Rediscache.r6g.large x 2(Cluster)$400
ALB2台(Internal + External)$40
S31TB$25
CloudFront500GB転送$50
WAF10ルール$30
GuardDuty---$50
CloudTrailS3保存$10
Secrets Manager20シークレット$10
CloudWatchログ/メトリクス$100
Route 53ヘルスチェック$10
VPN/Direct Connect---$200
合計約$3,325/月

DR環境(大阪リージョン)追加

サービス構成月額
Aurora Global DatabaseReplica$600
ECS/Fargate(待機系)最小構成$100
S3 Cross-Region Replication---$50
DR追加合計約$750/月

オンプレミスからの移行

移行方式の比較

方式説明リスク期間
リフト&シフトそのままクラウドに移動低い短い
リプラットフォーム一部をクラウドネイティブに変更
リファクタリングクラウドネイティブに作り直し高い長い

推奨: リプラットフォーム

既存のJavaアプリケーションをコンテナ化し、ECS/Fargateで実行。データベースはDMS(Database Migration Service)でAuroraに移行。


まとめ

推奨技術スタック

レイヤー技術理由
バックエンドJava (Spring Boot)エンタープライズ実績、人材豊富
フロントエンドNext.js / ReactモダンなUI、コンポーネント設計
データベースPostgreSQL (Aurora)高可用性、コスト効率
キャッシュRedis (ElastiCache)セッション、キャッシュ
認証Cognito + ADSSO、MFA、企業認証
インフラAWS (ECS/Fargate)マネージドサービス活用
IaCTerraform or CDKインフラのコード管理
CI/CDGitHub Actions or GitLab CI自動化
監視CloudWatch + Datadog統合監視

エンタープライズの技術選定で最も重要なこと

  1. 実績のある技術を選ぶ: 最新の技術より、実績のある技術が安全
  2. 人材の確保: その技術のエンジニアが市場にいるか
  3. 長期サポート: 5年以上のサポートが保証されているか
  4. セキュリティ: 設計段階からセキュリティを組み込む(Security by Design)
  5. コンプライアンス: 業界の規制要件を満たせるか

参考リンク