使用 IAM 控管存取權

本頁說明如何控管 Workload Manager 資源的存取權。

Workload Manager 使用 Identity and Access Management (IAM) 來控管資源存取權。IAM 是一種工具,可管理 Google Cloud 資源的精細授權。換句話說,您可以透過 IAM 控管哪些人能對哪些資源執行哪些操作。

如要透過 IAM 授予使用者資源存取權,請指派特定角色給他們。 主體可透過 IAM 角色取得權限,在 Workload Manager 資源上執行工作。

如要進一步瞭解 IAM 及其功能,請參閱 IAM 說明文件

管理 Workload Manager 資源的存取權

使用 IAM 管理存取權最常見的方式是使用允許政策。允許政策會列出哪些主體有權存取資源,以及可對資源執行的動作。

以下各節說明如何使用 Google Cloud 控制台和 Google Cloud CLI,透過允許政策授予及撤銷單一角色。您也可以同時授予及撤銷多個角色。詳情請參閱 IAM 說明文件中的「管理專案、資料夾和機構的存取權」。

這些章節著重於在專案層級授予及撤銷存取權,以控管使用者對專案和專案中所有資源的存取權。

您也可以使用附加至不同 Google Cloud 資源的允許政策,管理資源階層其他層級的存取權。詳情請參閱 IAM 說明文件中的「使用資源階層控管存取權」。

並非所有資源都支援允許政策。如要瞭解可附加允許政策的資源,請參閱 IAM 說明文件中的「支援允許政策的資源」。

如要瞭解其他可透過 IAM 控管存取權的政策 (例如拒絕政策),請參閱 IAM 說明文件中的「IAM 政策類型」。

授予單一 IAM 角色

如要將單一角色授予主體,請執行下列步驟:

控制台

  1. 前往 Google Cloud 控制台的「IAM」頁面。

    前往 IAM

  2. 選取專案、資料夾或機構。
  3. 選取要授予角色的主體:
    • 如要授予主體資源的其他角色,請找出包含該主體的列,依序點選該列的 「Edit principal」(編輯主體)「Add another role」(新增其他角色)

      如要將角色授予服務代理程式,請選取「包含 Google提供的角色授予項目」核取方塊,即可查看其電子郵件地址。

    • 如要將角色授予資源上還沒有任何角色的主體,請點選 「Grant Access」(授予存取權),然後輸入主體 ID,例如 my-user@example.com//iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com
  4. 從下拉式清單中選取要授予的角色。為遵循安全性最佳做法,請選擇僅含主體所需權限的角色。
  5. 選用:為角色新增條件
  6. 按一下 [儲存]。主體就會取得指定資源的角色。

gcloud

  1. 在 Google Cloud 控制台中啟用 Cloud Shell。

    啟用 Cloud Shell

    控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。 Google Cloud Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好相關值。工作階段可能要幾秒鐘的時間才能初始化。

  2. add-iam-policy-binding 指令可讓您快速將角色授予主體。

    使用下方的任何指令資料之前,請先替換以下項目:

    • RESOURCE_TYPE:要管理存取權的資源類型。請使用 projectsresource-manager foldersorganizations

    • RESOURCE_ID:您的 Google Cloud 專案、資料夾或組織 ID。專案 ID 為英數字元,例如 my-project。 資料夾和機構 ID 為數字,例如 123456789012

    • PRINCIPAL:主體或成員的 ID,通常採用以下格式: PRINCIPAL_TYPE:ID。 例如 user:my-user@example.comprincipalSet://iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com。如需 PRINCIPAL 可擁有的完整值清單,請參閱「主體 ID」。

      如果是 user 主體類型,識別碼中的網域名稱必須是 Google Workspace 網域或 Cloud Identity 網域。如要瞭解如何設定 Cloud Identity 網域,請參閱 Cloud Identity 總覽

    • ROLE_NAME:要授予的角色名稱。請使用下列其中一種格式:

      • 預先定義的角色:roles/SERVICE.IDENTIFIER
      • 專案層級自訂角色:projects/PROJECT_ID/roles/IDENTIFIER
      • 機構層級的自訂角色:organizations/ORG_ID/roles/IDENTIFIER

      如需預先定義角色清單,請參閱「瞭解角色」。

    • CONDITION:要新增至角色繫結的條件。如不想新增條件,請使用 None 值。如要進一步瞭解條件,請參閱條件總覽

    執行下列指令:

    Linux、macOS 或 Cloud Shell

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID \
        --member=PRINCIPAL --role=ROLE_NAME \
        --condition=CONDITION

    Windows (PowerShell)

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID `
        --member=PRINCIPAL --role=ROLE_NAME `
        --condition=CONDITION

    Windows (cmd.exe)

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID ^
        --member=PRINCIPAL --role=ROLE_NAME ^
        --condition=CONDITION

    回應會包含更新後的 IAM 允許政策。

