gpt4 book ai didi

amazon-web-services - 只读用户获得完全访问权限

转载 作者:行者123 更新时间:2023-12-02 12:29:06 26 4
gpt4 key购买 nike

目的是为我的 EKS 集群的生产命名空间创建一个只读用户。但是,我看到用户具有完全访问权限。由于我是 EKS 和 Kubernetes 的新手,请让我知道我注入(inject)的错误。

我在没有添加任何权限的情况下创建了一个 IAM 用户。 ARN 是:arn:aws:iam::460764xxxxxx:user/eks-prod-readonly-user。另外,我记下了访问 key ID 和 secret 访问 key -

aws_access_key_id= AKIAWWxxxxxxxxxxxxx
aws_secret_access_key= lAbtyv3zlbAMPxym8Jktal+xxxxxxxxxxxxxxxxxxxx

然后,我创建了生产命名空间、角色和角色绑定(bind),如下所示 –

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 时,它起作用了。理想情况下,它不应因为用户仅被授予对生产 namespace 的访问权限-

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:~$

让我们知道要解决的问题。提前致谢!

最佳答案

请首先尝试导出您所有的凭据作为环境变量而不是使用配置文件到终端:

export AWS_ACCESS_KEY_ID=XXX
export AWS_SECRET_ACCESS_KEY=XXX
export AWS_DEFAULT_REGION=us-east-2

这只是为了调试并确保问题不在您的配置中。

如果这不起作用 - 尝试使用下面的配置。

ClusterRoleBinding 和 ClusterRole:

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: eks-ro-user-binding
subjects:
- kind: User
name: eks-ro-user
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: eks-ro-user-cluster-role
apiGroup: rbac.authorization.k8s.io

---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: eks-ro-user-cluster-role
rules:
- apiGroups:
- ""
resources:
- '*'
verbs:
- get
- list
- watch
- apiGroups:
- extensions
resources:
- '*'
verbs:
- get
- list
- watch
- apiGroups:
- apps
resources:
- '*'
verbs:
- get
- list
- watch

AWS 身份验证配置映射(在您创建 IAM 用户之后):

apiVersion: v1
kind: ConfigMap
metadata:
name: aws-auth
namespace: kube-system
data:
mapRoles: |
- rolearn: arn:aws:iam::<account-id>:role/eks-node-group-role
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
mapUsers: |
- userarn: arn:aws:iam::<account-id>:user/eks-ro-user
username: eks-ro-user

关于amazon-web-services - 只读用户获得完全访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60277163/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com