整合 Secrets Manager 於 Schematics
IBM Cloud® Schematics 支援與 IBM Cloud® Secrets Manager 的整合,讓您可以安全地管理敏感資訊,而不會在 Schematics 配置中顯示實際的機密值。 您可以直接從 Secrets Manager 提供秘密參考,取代硬編碼秘密,以提高安全性並簡化您的秘密輪換。
在 Schematics 中整合 Secrets Manager,就不需要在 Terraform、Ansible 和 Extensions 等自動化堆疊中暴露秘密值。 Secrets Manager 具備直接的密文輪換和更高的安全性,可增強 Schematics 工作流程的可維護性。
若要在 Schematics 中整合 Secrets Manager 並存取機密,您需要在 Secrets Manager 和 Schematics 之間建立服務對服務原則,並指定 Viewer 和 Secret Reader 的角色。
開始之前
- 您必須擁有您的 key-value 秘訣。 若要建立機密,請參閱 建立 Secrets Manager 實例。
- 您需要設定 服務對服務授權,才能在 Schematics 服務中整合 Secrets Manager。
- 請遵循這些步驟,授予服務對服務授權存取 Schematics 服務。
- 登入 IBM Cloud 主控台。
- 按一下管理 > 存取 (IAM) > 授權 > 建立。
- 選擇來源帳戶為此帳戶。
- 選擇**服務為 **Schematics.
- 選擇資源為所有資源或特定資源。
- 選擇目標服務為 Secrets Manager。
- 選擇角色為檢視者和秘密閱讀器。
- 選取授權從屬服務,以啟用來源和從屬服務的授權。
- 按一下授權。
使用控制台在 Schematics Terraform 中整合 Secrets Manager
按照步驟在 Schematics 中啟用 Secrets Manager,以安全地連接 Schematics Terraform。
- 登入 IBM Cloud 主控台。
- 按一下功能表
圖示 > 平台自動化 > Schematics > Terraform > 建立工作區。
- 在 Specify Template(指定範本 )區段中:
- GitHub, GitLab, 或
Bitbucket儲存庫 URL-<provide your Terraform template Git repository URL>. - 個人存取權限-
<leave it blank>。您可以按一下Open reference picker,選擇您的 Secrets Manager key 參考資料。 如需詳細資訊,請參閱 建立 Secrets Manager 範例。
- GitHub, GitLab, 或
- 在 Specify Template(指定範本 )區段中:
- 在選擇參考頁面中,選擇帳戶、服務實例和密碼。
- 按一下確定。
- 按一下建立以建立工作區。
觀察輸入變數的秘密參考,該變數儲存為參考。
在變數中整合 Secrets Manager
按照步驟在 Schematics 啟用 Secrets Manager,以安全地更新 Schematics Terraform 變數。
- 登入 IBM Cloud 主控台。
- 按一下功能表圖示
> 平台自動化 > Schematics > Terraform。
- 按一下您的工作區以進行編輯。
- 按一下設定。 在變數中按一下編輯圖示,以編輯
api_key參數。 - 在 Edit Variable(編輯變數 )中,按一下
Open reference picker,以檢視 Select a reference page(選取參考頁面)、新增 、 Service instance(服務實例 )和Secret(密碼** )。 - 按一下儲存,檢視秘密參考參數為
ref://secrets-manager.<REGION>.<INSTANCE_NAME>/<SECRET_GROUP>/SECRET_NAME。
觀察儲存為參數的輸入變數的秘密參數。
使用 CLI 在 Schematics 整合 Secrets Manager 的步驟
按照步驟在 Schematics 啟用 Secrets Manager,以安全地更新 Schematics Terraform。
-
下載並安裝命令列,並執行共用指令,以您的區域為目標,建立服務對服務政策,建立 Secrets Manager 實例,在您的 Terraform 程式碼中引用秘密,並進行應用。
ibmcloud login --sso ibmcloud target -r <region> ibmcloud iam service-policy-create --source-service-name schematics --target-service-instance-name <your-secrets-manager-name> --roles "Viewer,SecretReader" ibmcloud secrets-manager secret-create --secret-type arbitrary --name <secret-name> --payload <secret-value> -
在您的 Terraform 程式碼中引用該機密。
variable "my_secret" { default = "ref://secrets-manager.<REGION>.<INSTANCE_NAME>/<SECRET_GROUP>/SECRET_NAME" } -
套用 Schematics 工作區
ibmcloud schematics workspace apply --id <WORKSPACE_ID>
使用 API 在 Schematics Terraform 中整合 Secrets Manager
按照步驟在 Schematics 中啟用 Secrets Manager,以安全地連接 Schematics Terraform。
-
按照 步驟 擷取您的 IAM 存取標記,並使用 API 與 IBM Cloud Schematics 進行驗證。
-
使用您的目標端點和 IBM Cloud Resource Controller API 建立 Secrets Manager Instance (如果尚未建立)。
curl -X POST /v1/resource_instances -H "Authorization: <iam_access_token>" -d '{"name": "my-secrets-manager", "target": "test-eu-de", "resource_group": "default", "resource_plan_id": "<plan-id-for-secrets-manager>" }' -
使用 Secrets Manager API 在 Secrets Manager 中建立一個 Secret。
curl -X POST /api/v1/secrets/arbitrary -H "Authorization: <iam_access_token>" -d '{"name": "my-token-secret","description": "Token for private Git repo","secret_group_id": "<secret-group-id>","resources": [],"payload": "your-token-value"}' -
建立服務以服務 IAM 政策
{ "type": "service", "subjects": [{ "attributes": [{ "name": "serviceName", "value": "schematics" }] }], "roles": [ { "role_id": "crn:v1:bluemix:public:iam::::role:Viewer" }, { "role_id": "crn:v1:bluemix:public:iam::::role:SecretReader" } ], "resources": [{ "attributes": [{ "name": "serviceInstance", "value": "<secrets-manager-instance-id>" }] }] } -
使用 Schematics 工作區,在 Terraform 變數檔案中引用秘密。
variable "git_token" { default = "ref://secrets-manager.<REGION>.<INSTANCE_NAME>/<SECRET_GROUP>/SECRET_NAME" } -
使用 Terraform 模板更新工作區,以引用該機密。
curl -X PATCH /v1/workspaces/{workspace_id} -
使用 Terraform 模版套用工作區。
curl -X POST /v1/workspaces/{workspace_id}/actions/apply
使用 Terraform 在 Schematics Terraform 中整合 Secrets Manager
按照步驟在 Schematics 中啟用 Secrets Manager,以安全地連接 Schematics Terraform。
-
在 Secrets Manager 中建立秘密。 您可以使用 CLI 或手動建立機密。 在 Terraform 中,秘密通常是被引用的,而不是直接創建的。
-
參考 Terraform 變數中的 Secret。 將
secret-id改為 Secrets Manager 中儲存的秘密的實際 ID。variable "git_token" { default = "ref://secrets-manager.<REGION>.<INSTANCE_NAME>/<SECRET_GROUP>/SECRET_NAME" } -
使用 Schematics Terraform 提供程式或 CLI,以前述設定 建立工作區。