当前位置: 首页 > 知识库问答 >
问题:

aws eks和aws sso RBAC认证问题

劳仲渊
2023-03-14

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

error: You must be logged in to the server (Unauthorized)
➜ cat ~/.aws/config

[profile team-sso-admin]
sso_start_url=https://team.awsapps.com/start
sso_region=us-west-2
sso_account_id=1111111111
sso_role_name=AdministratorAccess
region=us-west-2
credential_process = aws-vault exec team-sso-admin --json


➜ aws-vault exec team-sso-admin --debug -- zsh --login
➜ env | grep AWS
AWS_VAULT_PROMPT=pass
AWS_VAULT_BACKEND=pass
AWS_VAULT=team-sso-admin
AWS_DEFAULT_REGION=us-west-2
AWS_REGION=us-west-2
AWS_ACCESS_KEY_ID=xxx
AWS_SECRET_ACCESS_KEY=xxx
AWS_SESSION_TOKEN=xxx
AWS_SECURITY_TOKEN=yyy
AWS_SESSION_EXPIRATION=2021-01-11T05:55:51Z
AWS_SDK_LOAD_CONFIG=1

➜ aws sts get-caller-identity --output yaml 

Account: '111111111111'
Arn: arn:aws:sts::111111111111:assumed-role/AWSReservedSSO_AdministratorAccess_6c71da2aa3076dfb/TestUser
UserId: XXX:TestUser

➜ aws 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

{"kind": "ExecCredential", "apiVersion": "client.authentication.k8s.io/v1alpha1", "spec": {}, "status": {"expirationTimestamp": "2021-01-11T02:49:11Z", "token": "xxx"}}

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

AWS-Auth

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"

team-sso-devops用户的clusterrole绑定:

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

共有1个答案

毛缪文
2023-03-14

选项#1-尝试从role_arn(源代码)中删除aws-reserved/sso.amazonaws.com/

选项2-使用aws-iam-authenticator,官方文档提供了如何使用SSO和kubectl(kubeconfig)的完整示例

 类似资料:
  • 我们正在使用Apache PDFBox进行外部远程签名,源代码大部分是基于Apache PDFBox的官方示例。当我们尝试用多个签名签署一个文档时,我们注意到一些“问题”:它们是可见的签名。输入是带有一些签名持有者的文档。流程为:未签名的单据->签名(graphic_signature1,cert1,unsigned_doc)->签名_DOC_1->签名(graphic_signature2,ce

  • 到 RADOS 网关的 Requests 请求可能已经经过验证也可能没有经 过验证。RGW 假设所有未经验证的请求都是由匿名用户发送的。RGW 支持预置的 ACLs。 认证 对请求进行身份验证需要在它发送到 RGW 服务器之前就包含一个 access 密钥和基于散列消息验证码(HMAC)。RGW 使用兼容 S3 的身份验证方法。 HTTP/1.1 PUT /buckets/bucket/objec

  • 我正在使用Quarkus(1.3.2.final)开发一个新的REST服务,并试图将Firebase身份验证与Smallrye-Jwt集成,但失败了。 我的第一次尝试是将publicKey.location指向Google的URL,但失败了,因为有两个键,检查签名的正确publicKey取决于jwt“kid”标头值: 有一种方法可以集成Quarkus和Firebase认证?

  • 在个人中心已经认证过,并且显示已经认证,但是在创建对象存储时候显示未认证是什么鬼? 多次尝试刷新 创建等 均是该错误

  • 我试图用手机登录。每次我输入手机号码时,它都会显示这些错误消息并退出应用程序。我使用了https://firebase.flutter.dev/docs/auth/phone留档中的代码。代码几乎与留档相同。 我正在为Java/Flatter/Firebase sdk等所有东西使用更新版本。我还在Firebase应用程序中添加了SHA1密钥,并启用了手机认证。我还尝试了物理和虚拟设备。但每次都是同

  • 我正在使用wordpress rest api的JWT认证插件进行api访问认证,但问题是< code > https://example . com/WP-JSON/jwt-auth/v1/token 正在生成不允许的错误。 例如,如果我尝试在postman中运行此url``https://example.com/wp-json/jwt-auth/v1/token`该API还需要身份验证,因为它