Linux企业运维——Kubernetes(十四)PSP安全策略

Linux企业运维——Kubernetes(十四)PSP安全策略

一、PSP安全策略简介

PodSecurityPolicy(简称PSP)是Kubernetes中Pod部署时重要的安全校验手段,能够有效地约束应用运行时行为安全。

默认情况下,Kubernetes 允许创建一个有特权容器的 Pod,这些容器很可能会危机系统安全,而 Pod 安全策略(PSP)则通过确保请求者有权限按配置来创建 Pod,从而来保护集群免受特权 Pod 的影响。

二、PSP安全策略配置

1、编辑API配置文件,在准入控制项中加入PSP模块(多个模块用,隔开)
在这里插入图片描述
在这里插入图片描述
2、变更该文件后k8s会自动重载,查看6443端口开放表明重载完毕
在这里插入图片描述
3、使用nginx镜像创建一个pod,查看pod可以看到该pod无法运行,状态为Error
在这里插入图片描述
在这里插入图片描述
4、查看创建的pod的日志,可以看到出现pod资源权限过大的报错,这是因为我们在为集群引入PSP后没有进行准入控制
在这里插入图片描述
5、新建psp目录,编辑yaml文件,设置一个psp策略示例
在这里插入图片描述
在这里插入图片描述
6、应用yaml文件,查看psp可以看到策略设置成功
在这里插入图片描述
7、新建yaml文件创建角色,对该角色应用创建的psp,创建RoleBinding将这一角色与默认命名空间中的默认SA账户default绑定(因为创建Pod时默认使用default账户进行认证)
在这里插入图片描述

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: psp-example
rules:
- apiGroups:
  - extensions
  resources:
  - podsecuritypolicies
  resourceNames:
  - example
  verbs:
  - use

---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: bind-psp-example
  namespace: default
roleRef:
  kind: Role
  name: psp-example
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
  name: default
  namespace: default

在这里插入图片描述
8、删除之前创建的pod,重新创建一个pod,查看该pod成功运行就绪
在这里插入图片描述
9、但上面所设置的psp策略所开放的权限过大,这里我们删除创建的角色、绑定关系,删除创建的psp,新建子目录new,编辑yaml文件创建较为完善的psp策略
在这里插入图片描述

[root@server2 psp]# cat psp.yaml 
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: restrictive
spec:
  privileged: false
  hostNetwork: false
  allowPrivilegeEscalation: false
  defaultAllowPrivilegeEscalation: false
  hostPID: false
  hostIPC: false
  runAsUser:
    rule: RunAsAny
  fsGroup:
    rule: RunAsAny
  seLinux:
    rule: RunAsAny
  supplementalGroups:
    rule: RunAsAny
  volumes:
  - 'configMap'
  - 'downwardAPI'
  - 'emptyDir'
  - 'persistentVolumeClaim'
  - 'secret'
  - 'projected'
  allowedCapabilities:
  - '*'

在这里插入图片描述
10、应用该yaml文件,查看psp可以看到策略设置成功,相较于之前创建的策略多了更多限制
在这里插入图片描述
11、编辑修改roles.yaml文件,创建集群角色,对该集群角色应用创建的psp,创建ClusterRoleBinding将这一ClusterRole与整个系统中的所有ServiceAccount
绑定
在这里插入图片描述

[root@server2 psp]# cat roles.yaml 
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: psp-restrictive
rules:
- apiGroups:
  - extensions
  resources:
  - podsecuritypolicies
  resourceNames:
  - restrictive
  verbs:
  - use

---

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: psp-default
subjects:
- kind: Group
  name: system:serviceaccounts
  namespace: kube-system
roleRef:
  kind: ClusterRole
  name: psp-restrictive
  apiGroup: rbac.authorization.k8s.io

在这里插入图片描述
12、此时使用控制器部署pod,查看所有pod都可以成功运行就绪
在这里插入图片描述
13、实验完成后清理实验环境,删除创建的集群角色、集群绑定关系,删除创建的psp,编辑API配置文件在准入控制项中删除PSP模块
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值