撤銷單一 IAM 角色

如要撤銷主體的單一角色,請執行下列步驟:

控制台

  1. 前往 Google Cloud 控制台的「IAM」頁面。

    前往 IAM

  2. 選取專案、資料夾或機構。
  3. 找到要撤銷存取權的主體所在資料列。然後點選該列中的「Edit principal」(編輯主體) 圖示
  4. 針對要撤銷的角色按一下「刪除」圖示 按鈕,然後按一下「儲存」

gcloud

  1. 在 Google Cloud 控制台中啟用 Cloud Shell。

    啟用 Cloud Shell

    控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。 Google Cloud Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已針對您目前的專案設定好相關值。工作階段可能要幾秒鐘的時間才能初始化。

  2. 如要撤銷使用者的角色,請執行 remove-iam-policy-binding 指令:

    gcloud RESOURCE_TYPE remove-iam-policy-binding RESOURCE_ID \
        --member=PRINCIPAL --role=ROLE_NAME

    提供以下這些值:

    • RESOURCE_TYPE:要管理存取權的資源類型。請使用 projectsresource-manager foldersorganizations

    • RESOURCE_ID:您的 Google Cloud 專案、資料夾或組織 ID。專案 ID 為英數字元,例如 my-project。 資料夾和機構 ID 為數字,例如 123456789012

    • PRINCIPAL:主體或成員的 ID,通常採用以下格式: PRINCIPAL_TYPE:ID。 例如 user:my-user@example.comprincipalSet://iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com

      如果是 user 主體類型,識別碼中的網域名稱必須是 Google Workspace 網域或 Cloud Identity 網域。如要瞭解如何設定 Cloud Identity 網域,請參閱 Cloud Identity 總覽

    • ROLE_NAME:要撤銷的角色名稱。請使用下列其中一種格式:

      • 預先定義的角色:roles/SERVICE.IDENTIFIER
      • 專案層級自訂角色:projects/PROJECT_ID/roles/IDENTIFIER
      • 機構層級的自訂角色:organizations/ORG_ID/roles/IDENTIFIER

      如需預先定義角色清單,請參閱「瞭解角色」。

    舉例來說,如要撤銷專案 example-project 服務帳戶 example-service-account@example-project.iam.gserviceaccount.com 的專案建立者角色:

    gcloud projects remove-iam-policy-binding example-project \
          --member=serviceAccount:example-service-account@example-project.iam.gserviceaccount.com \
          --role=roles/resourcemanager.projectCreator

為避免撤銷任何必要角色,您可以啟用變更風險建議。如果您嘗試撤銷 Google Cloud 認為重要的專案層級角色,變更風險建議就會產生警告。

條件式存取

您可以透過 IAM 條件,只在符合特定條件時授予主體存取權,讓政策更加精細。條件的依據是與主體、資源和要求相關的屬性。舉例來說,您可以設定只有在主體從特定位置存取資源,或在特定時間存取資源時,才授予存取權。

允許政策中的條件是根據下列類型的屬性:

  • 資源屬性:包括資源的服務、類型或名稱。這些屬性通常用於變更角色繫結授予的存取權範圍。
  • 要求屬性:包括要求的詳細資料,例如提出要求的主體時間或存取層級。您可以利用這些屬性建立條件,評估要求的詳細資料,例如存取層級、日期和時間、目的地 IP 位址和連接埠,或預期網址路徑。

如要進一步瞭解 Workload Manager 支援的條件屬性,請參閱 IAM 說明文件中的「IAM 條件的屬性參考資料」。

您無法直接在 Workload Manager 資源上授予條件式存取權。不過,您可以在專案、資料夾或機構等容器資源上,將角色授予主體,並在這些角色繫結中新增條件,藉此授予 Workload Manager 資源類型的條件式存取權。新增至容器資源允許政策的條件,會由該容器資源中包含的資源沿用。如要進一步瞭解條件的沿用方式,請參閱 IAM 說明文件中的「支援沿用條件」。

如要瞭解如何為角色繫結新增條件,請參閱 IAM 說明文件中的「管理條件式角色繫結」。

後續步驟