参照:
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の参照のみ許可にした、ClusterRoleとClusterRoleBindingの作成を行ってみます。
2)Podの確認ができることが把握できます。
3)Pod以外のnode確認をしてみると、拒否(Foridden)されていることが把握できます。
4)nodeを追加することで、許可されるのか確認してみます。
5)以下、nodeの確認することができました。
6)削除の権限が付与されてないので、間違えて消すことも
無くなることが把握できる。
0 件のコメント:
コメントを投稿