Podman容器之签名分发与网络

本文介绍了如何使用Podman对容器镜像进行签名和分发,包括使用GPG密钥签名镜像,配置远程registry,以及设置强制签名策略。此外,还详细讲解了Podman的远程客户端功能,以及容器的网络配置,如Bridge、Macvlan和Slirp4netns网络模式的使用。
摘要由CSDN通过智能技术生成

如何使用Podman对容器镜像进行签名和分发

对容器镜像进行签名源于仅信任专用镜像提供程序的动机,以缓解MITM 攻击或对容器注册表的攻击,对镜像进行签名的一种方法是使用GPG密钥,此技术通常与任何符合 OCI 的容器注册表兼容

从技术角度来看,我们可以在将镜像推送到远程注册表之前利用Podman对镜像进行签名。之后,所有运行Podman的系统都必须配置为从远程服务器检索签名,远程服务器可以是任何简单的Web服务器。这意味着在镜像拉取操作期间,每个未签名的镜像都将被拒绝。

首先创建一个GPG密钥对或选择一个本地可用的密钥对。要生成新的GPG密钥,只需运行并按照交互式对话框进行操作即可。现在我们应该能够验证密钥是否在本地存在:gpg --full-gen-key

[root@100 ~]# gpg --list-keys 1@2.com
pub   rsa2048 2022-08-16 [SC]
      3B243ED7F402AAC7E1F0CA3A38E9251EA9154B30
uid           [ultimate] Frices <1@2.com>
sub   rsa2048 2022-08-16 [E]

可以简单地在本地机器上启动一个容器registry

[root@100 ~]# podman run -d --name test -p 5000:5000 registry
0b647fe61f61181aa1cbb0fe9111a0e6eaa913f11c731d3cceddaa1478c44ec3

registry对镜像签名一无所知,它只是为容器镜像提供远程存储。这意味着,如果我们要对镜像进行签名,则必须注意如何分发签名。

选择一个标准镜像:alpine

[root@100 ~]# podman pull docker.io/library/alpine

重新标记镜像以将其指向本地registry

[root@100 ~]# podman tag alpine localhost:5000/alpine

修改系统范围的registry配置,/etc/containers/registries.d/default.yaml

[root@100 ~]# vim /etc/containers/registries.d/default.yaml
default-docker:
  sigstore: http://localhost:8000
  sigstore-staging: file:///var/lib/containers/sigstore
  • sigstore:引用 Web 服务器进行签名读取
  • sigstore-staging:引用文件路径以进行签名写入

推送并签署镜像

[root@100 ~]# podman push --tls-verify=false --sign-by 111@222.com localhost:5000/alpine
Getting image source signatures
Copying blob 994393dc58e7 done
Copying config 9c6f072447 done
Writing manifest to image destination
Signing manifest
Storing signatures

现在看一下系统签名存储

[root@100 ~]# ls /var/lib/containers/sigstore/
'alpine@sha256=e89c741df8cf66a2ada32d34844bcf6b5cfe3a9e2f6846b4c90b9165bc87d7ef'

在本地暂存签名存储中启动一个新服务器
/etc/containers/registries.d/default.yamlhttp://localhost:8000

[root@100 ~]# bash -c 'cd /var/lib/containers/sigstore && python3 -m http.server'
Ser
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值