AWS EKS 集群的 "cluster creator" 用户如何映射到 "system:masters" RBAC 组?
How is the "cluster creator" user of an AWS EKS cluster mapped to the "system:masters" RBAC group?
我正在尝试了解如何为在 AWS 中创建 EKS 集群的第一个用户管理 RBAC 授权。
或者换句话说:集群创建者如何映射到 RBAC 中的“system:masters”组?
我知道这个 doc 状态:“当您创建 Amazon EKS 集群时,IAM 实体用户或角色(例如创建集群的联合用户)将被自动授予 system:masters 集群的 RBAC 配置中的权限。"
我了解 clusterrole cluster-admin 和 clusterrolebinding cluster-admin 如何向“system:masters”组的任何成员授予完全管理权限.
我想不通的是 how/where 集群创建者用户是否映射到该组? (文档的“自动授予”部分)
PS:我知道要添加额外的 user/roles 我应该使用 aws-auth 配置映射,但是这里没有定义第一个用户并且仍然有访问集群。
有谁能赐教吗?
提前致谢!
根据记录,我使用的是通过社区模块使用 terraform 构建的 kubernetes 1.18 EKS 集群 here :
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
}
请注意 aws-auth
configMap
不是唯一的真实来源。初始用户来自 MountedFile
所以我就此主题联系了 AWS Support。总结一下答案是:“你问的大部分是机密信息,不能透露。”。
我把完整的回复贴在这里:
感谢您联系 AWS 高级支持。我叫 *,我知道你对集群创建者成为 system:masters 组的一部分的实现细节感到好奇。
你问的大部分是机密信息,不能透露。
但是,我可以告诉您,EKS 控制平面有一个 Authenticator 组件。您可以按照此处 [1].
所述为此启用日志
就我个人而言,我喜欢将文档的“自动授予”部分视为 aws-auth 配置映射 mapUsers:
部分下的虚构的只读永久对象。虚构的,因为它没有在aws-auth configmap中实现,但是授予它的权限和它在那里一样。我在下面的例子 [2] 中创建了一个虚构的集群创建者用户对象,它显示了有效的实现
[1]:Amazon EKS 控制平面日志记录 - https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html
[2]:aws-auth configmap 示例
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 权限)
- 如果 IAM 实体被删除而其他 IAM 实体没有添加到 aws-auth 配置映射的必要权限 - 您有两个选择:
- 您必须重新创建同名的 IAM 实体才能重新获得对集群的访问权限,或者
- 删除集群并使用新的 IAM 实体创建新集群
我知道这可能不是您所希望的全部信息,但我希望它能帮助满足您的部分好奇心。
由于我无法深入回答您的问题,因此我会继续解决您的问题。
祝您度过愉快的一天,欢迎随时与我们联系。
我正在尝试了解如何为在 AWS 中创建 EKS 集群的第一个用户管理 RBAC 授权。
或者换句话说:集群创建者如何映射到 RBAC 中的“system:masters”组?
我知道这个 doc 状态:“当您创建 Amazon EKS 集群时,IAM 实体用户或角色(例如创建集群的联合用户)将被自动授予 system:masters 集群的 RBAC 配置中的权限。"
我了解 clusterrole cluster-admin 和 clusterrolebinding cluster-admin 如何向“system:masters”组的任何成员授予完全管理权限.
我想不通的是 how/where 集群创建者用户是否映射到该组? (文档的“自动授予”部分)
PS:我知道要添加额外的 user/roles 我应该使用 aws-auth 配置映射,但是这里没有定义第一个用户并且仍然有访问集群。
有谁能赐教吗?
提前致谢!
根据记录,我使用的是通过社区模块使用 terraform 构建的 kubernetes 1.18 EKS 集群 here :
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
}
请注意 aws-auth
configMap
不是唯一的真实来源。初始用户来自 MountedFile
所以我就此主题联系了 AWS Support。总结一下答案是:“你问的大部分是机密信息,不能透露。”。
我把完整的回复贴在这里:
感谢您联系 AWS 高级支持。我叫 *,我知道你对集群创建者成为 system:masters 组的一部分的实现细节感到好奇。
你问的大部分是机密信息,不能透露。
但是,我可以告诉您,EKS 控制平面有一个 Authenticator 组件。您可以按照此处 [1].
所述为此启用日志就我个人而言,我喜欢将文档的“自动授予”部分视为 aws-auth 配置映射 mapUsers:
部分下的虚构的只读永久对象。虚构的,因为它没有在aws-auth configmap中实现,但是授予它的权限和它在那里一样。我在下面的例子 [2] 中创建了一个虚构的集群创建者用户对象,它显示了有效的实现
[1]:Amazon EKS 控制平面日志记录 - https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html
[2]:aws-auth configmap 示例
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 权限)
- 如果 IAM 实体被删除而其他 IAM 实体没有添加到 aws-auth 配置映射的必要权限 - 您有两个选择:
- 您必须重新创建同名的 IAM 实体才能重新获得对集群的访问权限,或者
- 删除集群并使用新的 IAM 实体创建新集群
我知道这可能不是您所希望的全部信息,但我希望它能帮助满足您的部分好奇心。 由于我无法深入回答您的问题,因此我会继续解决您的问题。 祝您度过愉快的一天,欢迎随时与我们联系。