跳到主要内容

podman secret create - 创建新的密钥

语法

podman secret create [选项] 名称 文件|-

描述

使用标准输入或文件内容来创建一个新的密钥。

create 命令可以接受一个文件路径,或者 -,这告诉 Podman 从标准输入中读取密钥内容。

密钥是一个敏感数据的块,容器在运行时需要这些数据,但这些数据不存储在镜像或源代码管理中,例如用户名和密码、TLS 证书和密钥、SSH 密钥或其他重要的通用字符串或二进制内容(大小最多为 500KB)。

密钥不会被 podman commit 提交到镜像中,也不会在 podman export 命令创建的归档中被提交。

密钥还可以用于存储 podman login 的密码,以便对容器注册表进行身份验证。

选项

--driver, -d=驱动

指定密钥的驱动(默认为 file)。

--driver-opts=key1=val1,key2=val2

指定驱动特定的选项。

--env=false

从环境变量中读取密钥数据。

--help

打印使用说明。

--label, -l=key=val1,key2=val2

给密钥添加标签。这些标签可以在 podman secret inspectls 中查看。

--replace=false

如果已存在具有相同名称的密钥,则更新该密钥。--replace 选项不会更改现有容器中的密钥,只更改新创建的容器。默认值为 false

密钥驱动

file

密钥存储在只读的文件中。

pass

密钥存储在 GPG 加密的文件中。

shell

密钥由自定义脚本管理。环境变量 SECRET_ID 会传递给脚本(除了 list),并且密钥通过 stdin/stdout(在适用的情况下)进行通信。驱动选项 listlookupstoredelete 用于安装脚本:

[secrets]
driver = "shell"

[secrets.opts]
list = 路径/到/list/脚本
lookup = 路径/到/lookup/脚本
store = 路径/到/store/脚本
delete = 路径/到/delete/脚本

在使用 shell 驱动时,你需要为每种操作提供一个脚本,这些脚本应该根据 SECRET_ID 环境变量和通过 stdin/stdout 传递的密钥数据来执行相应的操作。

请注意,shell 驱动是一个高级功能,通常只在需要自定义密钥管理逻辑时使用。对于大多数用例,file 或 pass 驱动可能更加适合和简单。

示例

从文件创建密钥

从文件 mysecret.txt 创建一个名为 mysecret 的密钥:

podman secret create mysecret mysecret.txt

从标准输入创建密钥

从标准输入创建一个名为 mysecret 的密钥:

cat mysecret.txt | podman secret create mysecret -

使用自定义标签创建密钥

使用标签 user=alice 创建一个名为 mysecret 的密钥:

podman secret create --label user=alice mysecret mysecret.txt

替换现有密钥

如果 mysecret 已经存在,并且你想用新的数据替换它:

podman secret create --replace mysecret newsecret.txt

在使用 Podman 和密钥时,请确保密钥文件或输入数据的安全,避免未授权的访问和泄露。

基于本地文件创建指定的密钥

echo -n mysecret > ./secret.txt
podman secret create my_secret ./secret.txt

在这个例子中,我们首先使用 echo 命令将 mysecret 写入 secret.txt 文件,并且使用 -n 选项来防止 echo 在输出后添加换行符。然后,我们使用 podman secret create 命令来创建一个名为 my_secret 的密钥,该密钥的内容来自 ./secret.txt 文件。

通过标准输入创建指定的密钥

printf <secret> | podman secret create my_secret -

在这个例子中,我们使用 printf 命令来输出 <secret>(这里 <secret> 应该是你想要作为密钥内容的字符串),并将其通过管道传递给 podman secret create 命令。- 参数告诉 Podman 从标准输入中读取密钥的内容。

使用 pass 驱动基于本地文件创建 gpg 加密的密钥

podman secret create --driver=pass my_secret ./secret.txt.gpg

在这个例子中,我们使用 --driver=pass 选项来指定使用 pass 驱动,这样 Podman 会创建一个 gpg 加密的密钥。./secret.txt.gpg 是包含加密密钥的 gpg 文件。

从环境变量创建密钥

export MYSECRET=my_actual_secret
podman secret create --env=true my_secret MYSECRET

在这个例子中,我们首先将环境变量 MYSECRET 设置为 my_actual_secret(这里 my_actual_secret 应该是你想要作为密钥内容的字符串)。然后,我们使用 --env=true 选项来告诉 Podman 从环境变量中读取密钥的内容,并将环境变量名 MYSECRET 作为参数传递给 podman secret create 命令。

另请参阅

podman(1), podman-secret(1), podman-login(1)

这些手册页提供了关于 Podman、Podman 密钥和 Podman 登录的更多信息和选项。

历史

  • 2021年1月,由 Ashley Cui 最初编写。
  • 2024年2月,由 Brett Calliss 添加了展示从环境变量创建密钥的示例。