English version is here
このリポジトリではKubernetesとIstioを使用する場合の基本的なセキュリティ機能を解説するためのサンプルアプリを提供しています。
このリポジトリには大きく分けて以下の二つのdemoが含まれています。
-
RBAC Demo
RBAC DemoはIstio RBACをどのように使えばいいのかというサンプルデモです。
詳細はdemos/rbacにあります。
*) このデモはCloud Native Days Tokyo 2019で使用しました。 -
Attack Demo
Attack DemoはKubernetesを使用する際にどういった攻撃が考えられてどうすればその攻撃から守れるのかというDemoです。 詳細はdemos/attackにあります。
- 盗聴
攻撃者がクラスタ内の通信の盗聴しようとします - なりすまし(パスワードが漏洩した場合)
attacker try to get secret information by using password. - より悪い状態でのなりすまし(パスワードと証明書が漏洩した場合)
attacker try to get secret information by using password and Istio certificate.
*) このデモはOpen Source Summit Japan 2018で使用しました。 発表スライドはSpeaker Deckにあります。
- 盗聴
このアプリではIstioとIngress Controllerを使用します。
Ingress Controllerを必要とする理由はIstioを使用しないでアプリを立ち上げる場合にIngressリソースを使って外からアクセスできるようにしているためです。
-
Istioのインストール
- 公式ページを参考にインストールしてください。
- もしくは、
sectest
内にあるインストールスクリプトを使用しても構いません- git clone https://github.com/sh-miyoshi/sectest.git (このリポジトリをクローンする)
- cd system
- vi helm_values.yaml (必要であれば)
- ./install-istio.sh
-
Ingress Controllerのインストール
- 各プロバイダー(GKE, AKS, EKS, ...)のマネージドサービスを利用すればいいです
- もしくは、Local上に以下の手順でNginx Ingress Controllerを作成します
- kubectl apply -f system/ingress-controller-nginx.yaml
-
デプロイ手順
# secretファイルの作成 cd kubernetes ./make_secret.sh # アプリのデプロイ kubectl apply -f . * access to https://<ingress-controller-address> # アプリの動作確認 # ブラウザ上でユーザ名とパスワードを入力すると、秘密のメッセージを取得できます # User: "root" # Password: "ossj_sectest"
-
削除手順
cd kubernetes kubectl delete -f .
-
デプロイ手順
# secretファイルの作成 cd kubernetes ./make_secret.sh # アプリのデプロイ ./istio_deploy.sh
-
削除手順
cd kubernetes ./delete_istio_pod.sh