【问题标题】:How can I assign the same RBAC role to two different IAM roles to access a cluster in EKS?如何将相同的 RBAC 角色分配给两个不同的 IAM 角色以访问 EKS 中的集群?
【发布时间】:2020-11-13 15:45:21
【问题描述】:

我想授予某个团队访问 RBAC 中 system:masters 组的权限。我的团队(下面示例中的AWSReservedSSO_Admin_xxxxxxxxxx)已经拥有它,并且当我只添加一个rolearn 时它可以工作,但是当我应用下面的配置映射和额外的rolearn 时,AWSReservedSSO_Dev_xxxxxxxxxxrole 下的用户仍然会得到这个尝试访问集群时出错:error: You must be logged in to the server (Unauthorized)

(注意:我们使用的是 AWS SSO,因此假定了 IAM 角色):

---
apiVersion: v1
kind: ConfigMap
data:
  mapRoles: |
    - rolearn: arn:aws:iam::xxxxxxxxxxx:role/eks-node-group
      groups:
      - system:bootstrappers
      - system:nodes
      username: system:node:{{EC2PrivateDNSName}}
    - rolearn: arn:aws:iam::xxxxxxxxxxx:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_Admin_xxxxxxxxxx
      groups:
      - system:masters
      username: admin
    - rolearn: arn:aws:iam::xxxxxxxxxxx:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_Dev_xxxxxxxxxx
      groups:
        - system:masters
      username: admin
metadata:
  name: aws-auth
  namespace: kube-system

【问题讨论】:

    标签: kubernetes yaml amazon-iam rbac amazon-eks


    【解决方案1】:

    我不确定您是如何承担角色的 ❓ 并且您的配置看起来不错,但原因可能是您将同一用户映射到两个不同的角色。 AWS IAM 仅允许用户一次仅担任一个角色basically, as an AWS IAM user, you can't assume multiple IAM roles at the same time

    您可以尝试使用不同的用户,看看它是否适合您。

    ---
    apiVersion: v1
    kind: ConfigMap
    data:
      mapRoles: |
        - rolearn: arn:aws:iam::xxxxxxxxxxx:role/eks-node-group
          groups:
          - system:bootstrappers
          - system:nodes
          username: system:node:{{EC2PrivateDNSName}}
        - rolearn: arn:aws:iam::xxxxxxxxxxx:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_Admin_xxxxxxxxxx
          groups:
          - system:masters
          username: admin
        - rolearn: arn:aws:iam::xxxxxxxxxxx:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_Dev_xxxxxxxxxx
          groups:
            - system:masters
          username: admin2
    metadata:
      name: aws-auth
      namespace: kube-system
    

    您可能缺少的另一个方面是您的arn:aws:iam::xxxxxxxxxxx:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_Dev_xxxxxxxxxx 角色中的“信任关系”?,它允许admin 担任该角色。

    ✌️☮️

    【讨论】:

    • 嗨,Rico,感谢您提供此解决方案。用户名错误是对的,但这不是主要问题。我在帖子中发布了解决方案。谢谢!
    【解决方案2】:

    谢谢里科。当您使用 SSO 登录时,您将在 STS 中担任一个角色。您可以通过运行aws sts get-caller-identity 来验证这一点。

    你是对的,用户名错误,但它并没有解决整个问题。

    花了很长时间,但我的队友终于找到了解决此问题的方法in this guide

    问题在于 IAM 角色的 ARN:

    rolearn: arn:aws:iam::xxxxxxxxxxx:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_Dev_xxxxxxxxxx
    

    这部分aws-reserved/sso.amazonaws.com/ 需要从名称中删除。所以最后结合 Rico 建议的用户名修复:

    ---
    apiVersion: v1
    kind: ConfigMap
    data:
      mapRoles: |
        - rolearn: arn:aws:iam::xxxxxxxxxxx:role/eks-node-group
          groups:
          - system:bootstrappers
          - system:nodes
          username: system:node:{{EC2PrivateDNSName}}
        - rolearn: arn:aws:iam::xxxxxxxxxxx:role/AWSReservedSSO_Admin_xxxxxxxxxx
          groups:
          - system:masters
          username: admin
        - rolearn: arn:aws:iam::xxxxxxxxxxx:role/AWSReservedSSO_Dev_xxxxxxxxxx
          groups:
            - system:masters
          username: admin2
    metadata:
      name: aws-auth
      namespace: kube-system
    

    问题终于解决了,承担该角色的 SSO 用户可以运行kubectl 命令!

    【讨论】:

      猜你喜欢
      • 2022-07-28
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2018-06-13
      • 1970-01-01
      • 2012-11-20
      • 2019-11-06
      相关资源
      最近更新 更多