常用认证模型

  1. 基于角色的访问控制(RBAC):RBAC 是一种将权限与角色相关联的访问控制方式,用户通过被赋予特定的角色来获得相应的权限。RBAC 的优点在于简化了权限管理,降低了系统的复杂性
  2. 基于属性的访问控制(ABAC):ABAC 是一种基于用户属性(如用户身份、角色、位置等)的访问控制方式,系统根据用户的属性来决定是否授予其相应的权限
  3. 基于任务的访问控制(TBAC):TBAC 是一种将任务作为核心的访问控制方式,系统根据任务的特性和要求来分配相应的权限
  4. 基于对象的访问控制(OBAC):OBAC 是一种将对象作为核心的访问控制方式,系统根据对象的属性和状态来决定是否授予用户相应的权限

拓展:权限策略

权限策略管理_访问控制(RAM)-阿里云帮助中心

Kubernetes

ApiServer组件

        ApiServer作为Kubernetes的认证中心负责验证和授权用户对集群的访问请求。认证中心在Kubernetes中主要涉及以下几个方面:

  1. 认证:验证用户或服务的身份。Kubernetes支持多种认证方式,包括基于证书的认证、基于令牌的认证等。这些认证方式可以单独使用,也可以组合使用,以满足不同的安全需求。
  2. 授权:根据用户的身份和角色,决定用户对集群资源的访问权限。Kubernetes使用基于角色的访问控制(RBAC)模型进行授权管理,通过定义用户角色和资源角色,将访问权限与角色相关联,从而简化了权限管理。
  3. 准入控制:在资源对象的创建、删除、更新或连接操作时,准入控制器对操作进行更精细的许可检查,只有满足条件的请求才能被执行

认证方式

介绍几种K8S最常用的认证:

  1. CA证书认证:这是基于CA根证书签名的双向数字证书认证方式,是最严格的认证方式;Kubernetes中的Ingress控制器可以使用相关证书,通过TLS/SSL加密方式提供安全的外部访问
  2. ServiceAccount认证:ServiceAccount会挂载到Kubernetes集群中的pod的目录下,每个应用的pod可以用过读取目录下的ServiceAccount来获取集群的认证证书数据,从而可以与集群中的apiServer进行认证通信
  3. Bare Token认证:一种基于令牌的身份验证方法,通常用于API访问控制。令牌(Token)通常由服务端根据密钥生成,并由客户端在请求时附加在HTTP请求头中。服务端收到请求后,会解析出令牌并进行合法性验证。如果验证通过,则认为客户端已经通过了身份验证

BareToken实现步骤

步骤一:创建用户

apiVersion: v1
kind: ServiceAccount
metadata:
  name: user-01
  namespace: kube-system
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile

步骤二:创建角色

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: role-01
rules:
  - apiGroups: ["*"]
    resources: ["*"]
    verbs:
      - get
      - list
      - watch

步骤三:用户和角色绑定

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: user-role
  labels:
    addonmanager.kubernetes.io/mode: Reconcile
roleRef:
  kind: ClusterRole
  name: role-01
  apiGroup: rbac.authorization.k8s.io
subjects:
  - kind: ServiceAccount
    name: user-01
    namespace: kube-system

步骤四:获取BareToken

kubectl get secrets -n kube-system|grep user-role|awk '{print $1}'|xargs kubectl describe secrets -n kube-system

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