ランタイムセキュリティ
🔥 Vibe プロンプト
「ランタイム保護を設定:RASP、WAF、異常検知、セキュリティ監視。」
RASP(ランタイムアプリケーション自己保護)
class RASP:
def protect(self, func_name, args):
if func_name in ['eval', 'exec', 'os.system']:
raise SecurityException(f"ブロック: {func_name}")
def start(self):
import builtins
original_eval = builtins.eval
def safe_eval(*args, **kwargs):
self.protect('eval', args)
return original_eval(*args, **kwargs)
builtins.eval = safe_eval
ModSecurity WAF
modsecurity on;
SecRule REQUEST_URI "@contains /admin" "id:1000,deny"
SecRule ARGS "@detectSQLi" "id:1001,deny"
WAF vs RASP
| 項目 | WAF | RASP | |------|-----|------| | 位置 | アプリ前(ネットワーク) | アプリ内(実行時) | | 可視性 | HTTPのみ | 完全なアプリコンテキスト | | バイパス | 可能 | 困難 | | 誤検出 | 多い | 少ない |
異常検知
class AnomalyDetector:
def __init__(self, window=100, threshold=3):
self.window = deque(maxlen=window)
self.threshold = threshold
def add_metric(self, value):
self.window.append(value)
if len(self.window) < 30: return False
mean = np.mean(self.window)
std = np.std(self.window)
z_score = abs(value - mean) / (std + 0.001)
return z_score > self.threshold
セキュリティ監視
アプリ → Prometheus → Grafana
アプリ → Loki → Grafana
WAF → CloudWatch → Security Hub
主要監視メトリクス
- 4xx/5xxエラー率
- 認証失敗率
- SQLクエリ異常
- APIパラメータサイズ
- 応答時間劣化
ベストプラクティス
| レイヤー | 保護 | |---------|------| | ネットワーク | WAF | | アプリケーション | RASP | | ランタイム | 異常検知 | | 監視 | Prometheus + Grafana |
ベストプラクティス
- 既知攻撃パターンにWAF使用
- 未知攻撃(ゼロデイ)にRASP使用
- すべてのセキュリティイベントを一元監視
- 重要イベントの自動応答設定
- 保護を定期的にテスト
重要なポイント
- コアコンセプトをしっかり理解する
- ハンズオンコード例で実践する
- 実世界の問題に応用する
- 演習で知識を強化する
さらに学ぶ
- 公式ドキュメント
- GitHubのオープンソースプロジェクト
- コミュニティフォーラムとディスカッション
- 関連コースとチュートリアル