二进制授权 - 部署失败 - 被证明者拒绝。证明者无法证明 GKE 中的图像

Binary Authorization - Deployment failed - Denied by Attestor. Attestor cannot attest to an image in GKE

我试图以 POC 的形式向我的客户展示二进制授权。在部署期间,它失败并显示以下错误消息:

pods "hello-app-6589454ddd-wlkbg" is forbidden: image policy webhook backend denied one or more images: Denied by cluster admission rule for us-central1.staging-cluster. Denied by Attestor. Image gcr.io//hello-app:e1479a4 denied by projects//attestors/vulnz-attestor: Attestor cannot attest to an image deployed by tag

我已遵守网站中提到的所有步骤。

我已经反复验证了几次图像,例如使用以下命令强制完全认证:

gcloud alpha container binauthz attestations sign-and-create   --project "projectxyz"  --artifact-url "gcr.io/projectxyz/hello-app@sha256:82f1887cf5e1ff80ee67f4a820703130b7d533f43fe4b7a2b6b32ec430ddd699"   --attestor "vulnz-attestor"   --attestor-project "projectxyz"   --keyversion "1"   --keyversion-key "vulnz-signer"   --keyversion-location "us-central1"   --keyversion-keyring "binauthz"   --keyversion-project "projectxyz"

它抛出错误为:

ERROR: (gcloud.alpha.container.binauthz.attestations.sign-and-create) Resource in project [project xyz] is the subject of a conflict: occurrence ID "c5f03cc3-3829-44cc-ae38-2b2b3967ba61" already exists in project "projectxyz"

所以当我验证时,我发现存在证明:

gcloud beta container binauthz attestations list       --artifact-url "gcr.io/projectxyz/hello-app@sha256:82f1887cf5e1ff80ee67f4a820703130b7d533f43fe4b7a2b6b32ec430ddd699"       --attestor "vulnz-attestor"       --attestor-project "projectxyz"       --format json  | jq '.[0].kind' \
>       | grep 'ATTESTATION'
"ATTESTATION"

以下是屏幕截图:

有什么反馈吗?

提前致谢。

感谢您试用 Binary Authorization。我刚刚更新了 Binary Authorization Solution,您可能会觉得有用。

一路上我注意到的一些事情:

... denied by projects//attestors/vulnz-attestor:

projectsattestors之间应该有一个项目ID,比如:

projects/my-project/attestors/vulnz-attestor

同样,您的 gcr.io 链接应包含相同的项目 ID,例如:

gcr.io//hello-app:e1479a4

应该是

gcr.io/my-project/hello-app:e1479a4

如果您按照教程进行操作,它可能会要求您设置一个变量,例如 $PROJECT_ID,但您可能不小心将其取消设置或 运行 不同终端会话中的命令。

在指向另一个存储库问题解决后,但在此之前您遇到问题并且可能有很多原因。如果您遇到同样的问题,请 contact support 提供错误消息。