整合 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 之間建立服務對服務原則,並指定 ViewerSecret Reader 的角色。

開始之前

  • 您必須擁有您的 key-value 秘訣。 若要建立機密,請參閱 建立 Secrets Manager 實例
  • 您需要設定 服務對服務授權,才能在 Schematics 服務中整合 Secrets Manager。
  • 請遵循這些步驟,授予服務對服務授權存取 Schematics 服務。
  1. 登入 IBM Cloud 主控台
  2. 按一下管理 > 存取 (IAM) > 授權 > 建立
  3. 選擇來源帳戶此帳戶
  4. 選擇**服務為 **Schematics.
  5. 選擇資源所有資源特定資源
  6. 選擇目標服務為 Secrets Manager。
  7. 選擇角色檢視者秘密閱讀器
  8. 選取授權從屬服務,以啟用來源和從屬服務的授權。
  9. 按一下授權

使用控制台在 Schematics Terraform 中整合 Secrets Manager

按照步驟在 Schematics 中啟用 Secrets Manager,以安全地連接 Schematics Terraform。

  1. 登入 IBM Cloud 主控台
  2. 按一下功能表 漢堡 圖示 > 平台自動化 > 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 範例
  3. 在選擇參考頁面中,選擇帳戶服務實例密碼
  4. 按一下確定
  5. 按一下建立以建立工作區。

觀察輸入變數的秘密參考,該變數儲存為參考。

在變數中整合 Secrets Manager

按照步驟在 Schematics 啟用 Secrets Manager,以安全地更新 Schematics Terraform 變數。

  1. 登入 IBM Cloud 主控台
  2. 按一下功能表圖示漢堡包圖示 > 平台自動化 > Schematics > Terraform
  3. 按一下您的工作區以進行編輯。
  4. 按一下設定。 在變數中按一下編輯圖示,以編輯 api_key 參數。
  5. Edit Variable(編輯變數 )中,按一下 Open reference picker,以檢視 Select a reference page(選取參考頁面)、新增 Service instance(服務實例 )和Secret(密碼** )。
  6. 按一下儲存,檢視秘密參考參數為 ref://secrets-manager.<REGION>.<INSTANCE_NAME>/<SECRET_GROUP>/SECRET_NAME

觀察儲存為參數的輸入變數的秘密參數。

使用 CLI 在 Schematics 整合 Secrets Manager 的步驟

按照步驟在 Schematics 啟用 Secrets Manager,以安全地更新 Schematics Terraform。

  1. 下載並安裝命令列,並執行共用指令,以您的區域為目標,建立服務對服務政策,建立 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>
    
  2. 在您的 Terraform 程式碼中引用該機密。

     variable "my_secret" {
     default = "ref://secrets-manager.<REGION>.<INSTANCE_NAME>/<SECRET_GROUP>/SECRET_NAME"
    }
    
  3. 套用 Schematics 工作區

    ibmcloud schematics workspace apply --id <WORKSPACE_ID>
    

使用 API 在 Schematics Terraform 中整合 Secrets Manager

按照步驟在 Schematics 中啟用 Secrets Manager,以安全地連接 Schematics Terraform。

  1. 按照 步驟 擷取您的 IAM 存取標記,並使用 API 與 IBM Cloud Schematics 進行驗證。

  2. 使用您的目標端點和 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>"
     }'
    
  3. 使用 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"}'
    
  4. 建立服務以服務 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>"
         }]
       }]
     }
    
  5. 使用 Schematics 工作區,在 Terraform 變數檔案中引用秘密。

     variable "git_token" {
     default = "ref://secrets-manager.<REGION>.<INSTANCE_NAME>/<SECRET_GROUP>/SECRET_NAME"
    }
    
  6. 使用 Terraform 模板更新工作區,以引用該機密。

    curl -X PATCH /v1/workspaces/{workspace_id}
    
  7. 使用 Terraform 模版套用工作區。

    curl -X POST /v1/workspaces/{workspace_id}/actions/apply
    

使用 Terraform 在 Schematics Terraform 中整合 Secrets Manager

按照步驟在 Schematics 中啟用 Secrets Manager,以安全地連接 Schematics Terraform。

  1. 定義 Secrets Manager Instance

  2. 在 Secrets Manager 中建立秘密。 您可以使用 CLI 或手動建立機密。 在 Terraform 中,秘密通常是被引用的,而不是直接創建的。

  3. 建立 IAM Service 到服務策略

  4. 參考 Terraform 變數中的 Secret。 將 secret-id 改為 Secrets Manager 中儲存的秘密的實際 ID。

     variable "git_token" {
     default = "ref://secrets-manager.<REGION>.<INSTANCE_NAME>/<SECRET_GROUP>/SECRET_NAME"
    }
    
  5. 使用 Schematics Terraform 提供程式或 CLI,以前述設定 建立工作區