在工具鏈中使用機密集成
工具鏈設定和管道使用者介面中提供的機密管理功能可以透過使用IBM Cloud® Secrets Manager、IBM® Key Protect的機密整合來選擇保管的機密。,或HashiCorp Vault。 透過使用「Secrets Picker」對話框,工具鍊或管道編輯器可以從綁定機密整合中選擇命名機密,該整合由 CRN (雲端資源名稱)或名稱配置,然後在運行時在工具鍊和管道中通過引用進行解析。 選擇秘密後,CRN
或規範秘密引用將被注入到相應的工具鍊或管道安全屬性中,其中格式為 crn:v1:...secret:<secret-guid> 如果它是由 CRN 配置的Secrets Manager集成,{vault::integration-name.secret-name} 如果它是使用的保管庫集成任何受支持的提供者並按 name 配置。
規範的按名稱引用格式目前無法解析秘密名稱中包含句點字元的秘密,因為該字元用於分隔規範路徑的每個部分。
無論使用哪種類型的秘密引用(透過 CRN 或透過名稱),前端使用者介面元件和秘密選取器對話方塊都僅使用秘密引用。 按 CRN 或按名稱秘密引用的解析值永遠不會暴露給前端,並且始終根據可用的允許 授權(透過使用 IAM 授權和存取策略進行配置)在運行時在工具鍊和管道內動態解析。
在IBM Cloud®內,解析工具鏈和管道中的透過 CRN 和按名字秘密引用的動態過程是透過使用所有區域中的所有IBM Cloud® Secrets Manager和IBM® Key Protect提供者實例的內部虛擬專用端點 (VPE) 來執行的。 這可確保工具鏈、管道以及IBM Cloud® Secrets Manager和IBM® Key Protect提供者實例之間的所有請求和回應資料都保存在邊界內私有IBM Cloud中網絡,且不透過任何公共網路管道傳輸。
除了從工具鏈中的任何綁定機密整合中逐一手動選擇所選機密外,還可以選擇使用 Secret Hint。 此選項允許使用建議的秘密名稱(也稱為 Hints )預先定義工具鏈模板,這些秘密名稱是簡短形式的秘密引用。 秘密提示的格式為 {vault::secret-name},其中不包含秘密整合名稱。 這為工具鏈作者提供了靈活性,因為所有必需的秘密名稱都可以預先填充到 toolchain.yml 中,然後根據為工具鏈配置的任何秘密整合自動解析這些名稱。
如前所述,您可以設定Secrets Manager以透過 CRN 引用機密。 如需詳細資訊,請參閱 雲端資源名稱(CRN)。 這種格式提供了更大的彈性,因為如果正確的 授權到位,您可以引用來自不同帳戶中的Secrets Manager實例的金鑰。 有關更多信息,請參閱 配置Secrets Manager。
Hint 是建議的預設名稱,會根據綁定到工具鏈的任何可用的按名稱機密整合中具有相同名稱的第一個匹配機密自動解析。
DevSecOps管道秘密
CI 和 CD 中使用的秘密概述如下:
| 密碼 | 提示 | 資訊 |
|---|---|---|
| IBM Cloud API 金鑰 | ibmcloud-api-key |
必需:CI 和 CD用於向IBM公有雲進行身份驗證並執行各種操作 |
| GPG私鑰 | signing_key |
必需:僅限 CI這是用於對 CI 管道建置的映像進行簽署的證書 |
| IBM私人工作人員服務 API 金鑰 | private-worker-service-api-key |
必要:僅限 CI服務 ID API 金鑰 用於在 Tekton Private Worker Service 上執行交付管道工作負載 |
| GitHub 存取記號 | git-token |
可選:CI 和 CD用於透過GitHub進行身份驗證並提供對儲存庫的訪問 |
| Artifactory API 令牌 | artifactory-token |
必需:CI & CD用於存取管道任務使用的影像 |
| Slack webhook | slack-webhook |
選用:CI 和 CD如果您選擇使用 Slack 工具整合來發布工具鏈狀態通知,則需要此 Webhook |
| ServiceNow API 令牌 | servicenow-api-token |
必需:僅 CD用於存取 Service Now 以進行變更管理操作 |
| HashiCorp Vault 角色 ID | role-id |
必需:CI 和 CD用於透過HashiCorp Vault 伺服器進行身份驗證 |
| HashiCorp Vault 秘密 ID | secret-id |
必需:CI 和 CD用於透過HashiCorp Vault 伺服器進行身份驗證 |
| IBM Cloud Object Storage編寫器 API 金鑰 | cos-api-key |
必要:CI 和 CD用於透過Object Storage服務進行驗證 - 此金鑰必須具有 writer 權限 |
| SonarQube密碼或驗證令牌 | sonarqube-password |
可選:CI用於使用SonarQube原始碼分析器進行身份驗證 |
如果您使用的是HashiCorp Vault 伺服器,請確保HashiCorp Vault 工具整合使用 AppRole Auth Method方法。 當您使用AppRole身份驗證方法時,您需要 role-id 和 secret-id 才能成功將HashiCorp Vault伺服器與工具鏈整合。 由於 role-id 和 secret-id 本身就是秘密,因此建議使用 IBM Key Protect工具整合 來儲存它們,以便可以在工具鏈工作流程中安全地檢索和應用它們。 所有其他工具鏈機密應使用HashiCorp
Vault 工具整合來儲存和檢索。
如果未設定管道環境屬性 git-token,則預設使用 ibmcloud-api-key 檢索Git Repos and Issue Tracking存取令牌。 但是,如果 ibmcloud-api-key 無權存取 git,則必須設定 git-token。
配置秘密存儲
透過IBM Cloud,您可以從各種機密管理和資料保護產品中進行選擇,以協助您保護敏感資料並集中您的機密。 您可以根據您的要求在保管庫整合之間進行選擇,如 管理IBM Cloud機密 中所述。 本文檔提供有關先決條件以及如何使用指定秘密名稱清單(也稱為提示)的資訊。 透過在範本中使用提示,可以使用預先配置的機密自動填入工具鏈,而無需從附加到工具鏈的各種保管庫整合中手動選擇它們。
使用 IBM Cloud® Secrets Manager 安全地儲存並套用屬於工具鏈一部分的 API 金鑰、影像簽章或HashiCorp Vault 憑證等機密。
這些模板還附帶HashiCorp Vault 工具集成,如下例所示:
要使用HashiCorp Vault,您必須提供以下資訊:
- 名稱
- 此工具整合的名稱。 此名稱會顯示在工具鏈中。
- 伺服器 URL
- HashiCorp Vault Instance 的伺服器 URL。 例如,
https://<vault-service>.<org>.com:8200。 - 整合 URL
- 當您按一下 HashiCorp Vault Integration 磁磚時,要導航到的 URL。
- 秘密之路
- HashiCorp Vault 實例中儲存機密的裝載路徑。
- 鑑別方法
- HashiCorp Vault 實例的身份驗證方法。 使用
AppRole。 - 角色 ID
- 選擇評估其他憑證所依據的AppRole的識別碼。
- 密鑰 ID
- 預設情況下,任何登入都需要憑證(使用 Secret_id),並且始終保密。
這些範本也附帶了IBM® Key Protect for IBM Cloud®工具整合:
如果您提前將 role id 和 secret id 儲存在Key Protect中,那麼您可以在工具卡中選擇包含這些金鑰的Key Protect實例,如下所圖示 2. 完成後,您可以點擊HashiCorp Vault 工具卡中角色 ID 和秘密 ID 欄位上的鑰匙圖標,並使用選擇器將秘密套用到這些欄位。
同樣,工具鏈中使用的任何其他機密都有一個附加到文字欄位的鑰匙圖示。 您可以使用相同的選擇器控制項將HashiCorp Vault 金鑰套用到所有剩餘實例。