Linux企业运维——Kubernetes(十四)PSP安全策略
Posted 是大姚呀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux企业运维——Kubernetes(十四)PSP安全策略相关的知识,希望对你有一定的参考价值。
Linux企业运维——Kubernetes(十四)PSP安全策略
1、PSP安全策略简介
PodSecurityPolicy(简称PSP)是Kubernetes中Pod部署时重要的安全校验手段,能够有效地约束应用运行时行为安全。
默认情况下,Kubernetes 允许创建一个有特权容器的 Pod,这些容器很可能会危机系统安全,而 Pod 安全策略(PSP)则通过确保请求者有权限按配置来创建 Pod,从而来保护集群免受特权 Pod 的影响。
2、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模块
以上是关于Linux企业运维——Kubernetes(十四)PSP安全策略的主要内容,如果未能解决你的问题,请参考以下文章
Linux企业运维——Kubernetes(二十)Prometheus监控
Linux企业运维——Kubernetes(二十)Prometheus监控
Linux企业运维——Kubernetes(十六)容器资源监控