其他分享
首页 > 其他分享> > 12.Kubernetes集群安全机制

12.Kubernetes集群安全机制

作者:互联网

Kubernetes集群安全机制

概述

当我们访问K8S集群时,需要经过三个步骤完成具体操作

进行访问的时候,都需要经过 apiserver, apiserver做统一协调,比如门卫

image-20201118092356107

认证

对外不暴露8080端口,只能内部访问,对外使用的端口6443

客户端身份认证常用方式

鉴权

基于RBAC进行鉴权操作

基于角色访问控制

准入控制

就是准入控制器的列表,如果列表有请求内容就通过,没有的话 就拒绝

RBAC介绍

基于角色的访问控制,为某个角色设置访问内容,然后用户分配该角色后,就拥有该角色的访问权限

image-20201118093949893

k8s中有默认的几个角色

角色绑定

主体

RBAC实现鉴权

创建命名空间

我们可以首先查看已经存在的命名空间

kubectl get namespace

image-20201118094516426

然后我们创建一个自己的命名空间 roledemo

kubectl create ns roledemo

命名空间创建Pod

为什么要创建命名空间?因为如果不创建命名空间的话,默认是在default下

kubectl run nginx --image=nginx -n roledemo

创建角色

我们通过 rbac-role.yaml进行创建

image-20201118094851338

tip:这个角色只对pod 有 get、list权限

然后通过 yaml创建我们的role

# 创建
kubectl apply -f rbac-role.yaml
# 查看
kubectl get role -n roledemo

image-20201118095141786

创建角色绑定

我们还是通过 role-rolebinding.yaml 的方式,来创建我们的角色绑定

image-20201118095248052

然后创建我们的角色绑定

# 创建角色绑定
kubectl apply -f rbac-rolebinding.yaml
# 查看角色绑定
kubectl get role, rolebinding -n roledemo

image-20201118095357067

使用证书识别身份

我们首先得有一个 rbac-user.sh 证书脚本

image-20201118095541427

image-20201118095627954

这里包含了很多证书文件,在TSL目录下,需要复制过来

通过下面命令执行我们的脚本

./rbac-user.sh

最后我们进行测试

# 用get命令查看 pod 【有权限】
kubectl get pods -n roledemo
# 用get命令查看svc 【没权限】
kubectl get svc -n roledmeo

image-20201118100051043

标签:kubectl,12,Kubernetes,角色,get,创建,绑定,集群,role
来源: https://www.cnblogs.com/nwnusun/p/16466735.html