管理框架

法規遵循管理工具架構包含雲端控管機制,可協助您在雲端環境中,滿足組織或專案的安全性和法規要求。套用架構分為兩個步驟。首先,您必須找出符合貴公司安全性和法規遵循義務的雲端控管機制。接著,您會將包含這些雲端控制項的架構,部署到Google Cloud中適當的組織、資料夾或專案。本頁面可協助您完成下列步驟:

  1. 評估哪種內建架構最符合您的法規和安全需求。您可以建立自己的自訂架構,但建議您從內建架構開始。

  2. 判斷哪些內建雲端控管機制符合業務需求。(僅限 Premium 和 Enterprise 級別) 如有需要,您可以建立自訂雲端控管機制。

  3. 決定要將架構部署至 Google Cloud組織,還是特定資料夾和專案。每個組織、資料夾或專案只能部署一個架構。法規遵循管理員支援已設定應用程式管理功能的資料夾。

  4. 複製現有架構,並根據需求修改。如有需要,您可以建立自訂架構。

  5. 在適當的組織、資料夾或專案中部署架構。

事前準備

請先完成這些工作,再完成本頁其餘工作。

設定權限

  • 如要取得套用架構所需的權限,請要求管理員在貴組織或專案中授予您下列 IAM 角色:

    如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

    使用組織政策部署架構的角色,具備必要的 orgpolicy.policies.create、orgpolicy.policies.update 和 orgpolicy.policies.get 權限。

    如果是組織層級部署作業,建立資料夾的角色會包含必要的 resourcemanager.folders.get、resourcemanager.folders.create 和 resourcemanager.folders.delete 權限。

    如果是組織層級部署作業,建立專案的角色會包含必要的 resourcemanager.projects.get、resourcemanager.projects.create、resourcemanager.projects.delete 和 resourcemanager.projects.createBillingAssignment 權限。

    將 DSPM 架構指派給應用程式的角色,包含必要的 apphub.locations.list、apphub.applications.list 和 apphub.applications.get 權限。

    您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

設定 Google Cloud CLI

在 Google Cloud 控制台啟用 Cloud Shell。

啟用 Cloud Shell

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

如要設定 gcloud CLI,使用服務帳戶模擬功能向 Google API 進行驗證,而非使用使用者憑證,請執行下列指令:

gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL

詳情請參閱「服務帳戶模擬」。

查看框架

請完成下列步驟,查看內建架構或已建立的其他架構設定。

控制台

  1. 前往 Google Cloud 控制台的「Compliance」(法規遵循) 頁面。

    前往「法規遵循」頁面

  2. 選取您的機構或專案。

  3. 如要查看所有可用的架構,請按一下「Configure」(設定) 分頁標籤。

    資訊主頁會顯示可用的架構、簡短說明、支援的平台和級別,以及已套用架構的資源。

  4. 如要查看特定架構的詳細資料,請按一下架構名稱。

CLI

您可以查看特定架構的資訊,或列出組織中的所有架構。

查看框架詳細資料

如要查看特定架構的詳細資料,請執行 gcloud compliance-manager frameworks describe 指令:

gcloud compliance-manager frameworks describe FRAMEWORK \
   --location=LOCATION \
   --organization=ORGANIZATION \
   [--major-revision-id=MAJOR_REVISION_ID]

更改下列內容:

  • FRAMEWORK:架構名稱

  • ORGANIZATION:組織 ID

  • LOCATION:儲存架構的區域

  • MAJOR_REVISION_ID:選用旗標,指定要查看的架構版本。如未加入這個旗標,系統會傳回最新版本。

舉例來說,如要查看名稱為 builtin-security-essentials 且主要修訂版本編號為 12 的架構,請執行下列指令:

gcloud compliance-manager frameworks describe \
   builtin-security-essentials \
   --organization=3589215982 \
   --location=global \
   --major-revision-id=12

詳情請參閱「gcloud compliance-manager frameworks describe」。

取得架構清單

如要取得組織中的架構清單,請執行 gcloud compliance-manager frameworks list 指令:

gcloud compliance-manager frameworks list \
   --location=LOCATION \
   --organization=ORGANIZATION

替換下列值:

  • ORGANIZATION:組織 ID

  • LOCATION:儲存架構的區域

舉例來說,如要查看儲存在全域位置的機構 3589215982 內所有架構,請執行下列指令:

gcloud compliance-manager frameworks list \
   --organization=3589215982 \
   --location=global

如要瞭解選用旗標,請參閱「gcloud compliance-manager frameworks list」。

建立架構

確定哪些雲端控管機制適用於組織、特定資料夾或專案中的資源後,即可建立架構。您可以建立自訂架構,或複製現有架構並加以修改。複製架構時,系統會納入所有內建雲端控管機制的最新版本。

