kubernetes AWS EKS集群的“集群创建者”用户如何Map到“system:masters”RBAC组?

ltskdhd1  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(3)|浏览(121)

我试图了解如何为在AWS中创建EKS集群的第一个用户管理RBAC授权。
或者换句话说:集群创建者如何Map到RBAC中的“system:masters”组?
我知道doc说:* “创建Amazon EKS群集时,IAM实体用户或角色(例如创建群集的联合用户)将在群集的RBAC配置中自动授予system:masters权限。"*
我还理解了clusterrole cluster-admin 和clusterrolebinding cluster-admin 如何向“system:masters”组的任何成员赠款完全的管理员权限。
我不明白的是集群创建者用户是如何/在哪里Map到这个组的?(文档中的“自动授予”部分)

  • PS:我知道要添加额外的用户/角色,我应该使用aws-authMap,但这里没有定义第一个用户,并且仍然可以访问集群。

如果有人能启发我,请?
提前感谢!
我使用的是kubernetes 1.18 EKS集群,它是通过社区模块here使用terraform构建的:

module "cluster" {
  source  = "terraform-aws-modules/eks/aws"
  version = "13.2.1"

  cluster_version = "1.18"
  cluster_name    = "memorandom-${local.id}"
  vpc_id          = module.vpc.vpc_id
  subnets         = module.vpc.private_subnets

  write_kubeconfig = false
  manage_aws_auth  = true

  worker_groups = [
    {
      instance_type = "t3.medium"
      asg_max_size  = 3
      key_name      = "pbenefice"
    }
  ]

  tags = local.tags
}
643ylb08

643ylb081#

所以我就这个问题寻求AWS支持。总结一下答案是:“* 您所询问的大部分内容都是机密信息,不能透露。*"。
我把完整的回复贴在这里:
感谢您联系AWS Premium支持。我的名字是 *,我知道你对集群创建者作为system:masters组的一部分的实现细节很好奇。
你问的大部分都是机密信息,不能透露。
但是,我可以告诉你,EKS控制平面有一个身份验证器组件。您可以按照此处所述的方式启用日志[1]。
就我个人而言,我喜欢把文档的“自动授权”部分看作aws-authMap的mapUsers:部分下的一个虚构的、只读的永久对象。因为它没有在aws-authMap中实现,但它被授予的权限与它在那里时相同。我在下面的示例中创建了一个假想的集群创建者用户对象[2],它显示了有效的实现
[1]:Amazon EKS控制平面日志记录-https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html
[2]:aws-auth验证Map示例

apiVersion: v1
data:
  mapRoles: |
    - rolearn: arn:aws:iam::111122223333:role/eksctl-my-cluster-nodegroup-standard-wo-NodeInstanceRole-1WP3NUE3O6UCF
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes
  mapUsers: |
    # The way EKS currently bootstraps your cluster permissions, you can think of the cluster-creator having a
    # read-only permanent entry here - the effective permissions are the same
    - userarn: arn:aws:iam::111122223333:user/cluster-creator
      username: cluster-creator
      groups:
        - system:masters
    # In an actual aws-auth configmap, the cluster-creator entry above isn't there and
    # only the mapUsers below would be shown
    - userarn: arn:aws:iam::111122223333:user/admin
      username: admin
      groups:
        - system:masters
    - userarn: arn:aws:iam::111122223333:user/ops-user
      username: ops-user
      groups:
        - system:masters

有关群集创建者RBAC权限的最重要的实际注意事项是:

  • 创建群集的IAM实体(用户或角色)始终具有管理员权限(system:masters权限)

1.如果删除了IAM实体,而没有向aws-authMap添加具有必要权限的其他IAM实体,则有两个选项:
1.您必须重新创建具有相同名称的IAM实体以重新获得对群集的访问权,或者
1.删除群集并使用新IAM实体创建新群集
我知道这可能不是你所希望的全部信息,但我希望它有助于满足你的好奇心。由于我不能深入到任何真实的深度来回答你的问题,我将继续解决你的问题。我希望你有一个美好的一天,请随时与我们联系。

j8yoct9x

j8yoct9x2#

请注意,aws-authconfigMap不是唯一的真理来源。初始用户来自MountedFile

5ktev3wc

5ktev3wc3#

IAM - Kubernetes RBACMap的aws-authMap实现是通过控制平面部署的动态webhook服务器(admission webhook)完成的。

  • 群集创建者Map在同一个webhook配置文件中,该文件用于根据aws-authMap对其他请求进行身份验证和授权
  • 群集创建器只是不写入aws-authMap,以避免错误的编辑或更改-some entity must always have access to the cluster是为此而设计的考虑因素
  • 尽管我们可能已经从AWS IAM中删除了IAM群集创建者-因此群集知道创建实体,但AWS帐户中不再存在该实体

相关问题