在 Docker 中保护私有 PyPi 的凭据

Mic*_*hen 5 pypi docker

我正在构建 Docker 映像,需要运行 pip install 与带有凭据的私有 PyPi。保护凭证的最佳方法是什么?即使我删除它们,使用各种文件配置选项(pip.conf、requirements.txt、.netrc)仍然是一个漏洞,因为它们可以恢复。环境变量也是可见的。最安全的方法是什么?

Dan*_*res 3

我了解您希望在构建时提供这些凭据并在之后删除它们。

那么,处理此问题的最安全方法pip是使用多阶段构建过程。

首先,您将声明一个build-image包含文件配置的首字母以及下载/编译所需包所需的任何依赖项;不必担心恢复这些文件的可能性,因为您只会将它们用于构建过程。

然后定义没有构建依赖项的最终映像,并仅复制要从项目运行的源代码以及构建映像中的依赖项。生成的映像不会包含配置文件,并且无法恢复它们,因为它们从未存在过。

FROM python:3.10-slim as build
RUN apt-get update
RUN apt-get install -y --no-install-recommends \
    build-essential gcc

WORKDIR /usr/app
RUN python -m -venv /usr/app/venv
ENV PATH="/usr/app/venv/bin:$PATH"

[HERE YOU COPY YOUR CONFIGURATION FILES WITH CREDENTIALS]
COPY requirements.txt
RUN pip install -r requirements

FROM python:3.10-slim
WORKDIR /usr/app
COPY --from=build /usr/app/venv ./venv
[HERE YOU COPY YOUR SOURCE CODE INTO YOUR CURRENT WORKDIR]

ENV PATH="/usr/app/venv/bin:$PATH"
ENTRYPOINT ["python", "whatever.py"]
Run Code Online (Sandbox Code Playgroud)