控制台

  1. 前往 Google Cloud 控制台的「Compliance」(法規遵循) 頁面。

    前往「法規遵循」頁面

  2. 選取您的機構或專案。

  3. 在「設定」分頁中,按一下「建立自訂框架」。

  4. 完成下列其中一項:

    • 如要使用現有架構,請完成下列步驟:

      1. 選取「依據現有框架開始建立」。

      2. 選取要複製的架構。

      3. 按一下「新增」。

    • 如要建立自訂架構,請選取「Start new」(開始建立)。

  5. 輸入框架的名稱、專屬 ID 和說明。按一下「Continue」(繼續)。

    如果您複製現有架構,系統會顯示現有架構中的雲端控管機制清單。

  6. 如要新增所需的雲端控管機制,請完成下列步驟:

    • 如要新增現有的雲端控管機制,請按一下「新增雲端控管機制」。選取所需的所有雲端控管機制,然後按一下「Add」(新增)。

      新增控管機制時,請確認控管機制類型 (偵測、預防或稽核)。請注意,預防和稽核控制項僅適用於 Premium 和 Enterprise 級別。請勿在用於監控環境和偵測違規事項的架構中,加入僅限稽核的控制項。您無法部署含有僅限稽核控管機制的架構。

    • (僅限 Premium 和 Enterprise 級別) 如要建立自訂雲端控管機制,請按一下「Create custom cloud control」(建立自訂雲端控管機制)。如需操作說明,請參閱「建立自訂雲端控管機制」。

  7. 按一下「繼續」。

  8. 新增雲端控管機制所需的任何其他參數。

    舉例來說,如要啟用 Data Security Posture Management (DSPM) 雲端控管機制,例如「僅限獲准使用者存取機密資料」雲端控管機制,請指定主體必須使用的位置。如要進一步瞭解 Data Security Posture Management 控制項,請參閱「進階資料治理和安全性雲端控制項」。

  9. 點選「建立」。

CLI

如要建立自訂架構,請執行 gcloud compliance-manager frameworks create 指令:

