2020年08月27日 ウェビナー「はじめてのカオスエンジニアリング:Gremlin」のQAを公開します

2020.08.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

2020年08月27日 クラスメソッド株式会社主催「はじめてのカオスエンジニアリング:Gremlin」 でご参加頂いた方から頂戴した質問とその回答を公開します。

Q. Gremlin の Attacks タブの Containers と Kubernetes の違いはなんですか?

A. Cotnainer をターゲットに行うか、Kubernetes クラスター内のオブジェクトに対して行うかの違いになります

Containers: Docker の Container をターゲットにできます。また、クラスターを跨いで攻撃することができます

Kubernetes: Kubernetes クラスター内の下記のオブジェクトをターゲットにできます

  • Deployments
  • ReplicaSets
  • StatefulSets
  • DaemonSets
  • Pods (親オブジェクトがいない場合のみ)

https://www.gremlin.com/docs/infrastructure-layer/targets/#containers https://www.gremlin.com/docs/infrastructure-layer/kubernetes/

Q. Unleash Gremlin はスケジューリングしたり、並列実行する(NW、Resource など同時に実施)ことは可能でしょうか。

A. スケジューリングは可能です。並列実行自体は攻撃を二重に起動することで実現できます。

攻撃のスケジューリングはサポートされています。

https://www.gremlin.com/docs/infrastructure-layer/scheduler/

シナリオを使って複数の攻撃を実行することはできますが、攻撃間の遅延設定は1秒以上必要です。

https://www.gremlin.com/docs/scenarios/overview/#attacks

Q. ECS on Fargate への攻撃は可能なのでしょうか?また、k8s があったので EKS は可能という認識ですが合っていますか?

A. 現時点で Fargate には対応していません。EKS on EC2 には対応しており、EKS on Faragate は対応しておりません。

Docker, Kubernetes に Gremlinのエージェントをインストールするためには常時起動していることの外、 下記の要件を満たす必要があるように見受けられます。

  • /var/run/docker.sock をマウントできること
  • Linux capabilities NET_ADMIN, SYS_BOOT, SYS_TIME, TIME が設定できること

https://www.gremlin.com/community/tutorials/how-to-install-gremlin-on-ecs/#prerequisites

Q. AWS の場合、 EC2 以外のマネージドサービスをターゲットにすることは可能でしょうか?

A. EC2 および EC2 起動タイプの ECS, EKS をターゲットにすることが可能です(インフラレイヤの障害注入の場合)

エージェントをインストールできるサービスであればターゲットにできます。

https://www.gremlin.com/docs/infrastructure-layer/targets/ https://www.gremlin.com/docs/clients/overview/

Q. シナリオにおいて障害とブラウザテストは同タイミングで行われるという理解で合っていますでしょうか?

A. 継続的なステータスチェックという項目を ON にすることでシナリオ中に継続的に実行できるようになります(10 秒ごとにポーリング)

https://www.gremlin.com/docs/scenarios/status-checks/#running-a-scenario-with-a-status-check

Live中では 同タイミングで行うことはできない という回答をして申し訳ございませんでした。訂正いたします。

Q. Gremlin はオンプレも実行可能と書いてありましたが、出来ることでクラウドとオンプレに違いはありますでしょうか?

A. クラウドとオンプレでできる攻撃に違いはありません。

https://www.gremlin.com/docs/infrastructure-layer/targets/

下記の図が大変参考になるのですが、VM内で動作するため、基本影響ありません。 また、ネットワーク障害類もサーバ, コンテナに対して仮想的に実現するため、基本環境を選ぶことはありません。

https://www.gremlin.com/docs/clients/overview/

Q. Lambda にどのようなアタックができるのか知りたいです

A. 下記の様な種類があります

  • インバウンド HTTP トラフィック

    アプリケーションのインバウンド HTTP トラフィックに影響を与えます。

  • アウトバウンド HTTP トラフィック

    アプリケーションの HTTP クライアントに影響を与えます。

  • Dynamo DB トラフィック

    アプリケーションの AWS Dynamo DB クライアントに影響を与えます。

  • カスタムトラフィックタイプ

    カスタムトラフィックタイプを作成し影響を与えます。

https://www.gremlin.com/docs/application-layer/attacks/

現在は Java のクライアントライブラリしか提供されていません。

https://www.gremlin.com/docs/application-layer/libraries/

nodejs, python, Go のライブラリに関しては検討中のようです。

https://portal.productboard.com/gremlin/1-gremlin-product-portal/tabs/1-under-consideration

Q. Gremlin は検証用ラインセンスなどは存在しますか?

A. Free のライセンスが提供されています。(攻撃の種類や回数に制限はあります)

基本的にはFreeで検証をお願いしていますが、Pro以上の環境にしかない機能のPoCについてはクラスメソッドにてサポートをさせて頂いております。 是非ご連絡いただければと思います。

https://www.gremlin.com/docs/pricing/overview

Q. 実環境で WAF などが入っていると攻撃が難しくなると思いますが、対応は可能でしょうか

A. gremlin クライアントはインストールされたホストの内部から実行するため、WAF の影響は受けないと思います。

https://www.gremlin.com/docs/clients/overview/

クライアントから gremlin の API に SSL 通信でポーリングを行うので、アウトバウンドが制限されている環境であれば影響は受けます。