SkyWalking 10.0.1 进阶之路:源码编译精髓与安全漏洞攻防实践

最终效果

  • 官方最新版本

  • 漏洞修复              

  • 支持/skywalking/bin/swctl health 监控检查

    官方这个版本是不支持的,我们依旧坚挺~

  • 确认可用

环境准备

  • JDK 11 (最新的代码要看最新的要求,注意不能使用JDK8,用错的话构建时也会有提示)

  • Maven >=3.6.0

官方指南(必看)https://github.com/apache/skywalking/blob/master/docs/en/guides/How-to-build.md

源码获取

mkdir -p /mnt/d/tmp/skywalking && cd /mnt/d/tmp/skywalking
#git clone --recurse-submodules https://github.com/apache/skywalking.git
git clone -b v10.0.1 --recurse-submodules https://github.com/apache/skywalking.git

精简镜像

  • 官方镜像

 

  • 简化镜像

  • 镜像仓库里更小哦

Dockerfile

D:\tmp\skywalking\docker\oap\Dockerfile

ARG BASE_IMAGE='registry.cn-hangzhou.aliyuncs.com/earic/java:jre11.0.24-alpine3.20.2'
​
ARG SKYWALKING_CLI_VERSION
​
FROM apache/skywalking-cli:$SKYWALKING_CLI_VERSION as cli
ARG SKYWALKING_HOME='/skywalking'
WORKDIR $SKYWALKING_HOME
ARG DIST
COPY "$DIST" .
# 这里删,缓存不会带到$BASE_IMAGE里
RUN set -ex; \
    tar -xzf "$DIST" --strip 1; \
    rm -rf "$DIST"; \
    rm -rf "config/log4j2.xml"; \
    rm -rf "bin"; \
    rm -rf "webapp"; \
    rm -rf "agent";
​
FROM $BASE_IMAGE
​
ARG SKYWALKING_HOME='/skywalking'
WORKDIR $SKYWALKING_HOME
​
ENV PATH=$SKYWALKING_HOME/bin:$PATH
​
ENV JAVA_OPTS=" -Xms2G "
​
COPY --from=cli $SKYWALKING_HOME .
​
RUN set -ex; \
    ls -alh; \
    mkdir "bin"; \
    rm -fr /var/cache/apk/* /usr/include /usr/share/man /tmp/*
COPY --from=cli /swctl ./bin
​
COPY log4j2.xml config/
COPY docker-entrypoint.sh .
​
RUN mkdir ext-config; \
    mkdir ext-libs;
​
#非root--start --有安全需要再加,加了镜像会大100多M
RUN apk --no-cache add shadow
ENV NON_ROOT_USER=earic
ENV NON_ROOT_GID="103" \
    NON_ROOT_UID="1003" \
    NON_ROOT_WORK_DIR=/opt/local/\${NON_ROOT_USER} \
    NON_ROOT_HOME_DIR=/home/${NON_ROOT_USER}
RUN groupadd -g ${NON_ROOT_GID} nonroot && useradd -m -s ${NON_ROOT_HOME_DIR} -u ${NON_ROOT_UID} ${NON_ROOT_USER} -g nonroot
​
#Add permission to non-root user
RUN mkdir -p  /opt/app /skywalking/agent/logs/  && \\
    touch /skywalking/agent/logs/skywalking-api.log && \\
    chmod -R g+wx /opt /tmp/ /skywalking/agent/logs/ && \\
    chown -R \${NON_ROOT_GID}:nonroot /opt /skywalking/agent/logs/
# 避免root用户运行。或者用entrypoint.sh+gosu实现(登录后是root,运行是非root) !!!!重点是这里
USER ${NON_ROOT_USER}
#非root--end
​
​
EXPOSE 12800 11800 1234
​
ENTRYPOINT ["bash", "docker-entrypoint.sh"]

发现漏洞

点我看原文icon-default.png?t=N7T8https://mp.weixin.qq.com/s/_u9pX1VzrT9Wo2vCJHVqcQ?token=824336842&lang=zh_CN

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wu858773457

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值