2022年1月15日土曜日

Pod Security Policies(廃止) ->PodSecurity

 参照:

https://kubernetes.io/docs/concepts/security/pod-security-admission/

https://kubernetes.io/blog/2021/12/09/pod-security-admission-beta/

https://qiita.com/uesyn/items/cf47e12fba5e5c5ea25f


機能:

クラスタ(NameSpace)の範囲でセキュリティを適応する機能として

Pod Security Policiesがあるがver 1.25で廃止されてPodSecurityに変更される


ポイント:

以下のようにNameSpaceにラベルにルールを記載することでセキュリティが追加される。

(NameSpaceのデフォの作成時点では、関連したラベルがないのでセキュティの設定はされてない)



ポリシーは、ラベルを介して名前空間に適用されます。これらのラベルは次のとおりです。

例)

pod-security.kubernetes.io/<MODE(enforce | audit | worn)>: <LEVEL(privileged | baseline | restricted)> 

pod-security.kubernetes.io/<MODE(enforce | audit | worn)>-version: <VERSION>(オプション、デフォルトは最新)


<MODE>

enforce:ポリシー違反により、Podは拒否されます。

audit     :ポリシー違反は、監査ログに記録されたイベントへの監査注釈の追加をトリガーしますが、それ以外の場合は許可されます。

warn     :ポリシー違反はユーザー向けの警告をトリガーしますが、それ以外の場合は許可されます。


<LEVEL>

privileged   : オープンで無制限

baseline     : 制限を最小限に抑えながら、既知の特権昇格をカバーします

restricted   : 高度に制限され、既知および未知の特権エスカレーションに対して強化されます。



検証:

公式内容を参考に、コマンドベースでの検証を行ってみる。


1)検証用のnamespaceを作成する。

kubectl create namespace pod-security-test


2)ラベリングを行う。

(以下のラベルは、Podの作成を拒否することを表している。)

kubectl label namespace pod-security-test pod-security.kubernetes.io/enforce=restricted


3)対象のNameSpaceにラベルが付与されたとを確認

















4)試しに、指定したNameSpaceにデプロイを行うと。

kubectl -n  pod-security-test run test --dry-run=server --image=busybox --privileged



5)以下、メッセージが出て作成が失敗に終わります。




6)ラベルの上書きを行ってみる。

kubectl label --overwrite ns pod-security-test \

  pod-security.kubernetes.io/enforce=privileged \

  pod-security.kubernetes.io/warn=baseline \

  pod-security.kubernetes.io/audit=baseline



7)再度、デプロイを実施する。

以下、デプロイが出来てることが把握できる。






以下のようにマニュフェストの作成でも実施可能である。







0 件のコメント:

コメントを投稿

php log(ECS ログ出力)

# PHPエラーログの設定 ENV PHP_INI_DIR /usr/local/etc/php RUN { \ echo 'log_errors = On' ; \ echo 'error_log = /proc/self/...