配置服務連結的存取權

Code Engine 中的服務綁定使用服務 ID 來存取 IBM Cloud 服務。 服務 ID 包含代表 Code Engine 專案與服務實體通訊的憑證。 在您將服務實體綁定到 Code Engine 工作負載之前,您必須設定綁定的存取權限,該存取權限是基於您是否希望 Code Engine 自動為您建立和管理服務 ID,或是您是否希望使用由您管理的服務 ID。

有興趣配置您的專案,讓專案的所有使用者都可以建立及刪除服務連結嗎? 如果具備足夠的許可權,您可以使用主控台中的「專案整合」頁面,從單一頁面來配置服務連結作業。 如果您沒有足夠許可權來執行這些動作,您可以利用這個頁面來協助您瞭解必要的許可權。 請參閱 配置專案層面的設定

在您可以將應用程式、工作或函數連結至特定 IBM Cloud 服務實例之前,請判定您是否要 建立及管理自己的服務 ID,或是否要 Code Engine 自動為您建立及管理服務 ID。 根據您的選擇,指派適當的存取原則。Code Engine 每個專案使用一個服務 ID 來使用服務連結。

使用預設服務連結存取原則

依預設,當與專案搭配使用的帳戶具有足夠許可權時,Code Engine 會自動建立服務 ID,以存取 Code Engine 專案的資源群組中的所有服務。 在第一個服務連結作業期間會建立服務 ID。

若要在 Code Engine 專案與您要連結的服務實例位於 相同 資源群組時使用預設服務連結存取原則,請 配置 Code Engine 的存取權,以自動建立及管理服務連結的服務 ID

配置 Code Engine 的存取權以自動建立及管理服務連結的服務 ID

如果您的服務實例與 Code Engine 專案位於相同的資源群組中,且您想要 Code Engine 自動建立並管理服務連結的服務 ID,則與 Code Engine 專案搭配使用的 IBM Cloud 帳戶必須具有 Writer 服務存取權及 Operator 平台存取權,至少。

當您為帳戶設定這些許可權時,當您建立服務連結時,Code Engine 會檢查並自動設定服務 ID,其中包含 Code Engine 專案資源群組中所有服務的 OperatorManager 存取權。Code Engine 使用此服務 ID 來存取具有服務連結的 IBM Cloud 服務。

每當 Code Engine 建立用於專案服務連結的服務 ID 時,此服務 ID 會與相同專案內的後續服務連結一起重複使用。除非您執行 project update CLI 指令來 將專案配置成連結不同資源群組中的服務,或執行 project update CLI 指令來使用 自訂服務 ID,並具備 Code Engine 服務連結的存取權

例如,假設您想要 Code Engine 自動建立並管理 IBM Cloudant 服務實例之服務連結的服務 ID。 此外,假設與 Code Engine 專案及 IBM Cloudant 服務實例一起使用的 my-user 帳戶都在相同的資源群組中。

下列步驟說明一種設定必要存取權的方法,以便 Code Engine 可以自動建立及管理 my-user 服務連結的服務 ID。 服務實例的帳戶擁有者會完成下列步驟,以指派 my-user 的許可權。

  1. 為建立 Code Engine 服務連結的使用者 建立 IAM 資源群組

    1. 啟動 存取權(IAM)概觀
    2. 選取 管理 > 帳戶 > 資源群組 > 建立資源群組
    3. 建立資源群組; 例如 CodeEngine_servicebindings_resourcegroup
  2. 在相同的資源群組中建立您要連結的服務實例。 在此範例中,請在 CodeEngine_servicebindings_resource group 資源群組中建立 IBM Cloudant 服務實例。

  3. 針對建立 Code Engine 服務連結的使用者,建立 IAM 存取群組

    1. 啟動 存取權(IAM)概觀

    2. 選取 管理 > 存取權 (IAM) > 存取群組

    3. 建立群組; 例如 CodeEngine_servicebindings_accessgroup

    4. 從這個新的存取群組內,按一下 存取 標籤,並將下列兩個存取原則指派給存取群組。 對於第一個存取原則,

      • 若要使用此服務,請選擇 All Identity and Access enabled services
      • 針對資源,選取您在前一個步驟中建立的特定資源群組; 例如 CodeEngine_servicebindings_resourcegroup
      • 針對資源群組存取權,選取 Viewer
      • 對於角色和動作,選取 Administrator 的平台存取權。
      • 按一下 新增,將存取原則新增至此存取群組。
    5. 指派此存取群組的第二個存取原則。

      • 若要使用此服務,請選擇 Code Engine
      • 針對資源,選取您在前一個步驟中建立的特定資源群組; 例如 CodeEngine_servicebindings_resourcegroup
      • 針對資源群組存取權,選取 Viewer
      • 對於角色和動作,選取 Writer 的服務存取權和 Operator 的平台存取權。
      • 按一下 新增,將存取原則新增至此存取群組。
    6. 按一下 指派,將存取原則指派給這個存取群組。

  4. my-user 使用者新增至此存取群組。

