kubernetes ArgoCD RBAC策略:配置Map与应用程序项目

pftdvrlh  于 2022-11-28  发布在  Kubernetes
关注(0)|答案(1)|浏览(128)

我正在尝试理解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可以访问AppProjectappproject-1中的任何资源,并且可以做任何事情(创建、同步等等),但是第二个设置没有给nxh6991@gmail.com任何东西。我确实认为这里的幕后发生了一些事情,但是我自己也搞不清楚。如果可能的话,你们能不能给我指出来?
事实上,我使用电子邮件nxh6991@gmail.com作为我的例子,因为我试图使用Google的SSO来设置ArgoCD。目前,我的SSO工作正常(这意味着人们可以使用自己的Google帐户访问Argo Web UI),我希望使用RBAC来限制对Argo CD资源的访问。(如team-dev、team-test等)只能访问他们自己的预定义AppProject,而不能访问其他的。我的意思是我应该使用ConfigMapAppProject的RBAC?或者我们有其他解决方案吗?
谢谢你们!

aelbi1ox

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。强烈推荐!

相关问题