English | 日本語
マイクロセグメンテーションは語られまくっているが、end-to-end で動かす場が少ない。このリポは 8 種類の実装をラップトップ 1 台で実際に走らせて、パケットに何が起きるかを目で見て確認するためのもの。
| # | 方式 | ツール | 実際に動かすこと |
|---|---|---|---|
| 01 | K8s NetworkPolicy | Calico CNI | kind クラスタで attacker Pod の nc がポリシー適用後にブロックされる |
| 02 | Cilium L7 + Hubble | Cilium eBPF + Envoy | curl DELETE が Envoy 由来の 403 を返し、attacker は L4 でタイムアウト、Hubble UI に verdict が出る |
| 03 | Calico tiered global policy | Calico GlobalNetworkPolicy | 名前空間横断で order/tier 評価 |
| 04 | Istio mTLS + AuthZ | Istio サイドカー | STRICT mTLS と principal ベース拒否 |
| 05 | SPIFFE/SPIRE + Envoy | SPIRE Server/Agent + Envoy | Envoy が SDS 経由で X.509-SVID を取得し、mTLS に使う |
| 06 | ホストファイアウォール (エージェント風) | privileged Docker 内の nftables | controller から各ホストにルール配布 |
| 07 | Admission 時制御 | OPA Gatekeeper | 必須ラベルがない Pod が kubectl apply の時点で拒否される |
| 08 | AWS Security Group as code | LocalStack + OpenTofu | オフライン環境で VPC/SG を作って API を眺める |
各ディレクトリに固有の README、run.sh、cleanup.sh、manifests が入っている。スクリプトは idempotent で、自分で後片付けもする。
ゼロから入る場合は番号順に積み上がる構成: 01 で L3/L4 のベースラインを作り、02 で L7 と identity を導入、04/05 でラベル信頼から証明書信頼へ、06 でホスト側の視点、07 で admission 時のガードレール、08 でクラウド API 表面、という流れ。
Docker (Docker Desktop / Rancher Desktop / OrbStack のいずれか) と kind kubectl helm。パターンごとに追加で cilium istioctl tofu jq が要る場合がある。
make check-toolsで入っているもの / 足りないものが一覧表示される。
cd 02-cilium-l7-identity
./run.sh
# ... 接続性チェックの PASS/FAIL が出力される
./cleanup.sh全部を一気に消したい時は make clean-all で各ディレクトリの cleanup.sh を順に走らせる。
MIT。