帮助中心

立即注册 咨询客服

当前位置:首页 > 帮助中心> 如何创建Kubernetes安全策略

如何创建Kubernetes安全策略

发布时间:2020年03月23日 08:25:05    来源: A5互联

如果您希望将Kubernetes的安全性提高到一个新的级别,则需要开始使用pod安全策略。

如何创建Kubernetes安全策略

Kubernetes是一个功能强大的容器管理工具。如果您使用容器足够长的时间,您肯定知道安全性在应用程序和服务的部署中扮演重要角色。如果不锁定这些容器,可能会对您的网络造成严重破坏。

那么,你能做什么呢?对于Kubernetes,您应该考虑建立pod安全策略。

1、什么是pod?

如果您不熟悉Kubernetes,则可能不知道什么是Pod。简而言之,Kubernetes pod是构成容器的一系列过程的集合,例如:

储存资源、唯一的网络IP地址、控制容器应如何运行的选项。

换句话说,pod是一个部署单元——单个容器或多个容器一起工作。

现在您了解了什么是Pod,下面让我们看看如何制定安全策略。

2、什么是Pod安全策略?

Kubernetes Pod安全策略是控制Pod规范安全性的资源。使用PodSecurityPolicy对象定义,您可以控制以下内容:

运行特权容器的能力

特权升级

访问卷类型

访问主机文件系统

主机网络的使用

但是如何定义策略呢?与Kubernetes中的几乎所有内容一样,这是在YAML文件中定义的。

3、如何创建Kubernetes Pod安全策略

让我们创建一个Kubernetes Pod安全策略,该策略可以防止创建特权Pod并控制对卷的访问。首先,我们必须创建YAML文件。在终端窗口中,发出命令:

nano psp.yaml

在该文件中,粘贴以下内容:

apiVersion: policy/v1beta1

kind: PodSecurityPolicy

metadata:

name: psp

spec:

privileged: false

seLinux:

rule: RunAsAny

supplementalGroups:

rule: RunAsAny

runAsUser:

rule: RunAsAny

fsGroup:

rule: RunAsAny

volumes:

- '*'

在该文件中,我们使用以下代码来阻止创建特权pod:

privileged: false

我们还允许以下内容(通过RunAsAny规则):

SeLinux -允许任何用户在豆荚内控制SeLinux

Linux groups - 补充组

runAsUse-  允许用户以不同的用户名运行容器入口点

fsGroup - 支持所有权管理的卷

保存并关闭文件。

现在我们必须应用该策略。这是通过以下命令完成的:

kubectl apply -f psp.yaml

该命令将报告:

podsecurity.policy/psp created

您可以随时修改策略YAML文件并运行相同命令以重新配置策略。

发出以下命令,以检查策略是否可用:

kubectl get psp

输出将列出该策略的详细信息。

4、如何分配Kubernetes Pod安全策略

现在,您已经创建了策略,如何分配它?这是使用基于角色的访问控制(RBAC)完成的。使用以下命令为该策略创建RBAC配置:

nano rbac-psp.yaml

在该文件中,粘贴以下内容:

kind: ClusterRole

apiVersion: rbac.authorization.k8s.io/v1

metadata:

name: psp:psp

rules:

- apiGroups:

- extensions

resources:

- podsecuritypolicies

resourceNames:

- psp

verbs:

- use

---


kind: ClusterRoleBinding

apiVersion: rbac.authorization.k8s.io/v1

metadata:

name: psp:psp

subjects:

- kind: Group

name: system:authenticated

apiGroup: rbac.authorization.k8s.io

roleRef:

kind: ClusterRole

name: psp:psp

apiGroup: rbac.authorization.k8s.io

上面的文件将创建一个名为psp的群集范围内的角色,可以使用名为psp的新策略。这还将创建一个群集范围的角色绑定,该绑定使每个经过身份验证的用户都可以访问psp:psp角色。

保存并关闭文件。使用以下命令创建此策略:

kubectl apply -f rbac-psp.yaml

现在,我们已经创建了一个策略和一个RBAC控件。让我们看看我们现在是否可以使用这项新策略。发出命令:

kubectl auth can-i use psp/psp

输出应显示“YES”。

当然,因为我是管理员用户,所以这里是“YES”。但是,如果我们对任何用户进行测试怎么办?使用以下命令执行此操作:

kubectl auth can-i use psp/psp --as-group=system:authenticated --as=any-user

您现在应该在响应中看到“NO”。

您刚刚创建了一个Kubernetes pod安全策略,并为其分配了RBAC,并对其进行了测试以确保该策略确实有效。