管理條件式角色繫結

本主題說明如何在 Identity and Access Management (IAM) 允許政策中,新增、修改及移除條件式角色繫結。

事前準備

  • 如果尚未啟用,請啟用 IAM API。

    啟用 API 時所需的角色

    如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

    啟用 API

  • 請參閱 IAM 條件總覽,瞭解 IAM 條件式角色繫結的基本概念。

  • 請參閱屬性參考資料,瞭解可在運算式中使用的不同條件屬性。

必要的角色

如要管理資源允許政策中的條件式角色繫結,您必須具備取得資源的權限,以及取得和設定資源允許政策的權限。這些權限的格式如下,其中 SERVICE 是擁有資源的服務名稱,RESOURCE_TYPE 則是您要管理存取權的資源類型名稱:

  • SERVICE.RESOURCE_TYPE.get
  • SERVICE.RESOURCE_TYPE.getIamPolicy
  • SERVICE.RESOURCE_TYPE.setIamPolicy

舉例來說,如要在專案的允許政策中管理條件式角色繫結,您需要下列權限:

  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

如要取得必要權限,請要求管理員授予您包含這些權限的預先定義或自訂角色。舉例來說,管理員可以授予您安全管理員角色 (roles/iam.securityAdmin),這個角色具備權限,可取得幾乎所有Google Cloud 資源,並管理這些資源的允許政策。

在政策中新增條件式角色繫結

您可以在新的或現有的允許政策中新增條件式角色繫結,進一步控管 Google Cloud 資源的存取權。本節說明如何使用 Google Cloud 控制台、Google Cloud CLI 和 REST API,在現有的允許政策中新增簡單的時間條件。

如要在現有的允許政策中新增條件式角色繫結,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「IAM」(身分與存取權管理) 頁面。

    前往「IAM」頁面

  2. 在主體清單中找出所需主體,然後按一下 按鈕。

  3. 在「編輯權限」面板中,找出要設定條件的角色。然後在「IAM 條件 (選用)」下方,按一下「新增 IAM 條件」。

  4. 在「編輯條件」面板中,輸入條件的標題和說明 (選填)。

  5. 您可以使用「條件建構工具」或「條件編輯器」新增條件運算式。條件建構工具提供互動式介面,可供選取所需的條件類型、運算子,以及運算式的其他適用詳細資料。條件編輯器提供文字介面,可使用 CEL 語法手動輸入運算式。

    條件建構工具:

    1. 從「條件類型」下拉式選單中,選取「存取權到期」。
    2. 從「運算子」下拉式選單中,選取「by」。
    3. 在「時間」下拉式選單中,按一下 按鈕,選取日期和時間範圍。
    4. 按一下「儲存」即可套用條件。
    5. 關閉「編輯條件」面板後,再次點選「編輯權限」面板中的「儲存」,即可更新允許政策。

    條件編輯器:

    1. 按一下「條件編輯器」分頁標籤,然後輸入下列運算式 (請將時間戳記替換為您自己的):

      request.time < timestamp("2019-12-31T12:00:00.000Z")
    2. 輸入運算式後,您可以選擇點選文字方塊右上方的「執行 Linter」,驗證 CEL 語法。

    3. 按一下「儲存」即可套用條件。

    4. 關閉「編輯條件」面板後,再次點選「編輯權限」面板中的「儲存」,即可更新允許政策。

gcloud

允許政策是使用「讀取 - 修改 - 寫入」模式設定。

執行 gcloud projects get-iam-policy 指令,取得專案目前的允許政策。在下列範例中,允許政策的 JSON 版本會下載至磁碟上的路徑。

指令:

gcloud projects get-iam-policy project-id --format json > file-path

系統會下載允許政策的 JSON 格式:

{
  "bindings": [
    {
      "members": [
        "user:my-user@example.com"
      ],
      "role": "roles/owner"
    },
    {
      "members": [
        "group:my-group@example.com"
      ],
      "role": "roles/iam.securityReviewer"
    }
  ],
  "etag": "BwWKmjvelug=",
  "version": 1
}

請注意允許政策目前的 version,也就是 1。如要設定允許政策並授予可過期的存取權,請新增下列醒目顯示的條件運算式 (將時間戳記替換為您自己的時間戳記)。gcloud CLI 會自動更新版本:

{
  "bindings": [
    {
      "members":