授予AWS账户的所有用户访问EKS集群的权限

时间:2020-11-02 11:25:27

标签: amazon-web-services amazon-eks

我已经创建了一个EKS集群。目前只有我可以通过kubectl访问它。我想让我所有的大学都可以使用它。我们都有相同的AWS帐户中的用户。

如果我正确理解了https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html中的文档,则必须分别添加每个用户。

有没有更简单的方法?

2 个答案:

答案 0 :(得分:0)

最简单的方法是在mapAccounts配置映射中使用aws-auth

请参阅aws-iam-authenticator上的文档。

https://github.com/kubernetes-sigs/aws-iam-authenticator/blob/master/README.md

通过使用mapAccounts,您可以将所有IAM用户映射到eks集群;如果用户具有正确的IAM权限进行连接,则他们应该能够进行身份验证。

答案 1 :(得分:0)

通过将帐户添加到 mapAccounts 配置映射中的 aws-auth 部分,您只能获得身份验证。

这意味着 kubernetes 会将您的 IAM 用户的 arn - 类似于:arn:aws:iam::111111111111:user/myIAMUser- 分配给 kubernete 的 username,但您没有任何权利做任何事情,甚至没有列出豆荚。

此外,您还必须创建(集群)RoleBindings 以授予用户权限。

例如,为了给之前的用户对所有命名空间的只读访问权限,我们创建了一个包含以下内容的 ClusterRoleBinding

# This role binding allows the user to read in all namespaces.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
    name: myIAMUser-readOnly
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: arn:aws:iam::111111111111:user/myIAMUser
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: view

有关 kubernetes 中定义的面向用户的角色的更多信息可以在 documentation 中找到。

另一种可能的解决方案是编辑 mapUsers 配置映射中的 aws-auth 部分。我不喜欢这种方法,因为每次要添加用户时都必须修改 aws-auth 配置映射,并且可能会错误地修改文件的其他部分或损坏内容。此外,添加或删除角色绑定比编辑现有文件更容易自动化。

有关 aws-auth 配置映射格式的更多信息,请参见 here