启用 AWS Group 以访问 AWS EKS 集群

Enabling AWS Group to access AWS EKS cluster

这个问题本质上是 Adding IAM Group to aws-auth configmap in AWS EKS 的重复。但是,该问题没有公认的答案,我想提供更多背景信息。

我知道 aws-auth ConfigMap 对象不允许直接映射 AWS 组。解决方法是改为映射 AWS 角色。我试过了,但无法让它工作。映射 AWS 用户没有问题。

我将帐户 027755483893 的 AWS 角色 arn:aws:iam::027755483893:role/development-readwrite 设置为受信任的实体,并附加了以下信任策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::027755483893:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

我设置了一个 AWS 组 arn:aws:iam::027755483893:group/development-readwrite 并附加了以下策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": [
                "arn:aws:iam::027755483893:role/development-readwrite"
            ]
        }
    ]
}

我按如下方式设置 aws-auth ConfigMap:

apiVersion: v1
data:
  mapRoles: |
    # Other mappings omitted for clarity
    - groups:
      - system:masters
      rolearn: arn:aws:iam::027755483893:role/development-readwrite
  mapUsers: |
    []
kind: ConfigMap
metadata:
  creationTimestamp: "2019-08-21T08:25:15Z"
  name: aws-auth
  namespace: kube-system
  resourceVersion: "62031092"
  selfLink: /api/v1/namespaces/kube-system/configmaps/aws-auth
  uid: 33b33620-c3ed-11e9-83c0-029bc9dcca16

但是,组中 none 的用户可以访问集群。用户是否需要明确承担角色?还有什么我想念的吗?

在这种情况下,用户确实需要明确承担该角色。用户可以担任角色这一事实不足以让他们实际访问集群。

一种可以为您的用户简化它的方法是 creating a kubeconfig with the aws get token call。这允许您指定一个 role_arn 角色来承担集群。