Kubernetes ダッシュボードへの安全なアクセス

KubernetesBeginner
オンラインで実践に進む

はじめに

このチャレンジでは、Kubernetes ダッシュボード用の読み取り専用サービスアカウントを作成することで、Kubernetes クラスターのセキュリティを強化します。このプロセスを通じて、ロールベースアクセス制御(RBAC)への理解を深めることができます。具体的には、新しいサービスアカウントの作成、読み取り専用権限を持つクラスターロール(ClusterRole)の定義、およびそのロールのサービスアカウントへの紐付け(Binding)を行います。最後に、ダッシュボードへのログインに使用するサービスアカウント用のトークンを生成します。

Kubernetes ダッシュボードへの安全なアクセス

ジュニア DevOps エンジニアとして、Kubernetes ダッシュボード用の読み取り専用サービスアカウントを作成し、クラスターのセキュリティを向上させてください。このタスクでは、RBAC(ロールベースアクセス制御)の実践的なスキルが求められます。

タスク

  • 提供された YAML ファイルを使用して、kubernetes-dashboard 名前空間に read-only-user という名前の新しいサービスアカウントを作成する
  • デフォルトの名前空間に対して読み取り専用権限を持つ ClusterRole を作成する。これには、podsservicesnodesnamespacesdeployments に対する getlistwatch 操作を許可する
  • 作成した 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 コマンドを使用します
  • ClusterRoleClusterRoleBinding の設定を確認してください
  • トークンを生成するには kubectl -n kubernetes-dashboard create token read-only-user を使用します
✨ 解答を確認して練習

まとめ

まとめると、このチャレンジでは Kubernetes ダッシュボード用の読み取り専用サービスアカウントを作成し、クラスターのセキュリティを強化しました。新しいサービスアカウントの作成、読み取り専用権限を持つクラスターロールの定義、およびそれらの紐付けを行い、最後にログイン用のトークンを生成しました。