食品環境の強化
生産環境の強化
1)目的およびフレーム
硬化は、インシデントの可能性とそれによって引き起こされる損傷を減らす体系的な一連の慣行です。焦点:APIの周囲、顧客/支払データ、CI/CD、容器のプラットホーム、アクセス、変更制御、観察可能性および承諾。
主な原則:- Security by Design&Default:最低限必要な権限、セキュアなデフォルト。
- ゼロトラスト:検証なしでネットワークもIDも信頼しません。
- 詳細な防衛:マルチレベル保護(ネットワーク→サービス→アプリケーション→データ)。
- アーティファクトの不変性:「一度ビルドし、多くを実行する」。
- E2Eトレースとオーディタビリティ:誰、いつ、何が変わったのか-そしてなぜ。
2)脅威モデルと重要資産
資産:アカウントと支払いトークン、PII/パスポートデータ、 RNG/ゲームバランス、暗号化キー、統合秘密、配備パイプライン、コンテナイメージ。
ベクトル:依存性の脆弱性、トークンリーク、クラウドmisconfiguration/K8s、 APIのSSRF/RCE、サプライチェーン(CI/CD/リポジトリの妥協)、インサイダーアクセス、DDoS/ボットトラフィック。
シナリオ:不正エンティティによる資金の引き出し、係数/残高の置換、ベースドレイン、パイプラインのキャプチャ、製品の手動編集。
3)ネットワークアーキテクチャと分離
セグメンテーション:prod/stage/dev用のVPC/VNetを分離します。Inside prod-エッジ(LB/WAF)、 API、データベース、分析、管理サービスのサブネット。
ポリシー「明示的に許可」:サブネット間のdeny-all、必要なポート/方向のみを開きます。
サービス間のmTLS、証明書の回転が自動化されます。
yaml apiVersion: networking. k8s. io/v1 kind: NetworkPolicy metadata:
name: default-deny namespace: prod spec:
podSelector: {}
policyTypes: ["Ingress","Egress"]
apiVersion: networking. k8s. io/v1 kind: NetworkPolicy metadata:
name: allow-api-to-db namespace: prod spec:
podSelector:
matchLabels: {app: db}
ingress:
- from:
- podSelector: {matchLabels: {app: api}}
ports: [{protocol: TCP, port: 5432}]
4)身元とアクセス(PAM/JIT)
すべての人間のアクセスのためのSSO+MFA。
RBACとABAC-クラウド、クラスタ、名前空間、およびアプリケーションレベルの役割。
PAM:ジャンプ/バスティオン、JITアクセス(制限時間)、セッション録音。
ブレークガラス:ハードウェアキー、ログ発行で密封されたアカウント。
「誰が何にアクセスできるか」の定期的なスキャン、30日に1回のレビュー。
5)秘密と鍵
Vault/KMS/Secrets Managerは、Gitから秘密を除外します。
マスターキーのためのKMS/HSM;KEK/DEK、自動回転。
TTLポリシー:短命トークン(OIDC/JWT)、 CIの一時的なアカウント。
暗号化:安静時(AES-256/GCM)、飛行時(TLS 1。2 +/mTLS)、 PII/カードデータ列-別のキーで。
6) サプライチェーンCI/CD硬化
prodのためのランナーの分離(プライベートネットワークで自己ホスト)。
アーティファクトの署名(Sigstore/cosign)、 deplaの署名の検証。
SBOM (CycloneDX/SPDX)、各コミットおよびリリース前のSCA/VA。
「no tag latest」ポリシー、不変タグのみ。
4目の原則:必須コードレビューと変更承認。
コードとしてのインフラストラクチャ:Terraform/Helm-ポリシー・アズ・コード(OPA/Conftest)。
rego package iac. guardrails
deny[msg] {
input. resource. type == "storage_bucket"
input. resource. acl == "public-read"
msg:= sprintf("Public bucket forbidden: %s", [input. resource. name])
}
7)コンテナとKubernetes
最小画像ベース(ディストロレス)、ルートレス、読み取り専用FS、 ドロップCAP。
入場制御:特権、hostPath、 hostNetworkを拒否します。
Pod Security Standards:ベースライン/制限されたプロドns。
ImagePolicyWebhook-署名された画像のみをスキップします。
ランタイムポリシー(Falco/eBPF):異常なsyscallへのアラート。
クォータ/LimitRange:ノードを「ノイズの多い隣人」から保護します。
8) APIの周囲: WAFの率の限界、Bot/DDoS
ゲートウェイAPI:認証(OAuth2/JWT/HMAC)、正規化、mTLS、スキーマ検証。
WAF:ビジネスメトリクスの基本ルール+caste。
レート制限:global/by IP/by client key;「トークン」とバースト。
nginx limit_req_zone $binary_remote_addr zone=api:20m rate=10r/s;
server {
location /api/ {
limit_req zone=api burst=30 nodelay;
proxy_pass http://api_backend;
}
}
ボット管理:行動信号、デバイス指紋、挑戦。
DDoS: CDN/エッジスクラブ、オートスケーリング、ホット機能のための「ダークローンチ」。
9)構成ポリシーとセキュアなデフォルト
リスクの高い機能をすばやく無効にするために、フラグ/キルスイッチをフィーチャーします。
Config-as-Code (Config-as-Code、 configs用の回路検証、カナリア/ブルーグリーン)
configs/keysを取り消すときにKPIとして取り消す時間。
10)データとプライバシー
分類:PII/finance/operating logs/telemetry。
最小化:必要なものだけを保存し、匿名化/匿名化します。
バックアップ:個別のアカウント/プロジェクト、暗号化、通常のDRリハーサル。
引き出しルール:同じ方法、速度制限、リスクスコアリング、4目。
法的保留/保持:保管スケジュール、管理処分。
11) Observability、警報および応答
トライアド:ログ(秘密を含まない)、メトリック(SLO/SLA)、トレイル(W3C)。
セキュリティ信号:入力の成功/失敗、特権のエスカレーション、秘密の変更、トラフィックの偏差。
SIEM+SOAR:相関と半自動プレイブック。
インシデントプレイブック:DDoS、秘密の漏洩、ランナーの妥協、リリースのロールバック、支払いの「凍結」。
応答性の主要な指標としてMTTD/MTTR。
12)変更およびリリース管理
ハイリスク変更のためのアドバイザリーボード(軽量)を変更します。
事前プロッドゲート:テスト、セキュリティ、perf、データベース移行。
Canary/Blue-Green/Shadow Depley、 SLOによる自動ロールバック。
prodの直接編集を禁止します。パイプラインを介してのみ変更します。
13)脆弱性とパッチ
パッチポリシー:critical-ASAP;ハイ-N日間。
修正後の再スキャン。CVE露出の重み付け。
カオスセキュリティ:ハイライトされたウィンドウでの定期的なテーブルトップ演習と赤いコマンド攻撃。
14)コンプライアンスと監査
制御フレームワーク:PCI DSS(支払い)、SOC 2、 ISO 27001。
アーティファクト:制御マトリックス、変更ログ、スキャンレポート、DRテスト結果、アクセスレビュー。
継続的な可用性:「コードとしての証拠」-アーティファクトはパイプラインとシステムから自動的に収集されます。
15)経済性と信頼性
コストによるガードレール:クォータ、予算、アラート、未使用リソースの自動シャットダウン。
容量:SLO指向の計画、負荷テスト、「混乱の日」。
回復の優先順位:サービス、依存関係マップによるRTO/RPO。
16)アンチパターン
Gitのv。envの秘密、一般的な「管理者」、prodの「direct SSH」、コンテナの手動修正、「最新」タグ、すべてのための1つの一般的なクラスタ、パブリックバケット、prod-networkのアウトバウンドインターネット付きCIランナー、PIIのログ、「ホット」機能のキルスイッチはありません。
17)速い開始チェックリスト(90日)
0-30日
MFA/SSO、アクセスレビューを有効にします。deny-allネットワークポリシー;Secrets Manager/KMS;K8sで禁止されている特権。WAF/Rate-limit基本入力/エスカレーションアラートを有効にします。
31-60日
画像署名+ImagePolicy;SBOM+SCA-CI;canary/rollback;SIEM相関;IRのplaybooks;JIT/PAM;DRテストによるバックアップ。
61-90日
IaCのためのOPAガードレール;eBPF/Falco;ボット管理;定期的なアクセスレビュー;カオスセキュリティ演習;構成および費用ガードレールの監査。
18)成熟度の指標
アクセス:MFAのアカウントの%、トークンの平均年齢、リコール時間。
パイプライン:%署名された/SBOMイメージ、SAST/DASTカバレッジ。
プラットフォーム:読み取り専用FS、 PSS制限、NetworkPolicyカバレッジを備えたポッドの共有。
境界:rate-limit/WAFルールを持つ%API、 DDoSに対する平均応答。
IR: MTTD/MTTR、テーブルトップ周波数、成功したDRリハーサルの割合。
コンプライアンス:自動証拠とコントロールの割合。
19)付録: ポリシーテンプレート
AWS SCP(パブリックバケットバン)
json
{
"Version": "2012-10-17",
"Statement": [{
"Sid": "DenyPublicS3",
"Effect": "Deny",
"Action": ["s3:PutBucketAcl","s3:PutBucketPolicy"],
"Resource": "",
"Condition": {"StringEquals": {"s3:x-amz-acl": "public-read"}}
}]
}
Kubernetes PodSecurity(名前空間ラベル)
yaml apiVersion: v1 kind: Namespace metadata:
name: prod labels:
pod-security. kubernetes. io/enforce: restricted pod-security. kubernetes. io/audit: restricted
コンテナ用OPA(禁止特権)
rego package k8s. admission deny[msg] {
input. request. object. spec. containers[_].securityContext. privileged == true msg:= "Privileged containers are not allowed in prod"
}
20)結論
食品環境の強化は継続的なプロセスです。リスク軽減対策の優先順位付け:アクセスとシークレット、ネットワーク分離、アーティファクト署名とパイプライン制御、API境界保護、オブザビリティおよび変更規律。残りの部分を反復的に構築し、成熟度の指標をキャプチャし、経済学を制御します。