Mik*_*nov 6 kubernetes azure-aks
我有一个在 Azure AKS 服务中运行的 K8S 集群。
我想强制执行MustRunAsNonRoot策略。怎么做?
创建以下策略:
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: restrict-root
spec:
privileged: false
allowPrivilegeEscalation: false
runAsUser:
rule: MustRunAsNonRoot
seLinux:
rule: RunAsAny
fsGroup:
rule: RunAsAny
supplementalGroups:
rule: RunAsAny
volumes:
- '*'
Run Code Online (Sandbox Code Playgroud)
它部署在集群中:
$ kubectl get psp
NAME PRIV CAPS SELINUX RUNASUSER FSGROUP SUPGROUP READONLYROOTFS VOLUMES
restrict-root false RunAsAny MustRunAsNonRoot RunAsAny RunAsAny false *
Run Code Online (Sandbox Code Playgroud)
准入控制器在集群中运行:
$ kubectl get pods -n gatekeeper-system
NAME READY STATUS RESTARTS AGE
gatekeeper-audit-7b4bc6f977-lvvfl 1/1 Running 0 32d
gatekeeper-controller-5948ddcd54-5mgsm 1/1 Running 0 32d
gatekeeper-controller-5948ddcd54-b59wg 1/1 Running 0 32d
Run Code Online (Sandbox Code Playgroud)
无论如何,可以在 root 下运行一个简单的 pod:
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: mypod
image: busybox
args: ["sleep", "10000"]
securityContext:
runAsUser: 0
Run Code Online (Sandbox Code Playgroud)
Pod 正在运行:
$ kubectl describe po mypod
Name: mypod
Namespace: default
Priority: 0
Node: aks-default-31327534-vmss000001/10.240.0.5
Start Time: Mon, 08 Feb 2021 23:10:46 +0100
Labels: <none>
Annotations: <none>
Status: Running
Run Code Online (Sandbox Code Playgroud)
为什么MustRunAsNonRoot没有应用?如何强制执行?
编辑:看起来 AKS 引擎不支持 PodSecurityPolicy (支持的策略列表)。那么问题仍然是一样的:如何在工作负载上强制执行 MustRunAsNonRoot 规则?
不应PodSecurityPolicy在Azure AKS 群集上使用,因为它已被设置为从 2021 年 5 月 31 日起弃用,转而采用Azure Policy for AKS。查看官方文档以获取更多详细信息:
警告
本文档中描述的功能(Pod 安全策略(预览版))已设置为弃用,并且在 2021 年 5 月 31 日之后将不再可用,取而代之的 是 AKS 的 Azure 策略。弃用日期已从之前的 2020 年 10 月 15 日延长。
因此,目前您应该使用Azure Policy for AKS,其中在分组为计划的其他内置策略中(Azure Policy 中的计划是为实现单一总体目标而定制的策略定义的集合),您可以找到一个策略目标是禁止在AKS 群集上运行特权容器。
至于PodSecurityPolicy,暂时应该还可以。如果您没有忘记任何事情,请检查此处,例如确保您设置了相应的内容ClusterRole并ClusterRoleBinding允许使用该策略。
| 归档时间: |
|
| 查看次数: |
2708 次 |
| 最近记录: |