名称¶
podman-image-trust - 管理容器注册表镜像信任策略
概要¶
podman image trust set|show [选项] 注册表[/仓库]
描述¶
根据其位置管理哪些注册表可作为容器镜像源进行信任。(此选项不适用于远程 Podman 客户端,包括 Mac 和 Windows(不包括 WSL2)机器。)
位置由镜像的传输方式和注册表主机决定。以容器镜像 docker://docker.io/library/busybox
为例,docker
是传输方式,而 docker.io
是注册表主机。
信任在 /etc/containers/policy.json 中定义,并在用户尝试从注册表拉取远程镜像时强制执行。policy.json 中的信任策略描述了注册表范围(注册表和/或仓库)的信任。此信任可以使用公钥来验证签名镜像。
信任范围的评估是从最具体到最不具体的。换句话说,策略可以
定义为整个注册表。
定义为该注册表中的特定仓库。
定义为注册表中的特定签名镜像。
以下列表是从最具体到最不具体的 policy.json 中使用的有效范围值的示例
docker.io/library/busybox:notlatest
docker.io/library/busybox
docker.io/library
docker.io
如果未找到任何这些范围的配置,则使用默认值(通过使用“default”而不是 REGISTRY[/REPOSITORY] 指定)。
信任 类型 提供了一种方法
允许列表(“accept”)或拒绝列表(“reject”)注册表,或者要求简单的签名(“signedBy”),或者要求 sigstore 签名(“sigstoreSigned”)。
可以使用命令 podman image trust set 更新现有信任范围的信任。
选项¶
--help, -h¶
打印用法说明。
设置选项¶
--pubkeysfile, -f=KEY1¶
本地系统上导出公钥的路径。密钥路径在 policy.json 中引用。可以使用任何文件路径,但建议将文件放在 /etc/pki/containers 中。选项可以多次使用,要求镜像使用多个密钥进行签名。对于 signedBy 和 sigstoreSigned 类型,--pubkeysfile 选项是必需的。
--type, -t=value¶
此策略条目的信任类型。接受的值:signedBy(默认):要求使用相应的公钥列表进行简单的签名验证 sigstoreSigned:要求使用相应的公钥列表进行 sigstore 签名验证 accept:不为该注册表范围要求任何签名 reject:不接受该注册表范围的镜像
显示选项¶
--json, -j¶
以 JSON 格式输出信任,以便机器解析
--noheading, -n¶
从列表中省略表标题。
--raw¶
以原始 JSON 格式输出信任策略文件
示例¶
接受来自注册表的所有未签名镜像
sudo podman image trust set --type accept docker.io
修改默认信任策略
sudo podman image trust set -t reject default
显示系统信任策略
podman image trust show
TRANSPORT NAME TYPE ID STORE
all default reject
repository docker.io/library accept
repository registry.access.redhat.com signed security@redhat.com https://access.redhat.com/webassets/docker/content/sigstore
repository registry.redhat.io signed security@redhat.com https://registry.redhat.io/containers/sigstore
repository docker.io reject
docker-daemon accept
显示信任策略文件
podman image trust show --raw
{
"default": [
{
"type": "reject"
}
],
"transports": {
"docker": {
"docker.io": [
{
"type": "reject"
}
],
"docker.io/library": [
{
"type": "insecureAcceptAnything"
}
],
"registry.access.redhat.com": [
{
"type": "signedBy",
"keyType": "GPGKeys",
"keyPath": "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release"
}
],
"registry.redhat.io": [
{
"type": "signedBy",
"keyType": "GPGKeys",
"keyPath": "/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release"
}
]
},
"docker-daemon": {
"": [
{
"type": "insecureAcceptAnything"
}
]
}
}
}
以 JSON 格式显示信任
podman image trust show --json
[
{
"transport": "all",
"name": "* (default)",
"repo_name": "default",
"type": "reject"
},
{
"transport": "repository",
"name": "docker.io",
"repo_name": "docker.io",
"type": "reject"
},
{
"transport": "repository",
"name": "docker.io/library",
"repo_name": "docker.io/library",
"type": "accept"
},
{
"transport": "repository",
"name": "registry.access.redhat.com",
"repo_name": "registry.access.redhat.com",
"sigstore": "https://access.redhat.com/webassets/docker/content/sigstore",
"type": "signed",
"gpg_id": "[email protected]"
},
{
"transport": "repository",
"name": "registry.redhat.io",
"repo_name": "registry.redhat.io",
"sigstore": "https://registry.redhat.io/containers/sigstore",
"type": "signed",
"gpg_id": "[email protected]"
},
{
"transport": "docker-daemon",
"type": "accept"
}
]
参见¶
历史¶
2019 年 1 月,由 Tom Sweeney(tsweeney at redhat dot com)更新 2018 年 12 月,最初由 Qi Wang(qiwan at redhat dot com)编写