配置 IAM 認證引擎

您可以透過設定 IAM 認證引擎,為 IBM Cloud® Secrets Manager 服務實體設定 IAM 認證。

在Secrets Manager中,IAM 憑證引擎充當 iam_credentials 秘密類型的後端。 您必須先配置服務實例的 IAM 認證引擎,然後才能建立 IAM 認證。 您可以透過建立 IAM 服務授權 或輸入與您的IBM Cloud帳戶中的服務 ID 關聯的 API 金鑰 來啟用您的實例。

使用 API 金鑰進行引擎配置時,產生的存取權令牌將持續 60 分鐘,並且即使從 IAM 刪除 API 金鑰,該存取權杖也將繼續有效。 這可以透過在 IAM 設定中變更記號有效期限來修改。 進一步瞭解。 請注意,如果刪除與 API 金鑰相關的實體,記號會立即失效。

當引擎組態使用 IAM 服務授權時,您可以在與 Secrets Manager 範例相同的 IBM Cloud 帳戶中,以及從其他帳戶中,建立和管理 IAM 授權憑證機密。 API 金鑰設定僅對 Secrets Manager 範例所屬的帳號有效。

開始之前

若要設定 IAM 憑證引擎,請確保在Secrets Manager實例上為您指派了 Manager 服務角色

如果使用 API 金鑰設定 IAM 憑證引擎,您需要具有下列存取權限的 服務 ID API 金鑰

如果使用 IAM 服務授權設定 IAM 授權憑證引擎,Secrets Manager 會代表您新增下列兩項授權政策。

如果要產生 IAM 憑證的帳戶允許從特定 IP 位址存取,您也必須更新帳戶中的 IP 位址設定,以允許從 Secrets Manager 傳入的要求。 如需相關資訊,請參閱 使用環境定義型限制來管理存取權

在使用者介面中設定 IAM 認證引擎

使用IAM服務授權

完成下列步驟以使用 IAM 服務授權設定 IAM 憑證引擎。

要從與 Secrets Manager 範例相同的 IBM Cloud 帳戶管理 IAM 認證:

  1. 在「密鑰引擎」頁面中,按一下 IAM 認證 標籤。
  2. 按一下授權
  3. 按一下配置

若要從其他 IBM Cloud 帳戶管理 IAM 憑證,請手動建立 IAM 服務授權。

對於 IAM Identity Service服務授權策略:

  1. 在您想要管理 IAM 憑證的帳戶中,請前往管理 > 存取 (IAM)
  2. 從左窗格選單中選擇授權
  3. 按一下建立
  4. 在「來源」下,選擇 「特定帳號」 並提供Secrets Manager實例所屬的帳號 ID。
    • 服務:Secrets Manager
    • 資源:特定資源 > 服務實體,並提供 Secrets Manager 實體的服務實體 ID。
  5. 在目標下選擇
    • 服務:IAM Identity Service
    • 資源:全部
    • 角色:操作員

對於 IAM Access Groups Service 服務授權策略:

  1. 在您想要管理 IAM 憑證的帳戶中,請前往管理 > 存取 (IAM)
  2. 從左窗格選單中選擇授權
  3. 按一下建立
  4. 在「來源」下,選擇 「特定帳號」 並提供Secrets Manager實例所屬的帳號 ID。
    • 服務:Secrets Manager
    • 資源:特定資源 > 服務實體,並提供 Secrets Manager 實體的服務實體 ID。
  5. 在目標下選擇
    • 服務:IAM 存取群組服務
    • 資源:全部
    • 角色:群組服務成員管理

使用 API 金鑰

完成下列步驟以使用服務 ID 的 API 金鑰設定 IAM 憑證引擎。

  1. 在「密鑰引擎」頁面中,按一下 IAM 認證 標籤。
  2. 按一下使用 API 金鑰設定 IAM 認證引擎
  3. 輸入有權在帳戶中建立及管理其他 API 金鑰的 API 金鑰。
  4. 按一下配置

從 CLI 設定 IAM 認證引擎

使用IAM服務授權

完成下列步驟以使用 IAM 服務授權設定 IAM 憑證引擎。

若要從與 Secrets Manager 範例相同的 IBM Cloud 帳戶管理 IAM 認證,請執行下列指令新增所需的 IAM 服務授權原則:

ibmcloud iam authorization-policy-create secrets-manager iam-identity "Service ID Creator, Operator" --source-service-instance-id SOURCE_SERVICE_INSTANCE_GUID
ibmcloud iam authorization-policy-create secrets-manager iam-groups "Groups Service Member Manage" --source-service-account SOURCE_SERVICE_INSTANCE_GUID
  • SOURCE_SERVICE_INSTANCE_GUID 替換為Secrets Manager實例服務 ID。 如果未提供,則授權適用於所有Secrets Manager實例

若要從其他 IBM Cloud 帳戶管理 IAM 憑證:也要包含 ACCOUNT_GUID 參數。

  1. 使用您要管理的服務 ID 登入IBM Cloud帳戶。
  2. 執行以下命令新增所需的 IAM 服務授權策略:
