mrtc0 / seccamp-2023-sandbox-service

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

seccamp-2023 B3 講義資料

セキュリティ・キャンプ 全国大会 2023 で使用する資料です。

Setup

必要なもの

clone

git clone https://github.com/mrtc0/seccamp-2023-sandbox-service

マイクロサービスのデプロイ

手元のクラスタ にデプロイしてください。EKS へはデプロイしないでください。

$ kubectx local-cluster # クラスタ名は各自環境に合わせて指定
$ ./setup.sh

次のような表示になっていれば OK

$ kubectl get pods --all-namespaces
NAMESPACE            NAME                                         READY   STATUS    RESTARTS   AGE
api                  items-api-5777d68b86-z4jf6                   1/1     Running   0          58s
back                 backend-54f856f447-hrddq                     1/1     Running   0          58s
back                 backend-54f856f447-l857j                     1/1     Running   0          58s
back                 backend-54f856f447-llbb8                     1/1     Running   0          58s
payments             payments-794c777dd6-k2xd5                    1/1     Running   0          58s
worker               worker-7b4b69f85f-96wkf                      1/1     Running   0          58s

サービスへのリクエスト

図はスライドを参照。Ingress は省略しているので、kubectl -n back port-forward svc/backend 8000:80 のようにして、backend アプリケーションにリクエストを送信できるようにしておいてください。
/items/payment にリクエストを送ってそれぞれ、次のレスポンスが返ってくることを確認してください。

$ curl http://localhost:8000/items
[{"ID":1,"Name":"Item 1"},{"ID":2,"Name":"Item 2"},{"ID":3,"Name":"Item 3"},{"ID":4,"Name":"Item 4"},{"ID":5,"Name":"Item 5"}]

$ curl localhost:8000/payment
Payment completion! Thank you ~~~ 💸

EKS への接続

共有した AWS クレデンシャルを設定しておいてください。

$ cat ~/.aws/credentials
[default]
aws_access_key_id = ASIA…
aws_secret_access_key = …
aws_region = ap-northeast-1

次のコマンドで EKS への接続設定をして、kubectl get pods が成功すれば OK です。

$ aws eks update-kubeconfig --name sandbox-seccamp --region ap-northeast-1 --alias eks-seccamp
Added new context eks-seccamp to /root/.kube/config

$ kubectl get pods
No resources found in default namespace.

$ kubectx # クラスタ切り替え

(Option) AWS CLI コンテナを使えるようにする

攻撃で取得したクレデンシャルを使って AWS にアクセスすることがあります。手元の端末にセットアップされている AWS クレデンシャルを意図せず使ってしまっては意味がないので、まっさらな環境を使うために AWS CLI コンテナを使えるようにしておくと便利です。

docker run --rm -it --entrypoint bash amazon/aws-cli

攻撃で取得したクレデンシャルをワーキングディレクトリに保存してボリュームマウントすると、都度クレデンシャルをセットせずに済むので便利かもしれません。

$ cat credentials
aws_access_key_id = ASIA…
aws_secret_access_key = …
aws_session_token = ...
aws_region = ap-northeast-1

$ docker run --rm -it -v $PWD:/root/.aws eks-utils:latest bash

About


Languages

Language:Go 65.0%Language:HCL 11.2%Language:Dockerfile 9.1%Language:Makefile 7.9%Language:Shell 6.8%