2022年1月15日土曜日

kube apiとの認証方法及びRBACについて

参照:
https://knowledge.sakura.ad.jp/21129/



認証方法について:

クライアントとkube apiとの認証方法は、以下の方式が利用可能である。

     ->今回は、x509公開鍵方式を実施してみる。

モジュール名

説明

X509 Client Certs

公開鍵証明書認証を利用して認証を行う

Static Token File

ユーザー名やトークンとなどを列挙したトークンファイルでユーザーを管理する

Bootstrap Tokens

ベータ機能。クラスタ構築時、まだ認証設定が行われていない状態で使われる。ユーザー情報は「kube-system」名前空間にSecretsとして格納される。ユーザーは有効期限付きで、一定期間で削除される

Static Password File

ユーザー名とパスワードなどを列挙したパスワードファイルでユーザーを管理する

Service Account Tokens

トークンを使って認証する、サービスアカウントの認証専用

OpenID Connect Tokens

OAuth 2を使った認証

Webhook Token Authentication

Webhookを使ってトークンを認証する

Authenticating Proxy

認証機能を持つプロクシなどが、「X-Remote-User」や「X-Remote-Group」といったHTTPヘッダを使って認証情報を付与する





検証:

x509公開鍵認証(TLS/SSL)の方式を使ったkube-apiとクライアント側の

認証方法を検証してみる。



1)master nodeにログインを行う。


2)pkiフォルダーに移動する。




3)秘密鍵の作成を行う。

openssl genrsa -out user.key 2018



4)秘密鍵ファイルを使って署名リクエストファイルを作成する。

①CN :ユーザー名

②O   :グループ名

openssl req -new -key myuser.key -out myuser.csr -subj '/CN=test01/O=test’



5)CA証明書(ca.crt)とCA鍵(ca.key)ファイルを使ってCSR(user.csr)ファイルから証明書ファイル(ファイル名:user.crt)を作成する。

  ->有効期限を1000日する。

openssl x509 -req -in user.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out user.crt -days 10000


6)上記で作成した証明書をapiに登録を行う。

kubectl config set-credentials test01 --client-certificate=user.crt --client-key=user.key --embed-certs=true


7)contextの作成を行う。

kubectl config set-context test --user=test01 --cluster=kubernetes



8)contextをtestに切り替え後に、コマンドを実行してみる。

   ->拒否されていることが確認できる。





RBAC検証:

作成したcontext(test)を使ってRBACの検証を行ってみる。


1)Podの参照のみ許可にした、ClusterRoleClusterRoleBindingの作成を行ってみます。 















2)Podの確認ができることが把握できます。








3)Pod以外のnode確認をしてみると、拒否(Foridden)されていることが把握できます。




4)nodeを追加することで、許可されるのか確認してみます。





















5)以下、nodeの確認することができました。








6)削除の権限が付与されてないので、間違えて消すことも

無くなることが把握できる。




0 件のコメント:

コメントを投稿

php log(ECS ログ出力)

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