Kubernetes セキュリティ まとめ

セキュリティ

MLOpsを仕事で扱っていきたいので、その周辺の技術を学んでいくシリーズです。

また下記の書籍を参考にしています。
Kubernetes完全ガイド (impress top gear)
チュートリアルも見ております。
Learn Kubernetes Basics

 

ServiceAccount

①UserAccount
Kubernetes クラス外のアカウント(AWS IAM, GCP)

②ServiceAccount
Kubernetes クラス内のアカウント

 

RBAC

Role Based Acces Controlの略です。
どのような操作を許可するかを定めたRoleを作成し、
Userと作成したRoleを紐付けることで、権限を管理することができます。
NameSpaceレベルのリソースとClusterレベルのリソースの2種類があります。

RoleBinding

Userに対してRoleを紐付けることを指します。
下記のようなイメージです。
Image from Gyazo

指定できるRole

Roleを指定する際は、rulesのverbsという箇所で指定します。
指定できる操作になります。

* すべての処理
create 作成
delete 削除
get 取得
list 一覧取得
patch 一部変更
update 更新
watch 変更の追従

実際の実装は下記のようになります。
ここでは、create をroleに選択しています。

 

指定できるClusterRole

cluster-admin すべてのリソースを管理可能
admin ClusterRoleの編集 + NameSpeceレベルのRBAC
edit ReadWrite
view ReadOnly

 

Security Context

コンテナに対するセキュリティを設定できます。
containerのsecurityContextの箇所で設定します。

 

Pod Security Context

Podに対するセキュリティを設定できます。

 

Admission Control

Kubernetes APIサーバーにリエスと制御を追加で行う仕組みのことです。

3つのフェーズ

リソースが登録されるまで、下記3つの流れがあります。
①Authentication(認証)
②Authorization(認可)
③Admission Control

これを踏まえると、
Addmission Contorlフェーズでは、下記を行うことと説明できます
①リクエストの内容を許可するかどうかの判断
②リソースの改変
③柔軟なチェック

Admission Controllerで設定できる一例

・DefaultStorageClass
・DefaultTolerationSeconds
・LimitRanger
・NamespaceLifecycle
・PersistentVolumeClaimResize
・PodPreset
・PodSecurityPolicy
・ValidatingAdmissionWebhoo

 

次に向けて

下記記事にかかれているところ実際に実装できるようにしていきたいですね。
Kubernetesのセキュリティについて整理してみた件
それにしても勉強しなければいけないことがたくさんだわな….

 

参考にした記事

Kubernetesのセキュリティについて整理してみた件
KubernetesのRBACについて