7
6

More than 5 years have passed since last update.

Docker / Kubernetesのセキュリティ調査メモ

Last updated at Posted at 2018-10-29

Webや書籍をざっとあさり、Docker / Kubernetesのセキュリティについて調査したメモ。

※この他にも多数ありましたが、まずはこのあたりからかな?というものを書き出しています。

Dockerのセキュリティ

ベースイメージ

  • 公式イメージを利用する
  • alpineなど、小さなイメージを利用する
  • Docker Content Trustで署名チェックする

Dockerfile

  • rootユーザを使わず、実行ユーザを使う
  • 外部のファイルを追加する場合はチェックサムを検証する
  • 機密情報は環境変数など外部から取得する構成にする

CI

  • Quay.ioなどでイメージのセキュリティスキャンを行う
  • Docker Bench for Securityで実行環境も含めたベストプラクティスをチェックする

ホスト

  • Container-Optimized OSなど、コンテナのホストとして適切なセキュリティ原則を実装したOSを利用する

実行時

  • ファイルシステムには最小の権限しか与えない
  • /var/run/docker.sock をマウントしない
  • --privileged などで権限を付与しない
  • CPUやメモリ使用量に制限をかける

その他

  • dockerdのリモート制御時は認証をかける
  • sudo省略のためにユーザをdockerグループに追加することをしない
  • docker login後はdocker logoutする
  • CPUやメモリ使用量が異常なコンテナがないか監視する
  • AppArmor、SELinux、GRSECなどを使用する

Kubernetesのセキュリティ

APIサーバ

  • APIサーバへのアクセスを制限する
  • APIの監査ログを残す
  • すべてのAPIトラフィックにTLSを使用する

ネットワーキング

  • CalicoによるNetworkPolicyを設定する
  • Istioなどでトラフィックを暗号化する

コンテナの権限

  • Service Account、RBACを適切に設定する
  • SecurityContext、PodSecurityContext、PodSecurityPolicyを適切に設定する
  • seccomp、AppArmor、SELinuxを利用する
  • クラウドのメタデータAPIへのアクセスを制限する

Kubelet

  • Kubeletの権限を制限する
  • Kubeletへのアクセスを制限する

その他

  • 機密情報は、base64エンコードでしかないSecretをGitリポジトリにそのままアップロードするのではなく、kubesecやサードパーティのVaultなどで暗号化して管理する
  • AWSの場合、kube2iamやkiamでクラスタではなくPodに対してIAM Roleを割り当てる
  • kube-benchでクラスタをチェックする
  • kube-hunterによるペネトレーションテストを実施する

情報元

Web

書籍

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6