ibmcloud iam authorization-policy-create secrets-manager iam-identity "Service ID Creator, Operator" --source-service-instance-id SOURCE_SERVICE_INSTANCE_GUID --source-service-account ACCOUNT_GUID
ibmcloud iam authorization-policy-create secrets-manager iam-groups "Groups Service Member Manage" --source-service-account SOURCE_SERVICE_INSTANCE_GUID --source-service-instance-id ACCOUNT_GUID
  • SOURCE_SERVICE_INSTANCE_GUID 替換為Secrets Manager實例服務 ID。 如果未提供,則授權適用於所有Secrets Manager實例
  • ACCOUNT_GUID 替換為您要在其中建立 IAM 憑證金鑰的IBM Cloud帳戶的 ID。

使用 API 金鑰

完成下列步驟以使用服務 ID 的 API 金鑰設定 IAM 憑證引擎。

  1. 在終端機視窗中,透過 IBM Cloud CLI 登入 IBM Cloud。

    ibmcloud login
    
  2. 選取 Secrets Manager 服務實例所在的帳戶、地區及資源群組。

  3. 建立服務 ID 並將它設為環境變數。

    export SERVICE_ID=`ibmcloud iam service-id-create <service_ID_name> --description "<description>" --output json | jq -r ".id"`; echo $SERVICE_ID
    
  4. 管理服務 ID 的存取權。

    指派服務 ID 許可權,以建立及管理其他服務 ID。

    ibmcloud iam service-policy-create $SERVICE_ID --roles Operator --service-name "iam-identity"
    

    指派服務 ID 許可權,以檢視及更新您帳戶中的存取群組。

    ibmcloud iam access-group-policy-create $SERVICE_ID --roles Editor --service-name "iam-groups"
    

    將服務 ID 新增至帳戶中的存取群組。

    ibmcloud iam access-group-service-id-add <access_group_name> $SERVICE_ID
    

    為您的服務 ID 建立 IBM Cloud API 金鑰。

    export IBM_CLOUD_API_KEY=`ibmcloud iam service-api-key-create <API_key_name> $SERVICE_ID --description "<description>" --output json | jq -r ".apikey"`
    
  5. 使用 API 金鑰為您的執行個體設定 IAM 憑證引擎。

    若要從 IBM Cloud CLI 配置密碼引擎,請執行 ibmcloud secrets-manager configuration-create 指令。

    ibmcloud secrets-manager configuration-create --configuration-prototype='{"config_type": "iam_credentials_configuration","name": "iam-configuration","api_key": "'$IBM_CLOUD_API_KEY'"}'
    

    使用 Windows™ 指令提示 (cmd.exe) 或 PowerShell? 如果您在指令行上傳遞 JSON 內容時發生錯誤,則可能需要調整字串,以符合作業系統特有的引號跳出需求。 如需詳細資訊,請參閱 IBM Cloud CLI 中使用字串的引號

使用 API 配置 IAM 認證引擎

如需逐步說明如何建立具有正確存取層級的 IBM Cloud API 金鑰,請切換至 UICLI 步驟。

使用IAM服務授權

以下範例顯示了一個查詢,您可以在使用 IAM 服務授權時使用該查詢為您的執行個體設定 IAM 憑證引擎。 請參閱IBM Cloud IAM 的 API 文件 以了解更多資訊。

curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' -d '{
  "type": "authorization",
  "subjects": [
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "$SOURCE_ACCOUNT_ID"
        },
        {
          "name": "serviceName",
          "value": "secrets-manager"
        },
        {
          "name": "serviceInstance",
          "value": "$INSTANCE_GUID"
        }
      ]
    }
  ],
  "roles":[
        {
          "role_id": "crn:v1:bluemix:public:iam-identity::::serviceRole:ServiceIdCreator"
        },
        {
          "role_id": "crn:v1:bluemix:public:iam::::role:Operator"
        }
  ],
  "resources":[
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "$TARGET_ACCOUNT_ID"
        },
        {
          "name": "serviceName",
          "value": "iam-identity"
        }
      ]
    }
  ]
}'

curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' -d '{
  "type": "authorization",
  "subjects": [
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "$SOURCE_ACCOUNT_ID"
        },
        {
          "name": "serviceName",
          "value": "secrets-manager"
        },
        {
          "name": "serviceInstance",
          "value": "$INSTANCE_GUID"
        }
      ]
    }
  ],
  "roles":[
        {
          "role_id": "crn:v1:bluemix:public:iam-groups::::serviceRole:MemberManage"
        }
  ],
  "resources":[
    {
      "attributes": [
        {
          "name":"$TARGET_ACCOUNT_ID",
          "value": "791f5fb10986423e97aa8512f18b7e65"
        },
        {
          "name": "serviceName",
          "value": "iam-groups"
        }
      ]
    }
  ]
}'

