GKE(Goolge Kubernetes Engine) 環境における、ファイル改ざん検知に対する必要最低限の対応方針についてまとめました。
結論
-
Linuxサーバー(GKEのnode)に対する改ざん検知対策は基本的には実施しない。
- GKEのnodeはAuto-updateを有効化して常に最新のセキュリティパッチが適用された状態にする。
- GKEのSecurity Updateに関する情報はチャットツール等でメッセージを受け取る。
-
コンテナに対する改ざん検知対策は、以下を実施します。
- Docker Content Trust を有効化する
- Pod Security Policies を有効化する
Linuxサーバーに対する改ざん検知・対策
GKEで使用されているnode(Linuxサーバー)は、基本的にはサーバーにsshできるようになっていない。また、Kubernetes上で稼働しているDocker Containerはディスクマウントを実施しないため、Linuxサーバー内のファイルに変更を加えることはできない。
また、GKEのnodeはセキュリティアップデートに対するAuto-Update機能を有効化しているため、深刻な脆弱性が報告されたとしても直ちにGoogleによって対応される。また、セキュリティアップデートの情報はRSSで配信されており、チャットで受信できるので購読設定をしておく。
コンテナに対する改ざん検知・対策
Docker Content Trust の有効化
Docker Imageのビルドに使用されるimageを署名付きで扱い検証することを必須とするDocker Engineの機能です。Defaultでは無効化されていますが、環境変数に DOCKER_CONTENT_TRUST=1 を定義してビルドを行うことで有効化されます。
これによって、Docker imageの偽造を防ぎ、安全なイメージの取得が保証されます。
Pod Security Policies の有効化
Docker Container をKubernetes上で動作させるにあたって、Container自身の権限をPolicyによって制限をかけることができます。Containerのプロセスの実行ユーザーの強制や、Privillege Mode(コンテナからホストノードへのアクセス権限)の無効化等、コンテナを安全に稼働させる設定が有効化できます。
Defaultでは Pod Security Policies は無効化されていますが、有効化されることが強く推奨されています。
参考
- GCP のセキュリティ : “信頼の基点” としての Titan
- Pod Security Policies
- Best Practices for Securing Containerized Applications in Kubernetes Engine
- 【参考訳】 Docker Content Trust 入門