我正在尝试理解ArgoCD中的RBAC概念,我有一些问题。根据这个doc和这个doc,我发现我们可以使用ConfigMap
配置RBAC规则(argocd-rbac-cm)或直接在AppProject
中。我不明白的是,这两种选择之间有什么区别?比如在什么情况下,我们"因为当我这样做的时候,比如说:
# First Setup
# ConfigMap argocd-rbac-cm.yaml
...
policy.csv: |
p, role:test-role, applications, *, appproject-1/*, allow
g, nxh6991@gmail.com, role:test-role
scopes: ['email', 'group']
--------------------------------------
# Second setup
# AppProject
kind: AppProject
metadata:
name: appproject-1
...
spec:
roles:
- name: test-role
policies:
- p, role:test-role, applications, *, appproject-1/*, allow
- g, nxh6991@gmail.com, role:test-role
我发现这里没有什么不同但是第一个可以工作,而第二个不行。这意味着在第一个设置中,nxh6991@gmail.com
可以访问AppProject
appproject-1中的任何资源,并且可以做任何事情(创建、同步等等),但是第二个设置没有给nxh6991@gmail.com
任何东西。我确实认为这里的幕后发生了一些事情,但是我自己也搞不清楚。如果可能的话,你们能不能给我指出来?
事实上,我使用电子邮件nxh6991@gmail.com
作为我的例子,因为我试图使用Google的SSO来设置ArgoCD。目前,我的SSO工作正常(这意味着人们可以使用自己的Google帐户访问Argo Web UI),我希望使用RBAC来限制对Argo CD资源的访问。(如team-dev、team-test等)只能访问他们自己的预定义AppProject
,而不能访问其他的。我的意思是我应该使用ConfigMap
或AppProject
的RBAC?或者我们有其他解决方案吗?
谢谢你们!
1条答案
按热度按时间aelbi1ox1#
第一个问题:不确定您是否可以按照上面的方式在
AppProject
中分配用户。我只看到了策略和组分配的示例,而不是单个用户分配-https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#configuring-rbac-with-projects。您可能希望按组进行分配(无论如何,这种方式更好,因为如果您不想管理身份,则不必这样做)第二题:我在一个微服务架构中为300多名工程师管理RBAC;我们也有大约20个项目。我利用ConfigMap来控制访问(直到我们的Okta组策略进一步发展)。由于我们以声明方式管理Argo,我让用户将他们的电子邮件地址添加到正确项目下的rbac配置Map中;然后通过一个拉请求过程,在那里我(或我团队中的某个人)确认更改。我认为管理身份是超级重要的...所以我更喜欢拥有上帝般的权力来批准/拒绝人们。
此外,这是一个伟大的preso从核心贡献者(迈克尔克伦肖)围绕保护ArgoCD -https://www.youtube.com/watch?v=bRNMI29F2fI。强烈推荐!