Kubernetes 如何将同一RBAC角色分配给两个不同的IAM角色以访问EKS中的群集?

Kubernetes 如何将同一RBAC角色分配给两个不同的IAM角色以访问EKS中的群集?,kubernetes,yaml,amazon-iam,rbac,amazon-eks,Kubernetes,Yaml,Amazon Iam,Rbac,Amazon Eks,我想让某个团队访问系统:RBAC中的masters组。我的团队AWSReservedSSO_Admin_uuxxxxxxxxx在下面的示例中已经有了它,当我只添加了一个rolearn时,它就可以工作了,但是当我使用额外的rolearn应用下面的configmap时,AWSRervedSSO_Dev_uuxxxxxxxxx角色下的用户在尝试访问群集时仍会遇到此错误:错误:您必须未经授权登录到服务器 注意:我们使用的是AWS SSO,因此假定IAM角色为: -- 版本:v1 种类:配置地图 数据:

我想让某个团队访问系统:RBAC中的masters组。我的团队AWSReservedSSO_Admin_uuxxxxxxxxx在下面的示例中已经有了它,当我只添加了一个rolearn时,它就可以工作了,但是当我使用额外的rolearn应用下面的configmap时,AWSRervedSSO_Dev_uuxxxxxxxxx角色下的用户在尝试访问群集时仍会遇到此错误:错误:您必须未经授权登录到服务器

注意:我们使用的是AWS SSO,因此假定IAM角色为:

-- 版本:v1 种类:配置地图 数据: 地图角色:| -rolearn:arn:aws:iam::XXXXXXXXXX:角色/eks节点组 组: -系统:引导程序 -系统:节点 用户名:系统:节点:{{EC2PrivateDNSName} -rolearn:arn:aws:iam::xxxxxxxxxx:role/aws reserved/sso.amazonaws.com/awsrervedsso\u Admin\u xxxxxxxxx 组: -系统:硕士 用户名:admin -rolearn:arn:aws:iam::xxxxxxxxxx:role/aws reserved/sso.amazonaws.com/awsrervedsso_Dev_xxxxxxxxx 组: -系统:硕士 用户名:admin 元数据: 名称:aws auth 名称空间:kube系统
我不确定你是如何担任这些角色的❓ 您的配置看起来不错,但原因可能是您正在将同一用户映射到两个不同的角色。AWS IAM只允许用户一次只扮演一个角色

您可以尝试与不同的用户,并看到它为您工作

-- 版本:v1 种类:配置地图 数据: 地图角色:| -rolearn:arn:aws:iam::XXXXXXXXXX:角色/eks节点组 组: -系统:引导程序 -系统:节点 用户名:系统:节点:{{EC2PrivateDNSName} -rolearn:arn:aws:iam::xxxxxxxxxx:role/aws reserved/sso.amazonaws.com/awsrervedsso\u Admin\u xxxxxxxxx 组: -系统:硕士 用户名:admin -rolearn:arn:aws:iam::xxxxxxxxxx:role/aws reserved/sso.amazonaws.com/awsrervedsso_Dev_xxxxxxxxx 组: -系统:硕士 用户名:admin2 元数据: 名称:aws auth 名称空间:kube系统
您可能缺少的另一个方面是“信任关系”我不确定您是如何承担这些角色的❓ 您的配置看起来不错,但原因可能是您正在将同一用户映射到两个不同的角色。AWS IAM只允许用户一次只扮演一个角色

您可以尝试与不同的用户,并看到它为您工作

-- 版本:v1 种类:配置地图 数据: 地图角色:| -rolearn:arn:aws:iam::XXXXXXXXXX:角色/eks节点组 组: -系统:引导程序 -系统:节点 用户名:系统:节点:{{EC2PrivateDNSName} -rolearn:arn:aws:iam::xxxxxxxxxx:role/aws reserved/sso.amazonaws.com/awsrervedsso\u Admin\u xxxxxxxxx 组: -系统:硕士 用户名:admin -rolearn:arn:aws:iam::xxxxxxxxxx:role/aws reserved/sso.amazonaws.com/awsrervedsso_Dev_xxxxxxxxx 组: -系统:硕士 用户名:admin2 元数据: 名称:aws auth 名称空间:kube系统
您可能缺少的另一个方面是“信任关系”。当您使用SSO登录时,您将承担STS中的角色。您可以通过运行aws sts get caller identity来验证这一点

你是对的,用户名错了,但这并没有解决整个问题

花了很长时间,但我的队友终于找到了解决办法

问题在于IAM角色的ARN:

rolearn: arn:aws:iam::xxxxxxxxxxx:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_Dev_xxxxxxxxxx
此部分aws reserved/sso.amazonaws.com/需要从名称中删除。因此,最后结合Rico建议的用户名修复:

-- 版本:v1 种类:配置地图 数据: 地图角色:| -rolearn:arn:aws:iam::XXXXXXXXXX:角色/eks节点组 组: -系统:引导程序 -系统:节点 用户名:系统:节点:{{EC2PrivateDNSName} -ROLERN:arn:aws:iam::xxxxxxxxxx:role/AWSRervedSSO\U Admin\uUXXXXXXXXX 组: -系统:硕士 用户名:admin -ROLERN:arn:aws:iam::xxxxxxxxxx:role/AWSRervedSSO_Dev_uUXXXXXX 组: -系统:硕士 用户名:admin2 元数据: 名称:aws auth 名称空间:kube系统
问题终于解决了,担任角色的SSO用户可以运行kubectl命令

谢谢。当您使用SSO登录时,您将在STS中担任角色。您可以通过运行aws sts get caller identity来验证这一点

你是对的,用户名错了,但这并没有解决整个问题

花了很长时间,但我的队友终于找到了解决办法

问题在于IAM角色的ARN:

rolearn: arn:aws:iam::xxxxxxxxxxx:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_Dev_xxxxxxxxxx
此部分aws reserved/sso.amazonaws.com/需要从名称中删除。因此,最后结合Rico建议的用户名修复:

-- 版本:v1 种类:配置地图 数据: 地图角色:| -rolearn:arn:aws:iam::XXXXXXXXXX:角色/eks节点组 组: -系统:引导程序 -系统:节点 用户名:系统:节点:{{EC2PrivateDNSName} -ROLERN:arn:aws:iam::xxxxxxxxxx:role/AWSRervedSSO\U Admin\uUXXXXXXXXX 组: -系统:硕士 用户名:admin -ROLERN:arn:aws:iam::xxxxxxxxxx:role/AWSRervedSSO_Dev_uUXXXXXX 组: -系统:硕士 用户名:admin2 元数据: 名称:aws auth 名称空间:kube系统
问题终于解决了,担任角色的SSO用户可以运行kubectl命令

你好,Rico,谢谢你的解决方案。你是对的,用户名错了,但这不是主要问题。我把解决方案贴在了帖子上。非常感谢。你好,Rico,谢谢你的解决方案。你是对的,用户名错了,但这不是主要问题。我把解决方案贴在了帖子上。非常感谢。