新聞中心
談?wù)勎覍?duì)云原生與軟件供應(yīng)鏈安全的思考
作者:阿里巴巴中間件 2022-07-08 09:02:07
云計(jì)算
云原生 軟件生產(chǎn)的過(guò)程與傳統(tǒng)制造業(yè)在很多方面是相似的。軟件制造商將自研業(yè)務(wù)代碼和第三方組件組合成完整的軟件,構(gòu)建流程會(huì)將這些組件打包成為可部署的軟件制品,然后被企業(yè)客戶(hù)部署到生產(chǎn)環(huán)境中。

創(chuàng)新互聯(lián)公司專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、成都外貿(mào)網(wǎng)站建設(shè)公司、特克斯網(wǎng)絡(luò)推廣、小程序設(shè)計(jì)、特克斯網(wǎng)絡(luò)營(yíng)銷(xiāo)、特克斯企業(yè)策劃、特克斯品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪(fǎng)、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供特克斯建站搭建服務(wù),24小時(shí)服務(wù)熱線(xiàn):18982081108,官方網(wǎng)址:www.cdcxhl.com
2011 年,互聯(lián)網(wǎng)技術(shù)先驅(qū) Marc Andreessen 宣稱(chēng),軟件正在吞噬世界(Software is eating the world)。由軟件驅(qū)動(dòng)的行業(yè)創(chuàng)新正在顛覆著傳統(tǒng)業(yè)務(wù)模式,推動(dòng)著全球經(jīng)濟(jì)實(shí)現(xiàn)數(shù)字化連接。隨著互聯(lián)網(wǎng)的快速發(fā)展,數(shù)字化轉(zhuǎn)型已經(jīng)成為每一個(gè)企業(yè)的關(guān)鍵戰(zhàn)略。但是現(xiàn)代軟件開(kāi)發(fā)涉及到多方協(xié)作,大量應(yīng)用依賴(lài)開(kāi)源代碼或者三方組件。在上游開(kāi)源軟件的安全問(wèn)題會(huì)傳遞到下游應(yīng)用方并被放大,有可能給企業(yè)造成重大的安全風(fēng)險(xiǎn)和業(yè)務(wù)損失。
軟件生產(chǎn)的過(guò)程與傳統(tǒng)制造業(yè)在很多方面是相似的。軟件制造商將自研業(yè)務(wù)代碼和第三方組件組合成完整的軟件,構(gòu)建流程會(huì)將這些組件打包成為可部署的軟件制品,然后被企業(yè)客戶(hù)部署到生產(chǎn)環(huán)境中。這個(gè)過(guò)程被形象地稱(chēng)為“軟件供應(yīng)鏈”。而軟件供應(yīng)鏈安全的目標(biāo)是保軟件從開(kāi)發(fā)到部署的整個(gè)生命周期的安全、可信賴(lài)。
在 Sonatypes's 2021 State of the Software Supply Chain 調(diào)查報(bào)告中,2021 年軟件供應(yīng)鏈攻擊事件增長(zhǎng)了 650%。
目前,軟件供應(yīng)鏈安全已經(jīng)得到行業(yè)的高度重視。已經(jīng)有很多國(guó)家出臺(tái)了相關(guān)的政策法規(guī)來(lái)指導(dǎo)本國(guó)的供應(yīng)鏈安全管理,以提高供應(yīng)鏈安全韌性。2021 年 4 月,美國(guó)網(wǎng)絡(luò)安全與基礎(chǔ)設(shè)施安全局(CISA)和美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)院(NIST)聯(lián)合發(fā)布《防御軟件供應(yīng)鏈攻擊》報(bào)告,首次對(duì)軟件供應(yīng)鏈進(jìn)行界定,并給出與軟件供應(yīng)鏈攻擊相關(guān)的信息、關(guān)聯(lián)風(fēng)險(xiǎn)以及緩解措施。
谷歌也提出了 Supply chain Levels for Software Artifacts - 軟件制品的供應(yīng)鏈等級(jí),簡(jiǎn)稱(chēng)為 SLSA。SLSA 是 Google 內(nèi)部實(shí)施的多年的安全流程的開(kāi)源版本,提供了一個(gè)安全框架和一組最佳實(shí)踐,來(lái)預(yù)防因?yàn)樵创a篡改、三方組件漏洞、制品倉(cāng)庫(kù)入侵產(chǎn)生的安全威脅。
一、SBOM-提升軟件構(gòu)成透明度
軟件供應(yīng)鏈安全的基礎(chǔ)就是透明性。只有理解了應(yīng)用是如何從代碼和依賴(lài)組件構(gòu)建而成,我們才可以對(duì)應(yīng)用的安全風(fēng)險(xiǎn)進(jìn)行有效的治理。在美國(guó) 2021 年頒布的《關(guān)于改善國(guó)家網(wǎng)絡(luò)安全的行政命令》行政令中,特別要求政府軟件應(yīng)包含機(jī)器可讀的軟件物料清單(Software Bill Of Materials, SBOM)。SBOM 是包含構(gòu)建軟件使用的各種組件的詳細(xì)信息和供應(yīng)鏈關(guān)系的正式記錄。
美國(guó)國(guó)家電信和信息管理局(NITA)在 14028 號(hào)政令的要求下,在 2021 年 7 月 12 日發(fā)布了《SBOM 的最低要素》,該文檔為各開(kāi)發(fā)工具的組織和廠(chǎng)商提供了 SBOM 數(shù)據(jù)格式的參考。在新一代軟件開(kāi)發(fā)工具中,越來(lái)越多的軟件提供了對(duì) SBOM 的支持。
1.應(yīng)用的 SBOM 信息
下面我們以一個(gè) Golang 的 HTTP Server 示例應(yīng)用為例,了解一下 SBOM 的的概念和使用方式。
$ git clone https://github.com/denverdino/secure-supply-chain-sample
$ cd secure-supply-chain-sample
$ go build .
熟悉 Go 語(yǔ)言的開(kāi)發(fā)者一定對(duì) go 模塊概念非常熟悉。應(yīng)用所依賴(lài)的模塊,都通過(guò) go.mod 文件聲明。go mod tidy 命令可以用來(lái)更新 go.mod 文件,并”鎖定“所依賴(lài)的模塊和版本信息,這大大提升了構(gòu)建的確定性、可重現(xiàn)性和可驗(yàn)證性。為了確保第三方無(wú)法篡改所依賴(lài)的模塊版本, 在 go.sum 文件記錄了每個(gè)模塊依賴(lài)的加密哈希值。當(dāng)利用go命令將模塊代碼下載到本地時(shí),就會(huì)計(jì)算其哈希值,如果計(jì)算結(jié)果與 go.sum 記錄的數(shù)據(jù)不符就意味著存在篡改的風(fēng)險(xiǎn)。更近一步,Google 運(yùn)營(yíng)著一個(gè) Go 模塊校驗(yàn)數(shù)據(jù)庫(kù)服務(wù),它記錄了 go 模塊版本的加密哈希值,進(jìn)一步提升了 Go 基礎(chǔ)設(shè)施的安全性。
更多內(nèi)容可以閱讀:https://go.dev/blog/supply-chain
對(duì)于已編譯的應(yīng)用二進(jìn)制文件,我們可以通過(guò) go version -m 命令查看應(yīng)用的構(gòu)建信息,包括其軟件來(lái)源,依賴(lài)模塊,構(gòu)建參數(shù)等等。
$ go version -m secure-supply-chain-sample
secure-supply-chain-sample: go1.18.3
path github.com/denverdino/secure-supply-chain-sample
mod github.com/denverdino/secure-supply-chain-sample (devel)
dep github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
dep golang.org/x/sys v0.0.0-20220702020025-31831981b65f h1:xdsejrW/0Wf2diT5CPp3XmKUNbr7Xvw8kYilQ+6qjRY=
build -compiler=gc
build CGO_ENABLED=1
build CGO_CFLAGS=
build CGO_CPPFLAGS=
build CGO_CXXFLAGS=
build CGO_LDFLAGS=
build GOARCH=amd64
build GOOS=darwin
build GOAMD64=v1
build vcs=git
build vcs.revision=c630057157df402b658ab97139895337633b5bbc
build vcs.time=2022-07-04T01:33:01Z
build vcs.modified=false
2.容器鏡像的 SBOM 支持
容器技術(shù)重塑了整個(gè)軟件供應(yīng)鏈。容器鏡像將應(yīng)用及其所有依賴(lài)項(xiàng)打包,從而使應(yīng)用可以在不同的計(jì)算環(huán)境之間快速、可靠地運(yùn)行。容器鏡像已經(jīng)成為了應(yīng)用分發(fā)的標(biāo)準(zhǔn),而 Kubernetes 成為了分布式資源調(diào)度和編排的事實(shí)標(biāo)準(zhǔn)。那么如何保障容器鏡像在構(gòu)建、分發(fā)和運(yùn)行時(shí)的完整性、安全性呢?
我們繼續(xù)以上面的 Golang 應(yīng)用為例,介紹一下現(xiàn)容器化軟件供應(yīng)鏈安全的最新實(shí)踐和工具鏈。
Ko 是 Google 開(kāi)源的一個(gè)簡(jiǎn)單、快速的 Go 應(yīng)用程序容器鏡像構(gòu)建器。今天我們只聚焦于 Ko 在軟件供應(yīng)鏈的一些設(shè)計(jì),大家可以舉一反三,應(yīng)用在自己的語(yǔ)言和項(xiàng)目中。
無(wú)需編寫(xiě) Dockerfile,利用 Ko build 我們可以將一個(gè) Golang 項(xiàng)目構(gòu)建成為一個(gè) Docker 鏡像。
$ cat .ko.yaml
defaultBaseImage: knative-dev-registry.cn-hangzhou.cr.aliyuncs.com/distroless/static:nonroot
$ export KO_DOCKER_REPO=knative-dev-registry.cn-hangzhou.cr.aliyuncs.com/denverdino
$ ko build -B .
2022/07/02 21:05:33 Using base knative-dev-registry.cn-hangzhou.cr.aliyuncs.com/distroless/static:nonroot@sha256:66cd130e90992bebb68b8735a72f8ad154d0cd4a6f3a8b76f1e372467818d1b4 for github.com/denverdino/secure-supply-chain-sample
2022/07/02 21:05:33 Building github.com/denverdino/secure-supply-chain-sample for linux/amd64
2022/07/02 21:05:34 Publishing knative-dev-registry.cn-hangzhou.cr.aliyuncs.com/denverdino/secure-supply-chain-sample:latest
2022/07/02 21:05:35 existing blob: sha256:64ef75a9b8ab92a78ea225f1e707dfee0434dcf7cb0e0b5a8b5020e6b737b791
2022/07/02 21:05:35 existing blob: sha256:3f99978937439fa8ef418c3f36e755f10d175ba218dda5f42846a52b8dca002d
2022/07/02 21:05:35 knative-dev-registry.cn-hangzhou.cr.aliyuncs.com/denverdino/secure-supply-chain-sample:sha256-cd1ac13d65aa8983f6c10317a09b994cd66fa46aceb1ba1eaf2cab4ee2038ec3.sbom: digest: sha256:0500ec91074135a2774c87fe86833c0267713be9e78cc4ea86b86cc42701fd0a size: 368
2022/07/02 21:05:35 Published SBOM knative-dev-registry.cn-hangzhou.cr.aliyuncs.com/denverdino/secure-supply-chain-sample:sha256-cd1ac13d65aa8983f6c10317a09b994cd66fa46aceb1ba1eaf2cab4ee2038ec3.sbom
2022/07/02 21:05:36 existing blob: sha256:7d883a3eb1c556752c73dedf88da2c0d3943b9f5c3f763cdd7a813ca766f5486
2022/07/02 21:05:36 existing blob: sha256:250c06f7c38e52dc77e5c7586c3e40280dc7ff9bb9007c396e06d96736cf8542
2022/07/02 21:05:36 existing blob: sha256:1759dab52bf113b8a23d818934e0fb48d6f4528df4d614b6edc1d7dba05a01b3
2022/07/02 21:05:36 existing blob: sha256:70e4c71b62aef82e9650deb85d30f3402b435e07665d775a3f3b700e9e7300cb
2022/07/02 21:05:36 knative-dev-registry.cn-hangzhou.cr.aliyuncs.com/denverdino/secure-supply-chain-sample:latest: digest: sha256:cd1ac13d65aa8983f6c10317a09b994cd66fa46aceb1ba1eaf2cab4ee2038ec3 size: 751
2022/07/02 21:05:36 Published knative-dev-registry.cn-hangzhou.cr.aliyuncs.com/denverdino/secure-supply-chain-sample@sha256:cd1ac13d65aa8983f6c10317a09b994cd66fa46aceb1ba1eaf2cab4ee2038ec3
knative-dev-registry.cn-hangzhou.cr.aliyuncs.com/denverdino/secure-supply-chain-sample@sha256:cd1ac13d65aa8983f6c10317a09b994cd66fa46aceb1ba1eaf2cab4ee2038ec3
為什么鏡像的創(chuàng)建時(shí)間變成了 ”1970/1/1“ ? 這是因?yàn)?Ko 的一個(gè)設(shè)計(jì)目標(biāo)就是支持 Reproducible Builds - 可重現(xiàn)的構(gòu)建。Reproducible Builds 是一組開(kāi)發(fā)實(shí)踐,當(dāng)源碼與構(gòu)建環(huán)境配置一模一樣時(shí),在不同機(jī)器上編譯出來(lái)的目標(biāo)二進(jìn)制文件會(huì)在比特層面上做到完全相同。這樣的好處是允許獨(dú)立的第三方可以對(duì)從源代碼到二進(jìn)制文件編譯過(guò)程中進(jìn)行驗(yàn)證,確保沒(méi)有引入漏洞或后門(mén)。常見(jiàn)的 docker build 命令構(gòu)建出的容器鏡像會(huì)在鏡像的 manifest 文件中包含構(gòu)建時(shí)間戳,而鏡像的 HASH 計(jì)算會(huì)包含 manifest 文件。這樣導(dǎo)致即使是使用相同的代碼和 Dockerfile,也無(wú)法保障構(gòu)建出的鏡像 HASH 是相同的。
Ko 通過(guò)固定應(yīng)用代碼和鏡像構(gòu)建的時(shí)間戳,確保了在任何環(huán)境構(gòu)建出的鏡像 HASH 保持不變。所以我們可以通過(guò)比較鏡像的 HASH 值來(lái)快速判斷兩個(gè)鏡像中的內(nèi)容是否一致。一個(gè)開(kāi)放性的問(wèn)題,Reproducible Build 是否是一個(gè)最佳實(shí)踐?是否適合于您的業(yè)務(wù)場(chǎng)景?
此外,為了更好支持軟件供應(yīng)鏈安全。Ko 自動(dòng)為應(yīng)用容器鏡像生成了相應(yīng)的 SBOM 信息,并且作為一個(gè)應(yīng)用制品推送到鏡像倉(cāng)庫(kù)中。可以通過(guò) URL 路徑進(jìn)行訪(fǎng)問(wèn):{KO_DOCKER_REPO}/{IMAGE_NAME}:sha256-{HASH}.sbom
如何獲得容器鏡像的 SBOM 信息呢?我們有兩個(gè)方法:第一,如果在鏡像倉(cāng)庫(kù)中沒(méi)有保存容器鏡像的 SBOM 信息,我們可以利用 docker sbom 命令分析生成應(yīng)用鏡像的 SBOM 信息。
$ docker sbom knative-dev-registry.cn-hangzhou.cr.aliyuncs.com/denverdino/secure-supply-chain-sample@sha256:cd1ac13d65aa8983f6c10317a09b994cd66fa46aceb1ba1eaf2cab4ee2038ec3
Syft v0.43.0
Loaded image
Parsed image
Cataloged packages [6 packages]
NAME VERSION TYPE
base-files 11.1+deb11u3 deb
github.com/denverdino/secure-supply-chain-sample go-module
github.com/sirupsen/logrus v1.8.1 go-module
golang.org/x/sys v0.0.0-20220702020025-31831981b65f go-module
netbase 6.3 deb
tzdata 2021a-1+deb11u4 deb
第二,如果在鏡像倉(cāng)庫(kù)中已經(jīng)存儲(chǔ)了容器鏡像的 SBOM 信息,比如 Ko 所發(fā)布的 SBOM 信息。我們可以利用 Sigstore 項(xiàng)目中的 cosign 工具直接獲得鏡像的 SBOM 內(nèi)容。
$ cosign download sbom knative-dev-registry.cn-hangzhou.cr.aliyuncs.com/denverdino/secure-supply-chain-sample@sha256:cd1ac13d65aa8983f6c10317a09b994cd66fa46aceb1ba1eaf2cab4ee2038ec3
Found SBOM of media type: text/spdx
SPDXVersion: SPDX-2.2
DataLicense: CC0-1.0
SPDXID: SPDXRef-DOCUMENT
DocumentName: github.com/denverdino/secure-supply-chain-sample
DocumentNamespace: http://spdx.org/spdxpackages/github.com/denverdino/secure-supply-chain-sample
Creator: Tool: ko 0.11.2
Created: 1970-01-01T00:00:00Z
##### Package representing github.com/denverdino/secure-supply-chain-sample
PackageName: github.com/denverdino/secure-supply-chain-sample
SPDXID: SPDXRef-Package-github.com.denverdino.secure-supply-chain-sample
PackageSupplier: Organization: github.com/denverdino/secure-supply-chain-sample
PackageDownloadLocation: https://github.com/denverdino/secure-supply-chain-sample
FilesAnalyzed: false
PackageHomePage: https://github.com/denverdino/secure-supply-chain-sample
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: NOASSERTION
PackageCopyrightText: NOASSERTION
PackageLicenseComments: NOASSERTION
PackageComment: NOASSERTION
Relationship: SPDXRef-DOCUMENT DESCRIBES SPDXRef-Package-github.com.denverdino.secure-supply-chain-sample
Relationship: SPDXRef-Package-github.com.denverdino.secure-supply-chain-sample DEPENDS_ON SPDXRef-Package-github.com.sirupsen.logrus-v1.8.1
##### Package representing github.com/sirupsen/logrus
PackageName: github.com/sirupsen/logrus
SPDXID: SPDXRef-Package-github.com.sirupsen.logrus-v1.8.1
PackageVersion: v1.8.1
PackageSupplier: Organization: github.com/sirupsen/logrus
PackageDownloadLocation: https://proxy.golang.org/github.com/sirupsen/logrus/@v/v1.8.1.zip
FilesAnalyzed: false
PackageChecksum: SHA256: 7492ae1e0aa4d4d35096aa00e814e533559ff43387dcd063432bb487df806591
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: NOASSERTION
PackageCopyrightText: NOASSERTION
PackageLicenseComments: NOASSERTION
PackageComment: NOASSERTION
Relationship: SPDXRef-Package-github.com.denverdino.secure-supply-chain-sample DEPENDS_ON SPDXRef-Package-golang.org.x.sys-v0.0.0-20220702020025-31831981b65f
##### Package representing golang.org/x/sys
PackageName: golang.org/x/sys
SPDXID: SPDXRef-Package-golang.org.x.sys-v0.0.0-20220702020025-31831981b65f
PackageVersion: v0.0.0-20220702020025-31831981b65f
PackageSupplier: Organization: golang.org/x/sys
PackageDownloadLocation: https://proxy.golang.org/golang.org/x/sys/@v/v0.0.0-20220702020025-31831981b65f.zip
FilesAnalyzed: false
PackageChecksum: SHA256: c5db1e8eb5bfd167f67624f908fa775e629435bafb5efc3c9188a543eeaa8d16
PackageLicenseConcluded: NOASSERTION
PackageLicenseDeclared: NOASSERTION
PackageCopyrightText: NOASSERTION
PackageLicenseComments: NOASSERTION
PackageComment: NOASSERTION
二、新一代鏡像簽名技術(shù)-Keyless
眾所周知,我們可以用鏡像簽名的方式來(lái)保障鏡像的可追溯性。一般而言,開(kāi)發(fā)者利用私鑰對(duì)鏡像加簽,在部署應(yīng)用時(shí),可以通過(guò) OPA/Gatekeeper 攔截請(qǐng)求,對(duì)鏡像進(jìn)行驗(yàn)簽。開(kāi)發(fā)者可以定義安全策略來(lái)自動(dòng)化安全流程。比如我們可以定義一個(gè)策略,不允許存在高風(fēng)險(xiǎn)漏洞的鏡像部署到生產(chǎn)系統(tǒng)。在鏡像構(gòu)建階段,我們可以對(duì)通過(guò)鏡像掃描且不包含高風(fēng)險(xiǎn)漏洞的鏡像進(jìn)行簽名,而在 K8s 生產(chǎn)集群中,通過(guò)安全策略來(lái)來(lái)校驗(yàn)鏡像簽名。
由于過(guò)去鏡像加簽/驗(yàn)簽的工具易用性不好,并沒(méi)有得到企業(yè)廣泛的應(yīng)用。阿里云鏡像服務(wù) ACR,ACK 在提供了集成、簡(jiǎn)化的鏡像安全體驗(yàn),極大降低了鏡像安全的技術(shù)門(mén)檻。
我們今天給大家介紹一個(gè)新的技術(shù)思路。Sigstore 是由紅帽、谷歌聯(lián)合幾所美國(guó)高校主導(dǎo)開(kāi)發(fā)維護(hù)的供應(yīng)鏈安全開(kāi)源項(xiàng)目,旨在提供一個(gè)新的軟件加簽、驗(yàn)簽和防護(hù)的標(biāo)準(zhǔn)。通過(guò) Sigstore,我們可以自動(dòng)對(duì)云原生下的各類(lèi)開(kāi)源制品進(jìn)行數(shù)字簽名并校驗(yàn),幫助構(gòu)建一個(gè)更安全、可追溯的供應(yīng)監(jiān)控鏈。
其中 Sigstore 的無(wú)密鑰簽名 Keyless Signatures 模式是這個(gè)項(xiàng)目最大的亮點(diǎn)之一。無(wú)密鑰簽名,支持自動(dòng)化的密鑰管理能力,使用者無(wú)需管理維護(hù)私鑰,極大簡(jiǎn)化的鏡像加簽驗(yàn)簽的體驗(yàn)。
我們首先通過(guò) cosign sign 命令對(duì)鏡像進(jìn)行加簽:
$ COSIGN_EXPERIMENTAL=true cosign sign knative-dev-registry.cn-hangzhou.cr.aliyuncs.com/denverdino/secure-supply-chain-sample@sha256:cd1ac13d65aa8983f6c10317a09b994cd66fa46aceb1ba1eaf2cab4ee2038ec3
Generating ephemeral keys...
Retrieving signed certificate...
Note that there may be personally identifiable information associated with this signed artifact.
This may include the email address associated with the account with which you authenticate.
This information will be used for signing this artifact and will be stored in public transparency logs and cannot be removed later.
By typing 'y', you attest that you grant (or have permission to grant) and agree to have this information stored permanently in transparency logs.
Are you sure you want to continue? (y/[N]): y
Your browser will now be opened to:
https://oauth2.sigstore.dev/auth/auth?access_type=online&client_id=sigstore&code_challenge=Zj3B13VeqlwO1OEs_cc_gVly21ZWdotsB_ipAG1KUD0&code_challenge_method=S256&nonce=2BPd2p6uHg1e916zBz3MoEoH8FR&redirect_uri=http%3A%2F%2Flocalhost%3A55455%2Fauth%2Fcallback&response_type=code&scope=openid+email&state=2BPd2uo32VlgXKC9NY0rDOJlfmA
Successfully verified SCT...
tlog entry created with index: 2824482
Pushing signature to: knative-dev-registry.cn-hangzhou.cr.aliyuncs.com/denverdino/secure-supply-chain-sample
在 Keyless 模式中,終端會(huì)自動(dòng)打開(kāi)瀏覽器,由用戶(hù)選擇 OAuth 身份服務(wù)商進(jìn)行認(rèn)證,流程完成后。cosign 會(huì)對(duì)鏡像進(jìn)行簽名,并將鏡像簽名保存在鏡像倉(cāng)庫(kù)中,其 URL 路徑為: {IMAGE_REPO}/{IMAGE_NAME}:sha256-{HASH}.sig
在這個(gè)過(guò)程中 cosign 利用 fulcio 的根證書(shū),創(chuàng)建了一個(gè)臨時(shí)秘鑰和證書(shū),對(duì)鏡像進(jìn)行加簽。簽名也會(huì)記錄在 Rekor 的透明化日志中,為鏡像簽名提供遠(yuǎn)程證明。我們可以利用 cosign verify 命令對(duì)鏡像簽名進(jìn)行校驗(yàn)。
COSIGN_EXPERIMENTAL=true cosign verify knative-dev-registry.cn-hangzhou.cr.aliyuncs.com/denverdino/secure-supply-chain-sample@sha256:cd1ac13d65aa8983f6c10317a09b994cd66fa46aceb1ba1eaf2cab4ee2038ec3
Verification for knative-dev-registry.cn-hangzhou.cr.aliyuncs.com/denverdino/secure-supply-chain-sample@sha256:cd1ac13d65aa8983f6c10317a09b994cd66fa46aceb1ba1eaf2cab4ee2038ec3 --
The following checks were performed on each of these signatures:
- The cosign claims were validated
- Existence of the claims in the transparency log was verified offline
- Any certificates were verified against the Fulcio roots.
[{"critical":{"identity":{"docker-reference":"knative-dev-registry.cn-hangzhou.cr.aliyuncs.com/denverdino/secure-supply-chain-sample"},"image":{"docker-manifest-digest":"sha256:cd1ac13d65aa8983f6c10317a09b994cd66fa46aceb1ba1eaf2cab4ee2038ec3"},"type":"cosign container image signature"},"optional":{"Bundle":{"SignedEntryTimestamp":"MEQCIB1YeNP8suFn6xm7hn0qkAJBiID/gcOP//tsm7u2Z/FIAiBqiw0Zl1CvgVfcGhOWKUEkZKB2XdFm3FPaxq9E+Jsmyg==","Payload":{"body":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoicmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI2MDRiZWI5M2Q0OGVhYzA4ZmE3OTQzNWNhNTVlZmQyNTE4ODhlN2NmZmMzODJlZTE0MmRjMzZkZDExMzhkYzFjIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUNhNXhYd25pR1J6ckRlamtHRHFCSFNTdlMvdUVCeUJkVUV0cFBiRVRxZUVBSWdGY0hWOW9RWkYxYk4xYmtxMWY3UFdWOUpCY00vZlhyZXZTa0orT0tWSDJrPSIsImZvcm1hdCI6Ing1MDkiLCJwdWJsaWNLZXkiOnsiY29udGVudCI6IkxTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVU52ZWtORFFXbHBaMEYzU1VKQlowbFZTSHByZFVSeVprODJWamxqVUhsSlkyZ3JOVXBFUlc4NVRtcHpkME5uV1VsTGIxcEplbW93UlVGM1RYY0tUbnBGVmsxQ1RVZEJNVlZGUTJoTlRXTXliRzVqTTFKMlkyMVZkVnBIVmpKTlVqUjNTRUZaUkZaUlVVUkZlRlo2WVZka2VtUkhPWGxhVXpGd1ltNVNiQXBqYlRGc1drZHNhR1JIVlhkSWFHTk9UV3BKZDA1NlFYbE5WRTB3VFdwSk1sZG9ZMDVOYWtsM1RucEJlVTFVVFRGTmFra3lWMnBCUVUxR2EzZEZkMWxJQ2t0dldrbDZhakJEUVZGWlNVdHZXa2w2YWpCRVFWRmpSRkZuUVVWQ016UkNhRGRPZWtRMFRqaEVWVWxyWW5WWVkxWTVUMEZEV1d4MlpGcFNiMkkzVmt3S1RIaE9SMnhOSzNrMmIycGhUR05EZHpaNVlsaHNaak5RVFU0clduaERUVmROTUVreVkyWjFPRUpZZFhNelUzaFVka3RQUTBGVlkzZG5aMFpFVFVFMFJ3cEJNVlZrUkhkRlFpOTNVVVZCZDBsSVowUkJWRUpuVGxaSVUxVkZSRVJCUzBKblozSkNaMFZHUWxGalJFRjZRV1JDWjA1V1NGRTBSVVpuVVZWUFExUm5DakZMV1dKbFZFRlpWVmxvZUZwVU1HeDJja0YzU0RaWmQwaDNXVVJXVWpCcVFrSm5kMFp2UVZVek9WQndlakZaYTBWYVlqVnhUbXB3UzBaWGFYaHBORmtLV2tRNGQwbG5XVVJXVWpCU1FWRklMMEpDWjNkR2IwVlZXa2RXZFdSdFZubGFSMngxWWpCQ2JtSlhSbkJpUXpWcVlqSXdkMHhCV1V0TGQxbENRa0ZIUkFwMmVrRkNRVkZSWldGSVVqQmpTRTAyVEhrNWJtRllVbTlrVjBsMVdUSTVkRXd5ZUhaYU1teDFUREk1YUdSWVVtOU5TVWRLUW1kdmNrSm5SVVZCWkZvMUNrRm5VVU5DU0hORlpWRkNNMEZJVlVGRFIwTlRPRU5vVXk4eWFFWXdaRVp5U2pSVFkxSlhZMWx5UWxrNWQzcHFVMkpsWVRoSloxa3lZak5KUVVGQlIwSUtkbmxZT0d0blFVRkNRVTFCVW1wQ1JVRnBRazVFYjBkNE16STNaMGRDZWxWeWRIaEZVVFZ6ZEZSRFF6Z3haRWMwY1dsU2VrMHZTMHR2Y3pGMU5IZEpad3BMVDIxTVNXdENXVzF6V21ZeFZIQTNNRXhaWkRCbGIwaFVVV3AyV1dFdldrbFdaVFEzWTBwMUwwaFpkME5uV1VsTGIxcEplbW93UlVGM1RVUmhVVUYzQ2xwblNYaEJTemREVFRkQ1NFMW1UWE5GY0hwa1lXbHlVRFIzUkZFeUwxUnZibEUxYTBack5FbEZWamRvY1dScFJWbDJVMEpEVVhoSU0xQjRjV2RGU1dJS2RVdEhiWEozU1hoQlR6VmlRamMyUVRSaE5qWXpUSGRFYVVkalYyUlpkVEZrY0Rabk1ubDRkREpyY0ZObFprcGlVMHBQT1dOWFJEVldOM1JUY1d0WmVRcGFSbkJSUmsxUlowdDNQVDBLTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0=","integratedTime":1656769347,"logIndex":2822273,"logID":"c0d23d6ad406973f9559f3ba2d1ca01f84147d8ffc5b8445c224f98b9591801d"}},"Issuer":"https://github.com/login/oauth","Subject":"[email protected]"}},{"critical":{"identity":{"docker-reference":"knative-dev-registry.cn-hangzhou.cr.aliyuncs.com/denverdino/secure-supply-chain-sample"},"image":{"docker-manifest-digest":"sha256:cd1ac13d65aa8983f6c10317a09b994cd66fa46aceb1ba1eaf2cab4ee2038ec3"},"type":"cosign container image signature"},"optional":{"Bundle":{"SignedEntryTimestamp":"MEYCIQDdn2/IzVRCAuS+8s5Zz1F2+Gp3/MXzFP2whryasTa3GQIhAJKWFtb7jGnL8krnR4CwVYr/jbtZuHtlX7TpNPtEP67R","Payload":{"body":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5k
分享標(biāo)題:談?wù)勎覍?duì)云原生與軟件供應(yīng)鏈安全的思考
文章源于:http://fisionsoft.com.cn/article/djjiese.html


咨詢(xún)
建站咨詢(xún)
