k8s集群安全机制

概述

(1)访问k8s集群的时候,需要经过三个步骤完成具体操作:

  • 认证
  • 鉴权
  • 准入控制

(2)进行访问时候,过程中都需要经过apiServer,apiServer做统一协调工作,访问过程需要证书、token、或者用户名+密码,如果访问Pod还需要serviceAccount

(3)认证:

  • 传输安全:对外不暴露8080端口,只能内部访问,对外使用端口6443
  • 认证:客户端身份认证常用方式:
    • https证书认证(基于CA证书)
    • http token认证,通过token识别用户
    • http基本认证,用户名+密码认证

(4)鉴权(授权):
基于RBAC进行鉴权操作
基于角色访问控制

(5)准入控制:
就是准入控制器的列表,如果列表有请求内容通过,没有则拒绝。

RBAC介绍

基于角色的访问控制

角色:

  • role:特定命名空间访问权限
  • ClusterRole:所有命名空间访问权限

角色绑定:

  • roleBinding:角色绑定到主体
  • ClusterRoleBinding:集群角色绑定到主体

主体:

  • user:用户
  • group:用户组
  • serviceAccount:服务账号

在这里插入图片描述

RBAC实现鉴权

创建命名空间

kubectl create ns roledemo

在新创建的命名空间创建pod

kubectl run nginx --image=nginx -n roledemo
kubectl get pods -n roledemo

创建角色

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata: 
  namespace: roledemo
  name: pod-reader
rules:
- apiGroups: [""] # ""indicates the core API group
  resources: ["pods"]
  verbs: ["get","watch","list"]
kubectl apply -f rbac-role.yaml
kubectl get role -n roledemo

创建角色绑定

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: read-pods
  namespace: roledemo
subjects:
- kind: User 
  name: lucy # Name is case sensitive
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role # this must be Role or ClusterRole
  name: pod-reader # this must match the name of the Role or ClusterRole you wish to bind to
  apiGroup: rbac.authorization.k8s.io
kubectl apply -f rbac-rolebinding.yaml
kubectl get role,rolebinding -n roledemo

使用证书识别身份

mkdir lucy
vi rbac-user.sh
cat > lucy-csr.json <<EOF
{
  "CN": "lucy",
  "hosts": [],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "L": "Beijing",
      "ST": "Beijing"
    }
  ]
}
EOF

cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json profile=kubernetes lucy-csr.json | cfssljson -bare lucy

kubectl config set-cluster kubernetes \
  --certificate-authority=ca.pem \
  --embed-certs=true \
  --server=https://192.168.31.63:6443 \
  --kubeconfig=lucy-kubeconfig

kubectl config set-credentials lucy \
  --client-key=lucy-key.pem \
  
bash rbac-user.sh
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值