プロジェクト

全般

プロフィール

バグ #755

未完了

【開発計画】インフラヘルパー Phase 2 - 外部公開準備

Redmine Admin さんが5日前に追加. 5日前に更新.

ステータス:
解決
優先度:
急いで
担当者:
-
開始日:
2025-06-26
期日:
進捗率:

0%

予定工数:

説明

🎯 Phase 2: 外部公開準備(重要)

概要

インフラヘルパーサービスを専用ドメインで外部公開するための設定と準備を行う。

対応期限

2025年7月15日(2週間以内)

実装タスク

1. Nginx SNI設定の実装

# /etc/nginx/conf.d/infra-helper.conf
server {
    listen 443 ssl http2;
    server_name infra.call2arm.com;
    
    ssl_certificate /etc/letsencrypt/live/call2arm.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/call2arm.com/privkey.pem;
    
    location / {
        proxy_pass http://infra-helper-web:80;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    
    location /api {
        proxy_pass http://infra-helper-api:3000;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    
    location /ws {
        proxy_pass http://infra-helper-api:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

server {
    listen 80;
    server_name infra.call2arm.com;
    return 301 https://$server_name$request_uri;
}

2. DNS設定

  • infra.call2arm.com のAレコード追加
  • 既存のワイルドカード証明書での動作確認
  • または専用証明書の取得

3. セキュリティ強化

  • Rate Limiting設定
  • CORS設定の見直し
  • CSP(Content Security Policy)ヘッダー追加
  • WAF規則の設定
// セキュリティミドルウェアの追加
app.use(helmet({
    contentSecurityPolicy: {
        directives: {
            defaultSrc: ["'self'"],
            scriptSrc: ["'self'", "'unsafe-inline'", "cdn.tailwindcss.com"],
            styleSrc: ["'self'", "'unsafe-inline'"],
            imgSrc: ["'self'", "data:", "https:"],
            connectSrc: ["'self'", "wss://infra.call2arm.com"]
        }
    }
}));

// Rate Limiting
const limiter = rateLimit({
    windowMs: 15 * 60 * 1000, // 15分
    max: 100, // リクエスト数上限
    message: "Too many requests from this IP"
});
app.use('/api/', limiter);

4. フロントエンド調整

  • API URLの環境変数化
  • WebSocket接続URLの動的設定
  • エラーハンドリングの改善
  • ローディング状態の実装
// 環境設定
const API_BASE_URL = process.env.REACT_APP_API_URL || 'https://infra.call2arm.com/api/v1';
const WS_URL = process.env.REACT_APP_WS_URL || 'wss://infra.call2arm.com/ws';

5. 監視・ログ設定

  • アクセスログの設定
  • エラーログの集約
  • メトリクス収集設定
  • アラート設定

テスト項目

  • 外部からのHTTPS接続テスト
  • WebSocket接続テスト
  • 認証フローのE2Eテスト
  • 負荷テスト(100同時接続)
  • セキュリティスキャン

成果物

  • Nginx設定ファイル
  • 更新されたdocker-compose.yml
  • セキュリティ設定ドキュメント
  • 外部公開チェックリスト
  • 運用手順書

他の形式にエクスポート: Atom PDF