Kubernetes aws eks和aws sso RBAC身份验证问题

Kubernetes aws eks和aws sso RBAC身份验证问题,kubernetes,amazon-eks,aws-sso,kubernetes-rbac,Kubernetes,Amazon Eks,Aws Sso,Kubernetes Rbac,我创建了一个新的AWS SSO,它使用内部IDP作为标识源,因此不使用Active Directory。 我可以登录AWS CLI、AWS GUI,但无法执行任何kubectl操作 错误:您必须未经授权登录到服务器 我想这与RBAC有关,因为我可以通过 aws eks获得代币 ➜ cat~/.aws/config [配置文件团队sso管理员] sso\u开始\u url=https://team.awsapps.com/start sso_地区=美国西部2 单点登录帐户id=1111111 ss

我创建了一个新的AWS SSO,它使用内部IDP作为标识源,因此不使用Active Directory。 我可以登录AWS CLI、AWS GUI,但无法执行任何kubectl操作

错误:您必须未经授权登录到服务器 我想这与RBAC有关,因为我可以通过 aws eks获得代币

➜ cat~/.aws/config [配置文件团队sso管理员] sso\u开始\u url=https://team.awsapps.com/start sso_地区=美国西部2 单点登录帐户id=1111111 sso\u角色\u名称=管理员访问 地区=美国西部2 credential_process=aws vault exec团队sso管理员-json ➜ aws vault exec团队sso管理员-调试-zsh-登录 ➜ 环境|格雷普AWS AWS_VAULT_提示符=通过 AWS_VAULT_后端=通过 AWS_VAULT=团队sso管理员 AWS_默认_地区=美国西部2 AWS_地区=美国西部-2 AWS\u访问\u密钥\u ID=xxx AWS\u密码\u访问\u密钥=xxx AWS_会话_令牌=xxx AWS\u安全性\u令牌=yyy AWS_SESSION_EXPIRATION=2021-01-11T05:55:51Z AWS\u SDK\u加载\u配置=1 ➜ aws sts获取调用方标识-输出yaml 账户:“111111111” Arn:Arn:aws:sts::111111111:假定角色/AWSRervedSSO_管理员访问_6c71da2aa3076dfb/TestUser UserId:XXX:TestUser ➜ aws eks get令牌-群集名称团队共享eks-角色arn:aws:iam::111111111:role/aws reserved/sso.amazonaws.com/us-west-2/AWSRervedSSO_AdministratorAccess_67d1da2aa3076dfb {kind:ExecCredential,apiVersion:client.authentication.k8s.io/v1alpha1,规范:{},状态:{expirationTimestamp:2021-01-11T02:49:11Z,令牌:xxx} 库贝孔菲格

aws认证

团队sso devops用户的clusterrole绑定:

选项1-尝试从角色\u arn中删除aws reserved/sso.amazonaws.com/

选项2-使用,提供如何使用SSO和kubectl kubeconfig的完整示例选项1-尝试从角色中删除aws reserved/SSO.amazonaws.com/


选项2-使用,提供了一个如何使用SSO和kubectl kubeconfig的完整示例,客户投票选择另一篇文章作为答案,但没有公布所使用的方法。对于可能遇到这种情况的其他人,我会发布我在相同场景下的工作内容:

此网站提供以下提示:

使用AWS控制台或类似方法验证角色并获取其arn 修改提供的arn,删除多余的路径信息。就我而言,我必须从arn中删除aws reserved/sso.amazonaws.com/us-west-2/。目标是使arn看起来像传统角色arn ex:arn:aws:iam::123456789012:role/RoleName 最后,更新aws auth map角色以使用此新arn,同时修改用户名以包含会话名称,如下所示: 提醒此mapRoles条目是对现有角色的补充,不要删除引导程序条目


我希望这能帮助别人

客户投票选择另一篇文章作为答案,但没有公布所使用的方法。对于可能遇到这种情况的其他人,我会发布我在相同场景下的工作内容:

此网站提供以下提示:

使用AWS控制台或类似方法验证角色并获取其arn 修改提供的arn,删除多余的路径信息。就我而言,我必须从arn中删除aws reserved/sso.amazonaws.com/us-west-2/。目标是使arn看起来像传统角色arn ex:arn:aws:iam::123456789012:role/RoleName 最后,更新aws auth map角色以使用此新arn,同时修改用户名以包含会话名称,如下所示: 提醒此mapRoles条目是对现有角色的补充,不要删除引导程序条目


我希望这能帮助别人

当前上下文`kubectl config current context'的名称空间是什么?您试图访问的是同一个上下文/名称空间吗?当前上下文的名称空间'kubectl config current context'是什么?这与您尝试访问的上下文/名称空间相同吗?@DmitrySemenov我很高兴您能解决它,哪个选项为您解决了问题?我最近遇到了这个问题,选项1为我解决了问题,但我也必须删除该区域。@DmitrySemenov我很高兴您能解决问题,哪个选项为您解决了问题?我最近遇到了这个问题,选项1为我解决了问题,但我也必须移除这个区域。你好。。。检查//观察。。。你的答案阐述得很差。插入带有代码和参考的有效响应非常有用。总结出切实有效的解决方案。这个平台不仅仅是任何论坛。我们是世界上最大的帮助和支持其他程序员和开发人员的中心。回顾社区的条款,学习如何发布;你好检查//观察。。。你的答案阐述得很差。插入带有代码和参考的有效响应非常有用。总结出切实有效的解决方案。这个平台不仅仅是任何论坛。我们是世界上最大的帮助和支持其他程序员和开发人员的中心。回顾社区的条款,学习如何发布;
config

- name: arn:aws:eks:us-west-2:111111111111:cluster/team-shared-eks
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      args:
      - --region
      - us-west-2
      - eks
      - get-token
      - --cluster-name
      - team-shared-eks
      - --role
      - arn:aws:iam::111111111111:role/aws-reserved/sso.amazonaws.com/us-west-2/AWSReservedSSO_AdministratorAccess_67d1da2aa3076dfb
      command: aws
mapRoles: |
    - "groups":
      - "system:bootstrappers"
      - "system:nodes"
      "rolearn": "arn:aws:iam::111111111111:role/team-shared-eks20210110051740674200000009"
      "username": "system:node:{{EC2PrivateDNSName}}"
    - "groups":
      - "system:master"
      "rolearn": "arn:aws:iam::111111111111:role/team-saml-devops"
      "username": "team-devops"
    - "groups":
      - "system:master"
      "rolearn": "arn:aws:iam::111111111111:role/aws-reserved/sso.amazonaws.com/us-west-2/AWSReservedSSO_AdministratorAccess_67d1da2aa3076dfb"
      "username": "team-sso-devops"

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  creationTimestamp: "2021-01-11T01:37:51Z"
  name: team:sso:devops
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: team-sso-devops
  namespace: default
- "groups":
  - "system:masters"
  "rolearn": "arn:aws:iam::123456789012:role/AWSReservedSSO_AWSAdministratorAccess_randomdigits"
  "username": "AWSAdministratorAccess:{{SessionName}}"