笔记-权限

2019-01-25  本文已影响0人  李潇_d8d7

k8s鉴权:

k8s不存储用户信息,主要有一下集中识别用户的方式

X509 Client Certs: 使用由 k8s 根 CA 签发的证书,提取O字段

Static Token File: 预先在 API Server 放置 Token 文件(bootstrap 阶段使用过)

Bootstrap Tokens: 一种在集群内创建的 Bootstrap 专用 Token(新的 Bootstarp 推荐)

Static Password File: 跟静态 Token 类似

Service Account Tokens: 使用 Service Account 的 Token

------------------------------------------------------------------------------------------------------------------------

RBAC(Role Base Access Control)

基于角色的权限控制

所有的外部访问都会经过集群的统一入口api-server进入集群,访问的方式有kubectl、客户端库以及restful请求。

Account:

ServiceAccounts:用来访问 kubernetes API,通过 kubernetes API 创建和管理,每个 account 只能在一个namespace 上生效,存

储在kubernetes API 中的 Secrets 资源。kubernetes 会默认创建,并且会自动挂载到Pod中的

/run/secrets/kubernetes.io/serviceaccount 目录下如果pod没有指定sa那么会使用默认的default

ROLE:定义权限规则,维度为namespace

CLusterRole:在集群维度来定义用户权限规则,忽略namespace

RoleBinding:将用户和rules进行绑定

ClusterRoleBinding:将用户与集群资源做绑定,可以使用ClusterRole绑定RoleBinding

------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------

创建dashboard登录用的账户过程

首先必须是SA

token认证:

创建sa,根据管理目标进行rolebinding和clusterrolebinding 绑定到role或者cluterrole

获取sa的secret查看token信息

(kubectl get secret lixiao-admin-token-8spcl -o jsonpath={.data.token} |base64 -d)

config文件认证

创建sa,根据管理目标进行rolebinding和clusterrolebinding 绑定到role或者cluterrole

创建配置文件:

kubectl config set-context lixiao@kubernetes --cluster=kubernetes --user=lixiao --kubeconfig=/datafs/lixiao.conf

kubectl config set-credentials lixiao --token=${sa_token} --kubeconfig=/datafs/lixiao.conf

kubectl config use-context lixiao@kubernetes --kubeconfig=/datafs/lixiao.conf

标准的配置文件包含三段

contexts:上下文描述集群和用户关系

current-context:当前上下文

users:包含用户名和集群中的tocken信息

其他节点使用kubectl配置需要导出主节点的

------------------------------------------------------------------------------------------------------------------------

证书认证:

CN:Common Name,kube-apiserver 从证书中提取该字段作为请求的用户名 (User Name)

“O”:Organization,kube-apiserver 从证书中提取该字段作为请求用户所属的组 (Group)

1:制作一组证书

2:将证书信息写入kubeconfig配置文件 kubectl config set-credentials

3:创建role和binding 绑定CN或者O (根据binding.subjects.kind)

cfssl和openssl

上一篇下一篇

猜你喜欢

热点阅读