--etcd-cafile # etcd CA 证书
--etcd-certfile # APIServer 访问 etcd client 公钥
--etcd-keyfile # APIServer 访问 etcd client 密钥
--client-ca-file # 验证访问 APIServer 的 client CA 证书
--tls-cert-file # APIServer 服务的公钥
--tls-private-key-file # APIServer 服务的密钥
--service-account-key-file # 验证 ServiceAccount tokens 的公钥
--service-account-signing-key-file # ServiceAccount tokens 签名密钥
--kubelet-client-certificate # 访问 kubelet 的公钥
--kubelet-client-key # 访问 kubelet 的密钥
--requestheader-client-ca-file # 用于签名 --proxy-client-cert-file 和--proxy-client-key-file 指定的证书,启用 aggregator 时使用
--proxy-client-cert-file # 用于请求 aggregator client 公钥
--proxy-client-key-file # 用于请求 aggregator client 密钥
以上主要介绍 TLS 认证,认证之后我们如何在认证基础上针对资源授权管理呢?这里就要介绍到 RBAC 机制。RBAC,字面意思就是基于角色的权限访问控制。Kubernetes 中的 RBAC 主要涉及到上面提到的 ClusterRole/ClusterRoleBinding/Role/RoleBinding 的资源,其中 ClusterRole/ClusterRolebinding 是全局的角色,Role/RoleBind 是针对 namespace 级别的角色。Role 是对用户拥有权限的抽象,RoleBinding 将角色绑定到用户(User)、组(Group)或者服务账户(Service Account)。下图更为形象的展示了对应关系:
ClusterRoleBinding 中 subjects 则定义了 ServiceAccount 以及对应的空间(subjects 还可以是组或者 Service Account,其中组对应 TLS 证书中的 O 字段)。上文提过证书中的
CN
和
O
作为用户和组标识字段,ClusterRoleBinding/RoleBinding 关联 ClusterRole/Role 和 subjects,在只定义 ServiceAccount 的情况下,CN 要生效,可以加上
system:serviceaccount:
前缀,如 CoreDNS 的例子,如要 TLS 方式访问,可以配置 CN 为
system:serviceaccount:coredns
,详情可以参见
Using RBAC Authorization
。
- cluster:
certificate-authority: /etc/kubernetes/pki/ca.pem # CA 证书地址
server: https://<APIServer>:<APIServerPort> # APIServer 地址
name: bootstrap
contexts:
- context:
cluster: bootstrap
user: kubelet-bootstrap
name: bootstrap
current-context: bootstrap
preferences: {}
users:
- name: kubelet-bootstrap
user:
token: 50bc4305185c3c2d8e31cab9223a8107 # APIServer 定义的 bootstrap token
节点和节点状态(通过 NodeRestriction 准入控制插件限制 kubelet 修改自身的节点)
pods 和 pods 状态(通过 NodeRestriction 准入控制插件限制 kubelet 修改自身调度的 pods)
events
TLS bootstrapping 读写访问 certificationsigningrequests API
检查和创建 tokenreviews and subjectaccessreviews 认证授权的能力
Kubernetes RBAC 101: authorization
Kubernetes TLS bootstrapping
TLS bootstrapping | Kubernetes
PKI certificates and requirements | Kubernetes
Using RBAC Authorization | Kubernetes
Authorization Overview | Kubernetes
Using Node Authorization | Kubernetes