プロファイル適用性: レベル1
KubernetesのRolesとClusterRolesは、オブジェクトのセットとそれらのオブジェクトに対して実行できるアクションに基づいてリソースへのアクセスを提供します。これらのいずれかをワイルドカード「*」に設定することが可能で、すべての項目に一致します。
ワイルドカードの使用はセキュリティの観点から最適ではありません。これは、Kubernetes APIに新しいリソースがCRDとして追加されたり、製品の後のバージョンで追加されたりする際に、意図しないアクセスが許可される可能性があるためです。
最小特権の原則は、ユーザにその役割に必要なアクセスのみを提供し、それ以上は提供しないことを推奨します。ワイルドカード権限の使用は、Kubernetes APIに過剰な権限を与える可能性があります。
監査
クラスター内の各ネームスペースで定義されたロールを取得し、ワイルドカードを確認してください。
こちらは、動詞、リソース、または apiGroups のいずれかにワイルドカード (*) を使用しているロールとクラスターロールのみを表示し、どのフィールドがワイルドカードを使用しているかを示す、ヌルセーフでカラム形式のコマンドです。
kubectl get clusterrole,role -A -o json | jq -r ' def has_star(a): (a // []) | any(. == "*");
.items[] | . as $r |
( any($r.rules[]?; has_star(.verbs)) ) as $wv |
( any($r.rules[]?; has_star(.resources)) ) as $wr |
( any($r.rules[]?; has_star(.apiGroups)) ) as $wg |
select($wv or $wr or $wg) |
[ $r.kind, $r.metadata.name,
($r.metadata.namespace // "cluster-wide"),
([ if $wv then "verbs" else empty end,
if $wr then "resources" else empty end,
if $wg then "apiGroups" else empty end
] | join(","))
] | @tsv
' | awk -F'\t' '{printf "%-15s %-40s %-20s %-20s\n", $1, $2, $3, $4}'
コマンドからのサンプル出力:
KIND NAME NAMESPACE WILDCARD_IN --------------- ---------------------------------------- -------------------- -------------------- ClusterRole cluster-admin cluster-wide verbs,resources,apiGroups ClusterRole external-metrics-reader cluster-wide resources ClusterRole kubelet-api-admin cluster-wide verbs ClusterRole system:cloud-controller-manager cluster-wide resources,apiGroups ClusterRole system:controller:disruption-controller cluster-wide apiGroups ClusterRole system:controller:generic-garbage-collector cluster-wide resources,apiGroups ClusterRole system:controller:horizontal-pod-autoscaler cluster-wide resources,apiGroups ClusterRole system:controller:namespace-controller cluster-wide resources,apiGroups ClusterRole system:controller:resourcequota-controller cluster-wide resources,apiGroups ClusterRole system:gcp-controller-manager cluster-wide verbs ClusterRole system:gke-common-webhooks cluster-wide verbs,resources,apiGroups ClusterRole system:gke-hpa-actor cluster-wide resources,apiGroups ClusterRole system:glbc-status cluster-wide verbs ClusterRole system:kube-controller-manager cluster-wide resources,apiGroups ClusterRole system:kubelet-api-admin cluster-wide verbs ClusterRole system:kubestore-collector cluster-wide verbs,resources,apiGroups ClusterRole system:managed-certificate-controller cluster-wide verbs ClusterRole system:metrics-server-nanny cluster-wide verbs Role gke-spiffe-leaderelection kube-system verbs
修復
可能な場合は、clusterrolesやrolesでワイルドカードの使用を特定のオブジェクトやアクションに置き換えてください。
