---
# System prepended metadata

title: 第七题  Analyze DockerFile
tags: [真题讲解]

---

# 第七题  Analyze DockerFile
###### tags: `真题讲解`
切换集群kubectl config use-context k8s

**Task**
Analyze and edit the given Dockerfile (based on the ubuntu:16.04 image) /cks/7/Dockerfile fixing two instructions present in the file being prominent security/best-practice issues.

Analyze and edit the given manifest file /cks/7/deployment.yaml fixing two fields present in the file being prominent security/best-practice issues.

## 解法
题目会告诉你最大修正两处错误, 你只能改/删, 不能增.

第一部分, 题目Dockerfile仿真, 中间夹杂着一堆无关紧要的内容
```
FROM ubuntu:latest
LABEL maintainer="Rock Zang"
USER root
RUN apt-get update -y \
    && apt-get install -y nocache net-tools \
    iputils-ping \
    curl \
    netcat \
    iperf \
    iperf3 \
    wget
RUN useradd -u 1001 -r rock
USER rock
ENTRYPOINT ["tail", "-f", "/dev/null"]
```
题目会明确告诉你, 如果需要使用最小权限用户, 用户名必须为nobody, 其用户组为65535, 根据题意修改Dockerfile:
```
FROM ubuntu:latest
LABEL maintainer="Rock Zang"
USER root
RUN apt-get update -y \
    && apt-get install -y nocache net-tools \
    iputils-ping \
    curl \
    netcat \
    iperf \
    iperf3 \
    wget
RUN useradd -u 65535 -r nobody
USER nobody
ENTRYPOINT ["tail", "-f", "/dev/null"]
```

第二部分, 查看指定的YAML, 大概率是个Deployment, 重点关注在SecurityContext部分, 是否存在readOnlyRootFilesystem: false 或者privileged: true, 有就删掉.

也要留意是否存在将密码保存在环境变量中.