【发布时间】:2020-09-21 02:39:58
【问题描述】:
目标是为我的 EKS 集群的生产命名空间创建一个只读用户。但是,我看到用户具有完全访问权限。由于我是 EKS 和 Kubernetes 的新手,请告诉我我注入的错误。
我创建了一个未添加任何权限的 IAM 用户。 ARN 是:arn:aws:iam::460764xxxxxx:user/eks-prod-readonly-user。另外,我已经记下了访问密钥 ID 和秘密访问密钥 -
aws_access_key_id= AKIAWWxxxxxxxxxxxxx
aws_secret_access_key= lAbtyv3zlbAMPxym8Jktal+xxxxxxxxxxxxxxxxxxxx
然后,我创建了生产命名空间、角色和角色绑定如下——
ubuntu@ip-172-16-0-252:~$ sudo kubectl create namespace production
ubuntu@ip-172-16-0-252:~$ cat role.yaml
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: production
name: prod-viewer-role
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["*"]
verbs: ["get", "list", "watch"]
ubuntu@ip-172-16-0-252:~$ sudo kubectl apply -f role.yaml
ubuntu@ip-172-16-0-252:~$ cat rolebinding.yaml
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: prod-viewer-binding
namespace: production
subjects:
- kind: User
name: eks-prod-readonly-user
apiGroup: ""
roleRef:
kind: Role
name: prod-viewer-role
apiGroup: ""
ubuntu@ip-172-16-0-252:~$ sudo kubectl apply -f rolebinding.yaml
然后,我们将新创建的用户添加到 aws-auth 配置映射并应用更改 -
ubuntu@ip-172-16-0-252:~$ sudo kubectl -n kube-system get configmap aws-auth -o yaml > aws-auth-configmap.yaml
ubuntu@ip-172-16-0-252:~$ vi aws-auth-configmap.yaml
以下部分添加在“mapUsers”下-
- userarn: arn:aws:iam::460764xxxxxx:user/eks-prod-readonly-user
username: eks-prod-readonly-user
groups:
- prod-viewer-role
ubuntu@ip-172-16-0-252:~$ sudo kubectl apply -f aws-auth-configmap.yaml
现在,我将此用户详细信息作为新部分包含在 AWS 凭证文件 (~/.aws/credentials) 中,以便此用户可以通过 Kubernetes 的 API 服务器进行身份验证 -
[eksprodreadonlyuser]
aws_access_key_id= AKIAWWxxxxxxxxxxxxx
aws_secret_access_key= lAbtyv3zlbAMPxym8Jktal+xxxxxxxxxxxxxxxxxxxx
region=eu-west-2
output=json
我激活了这个 AWS 配置文件 -
ubuntu@ip-172-16-0-252:~$ export AWS_PROFILE="eksprodreadonlyuser"
ubuntu@ip-172-16-0-252:~$ aws sts get-caller-identity
我们在 get-caller-identity 命令的输出中看到了正确的用户 ARN。
在尝试查看默认命名空间的 pod 时,它可以工作。理想情况下,它不应该只授予用户对生产命名空间的访问权限 -
ubuntu@ip-172-16-0-252:~$ sudo kubectl get pods
NAME READY STATUS RESTARTS AGE
test-autoscaler-697b95d8b-5wl5d 1/1 Running 0 7d20h
ubuntu@ip-172-16-0-252:~$
让知道要解决的指针。提前致谢!
【问题讨论】:
-
在我看来,那个 kubeconfig 文件仍然引用了您的旧 iam 配置文件。删除旧的 kubeconfig 文件并尝试使用您的
eksprodreadonlyuser配置文件获取新的 kubeconfig。
标签: amazon-web-services kubernetes kubectl amazon-eks