首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RBAC访问kubernetes的单舱

使用RBAC访问kubernetes的单舱
EN

Stack Overflow用户
提问于 2020-07-23 13:09:46
回答 2查看 1K关注 0票数 1

我只想使用kubectl远程访问一个吊舱,所以按照这里的指示进行操作。

为此,我在kubernetes中创建了一个access.yml文件:

代码语言:javascript
复制
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: devops-user
  namespace: default

---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: devops-user-limited-access
  namespace: default
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["*"]
  verbs: ["*"]

---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: devops-user-view
  namespace: default
subjects:
- kind: ServiceAccount
  name: devops-user
  namespace: default
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: devops-user-limited-access

在我的远程笔记本电脑中,我在~/.kube/config中创建了一个文件,如下所示:

代码语言:javascript
复制
apiVersion: v1
kind: Config
preferences: {}

# Define the cluster
clusters:
- cluster:
    certificate-authority-data: <my-ca.crt>
    # You'll need the API endpoint of your Cluster here:
    server: https://<server-ip>:6443
  name: kubernetes

# Define the user
users:
- name: devops-user
  user:
    as-user-extra: {}
    client-key-data: <my-ca.crt>
    token: <token-created-by-k8s>

# Define the context: linking a user to a cluster
contexts:
- context:
    cluster: kubernetes
    namespace: default
    user: devops-user
  name: default

# Define current context
current-context: default

现在我可以“完全访问”到“所有吊舱”,但这不是我想要的。我只想要:

我要“完全进入”到“一个舱”。

EN

回答 2

Stack Overflow用户

发布于 2020-07-23 13:13:10

只需将其添加到您的角色文件中即可。

代码语言:javascript
复制
resourceNames: ["POD_NAME"]

所以你的角色yaml文件应该是这样的

代码语言:javascript
复制
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: devops-user-limited-access
  namespace: default
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["pods", "pods/log"]
  resourceNames: ["POD_NAME"] <-------------------------------here
  verbs: ["get", "list"]
票数 4
EN

Stack Overflow用户

发布于 2020-07-23 13:26:28

我建议采取不同的办法来解决这一问题。您可以使用特定的键值标记豆荚,然后使用OPA策略引擎和使用雷戈策略语言编写策略,该语言允许特定的服务帐户在带有特定标签的pod上执行某些操作,如读、写等操作。

在OPA中,验证的web钩子将根据您定义的策略允许或拒绝请求。

正如在其他答案中所建议的那样,如果您的荚是通过部署创建的,那么kubernetes提供的RBAC将无法工作,因为在这种情况下动态生成荚名。使用OPA,您可以拥有比Kubernetes RBAC更精细的控制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63055069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档