Kubernetesのセキュリティとか - KanamaruK/Kanamaru20190529 GitHub Wiki
はじめに
とりあえず、セキュリティの機能はちょこちょこと知ってるけど、
どんなのがあって、どんな時に使ってとかの全体的な把握ができてない
細かいところも、ケーススタディとゆーか、実際にはこんなのに使うのとかもフワっとしてる
目的
- その辺りを明確化すっぞ
- あとはそれらを用いて何するか
- 権限設定とか
- セキュリティどの程度まではやるかとか
機能
とりま機能のリストアップ
- UserAccount
- ServiceAccount
- RBAC
- SecurityContext
- PodSecurityContext
- PodSecurityPolicy
- NetworkPolicy
カテゴライズ的には以下が大枠かな
- アカウント管理、認証認可的なの
- セキュリティ的なの(これはさらに2種って感じ)
- podやコンテナ
- ネットワーク
アカウント管理、認証認可的なの
すげーざっくりいうと、アカウント作って、ロールを作ってアカウントと紐づけて権限管理する
- UserAccount
- ServiceAccount
- RBAC
アカウント系が認証で、Role系が認可かな
それらを含めて、AdmissionControlとかゆー機能として使うのかな
プラグインみたいに、他機能にガッチャンコして使うのかな
とりあえず認証認可とこの辺りのリソースと、AdmissionControlの関係性がよく分からん
セキュリティ的なの
これもざっくり、コンテナやPodの実行権限的なのとネットワーク回りを管理する
- SecurityContext
- PodSecurityContext
- PodSecurityPolicy
- NetworkPolicy
実行ユーザーだったり、カーネルの値への権限だったりとかを定義できる
NetworkPolicyは、Pod同士の通信ルールを規定できる。
基本Podは全て相互通信可能なので、逆にこれを利用してホワイトリスト方式にしたりもできる
いったんメモ
■セキュリティ
機能の明示と、決め そんくらいかなー
RBAC使うとなると、ユーザーごとに権限設定とかいるのかな それはさすがに新規で入るたびは面倒だな
AWSのセキュリティグループみたいに、 所属グループへの権限とかでやりたいな
てかセキュリティとゆーかロール とゆーか制御できるものに関しては、
リソースへの実行、アクセス権とネットワーク回りのアクセス許可って考えかたかな (ラベル持ってるなら許可みたいな感じかな)
なのでこれは権限とはわけて考えて、通信とかと一緒に考えた方がよさそう
ただ、通信とその権限に関しては、 クラスタ内に来てしまっているものの制御までする必要があるかって話になるから 結局いらんかな
Podとかのリソースに対しての実行権限 これは絞った方がよさそう
利用者全員がデプロイなりなんなりできても Devopsしっかりできてるならいいと思うけど、 今回みたくインフラ切り分けるなら
いや、違うな 観点がセキュリティじゃないな 作業のリスク観点になっちゃうな
セキュリティ観点でリソースへの実行権限はなぜ必要か? これ分からんとあかんな
https://qiita.com/mamomamo/items/1651b8f9e44938c0de15 https://www.cncf.io/blog/2019/01/14/9-kubernetes-security-best-practices-everyone-must-follow/
てかアプデもセキュリティにつながるなーこれ
あとAPIへのセキュリティ設計が重要っぽいな 他のももちろん大事だけど、これが有事の際のインパクトがバカパク
認証認可もこれがキモなのかな
■公式系
くべ https://kubernetes.io/docs/reference/access-authn-authz/authorization/ IBM https://cloud.ibm.com/docs/containers?topic=containers-security&locale=ja
て感じで思いついたの羅列してったけど、 これ機能とかから見た感じだな
んでもちろんkubeの機能だから、kubeの対策なんだけど 例のごとくレベル感とゆーか使い方
kube回りに関しては API回り 権限については2ロールぐらいでいい希ガス
セキュリティ掘り下げると、バージョン管理とかも視野に入るなぁこれ
んでそれとは別にdatadogとかgit系のアカウントと権限管理的な運用のものもいるよな
てことで、単純にkubeのセキュリティとごっちゃにするから より難しくなるから 何か軸作った方がいいな
んで対処としては、
・API回りとか通信と実行権限に絞るパターン ・全体の軸を考えて、将来課題残しでとりますすめるパターン
辺りが妥当かな
軸は運用と、セキュリティ設計とかでいいかな
あっ分かった 軸ってより、機能でまとめようとするから しっくりこないんだ
セキュリティ ・ネットワーク ・コンテナ ・権限 ・運用
とかで「セキュリティ」クラスの中のパターンの一つとして検討事項に入れりゃいんだ
何かこういうとこもマイクロサービスって感じだなあ