首先查看yaml文件中iptables被过滤掉的用户uid
initContainers:
- args:
- istio-iptables
- -p
- "15001"
- -z
- "15006"
- -u
- "1337"
- -m
- REDIRECT
- -i
- '*'
- -x
- ""
- -b
- '*'
- -d
- 15090,15021,15020
看到-u参数 1337,说明用户流量1337 的用户会被过滤掉,然后重写 Dockerfile,加入用户指定为1337 的uid,并且可以运行sudo 指令
RUN apt-get install -qq -y --ignore-missing sudo //安装sudo
//创建用户
RUN groupadd --gid 1337 otlp-agent \
&& useradd --home-dir /home/otlp-agent --create-home --uid 1337 --gid 1337 --shell /bin/sh --skel /dev/null otlp-agent
//配置sudo的配置文件,让非root用户可以sudo
RUN echo "otlp-agent ALL=NOPASSWD: ALL" >> /etc/sudoers
//指定当前用户
USER otlp-agent
配置容器yaml文件的container的安全策略
- image: zhangleihunter/otlp-agent:v3
imagePullPolicy: Always
name: otlp-agent
securityContext:
allowPrivilegeEscalation: true
privileged: true
readOnlyRootFilesystem: false
runAsGroup: 1337
runAsNonRoot: true
runAsUser: 1337
ports:
- containerPort: 9411
name: tcp
protocol: TCP
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: 30m
memory: 40Mi
重点为 securityContext 数组,配置完成后就可以过滤掉sidecar的流量劫持