はじめに
このチャレンジでは、Kubernetes ダッシュボード用の読み取り専用サービスアカウントを作成することで、Kubernetes クラスターのセキュリティを強化します。このプロセスを通じて、ロールベースアクセス制御(RBAC)への理解を深めることができます。具体的には、新しいサービスアカウントの作成、読み取り専用権限を持つクラスターロール(ClusterRole)の定義、およびそのロールのサービスアカウントへの紐付け(Binding)を行います。最後に、ダッシュボードへのログインに使用するサービスアカウント用のトークンを生成します。
Kubernetes ダッシュボードへの安全なアクセス
ジュニア DevOps エンジニアとして、Kubernetes ダッシュボード用の読み取り専用サービスアカウントを作成し、クラスターのセキュリティを向上させてください。このタスクでは、RBAC(ロールベースアクセス制御)の実践的なスキルが求められます。
タスク
- 提供された YAML ファイルを使用して、
kubernetes-dashboard名前空間にread-only-userという名前の新しいサービスアカウントを作成する - デフォルトの名前空間に対して読み取り専用権限を持つ
ClusterRoleを作成する。これには、pods、services、nodes、namespaces、deploymentsに対するget、list、watch操作を許可する - 作成した
ClusterRoleを、新しいサービスアカウントread-only-userに紐付ける - ダッシュボードのログインに使用するサービスアカウント用のトークンを生成する
要件
~/projectディレクトリで作業すること- サービスアカウントには
kubernetes-dashboard名前空間を使用すること read-only-dashboard-access.yamlという名前の YAML ファイルを作成すること- サービスアカウントには読み取り権限のみを付与すること
- アクセス範囲を
default名前空間に制限すること
以下の YAML ファイルの内容を使用してください:
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: read-only-user
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: read-only-dashboard-role
rules:
- apiGroups: [""]
resources: ["pods", "services", "nodes", "namespaces", "deployments"]
verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: read-only-dashboard-access
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: read-only-dashboard-role
subjects:
- kind: ServiceAccount
name: read-only-user
namespace: kubernetes-dashboard
例
サービスアカウントのトークン出力例:
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9...
ログイン後のダッシュボード表示例:
- 表示可能:名前空間のリソース、デプロイメント(Deployments)、ポッド(Pods)
- 表示不可(操作不能):作成(Create)、編集(Edit)、削除(Delete)操作
ヒント
- Minikube を起動し、Kubernetes ダッシュボードの公式リポジトリから
recommended.yamlファイルを適用してダッシュボードをデプロイします kubectl createおよびkubectl applyコマンドを使用しますClusterRoleとClusterRoleBindingの設定を確認してください- トークンを生成するには
kubectl -n kubernetes-dashboard create token read-only-userを使用します
まとめ
まとめると、このチャレンジでは Kubernetes ダッシュボード用の読み取り専用サービスアカウントを作成し、クラスターのセキュリティを強化しました。新しいサービスアカウントの作成、読み取り専用権限を持つクラスターロールの定義、およびそれらの紐付けを行い、最後にログイン用のトークンを生成しました。


