名称

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 中。选项可以多次使用,要求镜像使用多个密钥进行签名。对于 signedBysigstoreSigned 类型,--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"
  }
]

参见

containers-policy.json(5)

历史

2019 年 1 月,由 Tom Sweeney(tsweeney at redhat dot com)更新 2018 年 12 月,最初由 Qi Wang(qiwan at redhat dot com)编写