题目
给定一个目录 /etc/kubernetes/epconfig中不完整的配置以及具有 HTTPS 端点
https://acme.local:8082/image_policy 的功能性容器镜像扫描器:
1. 启用必要的插件来创建镜像策略
2. 校验控制配置并将其更改为隐式拒绝(implicit deny)
3. 编辑配置以正确指向提供的 HTTPS 端点
最后,通过尝试部署易受攻击的资源 /cks/img/web1.yaml来测试配置是否有效。
你可以在 /var/log/imagepolicy/roadrunner.log 找到容器镜像扫描仪的日志文件。
参考
步骤
1 修改defaultAllow为false
vi /etc/kubernetes/epconfig/admission_configuration.json
{
"imagePolicy": {
"kubeConfigFile": "/etc/kubernetes/epconfig/kubeconfig.yaml",
"allowTTL": 50,
"denyTTL": 50,
"retryBackoff": 500,
"defaultAllow": false #true改为false
}
}
2 添加镜像扫描策略
vi /etc/kubernetes/epconfig/kubeconfig.yaml #最好保存一下
apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority: /etc/kubernetes/epconfig/webhook.pem
server: https://acme.local:8082/image_policy #增加webhook server
name: bouncer_webhook
contexts:
- context:
cluster: bouncer_webhook
user: api-server
name: bouncer_validator
current-context: bouncer_validator
preferences: {}
users:
- name: api-server
user:
client-certificate: /etc/kubernetes/epconfig/apiserver-client.pem
client-key: /etc/kubernetes/epconfig/apiserver-clientkey.pem
3 修改apiserver
vi /etc/kubernetes/manifests/kube-apiserver.yaml 最好保存下
在- command:下添加如下内容
- --enable-admission-plugins=NodeRestriction,ImagePolicyWebhook
- --admission-control-config-file=/etc/kubernetes/epconfig/admission_configuration.json
在 volumeMounts 增加
volumeMounts:
- mountPath: /etc/kubernetes/epconfig
name: epconfig
在volumes 增加
volumes:
- name: epconfig
hostPath:
path: /etc/kubernetes/epconfig
4 重启kubelet并启动测试
systemctl restart kubelet
kubectl apply -f /cks/img/web1.yaml
5 查看测试结果
vi /var/log/imagepolicy/roadrunner.log