gcloud compliance-manager frameworks create FRAMEWORK \
   --location=LOCATION \
   --organization=ORGANIZATION \
   --display-name=DISPLAY_NAME \
   [--description=DESCRIPTION] \
   [--category=[CATEGORY,...] \
   [--cloud-control-details=[majorRevisionId=MAJOR_REVISION_ID],[name=NAME],[parameters=PARAMETERS]]

替換下列值:

  • FRAMEWORK:架構的專屬英數字元 ID

  • ORGANIZATION:組織 ID

  • LOCATION:儲存架構的區域

  • DISPLAY_NAME:人類可讀的架構名稱

  • DESCRIPTION:選用,說明架構用途

  • [CATEGORY,...]:選用參數,用於定義架構所屬的類別。自訂架構的建議值為 custom-framework。

  • --cloud-control-details=`[majorRevisionId=MAJOR_REVISION_ID],[name=NAME],[parameters=PARAMETERS]'

    :要納入架構的雲端控管機制選用清單,格式如下:

    • MAJOR_REVISION_ID:選用旗標,指定要查看的雲端控制項版本。如未加入旗標,則會使用最新版本。

    • NAME:雲端控制項的名稱,格式為 organizations/ORGANIZATION_ID/locations/LOCATION/cloudControls/NAME。NAME 是雲端控管機制的專屬 ID。您可以使用 gcloud compliance-manager cloud-controls list 指令找到雲端控制項 ID。

    • PARAMETERS:特定雲端控管機制所需的選用參數。舉例來說,如要啟用 Data Security Posture Management 雲端控管機制,例如「限制僅允許使用者存取機密資料」雲端控管機制,請指定主體必須使用的位置。

    或者,您也可以指定包含所有雲端控制項清單的 JSON 或 YAML 檔案。例如:--cloud-control-details=path_to_file.(yaml|json)。展開下列部分,即可查看 JSON 和 YAML 檔案範例。

    JSON 檔案範例

      [
        {
          "name": "organizations/3589215982/locations/global/cloudControls/restrict-bucket-region",
          "majorRevisionId": 1,
          "parameters": [
            {
              "name": "location",
              "parameterValue": {
                "stringValue": "us-west"
              }
            }
          ]
        },
        {
          "name": "organizations/3589215982/locations/global/cloudControls/enable-binary-authorization",
          "majorRevisionId": 2
        }
      ]
          

    YAML 檔案範例

      - name: organizations/3589215982/locations/global/cloudControls/restrict-bucket-region
        majorRevisionId: 1
        parameters:
        - name: location
          parameterValue:
            stringValue: us-west
      - name: organizations/3589215982/locations/global/cloudControls/enable-binary-authorization
        majorRevisionId: 2
          

    如果在建立架構時未指定雲端控管機制,可以稍後透過控制台新增。

例如,如要建立名為 my-custom-framework 的架構,請執行下列指令:

gcloud compliance-manager frameworks create \
   my-custom-framework \
   --organization=3589215982 \
   --location=global \
   --description="This framework is my custom framework" \
   --display-name="My framework name" \
   --cloud-control-details='[{"name":"organizations/3589215982/locations/global/cloudControls/restrict-bucket-region","majorRevisionId":1,"parameters":[{"name":"location","parameterValue":{"stringValue":"us-west"}}]},{"name":"organizations/3589215982/locations/global/cloudControls/enable-binary-authorization","majorRevisionId":2}]'

詳情請參閱「gcloud compliance-manager frameworks create」。

Terraform

以下範例說明如何使用 Terraform 建立架構。

resource "google_cloud_security_compliance_framework" "example" {
  parent       = "organizations/123456789"
  location     = "global"
  framework_id = "example-framework"

  display_name = "Terraform Framework Name"
  description  = "An Terraform description for the framework"

  cloud_control_details {
		name              = "organizations/123456789/locations/global/cloudControls/builtin-assess-resource-availability"
		major_revision_id = "2"

    parameters {
      name = "location"
      parameter_value {
        string_value = "us-central1"
      }
    }
  }

    cloud_control_details {
		name              = "organizations/123456789/locations/global/cloudControls/builtin-cmek-key-in-use-for-bigquery-table"
		major_revision_id = "1"

    parameters {
      name = "location"
      parameter_value {
        string_list_value {
          values = ["us-central1", "us-west1"]
        }
      }
    }
  }

  cloud_control_details {
		name              = "organizations/123456789/locations/global/cloudControls/builtin-enable-automatic-backups-cloud-sql"
		major_revision_id = "3"

    parameters {
      name = "location"
      parameter_value {
        bool_value = true
      }
    }
  }

  cloud_control_details {
		name              = "organizations/123456789/locations/global/cloudControls/builtin-require-cmek-on-bigquery-datasets"
		major_revision_id = "2"

    parameters {
      name = "location"
      parameter_value {
        number_value = 1
      }
    }
  }


}

部署架構

將架構部署至組織、資料夾或專案,即可使用架構的雲端控管機制,控管及監控這些資源。您可以將多個架構部署至各個組織、資料夾或專案。如果部署的架構僅包含進階資料安全性雲端控管機制,則可將架構部署至設定為應用程式管理的資料夾中的 App Hub 應用程式。

資料夾和專案會透過 Google Cloud 資源階層繼承架構。因此,如果您在組織層級和專案層級部署架構,這兩個架構中的所有雲端控管機制都會套用至專案中的資源。如果雲端控管定義有任何差異,專案中的資源會使用較低層級的雲端控管。舉例來說,如果雲端控制規則在組織層級設為「允許」,在專案層級設為「拒絕」,則專案中的資源會套用「拒絕」設定。

最佳做法是在組織層級部署架構,其中包含可套用至整個業務的雲端控管機制。然後再視需要,將更嚴格的架構部署至資料夾和專案。

控制台

  1. 前往 Google Cloud 控制台的「Compliance」(法規遵循) 頁面。

    前往「法規遵循」頁面

  2. 選取您的機構或專案。

  3. 在「Configure」(設定) 分頁中,針對要部署的架構,依序點選 「More Actions」(更多動作)>「Apply to resources」(套用至資源)。

  4. 選擇「監控」或「監控並預防」,即可只監控偏差。

  5. 選取要部署架構的資源。您可以選擇現有的組織、資料夾或專案。如果只要使用 DSPM,可以選取應用程式,部署僅包含 DSPM 進階雲端控管機制的架構。您也可以建立新的資料夾或專案,並將架構部署至該資料夾或專案。

  6. 完成下列其中一項:

    • 如果選取「Monitor」,請完成下列步驟:

      1. 驗證資訊。
      2. 如果您選取了已設定應用程式管理的資料夾,且架構僅包含進階 DSPM 雲端控管機制,請選取要監控的應用程式。
      3. 按一下「監控」。
    • 如果選取「監控及防範」,請完成下列步驟:

      1. 點選「下一步」。查看雲端控管機制和模式。
      2. 按一下「繼續」。
      3. 如果系統顯示額外資訊,請確認某些雲端控管機制所需的額外資訊。
      4. 點選「下一步」。
      5. 檢查所選項目,然後按一下「強制執行」。

CLI

如要在組織中部署架構,請執行 gcloud compliance-manager framework-deployments create 指令。建議您採取下列最佳做法:

  • 為 CloudControl 中繼資料建立獨立的 YAML 或 JSON 檔案。

  • 使用適當的目標旗標,指出您要部署至現有的組織、資料夾或專案,還是要在部署架構的同時建立新的專案或資料夾。

  • 請盡可能只使用資源 ID,而非完整資源名稱。

gcloud compliance-manager framework-deployments create \
   (FRAMEWORK_DEPLOYMENT : \
   --location=LOCATION \
   --organization=ORGANIZATION) \
   --cloud-control-metadata=[cloudControlDetails=CLOUD_CONTROL_DETAILS],[enforcementMode=ENFORCEMENT_MODE] \
   (--framework=FRAMEWORK : \
   --framework-major-revision-id=FRAMEWORK_MAJOR_REVISION_ID) \
   (--target-resource-config-existing=TARGET_RESOURCE_CONFIG_EXISTING     | \
   --target-resource-creation-config-folder-display-name=TARGET_RESOURCE_CREATION_CONFIG_FOLDER_DISPLAY_NAME \
   --target-resource-creation-config-folder-parent=TARGET_RESOURCE_CREATION_CONFIG_FOLDER_PARENT     | \
   --target-resource-creation-config-project-billing-account-id=TARGET_RESOURCE_CREATION_CONFIG_PROJECT_BILLING_ACCOUNT_ID \
   --target-resource-creation-config-project-display-name=TARGET_RESOURCE_CREATION_CONFIG_PROJECT_DISPLAY_NAME \
   --target-resource-creation-config-project-parent=TARGET_RESOURCE_CREATION_CONFIG_PROJECT_PARENT) \
   [--description=DESCRIPTION]

替換下列值:

  • FRAMEWORK_DEPLOYMENT:架構部署作業的 ID

  • ORGANIZATION:組織 ID

  • LOCATION:儲存架構部署作業的區域

  • cloud-control-metadata=[cloudControlDetails=CLOUD_CONTROL_DETAILS],[enforcementMode=ENFORCEMENT_MODE]:架構中的雲端控管機制清單,包含名稱、參數、修訂版本 ID 和強制執行模式,格式如下:

    • CLOUD_CONTROL_DETAILS:包含雲端控管機制名稱、參數和修訂版本 ID 清單的物件。格式如下:

      • name=NAME:雲端控管機制的完整資源名稱,格式為 organizations/ORGANIZATION_ID/locations/LOCATION/cloudControls/CLOUD_CONTROL_NAME

      • majorRevisionId=MAJOR_REVISION_ID:雲端控制項的主要版本

      • parameters=PARAMETERS:特定雲端控管機制所需的選用參數。舉例來說,如要啟用 Data Security Posture Management 雲端控管機制,例如「限制只有獲准使用者能存取機密資料」雲端控管機制,請指定主體必須使用的位置。

    • ENFORCEMENT_MODE:控制項是否為 AUDIT、DETECTIVE 或 PREVENTIVE 控制項

      或者,您也可以指定 JSON 或 YAML 檔案,其中包含雲端控管機制詳細資料和強制執行模式。例如:--cloud-control-metadata=path_to_file.(yaml|json)。展開下列各節,即可查看 JSON 和 YAML 檔案範例。

      JSON 檔案範例

        [
          {
            "cloudControlDetails": {
              "name": "organizations/3589215982/locations/global/cloudControls/restrict-bucket-region",
              "majorRevisionId": 1,
              "parameters": [
                {
                  "name": "location",
                  "parameterValue": {
                    "stringValue": "us-west"
                  }
                }
              ]
            },
            "enforcementMode": "DETECTIVE"
          },
          {
            "cloudControlDetails": {
              "name": "organizations/3589215982/locations/global/cloudControls/enable-binary-authorization",
              "majorRevisionId": 2
            },
            "enforcementMode": "DETECTIVE"
          }
        ]
            

      YAML 檔案範例

        - cloudControlDetails:
            name: organizations/3589215982/locations/global/cloudControls/restrict-bucket-region
            majorRevisionId: 1
            parameters:
            - name: location
              parameterValue:
                stringValue: us-west
          enforcementMode: DETECTIVE
        - cloudControlDetails:
            name: organizations/3589215982/locations/global/cloudControls/enable-binary-authorization
            majorRevisionId: 2
          enforcementMode: DETECTIVE
            
    • FRAMEWORK:要部署的現有架構名稱,格式為 organizations/ORGANIZATION_ID/locations/LOCATION/frameworks/FRAMEWORK_NAME

    • FRAMEWORK_MAJOR_REVISION_ID:要部署的架構版本號碼

    • TARGET_RESOURCE_CONFIG_EXISTING :要部署新架構的現有組織、資料夾或專案名稱,格式如下:

      • organizations/ORGANIZATION_ID
      • folders/FOLDER_ID
      • projects/PROJECT_ID
    • TARGET_RESOURCE_CREATION_CONFIG_FOLDER_DISPLAY_NAME:要建立並部署架構的資料夾名稱

    • TARGET_RESOURCE_CREATION_CONFIG_FOLDER_PARENT:要在其中建立新資料夾的現有組織或資料夾名稱。支援的格式為 organizations/ORGANIZATION_ID 和 folders/FOLDER_ID。

    • TARGET_RESOURCE_CREATION_CONFIG_PROJECT_BILLING_ACCOUNT_ID:如果您要建立新專案並部署架構,請指派帳單帳戶 ID 給新專案

    • TARGET_RESOURCE_CREATION_CONFIG_PROJECT_DISPLAY_NAME:要建立並部署架構的專案名稱

    • TARGET_RESOURCE_CREATION_CONFIG_PROJECT_PARENT: 要在其中建立新專案的現有組織或資料夾名稱。 支援的格式為 organizations/ORGANIZATION_ID 和 folders/FOLDER_ID。

    • DESCRIPTION:架構部署作業的選用說明

舉例來說,如要將名為 organizations/3589215982/locations/global/frameworks/builtin-aipp 的架構部署至資料夾 ID 為 example-folder 的現有資料夾,請執行下列指令:

gcloud compliance-manager framework-deployments create \
   example-framework-deployment \
   --organization=3589215982 \
   --location=global \
   --cloud-control-metadata='[{"cloudControlDetails": {"name": "organizations/3589215982/locations/global/cloudControls/restrict-bucket-region", "majorRevisionId": "1", "parameters": []}, "enforcementMode": "DETECTIVE"}, {"cloudControlDetails": {"name": "organizations/3589215982/locations/global/cloudControls/enable-binary-authorization", "majorRevisionId": 2}, "enforcementMode": "DETECTIVE"}]' \
   --framework="organizations/3589215982/locations/global/frameworks/builtin-aipp" \
   --framework-major-revision-id=6 \
   --target-resource-config-existing="folders/example-folder" \
   --description="Deployment for AI Platform into example-folder"

舉例來說,如要部署名為 organizations/3589215982/locations/global/frameworks/builtin-aipp 的架構,並在資料夾 ID 為 example-folder 的現有資料夾中建立名為 example-new-project 的新專案,請執行下列指令:

gcloud compliance-manager framework-deployments create \
  example-framework-deployment \
   --organization=3589215982 \
   --location=global \
   --cloud-control-metadata=deploy-controls.yaml \
   --framework="organizations/3589215982/locations/global/frameworks/builtin-aipp" \
   --framework-major-revision-id=6 \
   --target-resource-creation-config-project-billing-account-id=012345-567890-ABCDEF \
   --target-resource-creation-config-project-display-name=example-new-project \
   --target-resource-creation-config-project-parent=folders/example-folder \
   --description="Deployment for AI Platform into a new example-new-project in example-folder"

詳情請參閱「gcloud compliance-manager framework-deployments create」。

Terraform

以下範例說明如何使用 Terraform 部署架構。

resource "google_cloud_security_compliance_cloud_control" "example" {
  parent           = "organizations/123456789"
  location         = "global"
  cloud_control_id = "example-cloudcontrol"

  display_name              = "TF test CloudControl Name"
  description               = "A test cloud control for security compliance"
  categories                = ["CC_CATEGORY_INFRASTRUCTURE"]
  severity                  = "HIGH"
  finding_category          = "SECURITY_POLICY"
  remediation_steps         = "Review and update the security configuration according to best practices."
  supported_cloud_providers = ["GCP"]

  rules {
    description       = "Ensure compute instances have secure boot enabled"
    rule_action_types = ["RULE_ACTION_TYPE_DETECTIVE"]

    cel_expression {
      expression = "resource.data.shieldedInstanceConfig.enableSecureBoot == true"
      resource_types_values {
        values = ["compute.googleapis.com/Instance"]
      }
    }
  }

  parameter_spec {
    name        = "enabled"
    value_type  = "BOOLEAN"
    is_required = true
  }

  parameter_spec {
    name        = "regions"
    value_type  = "STRINGLIST"
    is_required = true
  }

  parameter_spec {
    name        = "location"
    value_type  = "STRING"
    is_required = true
  }

  parameter_spec {
    name        = "oneof-parameter"
    value_type  = "ONEOF"
    is_required = true

    sub_parameters {
      name        = "test-oneof"
      value_type  = "STRING"
      is_required = true
    }

    sub_parameters {
      name        = "updated-test-oneof"
      value_type  = "STRING"
      is_required = true
    }
  }

  parameter_spec {
    name        = "bool-parameter"
    value_type  = "ONEOF"
    is_required = true

    sub_parameters {
      name        = "bool-oneof"
      value_type  = "BOOLEAN"
      is_required = true
    }

    sub_parameters {
      name        = "updated-bool-oneof"
      value_type  = "BOOLEAN"
      is_required = true
    }
  }

  parameter_spec {
    name        = "number-parameter"
    value_type  = "ONEOF"
    is_required = true

    sub_parameters {
      name        = "number-oneof"
      value_type  = "NUMBER"
      is_required = true
    }

    sub_parameters {
      name        = "updated-number-oneof"
      value_type  = "NUMBER"
      is_required = true
    }
  }

  parameter_spec {
    name        = "string-list-parameter"
    value_type  = "ONEOF"
    is_required = true

    sub_parameters {
      name        = "string-list-oneof"
      value_type  = "STRINGLIST"
      is_required = true
    }

    sub_parameters {
      name        = "updated-string-list-oneof"
      value_type  = "STRINGLIST"
      is_required = true
    }
  }
}

resource "google_cloud_security_compliance_framework" "example" {
  parent       = "organizations/123456789"
  location     = "global"
  framework_id = "example-framework"

  display_name = "Terraform Framework Name"
  description  = "An Terraform description for the framework"

  cloud_control_details {
    name              = google_cloud_security_compliance_cloud_control.example.name
    major_revision_id = "1"

    parameters {
      name = "enabled"
      parameter_value {
        bool_value = true
      }
    }
  }
}

resource "google_cloud_security_compliance_framework_deployment" "example" {
  parent                  = "organizations/123456789"
  location                = "global"
  framework_deployment_id = "example-deployment"
  description             = "A framework deployment for cloud security compliance"

  framework {
    framework         = google_cloud_security_compliance_framework.example.name
    major_revision_id = "1"
  }

  target_resource_config {
    existing_target_resource = "organizations/123456789"
  }

  cloud_control_metadata {
    enforcement_mode = "DETECTIVE"

    cloud_control_details {
      name              = google_cloud_security_compliance_cloud_control.example.name
      major_revision_id = "1"

      parameters {
        name = "enabled"
        parameter_value {
          bool_value = true
        }
      }

      parameters {
        name = "regions"
        parameter_value {
          string_list_value {
            values = ["us-central1", "us-west1", "us-east1"]
          }
        }
      }

      parameters {
        name = "location"
        parameter_value {
          string_value = "us-central1"
        }
      }

      parameters {
        name = "oneof-parameter"
        parameter_value {
          oneof_value {
            name = "test-oneof"
            parameter_value {
              string_value = "test-value"
            }
          }
        }
      }

      parameters {
        name = "bool-parameter"
        parameter_value {
          oneof_value {
            name = "bool-oneof"
            parameter_value {
              bool_value = true
            }
          }
        }
      }

      parameters {
        name = "number-parameter"
        parameter_value {
          oneof_value {
            name = "number-oneof"
            parameter_value {
              number_value = 123.45
            }
          }
        }
      }

      parameters {
        name = "string-list-parameter"
        parameter_value {
          oneof_value {
            name = "string-list-oneof"
            parameter_value {
              string_list_value {
                values = ["value1", "value2"]
              }
            }
          }
        }
      }
    }
  }
}

部署架構後,您可以監控環境,瞭解是否偏離定義的雲端控制項。Security Command Center 會將漂移例項回報為發現項目,供您查看、篩選及解決。部署架構後,與雲端控制項相關的發現項目可能需要約六小時才會顯示。

編輯自訂架構

建立架構後,您可以變更名稱和說明、新增或移除雲端控管機制,以及更新任何參數。您只能編輯自己建立的架構,無法編輯內建架構。此外,您只能編輯未部署的架構。

  1. 前往 Google Cloud 控制台的「Compliance」(法規遵循) 頁面。

    前往「法規遵循」頁面

  2. 選取您的機構或專案。

  3. 在「Configure」(設定) 分頁中,按一下要編輯的架構。

  4. 在「Framework details」(架構詳細資料) 頁面中,確認架構未指派給資源。如有需要,請移除指派項目。

  5. 依序點選「動作」 > 「編輯」。

  6. 在「Update framework details」(更新架構詳細資料) 頁面中,視需要變更名稱和說明。按一下「Continue」(繼續)。

  7. 如要變更架構中包含的雲端控管機制,請完成下列步驟:

    • 如要新增現有的雲端控管機制,請按一下「新增雲端控管機制」。選取所有需要的雲端控管機制,然後按一下「Add」(新增)。

    • 如要建立自訂雲端控管機制,請按一下「Create custom cloud control」(建立自訂雲端控管機制)。如需操作說明,請參閱「建立自訂雲端控管機制」。

    • 如要移除雲端控管機制,請選取該機制,然後按一下「Remove」(移除)。

  8. 按一下「繼續」。

  9. 新增雲端控管機制所需的任何其他參數。

  10. 按一下 [儲存]。

從資源中移除已部署的架構

您可以從指派架構的組織、資料夾或專案中移除架構。移除架構後,Compliance Manager 就不會再為資源階層中的該節點產生發現項目。

移除架構後,大部分相關發現項目的狀態會在七天後變更為 Inactive。如果架構包含「Restrict Flow of Sensitive Data Across Geographic Jurisdictions」(限制機密資料跨地理管轄區流動) 雲端控管機制,發現項目會在 90 天後變更為 Inactive。如果發現項目與「限制機密資料在不同地理管轄區之間的流動」和「限制僅允許使用者存取機密資料」雲端控管機制有關,系統不會自動變更其狀態。

控制台

  1. 前往 Google Cloud 控制台的「Compliance」(法規遵循) 頁面。

    前往「法規遵循」頁面

  2. 選取您的機構或專案。

  3. 在「Configure」(設定) 分頁中,按一下要移除的架構。

  4. 在「Framework details」(架構詳細資料) 頁面中,依序點選「Actions」(動作) >「Manage resource assignments」(管理資源指派作業)。

  5. 在「Assigned resources」(指派的資源) 表格中,找出要移除的資源,然後按一下 「Delete」(刪除)。

  6. 詳閱確認訊息,然後按一下「取消指派」。

  7. 選用:將相關聯發現項目的狀態變更為「Inactive」。如需操作說明,請參閱「變更發現項目的狀態」。

CLI

如要移除組織中的特定架構部署作業,請執行 gcloud compliance-manager framework-deployments delete 指令:

gcloud compliance-manager framework-deployments delete \
   FRAMEWORK_DEPLOYMENT \
   --location=LOCATION \
   --organization=ORGANIZATION \
   --etag=ETAG_ID

替換下列值:

  • FRAMEWORK_DEPLOYMENT:架構部署作業的 ID

  • ORGANIZATION:組織 ID

  • LOCATION:儲存架構部署作業的區域

  • ETAG_ID:架構部署作業目前版本的 ID,可確保您刪除的是正確的架構部署作業版本。如果 ID 與目前版本不符,要求就會失敗。如果省略這個值,Compliance Manager 會無條件刪除架構部署作業。

舉例來說,如要從組織 3589215982 移除 example-deployment 並儲存在全域位置,請執行下列指令:

gcloud compliance-manager framework-deployments delete \
   example-deployment \
   --organization=3589215982 \
   --location=global \
   --etag=MTc3NDU4MjM4OTY0MzU5MjQ5OTI=

如要瞭解選用旗標,請參閱「gcloud compliance-manager framework-deployments delete」。

將內建架構更新至較新版本

Google 會在服務部署新功能或出現新的最佳做法時,定期更新內建架構。

您可以在「Configure」(設定) 分頁的架構資訊主頁,或架構詳細資料頁面中,查看內建架構的版本。

發生下列更新時,Google 會在控制台中通知您:

如要更新已部署的架構,請完成下列步驟:

  1. 前往 Google Cloud 控制台的「Compliance」(法規遵循) 頁面。

    前往「法規遵循」頁面

  2. 選取您的機構或專案。

  3. 在「設定」分頁中,按一下要更新的架構。

  4. 在「Framework details」(架構詳細資料) 頁面的「Assigned resources」(指派的資源) 表格中,查看標示為「Update available」(有可用的更新) 的指派作業「Update status」(更新狀態)。

  5. 建立更新後的雲端控管措施清單,包括要加入或從更新後的架構中移除的 ID、參數和修訂版本 ID。

  6. 如要套用變更,請完成下列步驟:

    控制台

    您可以使用 Google Cloud 控制台更新架構,方法是移除架構,然後重新部署。使用 gcloud CLI 或 Cloud Security Compliance REST API,即可就地更新架構,不會影響發現項目資訊主頁,也無須移除及重新部署架構。

    1. 移除資源指派。

    2. 請重新部署架構至資源,讓法規遵循管理員可以繼續評估資源並建立發現項目。

    CLI

    如要就地更新架構部署作業,請執行 gcloud compliance-manager framework-deployments update 指令。如要指定適用於架構的雲端控管機制和強制執行模式,請使用下列其中一個選項:

    • 使用 --cloud-control-metadata 旗標,指定內嵌的雲端控管機制和強制執行模式。如果使用這個旗標,則必須指定適用於架構的所有雲端控管機制和強制執行模式。
    • 在 JSON 或 YAML 檔案中指定雲端控管機制和強制執行模式。如果使用檔案,則必須指定適用於架構的所有雲端控管機制和強制執行模式。
    • 使用 --add-cloud-control-metadata 和 --remove-cloud-control-metadata 旗標,新增或移除個別雲端控制項。

    執行下列指令:

    gcloud compliance-manager framework-deployments update \
       FRAMEWORK_DEPLOYMENT \
       --location=LOCATION \
       (--organization=ORGANIZATION | --project=PROJECT_ID) \
       [--framework-major-revision-id=FRAMEWORK_MAJOR_REVISION_ID] \
       [--cloud-control-metadata=[cloudControlDetails=CLOUD_CONTROL_DETAILS],[enforcementMode=ENFORCEMENT_MODE] \
          | [--add-cloud-control-metadata=[cloudControlDetails=CLOUD_CONTROL_DETAILS],[enforcementMode=ENFORCEMENT_MODE]] \
            [--remove-cloud-control-metadata=[cloudControlDetails=CLOUD_CONTROL_DETAILS],[enforcementMode=ENFORCEMENT_MODE]]] \
       [--etag=ETAG_ID] \
       [--async]
    

    更改下列內容:

    • FRAMEWORK_DEPLOYMENT:架構部署作業的 ID。

    • LOCATION:儲存架構部署作業的區域。

    • ORGANIZATION 或 PROJECT_ID:組織 ID 或專案 ID。

    • FRAMEWORK_MAJOR_REVISION_ID:要更新至哪個架構的主要修訂版本 ID。如果省略這個旗標,Compliance Manager 會將部署作業更新至架構的最新主要修訂版本。您無法降級至較早的主要修訂版本 ID。

    • 可以是下列其中一項:

      • --cloud-control-metadata=[cloudControlDetails=CLOUD_CONTROL_DETAILS],[enforcementMode=ENFORCEMENT_MODE]:架構中的雲端控制項清單,包含名稱、參數、修訂版本 ID 和強制執行模式,格式如下:

      • CLOUD_CONTROL_DETAILS:包含雲端控管機制名稱、參數和修訂版本 ID 清單的物件。格式如下:

        • name=NAME:雲端控管機制的完整資源名稱,格式為 organizations/ORGANIZATION_ID/locations/LOCATION/cloudControls/CLOUD_CONTROL_NAME 或 projects/PROJECT_ID/locations/LOCATION/cloudControls/CLOUD_CONTROL_NAME。

        • majorRevisionId=MAJOR_REVISION_ID:雲端控制項的主要版本。

        • parameters=PARAMETERS:特定雲端控管機制所需的選用參數。

      • ENFORCEMENT_MODE:控制項是否為 AUDIT、DETECTIVE 或 PREVENTIVE 控制項。

      • --cloud-control-metadata=PATH_TO_FILE:JSON 或 YAML 檔案的路徑,其中包含雲端控管機制詳細資料和強制執行模式。展開下列各節,即可查看 JSON 和 YAML 檔案範例。

        JSON 檔案範例

          [
            {
              "cloudControlDetails": {
                "name": "organizations/3589215982/locations/global/cloudControls/restrict-bucket-region",
                "majorRevisionId": 1,
                "parameters": [
                  {
                    "name": "location",
                    "parameterValue": {
                      "stringValue": "us-west"
                    }
                  }
                ]
              },
              "enforcementMode": "DETECTIVE"
            },
            {
              "cloudControlDetails": {
                "name": "organizations/3589215982/locations/global/cloudControls/enable-binary-authorization",
                "majorRevisionId": 2
              },
              "enforcementMode": "DETECTIVE"
            }
          ]
              

        YAML 檔案範例

          - cloudControlDetails:
              name: organizations/3589215982/locations/global/cloudControls/restrict-bucket-region
              majorRevisionId: 1
              parameters:
              - name: location
                parameterValue:
                  stringValue: us-west
            enforcementMode: DETECTIVE
          - cloudControlDetails:
              name: organizations/3589215982/locations/global/cloudControls/enable-binary-authorization
              majorRevisionId: 2
            enforcementMode: DETECTIVE
              
      • --add-cloud-control-metadata 或 --remove-cloud-control-metadata:要從架構部署作業新增或移除的雲端控管機制。您可以在同一個指令中使用這兩個旗標。您可以使用下列其中一個選項,指定要新增或移除多個雲端控制項:

        • 為每個控制項重複這個旗標。
        • 在單一旗標中,將控制項納入 JSON 清單 [ {...}, {...} ]。
        • 提供 JSON 或 YAML 檔案的路徑,其中包含控制項清單。使用與 --cloud-control-metadata 旗標相同的結構定義。例如:--add-cloud-control-metadata=add-controls.yaml --remove-cloud-control-metadata=remove-controls.yaml。
    • ETAG_ID:目前架構部署作業版本的 ID,可確保您更新的是預期的架構部署作業版本。如果 ID 與目前版本不符,要求就會失敗。如果省略這個值,Compliance Manager 會無條件更新架構部署作業。

    您可以選擇加入 --async 旗標,立即傳回結果,不必等待長時間執行的更新作業完成。

    舉例來說,如要更新部署至組織 3589215982 並儲存在 global 位置的 example-deployment,請執行下列指令:

    gcloud compliance-manager framework-deployments update \
       example-deployment \
       --organization=3589215982 \
       --location=global \
       --framework-major-revision-id=7 \
       --cloud-control-metadata=cloud-control-metadata.yaml \
       --etag=MTc3NDU4MjM4OTY0MzU5MjQ5OTI=
    

    如要瞭解選用旗標,請參閱「gcloud compliance-manager framework-deployments update」。

    REST

    如要就地更新架構部署作業,請呼叫 frameworkDeployments.patch 方法 (適用於組織或專案)。指定目標主要修訂版本 ID,以及適用於 cloudControlMetadata 中架構的所有雲端控管機制和強制執行模式。

    使用任何要求資料之前,請先修改下列項目的值:

    • RESOURCE_TYPE:架構部署作業的上層資源容器類型:organizations 或 projects。
    • RESOURCE_ID:組織 ID 或專案 ID。例如:3589215982。
    • LOCATION:架構部署作業的位置。支援的值:global。
    • FRAMEWORK_DEPLOYMENT:要更新的架構部署作業 ID。例如:example-deployment。
    • UPDATE_MASK:選用,以半形逗號分隔的清單,列出要覆寫的欄位 (相對於 FrameworkDeployment 資源)。例如:framework.majorRevisionId,cloudControlMetadata。如果省略,系統會覆寫所有欄位。
    • FRAMEWORK_NAME:架構的資源名稱,格式為 organizations/ORGANIZATION_ID/locations/LOCATION/frameworks/FRAMEWORK_ID 或 projects/PROJECT_ID/locations/LOCATION/frameworks/FRAMEWORK_ID。例如:organizations/3589215982/locations/global/frameworks/builtin-aipp。
    • FRAMEWORK_MAJOR_REVISION_ID:要更新至的架構主要修訂版本 ID。如果省略,法規遵循管理員會將部署作業更新至架構的最新主要修訂版本。
    • CLOUD_CONTROL_NAME:架構中雲端控管機制的完整資源名稱,格式為 organizations/ORGANIZATION_ID/locations/LOCATION/cloudControls/CLOUD_CONTROL_ID。
    • MAJOR_REVISION_ID:雲端控管機制的主要修訂版本 ID。
    • ENFORCEMENT_MODE:雲端控管機制是 AUDIT、DETECTIVE 還是 PREVENTIVE 控管機制。
    • ETAG_ID:選用 ID,用於識別目前版本的架構部署作業,避免並行更新互相覆寫。例如:MTc3NDU4MjM4OTY0MzU5MjQ5OTI=。

    HTTP 方法和網址:

    PATCH https://cloudsecuritycompliance.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/locations/LOCATION/frameworkDeployments/FRAMEWORK_DEPLOYMENT?updateMask=UPDATE_MASK

    JSON 要求內文:

    {
      "framework": {
        "framework": "FRAMEWORK_NAME",
        "majorRevisionId": "FRAMEWORK_MAJOR_REVISION_ID"
      },
      "cloudControlMetadata": [
        {
          "cloudControlDetails": {
            "name": "CLOUD_CONTROL_NAME",
            "majorRevisionId": "MAJOR_REVISION_ID",
            "parameters": []
          },
          "enforcementMode": "ENFORCEMENT_MODE"
        }
      ],
      "etag": "ETAG_ID"
    }
    

    如要傳送要求,請選擇以下其中一個選項:

    curl

    將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://cloudsecuritycompliance.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/locations/LOCATION/frameworkDeployments/FRAMEWORK_DEPLOYMENT?updateMask=UPDATE_MASK"

    PowerShell

    將要求主體儲存在名為 request.json 的檔案中,然後執行下列指令:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method PATCH `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://cloudsecuritycompliance.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/locations/LOCATION/frameworkDeployments/FRAMEWORK_DEPLOYMENT?updateMask=UPDATE_MASK" | Select-Object -Expand Content

    您應該會收到如下的 JSON 回覆:

    {
      "name": "organizations/3589215982/locations/global/operations/operation-1726842525305-6228ddb4dca96-78a6db59-f9dd9a24",
      "done": false
    }
    

    回應包含下列資訊:

    • name:長時間執行的更新作業專屬字串 ID,可用來追蹤更新進度。
    • done:布林值標記,在更新作業開始時設為 false,並在更新完成時設為 true。

刪除自訂架構

如果不再需要某個架構,可以將其刪除。您只能刪除自己建立的架構,無法刪除內建架構。

控制台

  1. 前往 Google Cloud 控制台的「Compliance」(法規遵循) 頁面。

    前往「法規遵循」頁面

  2. 選取您的機構或專案。

  3. 在「Configure」(設定) 分頁中,按一下要取消指派資源的架構。

  4. 在「Framework details」(架構詳細資料) 頁面中,確認架構未指派給資源。如有需要,請移除指派項目。

  5. 依序點選「動作」 > 「刪除」。

  6. 在「刪除」視窗中,查看訊息。輸入 Delete,然後按一下「Confirm」(確認)。

CLI

如要刪除組織中的特定架構,請執行 gcloud compliance-manager frameworks delete 指令:

gcloud compliance-manager frameworks delete \
   FRAMEWORK \
   --location=LOCATION \
   --organization=ORGANIZATION

替換下列值:

  • FRAMEWORK:架構名稱

  • ORGANIZATION:組織 ID

  • LOCATION:儲存架構的區域

舉例來說,如要從組織 3589215982 移除 example-framework 並儲存在全域位置,請執行下列指令:

gcloud compliance-manager frameworks delete \
   example-framework \
   --organization=3589215982 \
   --location=global

如要瞭解選用旗標,請參閱「gcloud compliance-manager frameworks delete」。

後續步驟