現在您已準備好在 Code Engine 中建立服務連結,其中 Code Engine 會自動建立具有足夠許可權的服務 ID,以建立所指定服務實例的服務認證。 請參閱 將服務實例連結至應用程式、工作或功能工作負載

配置專案以連結不同資源群組中的服務

依預設,當與專案搭配使用的帳戶具有足夠許可權時,Code Engine 會自動建立服務 ID,以存取 Code Engine 專案的資源群組中的所有服務。 在第一個服務連結作業期間會建立服務 ID。

不過,如果您要連結至 Code Engine 工作量的 IBM Cloud 服務實例所在的資源群組,與您工作量的 Code Engine 專案所在的資源群組 不同,且您想要 Code Engine 自動為您建立及管理服務連結的服務 ID,在建立服務連結之前,您必須先完成下列動作。

例如,如果 Code Engine 專案位於 Default 資源群組中,且您想要連結至 dev 資源群組中存在的服務實例,則必須更新 Code Engine 專案,以便 Code Engine 可以存取其他資源群組中的服務實例。

更新專案以存取其他資源群組中的服務實例

當您要連結的資源位於不同的資源群組時,請使用 CLI 來配置 Code Engine 專案,讓它可以存取不同資源群組中的資源。 使用 ibmcloud ce project update 指令並指定 --binding-resource-group 選項來配置 Code Engine 專案,以針對資源群組中所有服務實例的服務連結存取權。 此指令會告知 Code Engine 專案它可以連結至哪個資源群組。 您只能使用 CLI 來更新專案,以將服務連結至不同的資源群組。

project update 指令在選取作為現行環境定義的專案內運作。 使用 project update 指令之前,請確認您已進入想要的專案。 使用 ibmcloud ce project current 指令來顯示目前設為目標之專案的詳細資料。 必要的話,請使用 ibmcloud ce project select 指令,選取您的專案作為現行環境定義。

  • 若要配置 預設 資源群組中所有服務實例的服務連結存取權,請執行下列動作:

    ibmcloud ce project update --binding-resource-group Default
    
  • 若要透過指定資源群組的 ID 來配置資源群組中所有服務實例的服務連結存取權,請執行下列動作:

    ibmcloud ce project update --binding-resource-group-id abcdabcdabcdabcdabcdabcdabcdabcd
    

    若要取得資源群組的清單 (包括資源群組 ID),請執行 ibmcloud resource groups

  • 若要配置所有資源群組中所有服務實例的服務連結存取權,請執行下列動作:

    ibmcloud ce project update --binding-resource-group "*"
    

當您執行 project update 指令時,會為專案建立服務 ID,並用來配置現行專案的服務連結。 如果您沒有建立此服務 ID 的許可權,則會收到錯誤,指出您的專案未準備好使用服務連結。 請洽詢帳戶管理者有關您的存取原則,或要求管理者 配置 Code Engine 的存取權,以自動建立及管理服務連結的服務 ID

使用服務連結的自訂服務 ID

如果您想要進一步控制存取原則或資源群組,您可以為服務實例建立自訂服務 ID。

如果帳戶擁有者不想要授與使用者對資源群組內 已啟用所有身分及存取權的服務Administrator 存取權,則您的組織可能選擇使用自訂服務 ID 來存取特定服務實例,Code Engine 需要此存取權來自動建立及管理服務連結的服務 ID。 帳戶擁有者可能想要限制使用者對特定服務類型或服務實例的存取權。 在這些情況下,自訂服務 ID 會提供此控制項。

如果要使用服務連結的自訂服務 ID,

建立具有 Code Engine 服務連結存取權的自訂服務 ID

當您使用自訂服務 ID 時,必須提供自訂服務 ID Operator 平台存取權,這個服務 ID 才能建立服務連結的服務認證。

