4

我试图了解如何为在 AWS 中创建 EKS 集群的第一个用户管理 RBAC 授权。
或者换句话说:集群创建者如何映射到 RBAC 中的“system:masters”组?

我知道该文档指出:“当您创建 Amazon EKS 集群时,IAM 实体用户或角色(例如创建集群的联合身份用户)会在集群的 RBAC 配置中自动获得 system:masters 权限。”
而且我了解 clusterrole cluster-admin和 clusterrolebinding cluster-admin如何向“system:masters”组的任何成员授予完整的管理员权限。

我无法弄清楚集群创建者用户如何/在哪里映射到该组?(文档的“自动授予”部分)

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

如果有人可以启发我吗?

提前致谢!

作为记录,我使用的是 kubernetes 1.18 EKS 集群,该集群是通过社区模块使用 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
}
4

2 回答 2

2

所以我就这个话题联系了 AWS Support。总结答案是:“你所问的大部分是机密信息,不能透露。 ”。

我在这里粘贴完整的回复:


感谢您联系 AWS 高级支持。我的名字是 *,我知道您对集群创建者加入 system:masters 组的实现细节感到好奇。

您询问的大部分内容都是机密信息,不能透露。

但是,我可以告诉您,EKS 控制平面有一个 Authenticator 组件。您可以按照此处 [1] 的描述为此启用日志。

mapUsers:就个人而言,我喜欢将文档的“自动授予”部分视为aws-auth configmap 部分下的虚构只读永久对象。虚构的,因为它没有在 aws-auth configmap 中实现,但授予它的权限与它在那里一样。我在下面的示例 [2] 中创建了一个虚构的集群创建者用户对象,它显示了有效的实现

[1]:Amazon EKS 控制平面日志记录 - https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html

[2]:示例 aws-auth 配置图

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 实体(用户或角色)始终具有管理员权限(系统:主权限)
  • 如果 IAM 实体被删除而没有添加其他 IAM 实体并具有对 aws-auth configmap 的必要权限 - 您有两种选择:
    1. 您必须重新创建具有相同名称的 IAM 实体才能重新获得对集群的访问权限,或者
    2. 删除集群并使用新的 IAM 实体创建新集群

我知道这可能不是您希望的所有信息,但我希望它有助于满足您的部分好奇心。由于我无法深入回答您的问题,因此我将继续解决您的问题。我希望你有一个美好的一天,请随时与我们联系。

于 2020-11-29T13:46:30.963 回答
0

请注意,这aws-auth configMap不是唯一的事实来源。初始用户来自MountedFile

于 2020-11-22T16:40:50.433 回答