アラート

続いて、アラートもいくつか見ていきましょう。

New container in the kube-system namespace detected

このアラートは、kube-system 名前空間にコンテナが展開されたことによって発報される項目です。以下の画面ショットのようにどのクラスタに、どのイメージを使用してコンテナが展開されたかが確認できます。

kube-system 名前空間は、Kubernetes や AKS の機能に関するコンテナを保持するために使用される名前空間です。ユーザーアプリケーションのコンテナが展開されることは想定されていないため、アプリケーションのコンテナを展開する際は kube-system 以外の名前空間に展開します。意図しないタイミングでこのアラートが発報された場合、どのようなコンテナが展開されたか確認します。

以下は、kube-system 名前空間にコンテナを展開する例です。


kubectl run nginx --image=nginx -n kube-system

Exposed Kubernetes dashboard detected

このアラートは、Kubernetes のダッシュボードが外部に公開されたことによって発報される項目です。Kubernetes のダッシュボードはブラウザからリソースの展開や簡易的な監視ができるツールです。ダッシュボードへのアクセスは Kubernetes への変更を外部から簡単に許すことを意味するため、アクセスを厳密に管理する必要があります。

以下はダッシュボードを展開し外部に公開する例です。


kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recommended.yaml
kubectl expose deployment kubernetes-dashboard --name kubernetes-dashboard-lb --port 443 --target-port 8443 --type LoadBalancer

SSH server is running inside a container (Preview)

このアラートは、コンテナ内で SSH サーバーが起動していることを検出する項目です。コンテナを利用する場合、従来のサーバーのように SSH を利用してアプリケーションをインストールすることは通常行いません。SSH サーバーが動作しているということは、何らかの悪意を持ったアクターによって外部からの侵入が試みられている可能性があります。展開されているリソースが意図したものか確認します。

以下は、SSH サーバーが含まれるコンテナを展開している例です。


kubectl run sshd --image linuxserver/openssh-server

補足:Defender プロファイル

ノードから出力されるアラートは、Defender プロファイルの設定によって展開される DaemonSet 内の eBPF を使用して実現されています。eBPF によって各ノードの挙動をシステムコールレベルで補足されています。以下は、Defender プロファイルによって展開される DaemonSet と Deployment です。以下の microsoft-defender で始まっているリソースが該当します。


kubectl get daemonsets.apps,deployments.apps
NAME                                             DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR              AGE
... (省略) ...
daemonset.apps/microsoft-defender-collector-ds   2         2         2       2            2                                7h35m
daemonset.apps/microsoft-defender-publisher-ds   2         2         2       2            2                                7h35m
daemonset.apps/omsagent                          2         2         2       2            2                                10h
daemonset.apps/omsagent-win                      0         0         0       0            0                                10h

NAME READY UP-TO-DATE AVAILABLE AGE ... (省略) ... deployment.apps/microsoft-defender-collector-misc 1/1 1 1 7h35m deployment.apps/omsagent-rs 1/1 1 1 10h

それぞれのリソースの説明が、以下のドキュメントに記載されています。

Defender for Containers のアーキテクチャ | Defender プロファイル コンポーネントの詳細

まとめ

Kubernetes は Kubernetes 以外のリソースも含めてさまざまなコンポーネントで構成されており、それぞれ適したツールで監視や監査をする必要があることを説明しました。さらに AKS では Azure Monitor や Azure Policy のような Azure の機能を利用することで手間をかけずに効率よく機能やセキュリティ監視ができる仕組みがあります。

監視や監査の機能を活用し、可用性の低下につながる障害の検知や未然防止、セキュリティリスクとなり得る動作の制御をすることで Kubernetes の実行環境をセキュアにしていく必要があります。

著者プロフィール


野村総合研究所 湯川勇太(ゆかわ ゆうた)


前職で大手家電量販店のECモールの立ち上げとECサイトの刷新プロジェクトを経験。NRI入社後は製造業の商品検索システムを担当した。現在は大手物流企業向けの基幹システムの方式設計や技術検証、トラブル対応を行っている。

Microsoft 乃村 翼 (のむら つばさ)


前職はコールセンターシステムを展開するスタートアップ企業で、Asterisk を用いたPBXシステムの構築、RailsやPHP等のOSSスタックを用いたWeb アプリケーションの開発を経験。アプリケーション基盤でLXCを使用していたことがきっかけで、コンテナ技術に興味を持つ。現在は、Microsoft CorporationのFastTrack for Azure のカスタマーエンジニアとして、Azureインフラを中心に設計・導入の支援を行っている。