serviceInstance 屬性是可選的。 如果省略,則授權適用於所有 Secrets Manager 實例。 的 SOURCE_ACCOOUNT_IDTARGET_ACCOUNT_ID 不論是為目前帳戶或特定帳戶建立授權,都必須使用。

使用 API 金鑰

以下範例顯示了一個查詢,您可以使用該查詢透過 API 金鑰為您的執行個體設定 IAM 憑證引擎。 當您呼叫 API 時,請將 API 金鑰變數及 IAM 記號取代為 Secrets Manager 實例特定的值。

curl -X POST
  --H "Authorization: Bearer {iam_token}" \
  --H "Accept: application/json" \
  --H "Content-Type: application/json" \
  --d '{
    "api_key": "{iam_apikey}", "config_type": "iam_credentials_configuration",
    "name": "iam-configuration"
    }' \
  "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/configurations"

成功的回應會傳回秘密的 ID 值以及其他元資料。 如需必要及選用要求參數的相關資訊,請參閱 建立密鑰

使用 Terraform 配置 IAM 認證引擎

使用IAM服務授權

以下範例顯示了一個查詢,您可以在使用 IAM 服務授權時使用該查詢為您的Secrets Manager實例設定 IAM 憑證引擎。

    resource "ibm_iam_authorization_policy" "sm_to_iam_identity" {
        source_service_name = "secrets-manager"
        source_service_account = local.source_account_id
        source_resource_instance_id = local.instance_id
        target_service_name = "iam-identity"
        roles = ["Service ID creator", "Operator"]
    }

    resource "ibm_iam_authorization_policy" "sm_to_iam_groups" {
        source_service_name = "secrets-manager"
        source_service_account = local.source_account_id
        source_resource_instance_id = local.instance_id
        target_service_name = "iam-groups"
        roles = ["Groups Service Member Manage"]
    }

source_resource_instance_id 屬性是可選的。 如果省略,則授權適用於所有 Secrets Manager 實例。 該 source_service_account 屬性是可選的。 如果來源帳戶與目前帳戶相同,則可以省略。

使用 API 金鑰

如需逐步說明如何建立具有正確存取層級的 IBM Cloud API 金鑰,請切換至 UICLI 步驟。

以下範例顯示了可用於透過服務 ID 的 API 金鑰配置 IAM 憑證引擎的配置。

    resource "ibm_sm_iam_credentials_configuration" "iam_credentials_configuration" {
        instance_id = local.instance_id
        region = local.region
        name = "iam_credentials_config"
        api_key = var.ibmcloud_api_key
    }

使用 Secrets Manager IAM 引擎 程式化配置 IAM 認證引擎。 有關配置範例,請參閱 Terraform IBM 模組

在 UI 中檢索 IAM 憑證引擎的設定值

您可以使用 Secrets Manager 使用者介面來擷取引擎的配置。 擷取設定僅在使用 API 金鑰設定 IAM 認證引擎時有效。

  1. IAM 認證 密鑰引擎中,按一下 動作 功能表 「動作」圖示,以開啟引擎配置的選項清單。
  2. 若要檢視配置值,請按一下 檢視配置
  3. 確定您位於安全環境之後,請按一下 確認

密鑰值會顯示 15 秒,然後對話框會關閉。

使用 CLI 擷取引擎的配置值

您可以使用 Secrets Manager CLI 來擷取引擎的配置。 在下列範例指令中,將引擎配置名稱取代為您配置的名稱。 擷取設定僅在使用 API 金鑰設定 IAM 認證引擎時有效。

ibmcloud secrets-manager configuration --name EXAMPLE_CONFIG --service-url https://{instance_ID}.{region}.secrets-manager.appdomain.cloud

{instance_ID}{region} 取代為適用於 Secrets Manager 服務實例的值。 要找到專屬於您的實例的端點 URL,您可以從 Secrets Manager UI 的 Endpoints 頁面複製它。 如需相關資訊,請參閱 檢視端點 URL

使用 API 擷取引擎的配置值

您可以使用 Secrets Manager API 來擷取引擎的配置。 在下列範例要求中,將引擎配置名稱取代為您配置的名稱。 擷取設定僅在使用 API 金鑰設定 IAM 認證引擎時有效。

curl -X GET --location --header "Authorization: Bearer {iam_token}" \
--header "Accept: application/json" \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/configurations/{name}"

{instance_ID}{region} 取代為適用於 Secrets Manager 服務實例的值。 要找到專屬於您的實例的端點 URL,您可以從 Secrets Manager UI 的 Endpoints 頁面複製它。 如需相關資訊,請參閱 檢視端點 URL

成功回應會傳回引擎配置的值,以及其他 meta 資料。 有關必需和可選請求參數的更多信息,請參閱 獲取配置

下一步

現在您可以使用Secrets Manager產生 IAM 憑證。 在 Secrets Manager 使用者介面中,按一下 密鑰> 新增> IAM 認證,以開始建立密鑰。