Open lqshow opened 5 years ago
k8s APIServer 负责对外提供 k8s API 服务,它运行在 k8s 的 master 节点上。
作为系统管理指令的统一入口,APIServer 担负着统揽全局的重任,任何对资源进行增删改查的操作都需要交给 APIServer处理后才能提交给 etcd。
APIServer 启动过程中进行了3个初始化操作,创建了3个对象:认证,授权和多维资源管理。
所以访问 k8s 集群资源需要过三关:认证,鉴权,多维资源管理
安全级别高
kubectl --server=https://192.168.99.100:8443 --certificate-authority=ca.crt --client-key=client.key --client-certificate=client.crt get nodes
安全级别中
kubectl --token
Authorization: Bearer ${token}
kubectl --server=https://192.168.99.100:8443 --token=xxx --insecure-skip-tls-verify=true get nodes
curl -k --header "Authorization: Bearer xxx" https://192.168.99.100:8443/api
安全级别低,不建议在生产环境中使用
kubectl --username --passwrod
Authorization: Basic BASE64ENCODED(USER:PASSWORD)
kubectl --server=https://192.168.99.100:8443 --username=admin --password=1234 --insecure-skip-tls-verify=true get nodes
curl -k --header "Authorization: Basic YWRtaW46MTIzNAo=" https://192.168.99.100:8443/api
用户认证后,对指定的资源是否有权限访问,还需要经过授权环节。
授权主要是用于对集群资源的访问控制,通过检查请求包含的相关属性值,与相对应的访问策略相比较,API 请求必须满足某些策略才能被处理。
API Server 支持多只授权策略,通过启动参数"--authorization_mode"来设置,可以同时启用多种策略
允许通过 k8s API 动态配置策略
RBAC被映射成四种 k8s 顶级对象
角色绑定包含了一组相关主体(User, Group或者 Service Account)以及对被授予角色的引用
以下两者区别在于是否时 namespace 资源
APIServer会在用户的请求通过认证鉴权后调用 admission control,对用户请求进行进一步的审核。所以即使用户请求通过了认证鉴权,也有可能因为申请的资源超过了资源配额而被 admission control 驳回。
admission control 是一种多维度可扩展的资源管理机制,每个维度通过一个 admission control 插件实现,插件在 admission-control 中是以逗号作为分割符。
--admission-control=NamespaceLifecycle,LimitRanger,ServiceAcount,DefaultStorageClass,ResourceQuota
k8s APIServer 负责对外提供 k8s API 服务,它运行在 k8s 的 master 节点上。
作为系统管理指令的统一入口,APIServer 担负着统揽全局的重任,任何对资源进行增删改查的操作都需要交给 APIServer处理后才能提交给 etcd。
APIServer 启动过程中进行了3个初始化操作,创建了3个对象:认证,授权和多维资源管理。
所以访问 k8s 集群资源需要过三关:认证,鉴权,多维资源管理
Authentication
基于客户端证书的认证机制
安全级别高
API Server配置
Client 配置
访问示例
基于 token 的认证机制
安全级别中
API Server配置
Client 配置
kubectl --token
Authorization: Bearer ${token}
访问示例
Basic 认证机制
安全级别低,不建议在生产环境中使用
API Server配置
Client 配置
kubectl --username --passwrod
Authorization: Basic BASE64ENCODED(USER:PASSWORD)
访问示例
Authorization
用户认证后,对指定的资源是否有权限访问,还需要经过授权环节。
授权主要是用于对集群资源的访问控制,通过检查请求包含的相关属性值,与相对应的访问策略相比较,API 请求必须满足某些策略才能被处理。
请求属性
授权策略
API Server 支持多只授权策略,通过启动参数"--authorization_mode"来设置,可以同时启用多种策略
RBAC(Role-Based Access Control)
允许通过 k8s API 动态配置策略
RBAC被映射成四种 k8s 顶级对象
角色
建立用户与角色的绑定关系
以下两者区别在于是否时 namespace 资源
Admission Control
APIServer会在用户的请求通过认证鉴权后调用 admission control,对用户请求进行进一步的审核。所以即使用户请求通过了认证鉴权,也有可能因为申请的资源超过了资源配额而被 admission control 驳回。
admission control 是一种多维度可扩展的资源管理机制,每个维度通过一个 admission control 插件实现,插件在 admission-control 中是以逗号作为分割符。
参考