我发现一些人试图解决这个问题,这里和这里只有一些相关的帖子,但并没有为我解决这个问题。
问题:我想使用 ABAC 策略为我的集群创建一个只读用户。我的集群有 3 个 master 和 3 个 worker,版本 1.4.7 托管在 AWS 上。
我在所有 3 个主机上都编辑了 manifests/apiserver.yml(添加了这 3 行 - 在文件底部,当然我安装了相关路径等):
- --token-auth-file=/etc/kubernetes/policy/user-tokens.csv
- --授权模式=ABAC
- --authorization-policy-file=/etc/kubernetes/policy/apiusers.yml
我的 apiuser.yml 看起来像这样:
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"group": "system:authenticated", "readonly": true, "nonResourcePath": "*", "namespace": "*", "resource": "*", "apiGroup": "*"}}
我的 users-token.csv 看起来像这样:
tdU0ynyO3wG6UAzwWP0DO7wvF2tH8pbH,bob,bob
我的 kubeconfig 文件中有这个:
users:
- name: bob
user:
token: tdU0ynyO3wG6UAzwWP0DO7wvF2tH8pbH
当我尝试kubectl get nodes
失败时,如果相关,我可以使用 --v=8 打印输出,但它基本上说Forbidden(403)
. 在我看来,我在这里遗漏了一些基本的东西,该政策已经到位并阻止了一切和所有人,尽管它应该允许经过身份验证的用户只读权限。
任何形式的帮助或建议将不胜感激。