1

我发现一些人试图解决这个问题,这里这里只有一些相关的帖子,但并没有为我解决这个问题。

问题:我想使用 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). 在我看来,我在这里遗漏了一些基本的东西,该政策已经到位并阻止了一切和所有人,尽管它应该允许经过身份验证的用户只读权限。

任何形式的帮助或建议将不胜感激。

4

1 回答 1

1

system:authenticated组是在 1.5 中添加的

在 1.5 之前,您可以使用"user":"*"

于 2017-02-20T14:37:44.850 回答