例如,假設您要建立服務連結,以將 Code Engine 工作量連結至 IBM Cloudant 服務實例。 但是,您不想要為使用者提供資源群組內所有 已啟用所有身分及存取權的服務Administrator 存取權。 不過,您想要授與使用者對特定 IBM Cloudant實例的存取權。

下列步驟說明一種方法,可設定具有必要存取權的自訂服務 ID,以便 Code Engine 可以建立 my-user 的服務連結。 服務實例的帳戶擁有者會完成下列步驟,以建立自訂服務 ID。

  1. 為建立 Code Engine 服務連結的使用者 建立 IAM 資源群組

    1. 啟動 存取權(IAM)概觀
    2. 選取 管理 > 帳戶 > 資源群組 > 建立資源群組
    3. 建立資源群組; 例如 CodeEngine_servicebindings_resourcegroup
  2. 在相同的資源群組中建立您要連結的服務實例。 在此範例中,請在 CodeEngine_servicebindings_resource group 資源群組中建立 IBM Cloudant 服務實例。

  3. 針對建立 Code Engine 服務連結的使用者,建立 IAM 存取群組

    1. 啟動 存取權(IAM)概觀
    2. 選取 管理 > 存取權 (IAM) > 存取群組
    3. 建立群組; 例如 CodeEngine_servicebindings_accessgroup
    4. 從這個新的存取群組內,按一下 存取 標籤,並指派 Code Engine 服務的下列存取原則。
      • 對於「服務」,選取 Code Engine
      • 針對資源,選取您在前一個步驟中建立的特定資源群組; 例如 CodeEngine_servicebindings_resourcegroup
      • 針對資源群組存取權,選取 Viewer
      • 對於角色和動作,選取 Writer 的服務存取權和 Operator 的平台存取權。
      • 按一下 新增,將存取原則新增至此存取群組。
    5. 按一下 指派,將存取原則指派給這個存取群組。
    6. 在相同的資源群組中建立您要連結的服務實例。 在此範例中,請在 CodeEngine_servicebindings_resource group 資源群組中建立 IBM Cloudant 服務實例。
  4. my-user 使用者新增至此存取群組。

  5. 建立您要連結之服務實例的服務 ID。

    1. 啟動 存取權(IAM)概觀
    2. 選取 管理 > 存取權 (IAM) > 服務 ID
    3. 建立服務 ID; 例如 CodeEngine_servicebindings_serviceid
    4. 從這個新的服務 ID 內,按一下 指派群組。 從「指派存取權」頁面中,選取 存取原則。 請勿選取 存取群組。 指派下列存取原則:
      • 對於「服務」,選取您要連結的服務實例; 例如,IBM Cloudant 服務實例。
      • 對於「資源」,請選取您為可建立此服務之服務連結的使用者所建立的特定資源群組。
      • 針對資源群組存取權,選取 Viewer
      • 對於角色和動作,選取 Manager 的服務存取權和 Operator 的平台存取權。
      • 按一下 新增,將存取原則新增至此服務 ID。
    5. 按一下 指派,將存取原則指派給此服務 ID。

既然您有服務連結的自訂服務 ID,您必須將 Code Engine 專案配置成使用自訂服務 ID。

配置專案以使用自訂服務 ID

若要配置服務連結的 Code Engine 專案以使用您管理的自訂服務 ID,請使用 ibmcloud ce project update CLI 指令並指定 --binding-service-id 選項。 您可以更新專案,只使用 CLI 來使用自訂服務 ID。

project update 指令在選取作為現行環境定義的專案內運作。 使用 project update 指令之前,請確認您已進入想要的專案。 使用 ibmcloud ce project current 指令來顯示目前設為目標之專案的詳細資料。 必要的話,請使用 ibmcloud ce project select 指令,選取您的專案作為現行環境定義。

  1. 從主控台按一下服務 ID 頁面上的「詳細資料」,以尋找自訂服務 ID 的 ID,否則執行 ibmcloud iam service-ids CLI 指令。

  2. 執行 ibmcloud ce project update 指令。 例如,如果服務 ID 是 ServiceId-12a3456b-c78d-901e-f2a3b4cabcde:

    ibmcloud ce project update --binding-service-id ServiceId-12a3456b-c78d-901e-f2a3b4cabcde
    

每當您執行 project update --binding-service-id 指令時,Code Engine 會取代任何現有的服務 ID,並將此服務 ID 用於服務連結。

下一步

現在已配置服務連結的存取權,您已準備好 將服務實例連結至應用程式、工作或功能工作負載