Kubernetes身份认证和授权操作全攻略:K8s 访问控制入门(2)
请注意,Kubernetes是没有用于验证用户身份的典型用户数据库或者配置文件。但是它使用从X.509证书以及令牌中提取的字符串,将它们传递到身份认证模块。OpenID,Github甚至LDAP提供的外部认证机制可以通过其中一个认证模块与Kubernetes集成。 2、 授权 一旦API请求得到认证,下一步就是确认这一操作是否被允许执行。这是访问控制流程中的第二个步骤。 对于授权一个请求,Kubernetes主要关注三个方面——请求者的用户名、请求动作以及该动作影响的对象。用户名从嵌入token的头部中提取,动作是映射到CRUD操作的HTTP动词之一(如 GET、POST、PUT、DELETE),对象是其中一个有效的Kubernetes对象,如pod或者service。 Kubernetes基于一个存在策略来决定授权。默认情况下,Kubernetes遵循封闭开放的理念,这意味着需要一个明确的允许策略才可以访问资源。 与身份认证类似,授权也是基于一个或多个模块配置的,如ABAC模式、RBAC模式以及Webhook模式。当管理员创建集群时,他们配置与API sever集成的授权模块。如果多个模块都在使用,Kubernetes会检查每个模块并且如果其中任一模块授权了请求,则请求授权通过。如果所有模块全部拒绝请求,则请求被拒绝(HTTP状态码403)。 当您使用默认配置的kubectl时,所有的请求都会通过,因此此时您被认为时集群管理员。但当我们添加新的用户,默认状态下他们会限制访问权限。 3、 准入控制 通过准入控制是请求的最后一个步骤。与前两个步骤类似,准入控制也有许多模块。 但与前两个步骤不同的是,最后的阶段可以修改目标对象。准入控制模块作用于对象的创建、删除、更新和连接(proxy)阶段,但不包括对象的读取。举个例子,例如,准入控制模块可用于修改创建持久卷声明(PVC)的请求以使用特定存储类。模块可以实施的另一个策略是每次创建容器时提取镜像。 在这一过程中,如果任一准入控制模块拒绝,那么请求立刻被拒绝。一旦请求通过所有的准入控制器,将使用对应API对象的验证流程对其进行验证,然后写入对象存储。 在下一部分的文章中,我们将更进一步了解创建用户以及为其配置身份认证。保持关注哟~
(编辑:ASP站长网) |