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 を使用します