使用 python 子进程安全地运行 docker 登录

问题描述 投票:0回答:1

我想从 python3 运行 docker 登录而不要求用户输入。 我有三个全局变量

REGISTRY_URL, USERNAME, PASSWORD

我想跑步:

os.system(f"echo '{PASSWORD}' | docker login {REGISTRY_URL} -u {USERNAME} --password-stdin")

问题是我的三个全局变量是用户可控的,这可能导致远程代码执行。

如何使用

subprocess.run
安全地运行此命令?

(注意:我不想使用 docker 的

-p
选项,因为它根据 docker 的建议并不安全)

python docker security
1个回答
0
投票

您可以使用 subprocess.run 的

input
参数提供密码:

import subprocess

def docker_login(registry_url, username, password):
    command = ["docker", "login", registry_url, "-u", username, "--password-stdin"]
    completed_process = subprocess.run(command, input=password.encode(), capture_output=True)
    
    if completed_process.returncode == 0:
        print("Docker login successful!")
    else:
        print("Docker login failed. Error message:")
        print(completed_process.stderr.decode())

docker_login(REGISTRY_URL, USERNAME, PASSWORD)
© www.soinside.com 2019 - 2024. All rights reserved.