インフラストラクチャ内のセキュリティ層
(セクション: 技術とインフラ)
簡単な要約
セキュリティはレイヤーのシステムです。各レイヤーは保持し、前のレイヤーが失敗した場合に攻撃を検出します。iGamingにとって、これは特に重要です。支払いフロー、PII、パートナー統合、ピーク負荷。以下は、ネットワーク、アイデンティティ、アプリケーション、データ、運用プロセスを1つのマネージドプログラムに接続する、詳細な防御フレームワークです。
1)脅威モデルとファンダメンタルズ
脅威モデリング:キーフロー(ログイン、デポジット、入札、出金、バックファイル)のSTRIDE/killチェーン。
Zero Trust:「デフォルトでは信頼しない」、最低限の権利、すべてのホップをチェックします。
最低特権と職務の分離:役割は原子的で敏感な操作で区切られています。
Secure by Default: closed ports、 deny-all policy、 secure defaults。
監査可能性:すべてのアクセス/変更-一元化された監査で。
2)ネットワークおよび周囲
目的:横方向の移動を避け、リスクを単独で管理します。
セグメンテーション/ゾーン:エッジ(CDN/WAF)→API→サービス→データ(DB/KMS)→管理/バックホー。
公共/プライベートサービスのVPC/VNet isolation+サブネット;NAT/egressコントロール(PSP/ゲームプロバイダへのegress-allowlistを含む)。
どこでもmTLS(メッシュ/入力)、TLS 1。2 +/HSTS/クリア暗号設定。
周囲のWAF/ボット 管理/DDoS;クレデンシャルスタッフィングのためのアンチスコアリング。
DNSセキュリティ:スプリットホライゾン、DNSSEC、フォールトトレランス、クリティカルドメイン用のキャッシュピニング。
yaml apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: { name: api-deny-all, namespace: prod }
spec:
podSelector: { matchLabels: { app: api } }
policyTypes: [Ingress, Egress]
ingress: [] # deny-all egress:
- to:
- namespaceSelector: { matchLabels: { name: prod } }
podSelector: { matchLabels: { app: payments } }
ports: [{ protocol: TCP, port: 8080 }]
3)身元とアクセス(IAM/PAM)
目的:あらゆるアクセスは正当化され、制限され、そして透明に監査されます。
人と車のためのSSO+MFA;特権アカウントのハードウェアキー。
cloud/K8s/backoffのためのRBAC/ABAC;SCIM-自動オン/オフ。
JITアクセス(一時的)、監査機能を強化したブレークガラス。
短命トークン(OIDC/JWT)を持つサービスアカウント、クライアントの秘密監査。
Bastion/command mirroring:本番データベース/ノードへのアクセス-bastionとwriteセッションのみ。
4)秘密と鍵
目標は、漏洩を排除し、管理可能なキーライフサイクルを提供することです。
KMS/HSM(ウィザード・キー)、規則的な回転;ゾーン/ターゲットへのキーの分割。
Vault/Cloud KMS Dynamic-credsとリースによるシークレット。
- エンベロープ暗号化を使用して、残り(DB/バケット/スナップショット)で。
- トランジット中(TLS/mTLS)。
- 決済データのトークン化;PAN-safeスレッドと3ドメインセキュリティ(PCI DSS)。
hcl path "kv/prod/payments/" {
capabilities = ["read","list"]
}
path "database/creds/readonly" {
capabilities = ["read"]
}
5)コンテナとKubernetesのセキュリティ
目的:ランタイムレベルで攻撃面を最小化する。
イメージ:最低の基本、コンパイラ/シェル無し;signatures (cosign)とSBOM。
入場管理(OPA/Gatekeeper/Kyverno):禁止':latest'、 'privileged'、 'hostPath'、 'root'。
Runtime: Seccomp/AppArmor、 'readOnlyRootFilesystem'、 'drop ALL'機能+allow-list。
秘密マネージャーからボリューム/envとしての秘密。画像にベークインせずに。
PodSecurity (Pod Security Admission):制限を適用します。
レジスタ:非公開、脆弱性チェック機能(SAST/DAST/CSA)。
yaml apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sAllowedRepos metadata: { name: only-internal-registry }
spec:
repos: ["registry.internal.local/"]
6) サプライチェーンCI/CD
目的:生産へのコミットからの信頼のartefacts。
ブランチポリシー:コードレビュー、保護されたブランチ、必須チェック。
アーティファクト署名と出所(SLSA/COSIGN)、不変タグ(不変画像)。
SBOM (CycloneDX/SPDX)、 Dependabot/Renovateとpinningの依存関係。
CI分離:一時的なランナー、保護されたジョブでのみ秘密、プレーンテキストなし。
CDゲート:品質/SAST/ライセンス/ベンダー・ポリシー;GitOpsを通じてのみプロモーション。
7)アプリケーションセキュリティ(API/web/モバイル)
目的:論理的および技術的な攻撃を防ぐため。
AuthN/AuthZ: OAuth2/OIDC/JWT;短いTTL、主回転、聴衆/発行者の点検。
入力セキュリティ:検証/正規化、注入保護、パラメータ付きテンプレート。
CSP/HSTS/XFO/XSS保護、厳格なCORS、ダウンロード可能なMIME/サイズ制限。
レート制限/クォータ、支払い/支出のためのidempotency-keys。
Ficheflags:危険な機能のための高速キルスイッチ。
nginx add_header Strict-Transport-Security "max-age=63072000; includeSubDomains" always;
add_header Content-Security-Policy "default-src 'self'; img-src 'self' data: https:;" always;
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options DENY;
8)データ、PIIおよびコンプライアンス(PCIを含む)
目的:最小収集、最小アクセス、最大透明性。
Data-zones: 'public/internal/confidential/pii/pci'。金庫とログのタグ。
PII最小化:'player_id'の仮名化、支払い詳細のトークン化。
ストレージポリシー:ホット/コールド、監査のためのWORM;自動TTL削除。
アクセス:合意された役割と属性(地域/ターゲット)のみを使用します。
PCIセグメンテーション:分離されたセグメント、アクセスログ、通常のスキャン/ASV。
9)端の層: CDN/WAF/DDoS/botの保護
目標:プラットフォームのコアに「ゴミ」を排出する。
CDN:ジオブロック、キャッシュ戦略、レイヤ7保護。
WAF:基本署名+APIのカスタムルール(JSONスキーム、非標準的メソッドの禁止)。
ボット:行動分析、デバイス指紋、異常のためのレートリミット/キャプチャ。
TLS/ALPN:古い暗号をオフにし、OCSPステープルをオンにします。
10)モニタリング、テレメトリー、SecOps
ターゲット:攻撃を参照し、インシデントの前に反応します。
オブザビリティ:'trace_id'と監査フィールドを持つメトリック/ログ/トレイル。
SIEM/SOAR:イベント相関(認証、IAM変更、WAFトリガー、シークレットへのアクセス)。
検出ルール:401/403スパイク、ロールエスカレーション、大量支払い、地理的異常。
スキャン:SAST/DAST/IAST、 CSPM/KSPM、通常のペネテストとバグバウンティ。
不正防止:トランザクション/行動の記録、ベロシティフィルタ、制裁リスト。
11)信頼性、予備およびビジネス継続性
目標:データ損失とSLAなしでクラッシュを生き延びます。
データベース用のレプリケーションとPITR、テスト・リカバリを伴う頻繁なスナップショット。
DR計画:RTO/RPO、リージョンフェイルオーバースクリプト、スイッチングテスト。
DRの秘密:独立したキー/KMSのレプリカ、緊急回転プロセス。
正式なガイド:回復チェックリストと試合日の練習。
12)運用プロセスと文化
目標はセキュリティが「デフォルト」になることです。
PRによるセキュリティ:機密性の高い変更のための必須のセキュリティレビュー。
リリースポリシー:夜間/ピークウィンドウが閉じられています。飛行前のチェックリスト。
Secure Runbooks-安全なパラメーターを使用した指示、監査アクション。
トレーニング:フィッシングシミュレーション、インシデントトレーニング、ライブテーブルトップセッション。
13)チェックリスト(短い)
ネットワークと周辺
- WAF/CDNごとのすべての入力。DDoS対応
- サービス間のmTLS;deny-allネットワークポリシー
- 外部プロバイダへの排出許可リスト
アイデンティティ
- SSO+MFA;JITとブレイクガラスと監査
- RBAC/ABAC、 SCIM-Deactivateレイオフ
- ショートトークンのサービスアカウント
K8s/containers
- 画像署名+SBOM;禁止':latest'
- Seccomp/AppArmor、読み取り専用FS、ドロップキャップ
- ゲートキーパー/Kyvernoポリシーと拒否リスト
シークレット/キー
- ヴォールト/KMS、回転、キー分割
- 安静時/通過時の暗号化
- 支払いのトークン化
CI・CD・サプライチェーン
- 一時的なランナー;秘密は保護された仕事でのみ
- SAST/DAST/ライセンス;アーティファクト署名
- GitOpsプロモーション、品質ゲート
データ/PII/PCI
- リポジトリ内のデータとタグの分類
- 保持/WORMポリシー;ロールごとのアクセス
- PCIセグメント分離、ASVスキャン
SecOps
- SIEM/SOARルール、エスカレーションアラート
- 不正防止とベロシティフィルタ
- DR計画、RTO/RPOテスト
14)ハードポリシーの例
Kyverno: 特権コンテナの禁止
yaml apiVersion: kyverno.io/v1 kind: ClusterPolicy metadata: { name: disallow-privileged }
spec:
rules:
- name: no-priv match: { resources: { kinds: ["Pod"] } }
validate:
message: "Privileged containers are not allowed"
pattern:
spec:
containers:
- securityContext:
privileged: "false"
OPA (Rego): ban 'hostNetwork'
rego package kubernetes.admission
violation[msg] {
input.request.kind.kind == "Pod"
input.request.object.spec.hostNetwork == true msg:= "hostNetwork is not allowed"
}
15)アンチパターン
内部のmTLS/segmentation→lateral動きなしで「周囲を保護する」。
CI env変数の秘密、ログへのアップロード。
画像':latest'、署名なし、SBOM。
クラスタ内のAllow-allポリシー;すべてのための共通のneimspaces。
キーとリカバリテストの実際の回転なしで「紙の上」暗号化。
ロジック補正とデータ検証の代わりにWAFに依存します。
DR演習や表形式のシナリオはありません-計画は「ほこりを集める」ことです。
16)開始方法(90日間プラン)
1.1-2週目: 資産/データインベントリ、分類、フローマップ
2.週3-4: mTLS/deny-allネットワークポリシー、WAF/DDoS/ボットフィルタを有効にします。
3.週5-6: Vault/KMS、キーの回転、支払のトークン化。
4.7-8週目: ゲートキーパー/Kyverno、 Seccomp/AppArmor、 'privileged'/'hostPath'禁止
5.9-10週目:画像署名、SBOM、 CI/CDゲート、GitOpsプロモーション。
6.11-12週:SIEM/SOARルール、エスカレーションアラート、不正防止。
7.第13週:DR Exercise、 Runabook Update and Compliance Status (PII/PCI)。
[結果]
セキュリティレイヤーはソリューションのアーキテクチャであり、チェックボックスのセットではありません。ネットワークセグメンテーションとZero Trust、厳格なIAM、安全なcontainers/K8s、管理された秘密と暗号、保護されたパイプライン、エッジ防御、SecOpsの可視性を組み合わせます。その後、攻撃やクラッシュが発生した場合でも、プラットフォームはデータの完全性、PII/PCIの機密性、および預金、入札、引き出しなどの主要なストリームの可用性をピーク時でも維持します。