我知道有很多类似的问题,但就我所浏览的而言,没有一个解决方案。 谈到这个问题,我创建了一个服务帐户(使用命令),角色(使用.yaml文件),角色绑定(使用.yaml文件)。该角色仅授予对Pod的访问权限。但是,当我使用角色附加到的SA登录到仪表板(令牌方法)时,我可以不受限制地查看所有资源。这是我使用的文件和命令。
Role.yaml:
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: assembly-prod
name: testreadrole
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
RoleBinding.yaml
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: testrolebinding
namespace: assembly-prod
subjects:
- kind: ServiceAccount
name: testsa
apiGroup: ""
roleRef:
kind: Role
name: testreadrole
apiGroup: rbac.authorization.k8s.io
用于创建服务帐户的命令:
kubectl create serviceaccount <saname> --namespace <namespacename>
更新:我创建了一个服务帐户,但没有为其添加任何角色。当我尝试使用此SA登录时,它让我通过,并且能够执行包括删除“秘密”在内的各种活动。因此,默认情况下,所有SA都假定具有管理员访问权限,这就是我上述角色不起作用的原因。这是预期的行为吗,如果可以,我该如何更改?
答案 0 :(得分:0)
我发现您提供的library(tidyverse)
dfoo %>%
group_by(eye) %>%
mutate(
phak = na_if(status, "pseudo"),
pseudo = na_if(status, "phak")
) %>%
fill(phak, .direction = "up") %>%
fill(pseudo, .direction = "down") %>%
transmute(status = coalesce(phak, pseudo)) %>%
ungroup()
#> # A tibble: 15 x 2
#> eye status
#> <chr> <chr>
#> 1 a phak
#> 2 a phak
#> 3 a <NA>
#> 4 a pseudo
#> 5 a pseudo
#> 6 b <NA>
#> 7 b pseudo
#> 8 b pseudo
#> 9 b pseudo
#> 10 b pseudo
#> 11 c phak
#> 12 c phak
#> 13 c <NA>
#> 14 c <NA>
#> 15 c <NA>
需要一些调整。
dfoo <- structure(list(eye = c("a", "a", "a", "a", "a", "b", "b", "b",
"b", "b", "c", "c", "c", "c", "c"), status = c(NA, "phak", NA,
"pseudo", NA, NA, "pseudo", NA, NA, NA, "phak", "phak", NA, NA,
NA)), row.names = c(NA, -15L), class = "data.frame")
在.yamls
部分之后的格式错误。
Role
在rules
之后缺少RoleBinding
,并且格式错误。
尝试这样的事情:
namespace:
有一本关于Non-Privileged RBAC User Administration in Kubernetes的非常有用的指南,您可以在其中找到有关此特定主题的更多详细信息。
请让我知道是否有帮助。
答案 1 :(得分:0)
尝试以下步骤
# create service account
kubectl create serviceaccount pod-viewer
# Create cluster role/role
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: pod-viewer
rules:
- apiGroups: [""] # core API group
resources: ["pods", "namespaces"]
verbs: ["get", "watch", "list"]
---
# create cluster role binding
kubectl create clusterrolebinding pod-viewer \
--clusterrole=pod-viewer \
--serviceaccount=default:pod-viewer
# get service account secret
kubectl get secret | grep pod-viewer
pod-viewer-token-6fdcn kubernetes.io/service-account-token 3 2m58s
# get token
kubectl describe secret pod-viewer-token-6fdcn
Name: pod-viewer-token-6fdcn
Namespace: default
Labels: <none>
Annotations: kubernetes.io/service-account.name: pod-viewer
kubernetes.io/service-account.uid: bbfb3c4e-2254-11ea-a26c-0242ac110009
Type: kubernetes.io/service-account-token
Data
====
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6InBvZC12aWV3ZXItdG9rZW4tNmZkY24iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoicG9kLXZpZXdlciIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImJiZmIzYzRlLTIyNTQtMTFlYS1hMjZjLTAyNDJhYzExMDAwOSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0OnBvZC12aWV3ZXIifQ.Pgco_4UwTCiOfYYS4QLwqgWnG8nry6JxoGiJCDuO4ZVDWUOkGJ3w6-8K1gGRSzWFOSB8E0l2YSQR4PB9jlc_9GYCFQ0-XNgkuiZBPvsTmKXdDvCNFz7bmg_Cua7HnACkKDbISKKyK4HMH-ShgVXDoMG5KmQQ_TCWs2E_a88COGMA543QL_BxckFowQZk19Iq8yEgSEfI9m8qfz4n6G7dQu9IpUSmVNUVB5GaEsaCIg6h_AXxDds5Ot6ngWUawvhYrPRv79zVKfAxYKwetjC291-qiIM92XZ63-YJJ3xbxPAsnCEwL_hG3P95-CNzoxJHKEfs_qa7a4hfe0k6HtHTWA
ca.crt: 1025 bytes
namespace: 7 bytes
```
Login to dashboard using the above token. you should see only pods and namespaces
[![Refer the below link][1]][1]
[1]: https://i.stack.imgur.com/D9bDi.png
答案 2 :(得分:0)
好的,我已经找到解决方案。主要问题是我在Azure AKS上运行群集,我应该在问题中提到它,但没有这样做。是我的错在Azure AKS中,如果在创建AKS时未启用rbac,则根本不使用角色和角色绑定。对api服务器的所有请求都将被视为来自Admin的请求。 Azure支持也证实了这一点。因此,这就是我的群集角色绑定和角色不适用的原因。