gpt4 book ai didi

kubernetes - 如果我想让它与 aws EKS 一起使用,应该为 iam 用户分配什么策略

转载 作者:行者123 更新时间:2023-12-02 12:31:30 25 4
gpt4 key购买 nike

在官方文档 https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html 之后,我添加了 aws-auth 设置与 ConfigMap

# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: v1
data:
mapRoles: |
- rolearn: arn:aws:iam::555555555555:role/devel-worker-nodes-NodeInstanceRole-74RF4UBDUKL6
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
mapUsers: |
- userarn: arn:aws:iam::555555555555:user/admin
username: admin
groups:
- system:masters
- userarn: arn:aws:iam::111122223333:user/ops-user
username: ops-user
groups:
- system:masters

但我目前没有为用户 ops-user 分配任何策略。
[ops-user]
region = ap-southeast-2
aws_secret_access_key = xxxx
aws_access_key_id = xxxx

切换到 aws 配置文件后,我可以看到用户详细信息
$ export AWS_PROFILE=ops-user

$ aws sts get-caller-identity
{
"UserId": "AIDAJLD7JDWRXORLFXWYO",
"Account": "123456789012",
"Arn": "arn:aws:iam::123456789012:user/ops-user"
}

但是当我尝试管理 EKS 集群 pod、svc 等时,出现以下错误
$ kubectl get pods
error: You must be logged in to the server (Unauthorized)

那么如果我想让它只在 EKS kubernetes 集群中工作,应该为这个 iam 用户分配什么策略。

我不希望用户管理其他 aws 资源。

顺便说一句,我可以使用具有管理员策略的 iam 用户进行所有管理

最佳答案

我最近遇到了同样的问题,花了很多时间来克服这个问题。

仅创建用户并不会授予该用户访问集群中任何资源的权限。为了实现这一点,我们需要定义一个角色,然后将用户绑定(bind)到该角色。

创建文件 access.yaml(我们将创建用户(服务帐户)、角色,并将该角色附加到该用户。)

---
apiVersion: v1
kind: ServiceAccount
metadata:
name: eks-project-admin-user
namespace: project-ns

---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: eks-project-admin-user-full-access
namespace: project-ns
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["*"]
verbs: ["*"]
- apiGroups: ["batch"]
resources:
- jobs
- cronjobs
verbs: ["*"]

---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: eks-project-admin-user-view
namespace: project-ns
subjects:
- kind: ServiceAccount
name: eks-project-admin-user
namespace: project-ns
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: eks-project-admin-user-full-access

注意:确保将用户名从“eks-project-admin-user”更改为您的。

你可以用这个 site为您的用户提供类似的角色绑定(bind)(基于您的用例)。

现在,让我们创建所有这些:
kubectl create -f access.yaml

那么如果我想让它只在 EKS kubernetes 集群中工作,应该为这个 iam 用户分配什么策略。对于这个问题,请尝试以下策略 JSON(根据 AWS documentation )。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"eks:*"
],
"Resource": "*"
}
]
}

注意:在资源字段中,您也可以限制到特定的集群。

现在使用命令验证更改
kubectl get pods -n rbac-test

希望您现在不应该收到未经授权的错误。

关于kubernetes - 如果我想让它与 aws EKS 一起使用,应该为 iam 用户分配什么策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58423564/

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