mirror of
https://github.com/containers/podman.git
synced 2025-05-21 00:56:36 +08:00
201 lines
6.0 KiB
Markdown
201 lines
6.0 KiB
Markdown
% podman-image-trust 1
|
|
|
|
## NAME
|
|
podman\-image\-trust - Manage container registry image trust policy
|
|
|
|
|
|
## SYNOPSIS
|
|
**podman image trust** set|show [*options*] *registry[/repository]*
|
|
|
|
## DESCRIPTION
|
|
Manages which registries to trust as a source of container images based on its location. (This option is not available with the remote Podman client, including Mac and Windows (excluding WSL2) machines)
|
|
|
|
The location is determined
|
|
by the transport and the registry host of the image. Using this container image `docker://docker.io/library/busybox`
|
|
as an example, `docker` is the transport and `docker.io` is the registry host.
|
|
|
|
Trust is defined in **/etc/containers/policy.json** and is enforced when a user attempts to pull
|
|
a remote image from a registry. The trust policy in policy.json describes a registry scope (registry and/or repository) for the trust. This trust can use public keys for signed images.
|
|
|
|
The scope of the trust is evaluated from most specific to the least specific. In other words, a policy may be:
|
|
|
|
* Defined to an entire registry.
|
|
* Defined to a particular repository in that registry.
|
|
* Defined to a specific signed image inside of the registry.
|
|
|
|
The following list are examples of valid scope values used in policy.json from most specific to the least specific:
|
|
|
|
docker.io/library/busybox:notlatest
|
|
|
|
docker.io/library/busybox
|
|
|
|
docker.io/library
|
|
|
|
docker.io
|
|
|
|
If no configuration is found for any of these scopes, the default value (specified by using "default" instead of REGISTRY[/REPOSITORY]) is used.
|
|
|
|
Trust **type** provides a way to:
|
|
|
|
Allowlist ("accept") or
|
|
Denylist ("reject") registries or
|
|
Require a simple signing signature (“signedBy”),
|
|
Require a sigstore signature ("sigstoreSigned").
|
|
|
|
Trust may be updated using the command **podman image trust set** for an existing trust scope.
|
|
|
|
## OPTIONS
|
|
#### **--help**, **-h**
|
|
Print usage statement.
|
|
|
|
### set OPTIONS
|
|
|
|
#### **--pubkeysfile**, **-f**=*KEY1*
|
|
A path to an exported public key on the local system. Key paths
|
|
are referenced in policy.json. Any path to a file may be used but locating the file in **/etc/pki/containers** is recommended. Options may be used multiple times to
|
|
require an image be signed by multiple keys. The **--pubkeysfile** option is required for the **signedBy** and **sigstoreSigned** types.
|
|
|
|
#### **--type**, **-t**=*value*
|
|
The trust type for this policy entry.
|
|
Accepted values:
|
|
**signedBy** (default): Require simple signing signatures with corresponding list of
|
|
public keys
|
|
**sigstoreSigned**: Require sigstore signatures with corresponding list of
|
|
public keys
|
|
**accept**: do not require any signatures for this
|
|
registry scope
|
|
**reject**: do not accept images for this registry scope
|
|
|
|
### show OPTIONS
|
|
|
|
#### **--json**, **-j**
|
|
Output trust as JSON for machine parsing
|
|
|
|
@@option noheading
|
|
|
|
#### **--raw**
|
|
Output trust policy file as raw JSON
|
|
|
|
## EXAMPLES
|
|
|
|
Accept all unsigned images from a registry:
|
|
```
|
|
sudo podman image trust set --type accept docker.io
|
|
```
|
|
|
|
Modify default trust policy:
|
|
```
|
|
sudo podman image trust set -t reject default
|
|
```
|
|
|
|
Display system trust policy:
|
|
```
|
|
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
|
|
```
|
|
|
|
Display trust policy file:
|
|
```
|
|
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"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Display trust as 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": "security@redhat.com"
|
|
},
|
|
{
|
|
"transport": "repository",
|
|
"name": "registry.redhat.io",
|
|
"repo_name": "registry.redhat.io",
|
|
"sigstore": "https://registry.redhat.io/containers/sigstore",
|
|
"type": "signed",
|
|
"gpg_id": "security@redhat.com"
|
|
},
|
|
{
|
|
"transport": "docker-daemon",
|
|
"type": "accept"
|
|
}
|
|
]
|
|
```
|
|
|
|
## SEE ALSO
|
|
**[containers-policy.json(5)](https://github.com/containers/image/blob/main/docs/containers-policy.json.5.md)**
|
|
|
|
## HISTORY
|
|
January 2019, updated by Tom Sweeney (tsweeney at redhat dot com)
|
|
December 2018, originally compiled by Qi Wang (qiwan at redhat dot com)
|