允许 AWS 组访问 AWS EKS 集群

Jaa*_*rus 4 amazon-web-services amazon-iam amazon-eks

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

我知道aws-authConfigMap 对象不允许直接映射 AWS 组。解决方法是映射 AWS 角色。我尝试过,但无法让它工作。映射 AWS 用户可以正常工作。

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

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::027755483893:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我设置了一个 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"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我按如下方式设置aws-authConfigMap:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::027755483893:root"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

但是,组中的任何用户都无权访问集群。用户是否需要明确承担角色?我还缺少什么吗?

Blo*_*je5 6

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

可以为用户简化它的一种方法是通过调用创建 kubeconfigaws get token。这允许您指定要为集群承担的角色的 role_arn。