部署指南
为红帽平台安装和配置 Trusted Artifact Signer 服务
摘要
前言 复制链接链接已复制到粘贴板!
欢迎使用 Red Hat Trusted Artifact Signer Deployment Guide。
这些步骤可帮助您部署完整的 Trusted Artifact Signer (RHTAS)软件堆栈,并验证部署。安装平台组织的内容:
您可以在此处查看官方 RHTAS 发行注记。https://docs.redhat.com/en/documentation/red_hat_trusted_artifact_signer/1.2/html/release_notes/
第 1 章 Red Hat OpenShift Container Platform 复制链接链接已复制到粘贴板!
1.1. 在 OpenShift 中部署的资源建议 复制链接链接已复制到粘贴板!
在 Red Hat OpenShift 上部署 Red Hat Trusted Artifact Signer (RHTAS)之前,了解如何调整基础架构资源的大小非常重要。需要考虑的关键基础架构数量是 Trillian 数据库可用的 CPU 数和内存。随着签名和验证请求数量的增加,这会增加对 CPU 的负载,并增加 Trillian 数据库的内存用量。
您有两个选项可用于实现与 RHTAS 一起使用的 Trillian 数据库:专用数据库或受管数据库。红帽建议为生产工作负载创建一个专用的数据库,以及用于非生产工作负载的托管数据库。以下是您可以开始使用的基准 CPU 和内存资源:
Dedicated
- 2 个 CPU 内核
- 1 GB RAM
- 5 GB 存储
受管
- 4 个 CPU 内核
- 2 GB RAM
- 10 GB 存储
您可以安装 Red Hat Trusted Artifact Signer (RHTAS) operator,并使用 OpenShift 的 Operator Lifecycle Manager (OLM)部署 RHTAS 服务。此部署为您提供选择 OpenID Connect (OIDC)供应商的基本签名框架。您必须至少配置以下 OIDC 供应商之一: Red Hat Single Sign-on (SSO)、Google、Amazon Secure Token Service (STS)或 GitHub。如果您不想使用默认值,您还可以选择自定义数据库解决方案。
先决条件
- Red Hat OpenShift Container Platform 4.15 或更高版本。
-
使用
cluster-admin角色访问 OpenShift Web 控制台。 -
安装了
oc二进制文件的工作站。
流程
-
使用具有
cluster-admin角色的用户登录 OpenShift Web 控制台。 - 从 Administrator 视角中,展开 Operators 导航菜单,然后点 OperatorHub。
- 在搜索字段中,键入 trusted,然后单击 Red Hat Trusted Artifact Signer 标题。
- 单击 Install 按钮,以显示 Operator 详情。
接受默认值,点 Install Operator 页面中的 Install,并等待安装完成。
重要安装完成后,会自动为您创建一个新项目。新项目名称是
trusted-artifact-signer。注意Trusted Artifact Signer operator 安装到
openshift-operators命名空间中,所有依赖项都会被自动安装。- 可选。您可以为 Trusted Artifact Signer 服务使用替代数据库,而不是默认的数据库供应商。如果要使用 Amazon 的关系数据库服务(RDS) 或 OpenShift 上的自我管理的数据库,请在继续安装前按照其中一个流程进行操作。配置其中一个其他数据库提供程序后,您可以继续这个过程的下一步。
以部署 Trusted Artifact Signer 服务。
- 在 OpenShift Web 控制台中,从导航菜单中展开 Operators,点 Installed Operators。
-
从项目下拉列表中,选择
trusted-artifact-signer。 - 点 Red Hat Trusted Artifact Signer。
- 单击 Securesign 选项卡,然后单击 Create Securesign 按钮。
- 在 Create Securesign 页面上,选择 YAML 视图。
您可以在部署期间配置不同的 OIDC 供应商,如 Google OAuth、Amazon STS、红帽 SSO、Microsoft 的 Entra ID 或 GitHub OAuth 作为此部署期间的初始 OIDC 供应商。在
spec.fulcio.config.OIDCIssuers部分下,使用 OIDC 供应商 URL 编辑以下三行,并相应地设置ClientID。Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果红帽的 SSO 已作为 OIDC 供应商实施,请运行以下命令查找签发者 URL:
echo https://$(oc get route keycloak -n keycloak-system | tail -n 1 | awk '{print $2}')/auth/realms/trusted-artifact-signerecho https://$(oc get route keycloak -n keycloak-system | tail -n 1 | awk '{print $2}')/auth/realms/trusted-artifact-signerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
ClientID设置为trusted-artifact-signer。重要您可以在同一配置中定义多个不同的 OIDC 供应商。
可选。如果您选择使用非默认数据库,那么在
spec.trillian部分下,将create设置为false,并为数据库 secret 对象指定名称。Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Create 按钮。
点 All instances 选项卡观察部署状态,直到 CTlog、Fulcio、Rekor、Trillian 和 TUF 实例就绪。
注意Securesign 实例不提供状态。
- 您可以在 OpenShift 控制台中使用 Prometheus 检查新的 Trusted Artifact Signer 服务的健康状态。在导航菜单中,展开 Observe,然后点 Dashboards。
- 通过签署容器镜像 或 Git 提交 来验证安装。https://docs.redhat.com/en/documentation/red_hat_trusted_artifact_signer/1/html/deployment_guide/rhtas-ocp-deploy#signing-and-verifying-containers-by-using-cosign-from-the-command-line-interface-for-openshift_deploy
1.3. 验证 Trusted Artifact Signer 安装 复制链接链接已复制到粘贴板!
作为系统管理员,您可以验证在 Red Hat OpenShift Container Platform 上运行的 Red Hat Trusted Artifact Signer (RHTAS)的部署是否成功。
您可以签署测试容器镜像,并验证该签名的真实性,以验证您环境中的 RHTAS 部署。
可以通过两种方式从代码管道验证构建工件。您可以使用 cosign 和 gitsign 签署和验证,但只能使用企业合同进行验证。
1.3.1. 使用命令行界面使用 Cosign 签名和验证容器 复制链接链接已复制到粘贴板!
通过 cosign 工具,您可以使用红帽的Trusted Artifact Signer (RHTAS)服务签名和验证开放容器项目(OCI)容器镜像以及其他构建工件。
对于 RHTAS,您必须使用 cosign 版本 2.2 或更高版本。
先决条件
- 在 Red Hat OpenShift Container Platform 4.15 或更高版本上安装 RHTAS。
- 访问 OpenShift Web 控制台。
-
安装了
oc、podman二进制文件的工作站。
流程
将
cosign二进制文件从 OpenShift 集群下载到您的工作站。- 登录到 OpenShift Web 控制台。在主页中,单击 ? 图标,单击 Command line tools,前往 cosign download 部分,然后单击您的平台的链接。
在工作站上打开一个终端,解压缩二进制
.gz文件,并设置执行位:Example
gunzip cosign-amd64.gz chmod +x cosign-amd64
gunzip cosign-amd64.gz chmod +x cosign-amd64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将二进制文件移到
$PATH环境中的位置:Example
sudo mv cosign-amd64 /usr/local/bin/cosign
sudo mv cosign-amd64 /usr/local/bin/cosignCopy to Clipboard Copied! Toggle word wrap Toggle overflow
登录到 OpenShift 集群:
语法
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
oc login --token=TOKEN --server=SERVER_URL_AND_PORTCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以从 OpenShift Web 控制台查找要在命令行中使用的登录令牌和 URL。登录 OpenShift Web 控制台。点您的用户名,然后点 Copy login 命令。如果被要求,请再次提供您的用户名和密码,然后单击 Display Token 查看命令。
切换到 RHTAS 项目:
语法
oc project PROJECT_NAME
oc project PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc project trusted-artifact-signer
oc project trusted-artifact-signerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意使用 RHTAS 安装的项目名称。
配置 shell 环境,以执行容器镜像签名和验证。
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 初始化更新框架(TUF)系统:
Example
cosign initialize
cosign initializeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为测试容器镜像签名。
创建一个空容器镜像:
Example
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1h
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将空容器镜像推送到
ttl.sh临时 registry:Example
podman push ttl.sh/rhtas/test-image:1h
podman push ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为容器镜像签名:
语法
cosign sign -y IMAGE_NAME:TAG
cosign sign -y IMAGE_NAME:TAGCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
cosign sign -y ttl.sh/rhtas/test-image:1h
cosign sign -y ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此时会打开一个 Web 浏览器,允许您使用电子邮件地址为容器镜像签名。
删除临时 Docker 文件:
Example
rm ./tmp.Dockerfile
rm ./tmp.DockerfileCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用证书身份和签发者验证签名的容器镜像:
语法
cosign verify --certificate-identity=SIGNING_EMAIL_ADDR IMAGE_NAME:TAG
cosign verify --certificate-identity=SIGNING_EMAIL_ADDR IMAGE_NAME:TAGCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
cosign verify --certificate-identity=jdoe@redhat.com ttl.sh/rhtas/test-image:1h
cosign verify --certificate-identity=jdoe@redhat.com ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您还可以使用
cosign命令--certificate-identity-regexp和--certificate-oidc-issuer-regexp的以下选项对证书身份和签发者使用正则表达式。将 OpenShift 集群中的
rekor-cli二进制文件下载到您的工作站。- 登录到 OpenShift Web 控制台。在主页中,单击 ? 图标,单击 Command line tools,转至 rekor-cli 下载部分,然后单击您的平台的链接。
在工作站上打开一个终端,解压缩二进制
.gz文件,并设置执行位:Example
gunzip rekor-cli-amd64.gz chmod +x rekor-cli-amd64
gunzip rekor-cli-amd64.gz chmod +x rekor-cli-amd64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将二进制文件移到
$PATH环境中的位置:Example
sudo mv rekor-cli-amd64 /usr/local/bin/rekor-cli
sudo mv rekor-cli-amd64 /usr/local/bin/rekor-cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 Rekor 命令行界面查询透明日志。
根据日志索引进行搜索:
Example
rekor-cli get --log-index 0 --rekor_server $COSIGN_REKOR_URL --format json | jq
rekor-cli get --log-index 0 --rekor_server $COSIGN_REKOR_URL --format json | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 搜索电子邮件地址以获取通用唯一标识符(UUID):
语法
rekor-cli search --email SIGNING_EMAIL_ADDR --rekor_server $COSIGN_REKOR_URL --format json | jq
rekor-cli search --email SIGNING_EMAIL_ADDR --rekor_server $COSIGN_REKOR_URL --format json | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
rekor-cli search --email jdoe@redhat.com --rekor_server $COSIGN_REKOR_URL --format json | jq
rekor-cli search --email jdoe@redhat.com --rekor_server $COSIGN_REKOR_URL --format json | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令返回用于下一步的 UUID。
使用 UUID 获取事务详情:
语法
rekor-cli get --uuid UUID --rekor_server $COSIGN_REKOR_URL --format json | jq
rekor-cli get --uuid UUID --rekor_server $COSIGN_REKOR_URL --format json | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
rekor-cli get --uuid 24296fb24b8ad77a71b9c1374e207537bafdd75b4f591dcee10f3f697f150d7cc5d0b725eea641e7 --rekor_server $COSIGN_REKOR_URL --format json | jq
rekor-cli get --uuid 24296fb24b8ad77a71b9c1374e207537bafdd75b4f591dcee10f3f697f150d7cc5d0b725eea641e7 --rekor_server $COSIGN_REKOR_URL --format json | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.2. 使用命令行界面使用 Gitsign 签名和验证提交 复制链接链接已复制到粘贴板!
gitsign 工具可让您使用红帽的 Trusted Artifact Signer (RHTAS)服务签名和验证 Git 存储库提交。
先决条件
- 在 Red Hat OpenShift Container Platform 4.15 或更高版本上安装 RHTAS。
- 访问 OpenShift Web 控制台。
安装了
oc、git和cosign二进制文件的工作站。-
您必须使用
cosign版本 2.2 或更高版本。
-
您必须使用
流程
将
gitsign二进制文件从 OpenShift 集群下载到您的工作站。- 登录到 OpenShift Web 控制台。在主页中,单击 ? 图标,单击 Command line tools,前往 gitsign 下载部分,然后单击您的平台的链接。
在工作站上打开一个终端,解压缩 .gz 文件,并设置执行位:
Example
gunzip gitsign-amd64.gz chmod +x gitsign-amd64
gunzip gitsign-amd64.gz chmod +x gitsign-amd64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将二进制文件移到
$PATH环境中的位置:Example
sudo mv gitsign-amd64 /usr/local/bin/gitsign
sudo mv gitsign-amd64 /usr/local/bin/gitsignCopy to Clipboard Copied! Toggle word wrap Toggle overflow
登录到 OpenShift 集群:
语法
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
oc login --token=TOKEN --server=SERVER_URL_AND_PORTCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以从 OpenShift Web 控制台查找要在命令行中使用的登录令牌和 URL。登录 OpenShift Web 控制台。点您的用户名,然后点 Copy login 命令。如果被要求,请再次提供您的用户名和密码,然后单击 Display Token 查看命令。
切换到 RHTAS 项目:
语法
oc project PROJECT_NAME
oc project PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc project trusted-artifact-signer
oc project trusted-artifact-signerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意使用 RHTAS 安装的项目名称。
配置 shell 环境以进行提交签名和验证:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 RHTAS 服务配置本地存储库配置以签署您的提交:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将提交提交到本地存储库:
Example
git commit --allow-empty -S -m “Test of a signed commit”
git commit --allow-empty -S -m “Test of a signed commit”Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此时会打开一个 Web 浏览器,允许您使用电子邮件地址为提交签名。
初始化更新框架(TUF)系统:
Example
cosign initialize
cosign initializeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证提交:
语法
gitsign verify --certificate-identity=SIGNING_EMAIL --certificate-oidc-issuer=$SIGSTORE_OIDC_ISSUER HEAD
gitsign verify --certificate-identity=SIGNING_EMAIL --certificate-oidc-issuer=$SIGSTORE_OIDC_ISSUER HEADCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
gitsign verify --certificate-identity=jdoe@redhat.com --certificate-oidc-issuer=$SIGSTORE_OIDC_ISSUER HEAD
gitsign verify --certificate-identity=jdoe@redhat.com --certificate-oidc-issuer=$SIGSTORE_OIDC_ISSUER HEADCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3.3. 使用企业合同验证容器镜像上的签名 复制链接链接已复制到粘贴板!
企业合同(EC)是维护软件供应链安全性的工具,您可以使用它来定义和执行容器镜像的策略。您可以使用 ec 二进制文件来验证使用红帽的 Trusted Artifact Signer (RHTAS)签名框架的容器镜像的待测试和签名。
先决条件
- 在 Red Hat OpenShift Container Platform 4.15 或更高版本上安装 RHTAS。
- 访问 OpenShift Web 控制台。
安装了
oc、cosign和podman二进制文件的工作站。-
您必须使用
cosign版本 2.2 或更高版本。
-
您必须使用
流程
从 OpenShift 集群下载
ec二进制文件。- 登录 OpenShift Web 控制台。在主页中,单击 ? 图标,单击 Command line tools,前往 ec download 部分,然后单击您的平台的链接。
在工作站上打开一个终端,解压缩二进制 .gz 文件,并设置执行位:
Example
gunzip ec-amd64.gz chmod +x ec-amd64
gunzip ec-amd64.gz chmod +x ec-amd64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将二进制文件移到
$PATH环境中的位置:Example
sudo mv ec-amd64 /usr/local/bin/ec
sudo mv ec-amd64 /usr/local/bin/ecCopy to Clipboard Copied! Toggle word wrap Toggle overflow
登录到 OpenShift 集群:
语法
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
oc login --token=TOKEN --server=SERVER_URL_AND_PORTCopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以从 OpenShift Web 控制台查找要在命令行中使用的登录令牌和 URL。登录 OpenShift Web 控制台。点您的用户名,然后点 Copy login 命令。如果被要求,请再次提供您的用户名和密码,然后单击 Display Token 查看命令。
切换到 RHTAS 项目:
语法
oc project PROJECT_NAME
oc project PROJECT_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc project trusted-artifact-signer
oc project trusted-artifact-signerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意使用 RHTAS 安装的项目名称。
配置 shell 环境,以执行容器镜像签名和验证。
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 初始化更新框架(TUF)系统:
Example
cosign initialize
cosign initializeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为测试容器镜像签名。
创建一个空容器镜像:
Example
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1h
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将空容器镜像推送到
ttl.sh临时 registry:Example
podman push ttl.sh/rhtas/test-image:1h
podman push ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为容器镜像签名:
语法
cosign sign -y IMAGE_NAME:TAG
cosign sign -y IMAGE_NAME:TAGCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
cosign sign -y ttl.sh/rhtas/test-image:1h
cosign sign -y ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此时会打开一个 Web 浏览器,允许您使用电子邮件地址为容器镜像签名。
删除临时 Docker 文件:
Example
rm ./tmp.Dockerfile
rm ./tmp.DockerfileCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
predicate.json文件:Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需有关 schema 布局的更多信息,请参阅 SLSA provenance predicate 规格。
将
predicate.json文件与容器镜像关联:语法
cosign attest -y --predicate ./predicate.json --type slsaprovenance IMAGE_NAME:TAG
cosign attest -y --predicate ./predicate.json --type slsaprovenance IMAGE_NAME:TAGCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
cosign attest -y --predicate ./predicate.json --type slsaprovenance ttl.sh/rhtas/test-image:1h
cosign attest -y --predicate ./predicate.json --type slsaprovenance ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证容器镜像是否至少有一个测试和签名:
语法
cosign tree IMAGE_NAME:TAG
cosign tree IMAGE_NAME:TAGCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用企业联系人验证容器镜像:
语法
ec validate image --image IMAGE_NAME:TAG --certificate-identity-regexp 'SIGNER_EMAIL_ADDR' --certificate-oidc-issuer-regexp 'keycloak-keycloak-system' --output yaml --show-successes
ec validate image --image IMAGE_NAME:TAG --certificate-identity-regexp 'SIGNER_EMAIL_ADDR' --certificate-oidc-issuer-regexp 'keycloak-keycloak-system' --output yaml --show-successesCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 企业合同生成 pass-fail 报告,其中包含有关任何安全违反情况的详细信息。添加
--info标志时,报告包括所有找到违反情况的详情和可能的解决方案。
其它资源
- 如需更多信息,请参阅 Conforma 网站。
1.4. 配置额外的 OpenID Connect 供应商 复制链接链接已复制到粘贴板!
作为系统管理员,您可以配置许多不同的 OpenID Connect (OIDC)供应商,以用于红帽的 Trusted Artifact Signer 服务。您可以配置以下 OIDC 供应商来验证用户:
- 红帽构建的 Keycloak
- Red Hat Single Sign-on (SSO)
- Amazon 安全令牌服务(STS)
- Microsoft Entra ID
- GitHub
您可以将 Google OAuth 2.0 用作 Red Hat Trusted Artifact Signer (RHTAS)服务的 OpenID Connect (OIDC)供应商。您可以决定在RHAS 部署期间或稍后配置 Google OAuth。
您可以在同一配置中定义多个不同的 OIDC 供应商。
先决条件
- Red Hat OpenShift Container Platform 4.15 或更高版本。
-
使用
cluster-admin角色访问 OpenShift Web 控制台。 -
安装了
oc、podman二进制文件的工作站。 在 Google Cloud Console 中,使用以下设置创建一个 OAuth 客户端 ID:
- 将应用程序类型设置为 "Web Application"。
- 授权重定向 URI 必须包含: http://localhost/auth/callback。
流程
在工作站上打开一个终端,并登录到 OpenShift:
语法
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
oc login --token=TOKEN --server=SERVER_URL_AND_PORTCopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以从 OpenShift Web 控制台在命令行中查找您的登录令牌和 URL。登录 OpenShift Web 控制台。点您的用户名,然后点 Copy login 命令。如果被要求,请再次提供您的用户名和密码,然后单击 Display Token 查看命令。
更新 RHTAS 配置。
打开以编辑
Securesign资源:语法
oc edit Securesign NAME -n NAMESPACE
oc edit Securesign NAME -n NAMESPACECopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc edit Securesign securesign-sample -n trusted-artifact-signer
oc edit Securesign securesign-sample -n trusted-artifact-signerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您必须使用为 RHTAS 安装创建的项目名称作为命名空间。
在
OIDCIssuers部分下,使用 Google 客户端标识符、签发者的 URL 添加新子,并将Type值设置为email:语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Google 客户端标识符添加到
ClientID字段。- 保存更改,退出编辑器。几秒钟后,操作员会自动重新配置 RHTAS 软件堆栈。
更改 OIDC 签发者和客户端 id 环境变量以使用 Google:
示例
export OIDC_ISSUER_URL=https://accounts.google.com export COSIGN_OIDC_CLIENT_ID="314919563931-35zke44ouf2oiztjg7v8o8c2ge9usnd1.apps.googleexample.com"
export OIDC_ISSUER_URL=https://accounts.google.com export COSIGN_OIDC_CLIENT_ID="314919563931-35zke44ouf2oiztjg7v8o8c2ge9usnd1.apps.googleexample.com"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将您的 secret 从 Google Console 复制并粘贴到纯文本文件中:
语法
echo SECRET > my-google-client-secret
echo SECRET > my-google-client-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您已运行 RHTAS 服务,您可以通过签署测试容器镜像来验证更新的配置。
创建一个空容器镜像:
Example
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1h
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将空容器镜像推送到
ttl.sh临时 registry:Example
podman push ttl.sh/rhtas/test-image:1h
podman push ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除临时 Docker 文件:
Example
rm ./tmp.Dockerfile
rm ./tmp.DockerfileCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为容器镜像签名:
语法
cosign sign -y --oidc-client-secret-file=SECRET_FILE IMAGE_NAME:TAG
cosign sign -y --oidc-client-secret-file=SECRET_FILE IMAGE_NAME:TAGCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
cosign sign -y --oidc-client-secret-file=my-google-client-secret ttl.sh/rhtas/test-image:1h
cosign sign -y --oidc-client-secret-file=my-google-client-secret ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此时会打开一个 Web 浏览器,允许您使用电子邮件地址为容器镜像签名。
您可以使用 Red Hat Single Sign-On (SSO)作为红帽的 Trusted Artifact Signer (RHTAS)服务的 OpenID Connect 供应商。这可让您为应用程序和安全服务的 Keycloak 身份验证环境。
先决条件
- Red Hat OpenShift Container Platform 4.15 或更高版本。
-
使用
cluster-admin角色访问 OpenShift Web 控制台。 - 有 1 GB 的容器存储可用于 Keycloak PostgreSQL 数据库。
-
安装了
oc二进制文件的工作站。
流程
-
使用具有
cluster-admin角色的用户登录 OpenShift Web 控制台。 创建一个新项目来部署 Keycloak 服务。
- 从 Administrator 视角中,从导航菜单中展开 Home,再单击 Projects。
- 点 Create Project 按钮。
-
新项目名称为
keycloak-system,然后单击 Create 按钮。
- 从导航菜单中展开 Operators,然后点 OperatorHub。
- 在搜索字段中,键入 sso,然后单击 Red Hat Single Sign-on 标题。
- 单击 Install 按钮,以显示 Operator 详情。
-
如果尚未设置,请从 Installed Namespace 下拉菜单中选择
keycloak-system。 - 在 Install Operator 页面中点 Install,并等待安装完成。
- 安装完成后,点 View Operator。
在 workstation 终端中登录到 OpenShift 集群:
语法
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
oc login --token=TOKEN --server=SERVER_URL_AND_PORTCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以从 OpenShift Web 控制台查找要在命令行中使用的登录令牌和 URL。登录 OpenShift Web 控制台。点您的用户名,然后点 Copy login 命令。如果被要求,请再次提供您的用户名和密码,然后单击 Display Token 查看命令。
切换到 Keycloak 项目:
Example
oc project keycloak-system
oc project keycloak-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 Keycloak 实例:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 Keycloak 域:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 Keycloak 客户端:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 Keycloak 用户:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置用户名、用户的电子邮件地址以及密码或引用 secret 对象。
- 返回到 OpenShift Web 控制台,点 All instances 选项卡监视并等待 Keycloak 系统成功初始化。
您可以将红帽构建的 Keycloak (RHBK)配置为红帽受信任的工件签名程序(RHTAS)服务的 OpenID Connect (OIDC)供应商。此流程指导您将 RHBK 与 RHTAS 集成。
您可以在相同的 SecureSign 配置中为 Fulcio 定义几个不同的 OIDC 供应商。
先决条件
流程
-
使用具有
cluster-admin角色的用户登录 OpenShift Web 控制台。 创建一个新项目来部署 Keycloak 服务。
- 从 Administrator 视角中,从导航菜单中展开 Home,再单击 Projects。
- 点 Create Project 按钮。
-
新项目名称为
keycloak-system,然后点 Create 按钮。
部署 PostgreSQL 实例,供 Keycloak 用于存储持久数据。
重要如果 Keycloak 已存在数据库,请替换与您的数据库实例对应的
Secret资源的用户名、密码和数据库名称值。您可以跳过 PostgreSQL Service 和 StatefulSet 步骤的创建,并继续下一步。创建
Secret资源以存储数据库信息。- 从导航菜单中展开 Workloads,再单击 Secrets。
-
从 Project 下拉菜单中选择
keycloak-system。 - 单击 Create 下拉菜单,再选择 Key/Value secret。
-
在 Secret name 字段中输入
postgresql-db。 -
在 Key 字段中输入
username。 -
在 Value 字段中输入
keycloak。这是用于向 PostgreSQL 数据库实例进行身份验证的用户名 Keycloak。 - 单击 Add key/value 链接,以添加另一个键值对。
-
在 Key 字段中输入
password。 - 在 Value 字段中输入您选择的密码。这是用于向 PostgreSQL 数据库实例进行身份验证的密码 Keycloak。
- 单击 Add key/value 链接,以添加另一个键值对。
-
在 Key 字段中输入
database。 -
在 Value 字段中输入
keycloak。这是用于将 Keycloak 数据存储在 PostgreSQL 数据库实例中的数据库名称。 - 点 Create 按钮。
创建 PostgreSQL Service 和 StatefulSet。
- 点 + 图标。
- 复制 Service 和 StatefulSet YAML 配置文本,并在 Import YAML 页面中,将文本粘贴到 文本编辑器框中。
-
点 Create 按钮,将 Service 和 StatefulSet 添加到
keycloak-system项目中。
从工作站打开一个终端,并登录到 OpenShift 集群:
语法
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
oc login --token=TOKEN --server=SERVER_URL_AND_PORTCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以从 OpenShift Web 控制台查找要在命令行中使用的登录令牌和 URL。登录 OpenShift Web 控制台。点您的用户名,然后点 Copy login 命令。如果被要求,请再次提供您的用户名和密码,然后单击 Display Token 查看命令。
创建新的
Secret资源,使其包含传输层安全(TLS)证书和对应的私钥:语法
oc create secret tls SECRET_NAME -n NAMESPACE --cert CERTIFICATE_FILE_NAME --key PRIVATE_KEY_FILE_NAME
oc create secret tls SECRET_NAME -n NAMESPACE --cert CERTIFICATE_FILE_NAME --key PRIVATE_KEY_FILE_NAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc create secret tls keycloak-tls -n keycloak-system --cert certificate.pem --key key.pem
oc create secret tls keycloak-tls -n keycloak-system --cert certificate.pem --key key.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意OpenShift 的服务服务证书可以自动生成和管理用于 Keycloak 的 TLS 证书。如需更多信息 , 请参阅附录。
- 在 OpenShift Web 控制台中,从导航菜单中展开 Operator,然后点 OperatorHub。
- 在搜索字段中,键入 keycloak,然后单击认证红帽目录中的 Keycloak Operator 标题。
- 单击 Install 按钮,以显示 Operator 详情。
-
在 Install Operator 页面中,从 Installed Namespace 下拉菜单中选择
keycloak-system,然后点 Install 按钮。等待安装完成。 - 安装完成后,点 View Operator 按钮。
- 在 Keycloak 标题中点 Create instance。
在 Create Keycloak 页面中,选择 YAML 视图。
-
在
name行中,将example-keycloak替换为您的自定义名称,如keycloak。 主机名可以在
hostname属性中明确指定,或者自动生成与其他路由类似。在hostname行中,将example.org替换为您的自定义主机名。注意有关使 OpenShift 为 Keycloak 实例生成主机名所需的步骤,请参阅附录。???
在
spec部分,添加您的数据库详情:Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,在
http属性的spec部分下,指定包含 TLS 证书的Secret资源的名称。Example
spec: ... http: tlsSecret: keycloak-tls ...spec: ... http: tlsSecret: keycloak-tls ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Create 按钮。
-
在
- 展开 Networking 导航菜单,再单击 Routes。
- 要打开 Keycloak 管理控制台,请点击与 Keycloak 实例关联的路由的链接。
-
admin用户的默认凭据存储在名为 keycloak-initial-admin 的 Secret 中。要查找密码,展开 Workloads 导航菜单,再单击 Secrets。 - 选择 keycloak-initial-admin Secret。
-
在 Data 部分下,找到 password 键,然后点
图标。
-
在 Keycloak Administration Console 登录页面中,输入
admin作为用户名,并粘贴上一步的内容作为密码。 创建一个名为
trusted-artifact-signer的新域。- 在导航菜单中,选择 Red Hat Build of Keycloak 下拉菜单。
- 选择 Create Realm。
-
输入
trusted-artifact-signer作为 资源名称。 - 单击 Create 以创建新域。
创建新用户 。新用户可以登录到 Keycloak 管理控制台,也可以使用 RHTAS 为容器和提交签名。
- 在导航菜单的 Manage 部分下,然后选择 Clients。
- 点 Create Client 按钮
-
在 Client Id 字段中,输入
trusted-artifact-signer。 - 另外,您还可以在对应的字段中输入 Name 和 Description。
- 点击 Next。
- 接受新客户端创建过程的 Capability Config 步骤的默认选项。
- 点击 Next。
-
在 Valid redirect URIs 字段中,输入
*。 - 单击 Save 以创建客户端。
-
在导航菜单的 Configure 部分下,选择 Realm Settings 以查找
trusted-artifact-signer域的 Issuer URL。 - 在 Endpoints 旁边,单击 OpenID Endpoint Configuration 链接。
-
从
issuer属性复制 URL。 在 RHTAS 的
SecureSign资源的.spec.fulcio.config.OIDCIssuers部分下,将 CLIENT_ID 替换为trusted-artifact-signer,并粘贴 URL 内容来替换 RHBK_REALM_ISSUER_URL :语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以将 Amazon 的安全令牌服务(STS)用作红帽受信任的工件签名程序(RHTAS)服务的 OpenID Connect (OIDC)供应商。您可以决定在RHAS 部署期间或稍后配置 Amazon STS。
您可以在同一配置中定义多个不同的 OIDC 供应商。
先决条件
- Red Hat OpenShift Container Platform 4.15 或更高版本。
-
使用
cluster-admin角色访问 OpenShift Web 控制台。 -
安装了
oc、podman和aws二进制文件的工作站。 - 为 OpenShift 环境启用受管 Amazon Web Service (AWS)资源。
创建了一个具有完整权限的 Amazon Identity and Access Management (IAM)用户。这允许访问运行 IAM 操作。
- 为此用户创建访问密钥。
流程
在工作站上打开一个终端,并登录到 OpenShift:
语法
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
oc login --token=TOKEN --server=SERVER_URL_AND_PORTCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以从 OpenShift Web 控制台在命令行中查找您的登录令牌和 URL。登录 OpenShift Web 控制台。点您的用户名,然后点 Copy login 命令。如果被要求,请再次提供您的用户名和密码,然后单击 Display Token 查看命令。
查找 AWS OIDC 供应商 URL:
Example
oc get authentication cluster -o jsonpath='{.spec.serviceAccountIssuer}'oc get authentication cluster -o jsonpath='{.spec.serviceAccountIssuer}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新 RHTAS 配置。
打开以编辑
Securesign资源:语法
oc edit Securesign NAME -n NAMESPACE
oc edit Securesign NAME -n NAMESPACECopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc edit Securesign securesign-sample -n trusted-artifact-signer
oc edit Securesign securesign-sample -n trusted-artifact-signerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您必须使用为 RHTAS 安装创建的项目名称作为命名空间。
在
OIDCIssuers部分下,使用 AWS STS 客户端标识符、签发者的 URL 添加新子,并将Type值设置为kubernetes:Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存更改,退出编辑器。几秒钟后,操作员会自动重新配置 RHTAS 软件堆栈。
输入您的访问密钥、secret 密钥、默认区域和输出格式来配置 AWS 命令行工具:
Example
aws configure
aws configureCopy to Clipboard Copied! Toggle word wrap Toggle overflow 设置以下环境变量:
Example
export account_id=$(aws sts get-caller-identity --query "Account" --output text) export oidc_provider="$(oc get authentication cluster -o jsonpath='{.spec.serviceAccountIssuer}' | cut -d '/' -f3-)" export role_name=rhtas-sts export namespace=rhtas-sts export service_account=cosign-stsexport account_id=$(aws sts get-caller-identity --query "Account" --output text) export oidc_provider="$(oc get authentication cluster -o jsonpath='{.spec.serviceAccountIssuer}' | cut -d '/' -f3-)" export role_name=rhtas-sts export namespace=rhtas-sts export service_account=cosign-stsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建与新创建的 IAM 角色关联的信任策略:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用信任策略为 RHTAS 服务创建一个新的 IAM 角色:
Example
aws iam create-role --role-name rhtas-sts --assume-role-policy-document file://trust-relationship.json --description "Red Hat Trusted Artifact Signer STS Role"
aws iam create-role --role-name rhtas-sts --assume-role-policy-document file://trust-relationship.json --description "Red Hat Trusted Artifact Signer STS Role"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在启用了 STS 的 OpenShift 集群中,创建一个新项目命名空间:
语法
oc new-project NAMESPACE
oc new-project NAMESPACECopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc new-project rhtas-sts
oc new-project rhtas-stsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为假设 IAM 角色创建服务帐户,并在 OpenShift 项目命名空间中运行工作负载。
创建服务帐户清单:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将服务帐户清单应用到 OpenShift:
Example
oc apply -f service_account.yaml
oc apply -f service_account.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建新的部署工作负载,以便在镜像 registry 中签名容器镜像。
创建部署清单:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将部署清单应用到 OpenShift:
Example
oc apply -f deployment.yaml
oc apply -f deployment.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建测试容器镜像以签名。
创建一个空容器镜像:
Example
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1h
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将空容器镜像推送到
ttl.sh临时 registry:Example
podman push ttl.sh/rhtas/test-image:1h
podman push ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除临时 Docker 文件:
Example
rm ./tmp.Dockerfile
rm ./tmp.DockerfileCopy to Clipboard Copied! Toggle word wrap Toggle overflow
通过签名和验证测试容器镜像来验证配置。
在正在运行的 pod 中打开远程 shell 会话:
语法
oc rsh -n NAMESPACE deployment/cosign-sts env IMAGE=IMAGE_NAME:TAG /bin/sh
oc rsh -n NAMESPACE deployment/cosign-sts env IMAGE=IMAGE_NAME:TAG /bin/shCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc rsh -n rhtas-sts deployment/cosign-sts env IMAGE=ttl.sh/rhtas/test-image:1h /bin/sh
oc rsh -n rhtas-sts deployment/cosign-sts env IMAGE=ttl.sh/rhtas/test-image:1h /bin/shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为容器镜像签名:
Example
cosign sign -y --identity-token=$(cat $AWS_WEB_IDENTITY_TOKEN_FILE) ttl.sh/rhtas/test-image:1h
cosign sign -y --identity-token=$(cat $AWS_WEB_IDENTITY_TOKEN_FILE) ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证签名的容器镜像:
Example
cosign verify --certificate-identity=https://kubernetes.io/namespaces/$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)/serviceaccounts/cosign-sts --certificate-oidc-issuer=$COSIGN_CERTIFICATE_OIDC_ISSUER ttl.sh/rhtas/test-image:1h
cosign verify --certificate-identity=https://kubernetes.io/namespaces/$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)/serviceaccounts/cosign-sts --certificate-oidc-issuer=$COSIGN_CERTIFICATE_OIDC_ISSUER ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow
当使用红帽单点登录(SSO)服务作为 Red Hat Trusted Artifact Signer (RHTAS)服务的 OpenID Connect (OIDC)服务时,您可以使用 GitHub OAuth 2.0。此流程指导您将 GitHub OAuth 与 OpenShift 上的现有 Red Hat SSO 部署集成。
您可以在同一配置中定义多个不同的 OIDC 供应商。
先决条件
- Red Hat OpenShift Container Platform 4.15 或更高版本。
- 正在运行的 Red Hat SSO 实例。
-
安装了
oc二进制文件的工作站。 创建 GitHub OAuth 应用,并在注册应用后记录客户端标识符和机密值。
重要在注册新的 GitHub OAuth 应用程序时,您必须指定 Homepage URL 和 Authorization 回调 URL。为这两个字段输入占位符值,例如
https://localhost:8080。稍后,您将使用这些字段的预期值修改 GitHub OAuth 应用程序。
流程
在工作站上打开一个终端,并登录到 OpenShift:
语法
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
oc login --token=TOKEN --server=SERVER_URL_AND_PORTCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以从 OpenShift Web 控制台在命令行中查找您的登录令牌和 URL。登录 OpenShift Web 控制台。点您的用户名,然后点 Copy login 命令。如果被要求,请再次提供您的用户名和密码,然后单击 Display Token 查看命令。
登录到 Red Hat SSO 控制台。
从命令行查找 Red Hat SSO 控制台 URL:
Example
oc get routes -n keycloak-system keycloak -o jsonpath='https://{.spec.host}'oc get routes -n keycloak-system keycloak -o jsonpath='https://{.spec.host}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 将 Red Hat SSO 控制台 URL 复制并粘贴到您的 Web 浏览器中。
- 单击 Administration Console。
从命令行检索
admin密码:Example
oc get secret/credential-keycloak -n keycloak-system -o jsonpath='{ .data.ADMIN_PASSWORD }' | base64 -doc get secret/credential-keycloak -n keycloak-system -o jsonpath='{ .data.ADMIN_PASSWORD }' | base64 -dCopy to Clipboard Copied! Toggle word wrap Toggle overflow 复制此命令的输出。
-
在 Web 浏览器中,以
admin用户身份登录,并将密码粘贴到对应的字段中。点 Sign In 按钮。
- 从导航菜单的下拉菜单中选择您的域。
添加 GitHub 身份提供程序。
- 在导航菜单中点 Identity Providers。
- 在 Add provider… 下拉菜单中选择 GitHub。
- 将 GitHub OAuth 客户端标识符添加到 客户端 ID 字段。
- 将 GitHub OAuth 客户端 secret 添加到 Client Secret 字段中。
- 打开 Trust Email 选项。
- 点 Save 按钮。
将身份提供程序映射程序添加到新创建的身份提供程序。
- 点 Mapper 选项卡。
- 点 Create 按钮。
- 为新映射程序指定 Name。
- 将 Mapper Type 更改为 Hardcoded Attribute。
-
将 User Attribute 字段设置为
emailVerified。 -
将 User Attribute Value 字段设置为
true。 - 点 Save 按钮。
-
在 GitHub Identity Provider Settings 页面中,复制 Redirect URI 值,并将它粘贴到 GitHub OAuth 应用 授权回调 URL 字段。另外,将此值粘贴到 Homepage URL 字段中,但删除 URL 字符串的
broker/github/endpoint部分。 - 单击 Update Application。现在,您可以使用 GitHub 作为 OIDC 供应商为 提交 签名。https://docs.redhat.com/en/documentation/red_hat_trusted_artifact_signer/1/html/deployment_guide/verify_the_trusted_artifact_signer_service_installation#signing-and-verifying-containers-by-using-cosign-from-the-command-line-interface_deploy
- 在签名工件时,会打开网页浏览器并提示您登录到 Red Hat SSO 帐户。点 GitHub 按钮使用您的凭证登录。
- 单击 Authorize 按钮,以启用 GitHub 用户详情,以供 Red Hat SSO 访问。
对于红帽的 Trusted Artifact Signer (RHTAS)服务,您可以使用 Microsoft Entra ID 作为 OpenID Connect (OIDC)供应商。您可以决定在 RHTAS 部署期间或稍后配置 Microsoft Entra ID。
将 Microsoft Entra ID 与 RHTAS 集成不需要订阅。
您可以在同一配置中定义多个不同的 OIDC 供应商。
先决条件
- Red Hat OpenShift Container Platform 4.15 或更高版本。
- 具有创建资源的 Microsoft Azure 帐户。
- 用于用户签名工件的 Azure 验证的电子邮件地址。
- 访问 Microsoft Azure 命令行界面。
-
安装了
oc、cosign、podman和az二进制文件的工作站。
流程
- 在工作站上打开一个终端。
在 Microsoft Entra ID 中创建代表客户端的 App Registration:
Example
export RHTAS_APP_REGISTRATION=$(az ad app create --display-name=rhtas --web-redirect-uris=http://localhost:0/auth/callback --enable-id-token-issuance --query appId -o tsv)
export RHTAS_APP_REGISTRATION=$(az ad app create --display-name=rhtas --web-redirect-uris=http://localhost:0/auth/callback --enable-id-token-issuance --query appId -o tsv)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个新的客户端 secret,允许用户使用 App Registration 获取 ID 令牌:
Example
export RHTAS_APP_REGISTRATION_CLIENT_SECRET=$(az ad app credential reset --id=$RHTAS_APP_REGISTRATION --display-name="RHTAS Client Secret" -o tsv --query 'password')
export RHTAS_APP_REGISTRATION_CLIENT_SECRET=$(az ad app credential reset --id=$RHTAS_APP_REGISTRATION --display-name="RHTAS Client Secret" -o tsv --query 'password')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意默认情况下,客户端 secret 仅在一年内有效。您可以使用
-的标记自定义这个值。年或日期创建新的 Claim Mapping Policy 以定义一个名为
email_verified的新 JWT 声明,使用静态值true:Example
az rest -m post --headers Content-Type=application/json --uri https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies --body '{"definition": ["{\"ClaimsMappingPolicy\":{\"Version\":1,\"IncludeBasicClaimSet\":\"true\", \"ClaimsSchema\":[{\"value\":\"true\",\"JwtClaimType\":\"email_verified\"}]}}"],"displayName": "EmailVerified"}'az rest -m post --headers Content-Type=application/json --uri https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies --body '{"definition": ["{\"ClaimsMappingPolicy\":{\"Version\":1,\"IncludeBasicClaimSet\":\"true\", \"ClaimsSchema\":[{\"value\":\"true\",\"JwtClaimType\":\"email_verified\"}]}}"],"displayName": "EmailVerified"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取 App Registration 对象标识符:
Example
export RHTAS_APP_REGISTRATION_OBJ_ID=$(az ad app show --id $RHTAS_APP_REGISTRATION --output tsv --query id)
export RHTAS_APP_REGISTRATION_OBJ_ID=$(az ad app show --id $RHTAS_APP_REGISTRATION --output tsv --query id)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新 App Registration 清单:
Example
az rest --method PATCH --uri https://graph.microsoft.com/v1.0/applications/${RHTAS_APP_REGISTRATION_OBJ_ID} --headers 'Content-Type=application/json' --body "{\"api\":{\"acceptMappedClaims\":true}}"az rest --method PATCH --uri https://graph.microsoft.com/v1.0/applications/${RHTAS_APP_REGISTRATION_OBJ_ID} --headers 'Content-Type=application/json' --body "{\"api\":{\"acceptMappedClaims\":true}}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建新 Service Principal 并将其与 App Registration 关联:
Example
export SERVICE_PRINCIPAL_ID=$(az ad sp create --id=${RHTAS_APP_REGISTRATION} -o tsv --query 'id')export SERVICE_PRINCIPAL_ID=$(az ad sp create --id=${RHTAS_APP_REGISTRATION} -o tsv --query 'id')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取 Claim Mapping Policy 标识符:
Example
export CLAIM_MAPPING_POLICY_ID=$(az rest --uri https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies -o tsv --query "value[?displayName=='EmailVerified'] | [0].id")
export CLAIM_MAPPING_POLICY_ID=$(az rest --uri https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies -o tsv --query "value[?displayName=='EmailVerified'] | [0].id")Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Claim Mapping Policy 与 Service Principal 关联:
Example
az rest -m post --headers Content-Type=application/json --uri "https://graph.microsoft.com/v1.0/servicePrincipals/${SERVICE_PRINCIPAL_ID}/claimsMappingPolicies/\$ref" --body "{\"@odata.id\": \"https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies/${CLAIM_MAPPING_POLICY_ID}\"}"az rest -m post --headers Content-Type=application/json --uri "https://graph.microsoft.com/v1.0/servicePrincipals/${SERVICE_PRINCIPAL_ID}/claimsMappingPolicies/\$ref" --body "{\"@odata.id\": \"https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies/${CLAIM_MAPPING_POLICY_ID}\"}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取租户标识符:
Example
export TENANT_ID=$(az account show -o tsv --query tenantId)
export TENANT_ID=$(az account show -o tsv --query tenantId)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取 OIDC 端点:
Example
export ENTRA_ID_OIDC_ENDPOINT=$(echo https://login.microsoftonline.com/${TENANT_ID}/v2.0)export ENTRA_ID_OIDC_ENDPOINT=$(echo https://login.microsoftonline.com/${TENANT_ID}/v2.0)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新 RHTAS 配置。
打开以编辑
Securesign资源:语法
oc edit Securesign NAME -n NAMESPACE
oc edit Securesign NAME -n NAMESPACECopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc edit Securesign securesign-sample -n trusted-artifact-signer
oc edit Securesign securesign-sample -n trusted-artifact-signerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您必须使用为 RHTAS 安装创建的项目名称作为命名空间。
在
OIDCIssuers部分下,使用客户端标识符、签发者 URL 添加新小节,并将Type值设置为email:语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存更改,退出编辑器。几秒钟后,操作员会自动重新配置 RHTAS 软件堆栈。
创建本地客户端 secret 文件:
Example
echo $RHTAS_APP_REGISTRATION_CLIENT_SECRET > rhtas-entra-id-client-secret
echo $RHTAS_APP_REGISTRATION_CLIENT_SECRET > rhtas-entra-id-client-secretCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为签名工件配置 shell 环境:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 初始化本地机器以签名:
Example
cosign initialize
$ cosign initializeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过签名测试容器镜像来验证更新的配置。
创建一个空容器镜像:
Example
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1h
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将空容器镜像推送到
ttl.sh临时 registry:Example
podman push ttl.sh/rhtas/test-image:1h
podman push ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除临时 Docker 文件:
Example
rm ./tmp.Dockerfile
rm ./tmp.DockerfileCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为容器镜像签名:
语法
cosign sign -y --oidc-client-secret-file=SECRET_FILE IMAGE_NAME:TAG
cosign sign -y --oidc-client-secret-file=SECRET_FILE IMAGE_NAME:TAGCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
cosign sign -y --oidc-client-secret-file=rhtas-entra-id-client-secret ttl.sh/rhtas/test-image:1h
cosign sign -y --oidc-client-secret-file=rhtas-entra-id-client-secret ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此时会打开一个 Web 浏览器,允许您使用电子邮件地址为容器镜像签名。
1.5. 为 Trusted Artifact Signer 配置替代数据库 复制链接链接已复制到粘贴板!
您可以将 Trillian 的 Red Hat Trusted Artifact Signer (RHTAS)默认数据库替换为外部管理的 MariaDB 数据库实例。数据库实例可以是云托管的数据库提供程序,如 Amazon 的 Relational Database Service (RDS),或者在 OpenShift 中自己的数据库部署。
1.5.1. 先决条件 复制链接链接已复制到粘贴板!
- Red Hat OpenShift Container Platform 版本 4.13、4.14 或 4.15。
1.5.2. 为受信任的工件签名程序配置 Amazon RDS 复制链接链接已复制到粘贴板!
使用这个流程,您可以将红帽的 Trusted Artifact Signer (RHTAS)默认数据库替换为 Amazon 的 Relational Database Service (RDS)管理的 MariaDB 实例。
红帽建议在生产环境中使用高可用性 MariaDB 数据库。
先决条件
- 可访问 Amazon RDS 控制台的 Amazon Web Service (AWS)帐户。
-
使用
cluster-admin角色访问 OpenShift Web 控制台。 -
安装了
oc、curl和mysql二进制文件的工作站。 - 具有特权的命令行访问权限,以创建数据库并填充 MariaDB 实例。
流程
打开 Amazon RDS 控制台,并创建一个新的 MariaDB 实例。
- 等待 MariaDB 实例部署好,并且可用。
从您的工作站,通过提供区域端点、端口和用户凭证来登录到新数据库:
语法
mysql -h REGIONAL_ENDPOINT -P 3306 -u USER_NAME -p
mysql -h REGIONAL_ENDPOINT -P 3306 -u USER_NAME -pCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
mysql -h exampledb.1234.us-east-1.rds.amazonaws.com -P 3306 -u admin -p
mysql -h exampledb.1234.us-east-1.rds.amazonaws.com -P 3306 -u admin -pCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为 trillian 的新数据库:
Example
create database trillian;
create database trillian;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 切换到新创建的数据库:
Example
use trillian;
use trillian;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
trillian的新数据库用户,并为新创建的用户设置 PASSWORD :语法
CREATE USER trillian@'%' IDENTIFIED BY 'PASSWORD'; GRANT ALL PRIVILEGES ON trillian.* TO 'trillian'@'%'; FLUSH PRIVILEGES;
CREATE USER trillian@'%' IDENTIFIED BY 'PASSWORD'; GRANT ALL PRIVILEGES ON trillian.* TO 'trillian'@'%'; FLUSH PRIVILEGES;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 断开与数据库的连接:
Example
EXIT
EXITCopy to Clipboard Copied! Toggle word wrap Toggle overflow 下载数据库配置文件:
Example
curl -o dbconfig.sql https://raw.githubusercontent.com/securesign/trillian/main/storage/mysql/schema/storage.sql
curl -o dbconfig.sql https://raw.githubusercontent.com/securesign/trillian/main/storage/mysql/schema/storage.sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将数据库配置应用到新数据库:
语法
mysql -h FQDN_or_SERVICE_ADDR -P 3306 -u USER_NAME -p PASSWORD -D DB_NAME < PATH_TO_CONFIG_FILE
mysql -h FQDN_or_SERVICE_ADDR -P 3306 -u USER_NAME -p PASSWORD -D DB_NAME < PATH_TO_CONFIG_FILECopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
mysql -h rhtasdb.example.com -P 3306 -u trillian -p mypassword123 -D trillian < dbconfig.sql
mysql -h rhtasdb.example.com -P 3306 -u trillian -p mypassword123 -D trillian < dbconfig.sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在工作站上打开一个终端,并登录到 OpenShift:
语法
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
oc login --token=TOKEN --server=SERVER_URL_AND_PORTCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以从 OpenShift Web 控制台在命令行中查找您的登录令牌和 URL。登录 OpenShift Web 控制台。点您的用户名,然后点 Copy login 命令。如果被要求,请再次提供您的用户名和密码,然后单击 Display Token 查看命令。
创建一个新的 Secret,其中包含之前创建的 MariaDB 实例中 Trillian 数据库的凭证:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以将 OpenShift 内部服务名称用于 MariaDB 实例。
- 现在,您可以部署 Trusted Artifact Signer 服务来使用此数据库。如果您遵循 Trusted Artifact Signer 安装过程,您可以 继续下一步。
1.5.3. 在 OpenShift 中为受信任的工件签名程序配置数据库 复制链接链接已复制到粘贴板!
使用这个流程,您可以将红帽的 Trusted Artifact Signer (RHTAS)默认数据库替换为 Amazon 的 Relational Database Service (RDS)管理的 MariaDB 实例。
红帽建议在生产环境中使用高可用性 MariaDB 数据库。
先决条件
- 创建 OpenShift 项目的权限,并从 OpenShift 示例目录部署数据库实例。
-
使用
cluster-admin角色访问 OpenShift Web 控制台。 -
安装了
oc、curl和mysql二进制文件的工作站。 - 具有特权的命令行访问权限,以创建数据库并填充 MariaDB 实例。
流程
- 登录到您要部署 RHTAS 服务的 OpenShift Web 控制台:
- 进入 Developer 视角。
如果项目已存在,选择
trusted-artifact-signer项目,否则为数据库创建一个新项目:- 若要创建新项目,请单击下拉菜单,再 单击创建项目按钮。
-
将新项目命名为
trusted-artifact-signer,然后点 Create 按钮。
- 在 Developer Catalog 卡上,单击 Database。
选择 MariaDB,然后单击 Instantiate Template 按钮。
重要不要选择 MariaDB (Ephemeral)。
在 Instantiate Template 页面中,配置以下字段:
-
在 MariaDB Database Name 字段中,输入
trillian。 -
在 Volume Capacity 字段中,输入
5Gi。 - 点 Create 按钮。
-
在 MariaDB Database Name 字段中,输入
开始远程 shell 会话:
- 在 Topology 页面中,选择 MariaDB pod 会打开一个侧面板,点 Resources 选项卡。
- 在 Pods 部分下,点 MariaDB pod 名称。
- 点 Terminal 选项卡启动到 MariaDB pod 的远程 shell 会话。
在远程 shell 会话中,验证您可以连接到 Trillian 数据库:
Example
mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -D$MYSQL_DATABASE
$ mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -D$MYSQL_DATABASECopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意凭据通过服务名称(
mariadb)存储在机密对象中,包含数据库的名称和用户名,以及数据库 root 密码。记录这些凭证,因为稍后在创建数据库 secret 对象时将使用这些凭证。断开与数据库的连接:
Example
EXIT
EXITCopy to Clipboard Copied! Toggle word wrap Toggle overflow 下载数据库配置文件:
Example
curl -o dbconfig.sql https://raw.githubusercontent.com/securesign/trillian/main/storage/mysql/schema/storage.sql
curl -o dbconfig.sql https://raw.githubusercontent.com/securesign/trillian/main/storage/mysql/schema/storage.sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将数据库配置应用到新数据库:
语法
mysql -h FQDN_or_SERVICE_ADDR -P 3306 -u USER_NAME -p PASSWORD -D DB_NAME < PATH_TO_CONFIG_FILE
mysql -h FQDN_or_SERVICE_ADDR -P 3306 -u USER_NAME -p PASSWORD -D DB_NAME < PATH_TO_CONFIG_FILECopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
mysql -h rhtasdb.example.com -P 3306 -u trillian -p mypassword123 -D trillian < dbconfig.sql
mysql -h rhtasdb.example.com -P 3306 -u trillian -p mypassword123 -D trillian < dbconfig.sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在工作站上打开一个终端,并登录到 OpenShift:
语法
oc login --token=TOKEN --server=SERVER_URL_AND_PORT
oc login --token=TOKEN --server=SERVER_URL_AND_PORTCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443
oc login --token=sha256~ZvFDBvoIYAbVECixS4-WmkN4RfnNd8Neh3y1WuiFPXC --server=https://example.com:6443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以从 OpenShift Web 控制台在命令行中查找您的登录令牌和 URL。登录 OpenShift Web 控制台。点您的用户名,然后点 Copy login 命令。如果被要求,请再次提供您的用户名和密码,然后单击 Display Token 查看命令。
创建一个新的 Secret,其中包含之前创建的 MariaDB 实例中 Trillian 数据库的凭证:
语法
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以将 OpenShift 内部服务名称用于 MariaDB 实例。
- 现在,您可以部署 Trusted Artifact Signer 服务来使用此数据库。如果您遵循 Trusted Artifact Signer 安装过程,您可以 继续下一步。
1.6. 配置 OpenShift 服务服务证书,以便为 Keycloak 生成 TLS 证书 复制链接链接已复制到粘贴板!
OpenShift 的服务服务证书可以自动生成和管理传输层安全(TLS)证书,供 Keycloak 使用。OpenShift 集群内的基础架构组件(如 Ingress Controller)将信任这些 TLS 证书。
先决条件
- Red Hat OpenShift Container Platform 4.15 或更高版本。
- 安装 RHBK 操作器.
-
使用
cluster-admin角色访问 OpenShift Web 控制台。
流程
- 在 OpenShift Web 控制台中,从 Administrator 视角中,从导航菜单中展开 Home,再单击 Projects。
-
搜索
keycloak,然后选择keycloak-system命名空间。 创建新服务。
- 点 + 图标。
在 Import YAML 文本框中,复制示例,并将它粘贴到文本框中。
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Create 按钮。
- 从导航菜单中展开 Operators,点 Installed Operators,然后点 Keycloak Operator。
在
Keycloak资源的 YAML 视图中,在spec部分添加ingress属性:Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,Keycloak operator 创建 Ingress 资源而不是路由。OpenShift 根据 Ingress 定义自动创建路由。
在
spec部分下指定包含 TLS 证书的 secret 名称:Example
spec: ... http: tlsSecret: keycloak-tls ...spec: ... http: tlsSecret: keycloak-tls ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 一旦 Keycloak 启动后,OpenShift 的服务服务证书将开始为 Keycloak 生成 TLS 证书。
1.7. 自动生成 Keycloak 主机名 复制链接链接已复制到粘贴板!
OpenShift 路由支持使用集合模式自动生成主机名。此功能可以与红帽构建的 Keycloak (RHBK) operator 集成。
先决条件
- Red Hat OpenShift Container Platform 4.15 或更高版本。
- 安装 RHBK 操作器.
-
使用
cluster-admin角色访问 OpenShift Web 控制台。 -
安装了
oc二进制文件的工作站。
流程
启用自动生成的路由主机名功能。
在
.spec部分下,删除整个hostname部分,并将其替换为Keycloak资源中的ingress部分和className属性:Example
spec: ... hostname: hostname: example.com ...spec: ... hostname: hostname: example.com ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example
spec: ... ingress: className: openshift-default ...spec: ... ingress: className: openshift-default ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要查看所有可用的 Ingress 类,请运行以下命令:
oc get ingressclass
oc get ingressclassCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Save 按钮。
点 Reload 按钮查看最新配置来验证自动生成的
主机名:Example
spec: ... hostname: hostname: example-keycloak-ingress-keycloak-system.apps.rhtas.example.com ...spec: ... hostname: hostname: example-keycloak-ingress-keycloak-system.apps.rhtas.example.com ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 2 章 Red Hat Enterprise Linux 复制链接链接已复制到粘贴板!
2.1. 使用 Ansible 安装 Trusted Artifact Signer 复制链接链接已复制到粘贴板!
您可以使用红帽提供的 Ansible Playbook 在 Red Hat Enterprise Linux 上安装 Red Hat Trusted Artifact Signer (RHTAS)。此部署为您提供了使用 Keycloak 作为 OpenID Connect (OIDC)供应商的基本签名框架。
红帽建议不要在生产环境中使用 Ansible 日志记录详细或调试模式。
有关更多信息,请参阅 Ansible 文档。
先决条件
- Red Hat Enterprise Linux 9.4 或更高版本。
- 用于访问 Red Hat Hybrid Cloud 控制台的红帽用户帐户。
流程
- 使用您的红帽凭证登录到 Red Hat Hybrid Cloud Console。
- 在主页中,点 Services 下拉菜单,然后点 Red Hat Ansible Automation Platform。
- 在导航菜单中展开 Automation Hub,然后点 Collections。
- 在搜索字段中,键入 rhtas 并按 enter。
- 点 Red Hat Trusted Artifact Signer 标题上的 artifact_signer 链接。
单击 Documentation 选项卡,然后按照以下步骤在 Red Hat Enterprise Linux 上完成 RHTAS 安装。
注意有关所有配置参数的详细概述,请单击 Roles 部分下的 tas_single_node 链接。
2.2. 验证 Trusted Artifact Signer 安装 复制链接链接已复制到粘贴板!
作为系统管理员,您可以验证在 Red Hat Enterprise Linux 上运行的 Red Hat Trusted Artifact Signer (RHTAS)的部署是否成功。
您可以签署测试容器镜像,并验证该签名的真实性,以验证您环境中的 RHTAS 部署。
可以通过两种方式从代码管道验证构建工件。您可以使用 cosign 和 gitsign 签署和验证,但只能使用企业合同进行验证。
2.2.1. 使用命令行界面使用 Cosign 签名和验证容器 复制链接链接已复制到粘贴板!
通过 cosign 工具,您可以使用红帽的Trusted Artifact Signer (RHTAS)服务签名和验证开放容器项目(OCI)容器镜像以及其他构建工件。
对于 RHTAS,您必须使用 cosign 版本 2.2 或更高版本。
先决条件
- 在 Red Hat Enterprise Linux 9.4 或更高版本上运行的 RHTAS 安装由 Ansible 管理。
-
安装了
podman二进制文件的工作站。
流程
从本地命令行界面(CLI)工具下载
cosign二进制文件到您的工作站。注意URL 地址是由
tas_single_node_base_hostname变量定义的配置的节点。一个 URL 地址示例应为https://cli-server.example.com,它赋予tas_single_node_base_hostname值,如example.com。- 在下载页面中,进入 cosign 下载部分,然后点击您的平台的链接。
在工作站上打开一个终端,解压缩二进制
.gz文件,并设置执行位:Example
gunzip cosign-amd64.gz chmod +x cosign-amd64
gunzip cosign-amd64.gz chmod +x cosign-amd64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将二进制文件移到
$PATH环境中的位置:Example
sudo mv cosign-amd64 /usr/local/bin/cosign
sudo mv cosign-amd64 /usr/local/bin/cosignCopy to Clipboard Copied! Toggle word wrap Toggle overflow
配置 shell 环境,以执行容器镜像签名和验证。
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 BASE_HOSTNAME_OF_RHTAS_SERVICE 替换为
tas_single_node_base_hostname 的变量的值,并将 OIDC_ISSUER_URL 替换为您的 OpenID Connect (OIDC)供应商 URL 字符串。初始化更新框架(TUF)系统:
Example
cosign initialize
cosign initializeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为测试容器镜像签名。
创建一个空容器镜像:
Example
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1h
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将空容器镜像推送到
ttl.sh临时 registry:Example
podman push ttl.sh/rhtas/test-image:1h
podman push ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为容器镜像签名:
语法
cosign sign -y IMAGE_NAME:TAG
cosign sign -y IMAGE_NAME:TAGCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
cosign sign -y ttl.sh/rhtas/test-image:1h
cosign sign -y ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此时会打开一个 Web 浏览器,允许您使用电子邮件地址为容器镜像签名。
删除临时 Docker 文件:
Example
rm ./tmp.Dockerfile
rm ./tmp.DockerfileCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用证书身份和签发者验证签名的容器镜像:
语法
cosign verify --certificate-identity=SIGNING_EMAIL_ADDR IMAGE_NAME:TAG
cosign verify --certificate-identity=SIGNING_EMAIL_ADDR IMAGE_NAME:TAGCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
cosign verify --certificate-identity=jdoe@redhat.com ttl.sh/rhtas/test-image:1h
cosign verify --certificate-identity=jdoe@redhat.com ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您还可以使用
cosign命令--certificate-identity-regexp和--certificate-oidc-issuer-regexp的以下选项对证书身份和签发者使用正则表达式。从本地命令行界面(CLI)工具下载
rekor-cli二进制文件,将页面下载到您的工作站。打开 Web 浏览器,再前往 CLI 服务器网页。
注意URL 地址是由
tas_single_node_base_hostname变量定义的配置的节点。一个 URL 地址示例为https://cli-server.example.com,因为tas_single_node_base_hostname的值为example.com。- 在下载页面中,进入 rekor-cli 下载部分,然后点击您的平台的链接。
在工作站上打开一个终端,解压缩二进制
.gz文件,并设置执行位:Example
gunzip rekor-cli-amd64.gz chmod +x rekor-cli-amd64
gunzip rekor-cli-amd64.gz chmod +x rekor-cli-amd64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将二进制文件移到
$PATH环境中的位置:Example
sudo mv rekor-cli-amd64 /usr/local/bin/rekor-cli
sudo mv rekor-cli-amd64 /usr/local/bin/rekor-cliCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用 Rekor 命令行界面查询透明日志。
根据日志索引进行搜索:
Example
rekor-cli get --log-index 0 --rekor_server $COSIGN_REKOR_URL --format json | jq
rekor-cli get --log-index 0 --rekor_server $COSIGN_REKOR_URL --format json | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 搜索电子邮件地址以获取通用唯一标识符(UUID):
语法
rekor-cli search --email SIGNING_EMAIL_ADDR --rekor_server $COSIGN_REKOR_URL --format json | jq
rekor-cli search --email SIGNING_EMAIL_ADDR --rekor_server $COSIGN_REKOR_URL --format json | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
rekor-cli search --email jdoe@redhat.com --rekor_server $COSIGN_REKOR_URL --format json | jq
rekor-cli search --email jdoe@redhat.com --rekor_server $COSIGN_REKOR_URL --format json | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此命令返回用于下一步的 UUID。
使用 UUID 获取事务详情:
语法
rekor-cli get --uuid UUID --rekor_server $COSIGN_REKOR_URL --format json | jq
rekor-cli get --uuid UUID --rekor_server $COSIGN_REKOR_URL --format json | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
rekor-cli get --uuid 24296fb24b8ad77a71b9c1374e207537bafdd75b4f591dcee10f3f697f150d7cc5d0b725eea641e7 --rekor_server $COSIGN_REKOR_URL --format json | jq
rekor-cli get --uuid 24296fb24b8ad77a71b9c1374e207537bafdd75b4f591dcee10f3f697f150d7cc5d0b725eea641e7 --rekor_server $COSIGN_REKOR_URL --format json | jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.2. 使用命令行界面使用 Gitsign 签名和验证提交 复制链接链接已复制到粘贴板!
gitsign 工具可让您使用红帽的 Trusted Artifact Signer (RHTAS)服务签名和验证 Git 存储库提交。
先决条件
- 在 Red Hat Enterprise Linux 9.4 或更高版本上运行的 RHTAS 安装由 Ansible 管理。
安装了
git和cosign二进制文件的工作站。-
您必须使用
cosign版本 2.2 或更高版本。
-
您必须使用
流程
将
gitsign二进制文件从本地命令行界面(CLI)工具下载页面到您的工作站。注意URL 地址是由
tas_single_node_base_hostname变量定义的配置的节点。一个 URL 地址示例应为https://cli-server.example.com,它赋予tas_single_node_base_hostname值,如example.com。- 在下载页面中,进入 gitsign 下载部分,然后单击您的平台的链接。
在工作站上打开一个终端,解压缩 .gz 文件,并设置执行位:
Example
gunzip gitsign-amd64.gz chmod +x gitsign-amd64
gunzip gitsign-amd64.gz chmod +x gitsign-amd64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将二进制文件移到
$PATH环境中的位置:Example
sudo mv gitsign-amd64 /usr/local/bin/gitsign
sudo mv gitsign-amd64 /usr/local/bin/gitsignCopy to Clipboard Copied! Toggle word wrap Toggle overflow
配置您的 shell 环境,以进行提交签名和验证。
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 BASE_HOSTNAME_OF_RHTAS_SERVICE 替换为
tas_single_node_base_hostname 的变量的值,并将 OIDC_ISSUER_URL 替换为您的 OpenID Connect (OIDC)供应商 URL 字符串。使用 RHTAS 服务配置本地存储库配置以签署您的提交:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将提交提交到本地存储库:
Example
git commit --allow-empty -S -m “Test of a signed commit”
git commit --allow-empty -S -m “Test of a signed commit”Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此时会打开一个 Web 浏览器,允许您使用电子邮件地址为提交签名。
初始化更新框架(TUF)系统:
Example
cosign initialize
cosign initializeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证提交:
语法
gitsign verify --certificate-identity=SIGNING_EMAIL --certificate-oidc-issuer=$SIGSTORE_OIDC_ISSUER HEAD
gitsign verify --certificate-identity=SIGNING_EMAIL --certificate-oidc-issuer=$SIGSTORE_OIDC_ISSUER HEADCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
gitsign verify --certificate-identity=jdoe@redhat.com --certificate-oidc-issuer=$SIGSTORE_OIDC_ISSUER HEAD
gitsign verify --certificate-identity=jdoe@redhat.com --certificate-oidc-issuer=$SIGSTORE_OIDC_ISSUER HEADCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.3. 使用企业合同验证容器镜像上的签名 复制链接链接已复制到粘贴板!
企业合同(EC)是维护软件供应链安全性的工具,您可以使用它来定义和执行容器镜像的策略。您可以使用 ec 二进制文件来验证使用红帽的 Trusted Artifact Signer (RHTAS)签名框架的容器镜像的待测试和签名。
先决条件
- 在 Red Hat Enterprise Linux 9.4 或更高版本上运行的 RHTAS 安装由 Ansible 管理。
安装了
cosign和podman二进制文件的工作站。-
您必须使用
cosign版本 2.2 或更高版本。
-
您必须使用
流程
从本地命令行界面(CLI)工具下载
ec二进制文件到您的工作站。注意URL 地址是由
tas_single_node_base_hostname变量定义的配置的节点。一个 URL 地址示例应为https://cli-server.example.com,它赋予tas_single_node_base_hostname值,如example.com。- 在下载页面中,进入 ec 下载部分,再单击平台的链接。
在工作站上打开一个终端,解压缩二进制 .gz 文件,并设置执行位:
Example
gunzip ec-amd64.gz chmod +x ec-amd64
gunzip ec-amd64.gz chmod +x ec-amd64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将二进制文件移到
$PATH环境中的位置:Example
sudo mv ec-amd64 /usr/local/bin/ec
sudo mv ec-amd64 /usr/local/bin/ecCopy to Clipboard Copied! Toggle word wrap Toggle overflow
配置 shell 环境,以执行容器镜像签名和验证。
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 BASE_HOSTNAME_OF_RHTAS_SERVICE 替换为
tas_single_node_base_hostname 的变量的值,并将 OIDC_ISSUER_URL 替换为您的 OpenID Connect (OIDC)供应商 URL 字符串。初始化更新框架(TUF)系统:
Example
cosign initialize
cosign initializeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为测试容器镜像签名。
创建一个空容器镜像:
Example
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1h
echo "FROM scratch" > ./tmp.Dockerfile podman build . -f ./tmp.Dockerfile -t ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将空容器镜像推送到
ttl.sh临时 registry:Example
podman push ttl.sh/rhtas/test-image:1h
podman push ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为容器镜像签名:
语法
cosign sign -y IMAGE_NAME:TAG
cosign sign -y IMAGE_NAME:TAGCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
cosign sign -y ttl.sh/rhtas/test-image:1h
cosign sign -y ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此时会打开一个 Web 浏览器,允许您使用电子邮件地址为容器镜像签名。
删除临时 Docker 文件:
Example
rm ./tmp.Dockerfile
rm ./tmp.DockerfileCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建
predicate.json文件:Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需有关 schema 布局的更多信息,请参阅 SLSA provenance predicate 规格。
将
predicate.json文件与容器镜像关联:语法
cosign attest -y --predicate ./predicate.json --type slsaprovenance IMAGE_NAME:TAG
cosign attest -y --predicate ./predicate.json --type slsaprovenance IMAGE_NAME:TAGCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
cosign attest -y --predicate ./predicate.json --type slsaprovenance ttl.sh/rhtas/test-image:1h
cosign attest -y --predicate ./predicate.json --type slsaprovenance ttl.sh/rhtas/test-image:1hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证容器镜像是否至少有一个测试和签名:
语法
cosign tree IMAGE_NAME:TAG
cosign tree IMAGE_NAME:TAGCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用企业联系人验证容器镜像:
语法
ec validate image --image IMAGE_NAME:TAG --certificate-identity-regexp 'SIGNER_EMAIL_ADDR' --certificate-oidc-issuer-regexp 'keycloak-keycloak-system' --output yaml --show-successes
ec validate image --image IMAGE_NAME:TAG --certificate-identity-regexp 'SIGNER_EMAIL_ADDR' --certificate-oidc-issuer-regexp 'keycloak-keycloak-system' --output yaml --show-successesCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 企业合同生成 pass-fail 报告,其中包含有关任何安全违反情况的详细信息。添加
--info标志时,报告包括所有找到违反情况的详情和可能的解决方案。
其它资源
- 如需更多信息,请参阅 Conforma 网站。
附录 A. 红帽构建的 Keycloak 的 service 和 StatefulSet YAML 配置 复制链接链接已复制到粘贴板!
为红帽信任的 Artifact Signer (RHTAS)服务配置红帽构建的 Keycloak (RHBK)时使用的 Service 和 StatefulSet YAML 资源配置。
附录 B. 可信 Artifact Signer 组件和版本号 复制链接链接已复制到粘贴板!
下表列出了 Red Hat 的 Trusted Artifact Signer (RHTAS)软件组件及其对应的版本号,用于 1.2.1 版本。
| 二进制 | Version |
|---|---|
|
| 2.4.3 |
|
| 0.12.0 |
|
| 1.3.9 |
|
| 0.6 |
|
| 1.7.1 |
|
| 1.7.1 |
|
| 0.12.0 |
|
| 0.17.1 |
|
| 1.2.4 |
| 组件 | Version |
|---|---|
| logserver | 1.7.1 |
| logsigner | 1.7.1 |
| database | 1.7.1 |
| redis | 1.7.1 |
| 组件 | Version |
|---|---|
| rekor-server | 1.3.9 |
| backfill-redis | 1.3.9 |
| rekor-search-ui | 1.3.9 |
| 组件 | Version |
|---|---|
| fulcio-server | 1.6.6 |
| 组件 | Version |
|---|---|
| certificate-transparency-go | 1.3.1 |
| 组件 | Version |
|---|---|
| timestamp-authority | 1.2.4 |