Gestisci framework

I framework di Compliance Manager sono costituiti da controlli cloud che ti aiutano a soddisfare i requisiti normativi e di sicurezza di un'organizzazione o di un progetto nei tuoi ambienti cloud. L'applicazione di un framework è una procedura in due passaggi. Innanzitutto, devi identificare i controlli cloud in linea con gli obblighi di sicurezza e conformità della tua azienda. Poi, esegui il deployment di un framework che include questi controlli cloud nell'organizzazione, nella cartella o nel progetto appropriati inGoogle Cloud. Questa pagina ti aiuta a completare i seguenti passaggi:

  1. Valuta quale framework integrato si allinea meglio ai tuoi requisiti normativi e di sicurezza. Puoi creare un framework personalizzato, ma ti consigliamo di iniziare con un framework integrato.

  2. Determinare quali controlli cloud integrati corrispondono ai requisiti aziendali. (Solo livelli Premium ed Enterprise) Se necessario, puoi creare controlli cloud personalizzati.

  3. Determina se eseguire il deployment del framework nella tua organizzazione Google Cloudo in cartelle e progetti specifici. Puoi eseguire il deployment di un solo framework in ogni organizzazione, cartella o progetto. Compliance Manager supporta le cartelle configurate per la gestione delle applicazioni.

  4. Copia un framework esistente e modificalo in base ai tuoi requisiti. Se necessario, puoi creare un framework personalizzato.

  5. Esegui il deployment del framework nell'organizzazione, nella cartella o nel progetto appropriati.

Prima di iniziare

Completa queste attività prima di completare le restanti attività in questa pagina.

Configurare le autorizzazioni

  • Per ottenere le autorizzazioni necessarie per applicare i framework, chiedi all'amministratore di concederti i seguenti ruoli IAM nella tua organizzazione o nel tuo progetto:

    Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

    I ruoli per il deployment dei framework con le policy dell'organizzazione contengono le autorizzazioni orgpolicy.policies.create, orgpolicy.policies.update e orgpolicy.policies.get richieste.

    Per i deployment a livello di organizzazione, i ruoli per la creazione di cartelle contengono le autorizzazioni resourcemanager.folders.get, resourcemanager.folders.create e resourcemanager.folders.delete richieste.

    Per i deployment a livello di organizzazione, i ruoli per la creazione di progetti contengono le autorizzazioni resourcemanager.projects.get, resourcemanager.projects.create, resourcemanager.projects.delete e resourcemanager.projects.createBillingAssignment richieste.

    I ruoli per l'assegnazione dei framework DSPM alle applicazioni contengono le autorizzazioni apphub.locations.list, apphub.applications.list e apphub.applications.get richieste.

    Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Configura Google Cloud CLI

Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata. Dopo aver eseguito l'accesso, inizializza Google Cloud CLI eseguendo il comando seguente:

gcloud init

Per configurare gcloud CLI in modo che utilizzi la simulazione dell'identità dei service account per l'autenticazione alle API di Google, anziché le tue credenziali utente, esegui questo comando:

gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL

Per saperne di più, consulta Simulazione dell'identità dei service account.

Visualizza i framework

Completa i seguenti passaggi per visualizzare la configurazione dei framework integrati o di altri framework che hai già creato.

Console

  1. Nella console Google Cloud , vai alla pagina Conformità.

    Vai a Conformità

  2. Seleziona la tua organizzazione o il tuo progetto.

  3. Per visualizzare tutti i framework disponibili, fai clic sulla scheda Configura.

    La dashboard mostra i framework disponibili, una breve descrizione, le piattaforme e i livelli supportati e le risorse a cui è stato applicato il framework.

  4. Per visualizzare i dettagli di un framework specifico, fai clic sul nome del framework.

Interfaccia a riga di comando

Puoi visualizzare informazioni su un framework specifico o elencare tutti i framework della tua organizzazione.

Visualizza i dettagli di un framework

Per visualizzare i dettagli di un framework specifico, esegui il comando gcloud compliance-manager frameworks describe:

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

Sostituisci quanto segue:

  • FRAMEWORK: il nome del framework

  • ORGANIZATION: ID organizzazione

  • LOCATION: la regione in cui è archiviato il framework

  • MAJOR_REVISION_ID: un flag facoltativo che specifica quale versione del framework visualizzare. Se non includi il flag, viene restituita l'ultima versione.

Ad esempio, per visualizzare un framework con il nome builtin-security-essentials e il numero di revisione principale 12, esegui questo comando:

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

Per saperne di più, consulta gcloud compliance-manager frameworks describe.

Recupera l'elenco dei framework

Per ottenere l'elenco dei framework della tua organizzazione, esegui il comando gcloud compliance-manager frameworks list:

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

Sostituisci i seguenti valori:

  • ORGANIZATION: ID organizzazione

  • LOCATION: la regione in cui sono archiviati i framework

Ad esempio, per visualizzare tutti i framework all'interno dell'organizzazione 3589215982 archiviati nella località globale, esegui questo comando:

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

Per informazioni sui flag facoltativi, consulta gcloud compliance-manager frameworks list.

Crea un framework

Dopo aver stabilito quali controlli cloud si applicano alle risorse all'interno della tua organizzazione o di una cartella o un progetto specifici, puoi creare un framework. Puoi creare un framework personalizzato o copiare un framework esistente e modificarlo. Quando copi un framework, questo include le ultime release di tutti i controlli cloud integrati.

Console

  1. Nella console Google Cloud , vai alla pagina Conformità.

    Vai a Conformità

  2. Seleziona la tua organizzazione o il tuo progetto.

  3. Nella scheda Configura, fai clic su Crea framework personalizzato.

  4. Completa una delle seguenti operazioni:

    • Per utilizzare un framework esistente, completa i seguenti passaggi:

      1. Seleziona Inizia da un framework esistente.

      2. Seleziona il framework che vuoi copiare.

      3. Fai clic su Aggiungi.

    • Per creare un framework personalizzato, seleziona Inizia nuovo.

  5. Inserisci un nome, un identificatore univoco e una descrizione per il framework. Fai clic su Continua.

    Se stai copiando un framework esistente, viene visualizzato l'elenco dei controlli cloud che facevano parte del framework esistente.

  6. Per aggiungere i controlli cloud necessari, completa i seguenti passaggi:

    • Per aggiungere un controllo cloud esistente, fai clic su Aggiungi controlli cloud. Seleziona tutti i controlli cloud di cui hai bisogno, quindi fai clic su Aggiungi.

      Quando aggiungi un controllo, verifica il tipo di controllo (rilevamento, prevenzione o audit). Tieni presente che i controlli preventivi e di audit sono disponibili solo nei livelli Premium ed Enterprise. Non includere controlli di solo audit in un framework che vuoi utilizzare per monitorare il tuo ambiente e rilevare violazioni. Non puoi eseguire il deployment di framework che includono controlli di solo audit.

    • (Solo livelli Premium ed Enterprise) Per creare un controllo cloud personalizzato, fai clic su Crea un controllo cloud personalizzato. Per le istruzioni, consulta Crea un controllo cloud personalizzato.

  7. Fai clic su Continua.

  8. Aggiungi eventuali parametri aggiuntivi richiesti dai controlli cloud.

    Ad esempio, se vuoi attivare un controllo cloud di Data Security Posture Management (DSPM) come il controllo cloud Limita l'accesso ai dati sensibili agli utenti autorizzati, specifica le località che le entità devono utilizzare. Per saperne di più sui controlli di Data Security Posture Management, consulta Controlli cloud avanzati per la governance e la sicurezza dei dati.

  9. Fai clic su Crea.

Interfaccia a riga di comando

Per creare un framework personalizzato, esegui il comando 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]]

Sostituisci i seguenti valori:

  • FRAMEWORK: l'identificatore alfanumerico univoco del framework

  • ORGANIZATION: ID organizzazione

  • LOCATION: la regione in cui è archiviato il framework

  • DISPLAY_NAME: un nome leggibile per il framework

  • DESCRIPTION: una descrizione facoltativa dello scopo del framework

  • [CATEGORY,...]: un parametro facoltativo che definisce le categorie di cui fa parte il framework. Il valore consigliato per il tuo framework personalizzato è custom-framework.

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

    è l'elenco facoltativo di controlli cloud da includere nel framework, nel seguente formato:

    • MAJOR_REVISION_ID: un flag facoltativo che specifica la versione del controllo cloud da visualizzare. Se non includi il flag, viene utilizzata l'ultima versione.

    • NAME: il nome del controllo cloud, nel formato organizations/ORGANIZATION_ID/locations/LOCATION/cloudControls/NAME. NAME è l'ID univoco del controllo cloud. Puoi trovare l'ID del controllo cloud utilizzando il comando gcloud compliance-manager cloud-controls list.

    • PARAMETERS: i parametri facoltativi richiesti da alcuni controlli cloud, ad esempio se vuoi attivare un controllo cloud di Data Security Posture Management come Limita l'accesso ai dati sensibili agli utenti autorizzati, specifica le località che le entità devono utilizzare.

    In alternativa, puoi specificare un file JSON o YAML che includa un elenco di tutti i controlli cloud. Ad esempio, --cloud-control-details=path_to_file.(yaml|json). Espandi la sezione seguente per visualizzare i file JSON e YAML di esempio.

    Esempio di file 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
        }
      ]
          

    File YAML di esempio

      - 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
          

    Se non specifichi i controlli cloud quando crei un framework, puoi aggiungerli in un secondo momento utilizzando la console.

Ad esempio, per creare un framework con il nome my-custom-framework, esegui questo comando:

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}]'

Per saperne di più, consulta gcloud compliance-manager frameworks create.

Terraform

L'esempio seguente mostra come creare un framework utilizzando 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
      }
    }
  }


}

Esegui il deployment di un framework

Esegui il deployment di un framework in un'organizzazione, una cartella o un progetto in modo da poter controllare e monitorare queste risorse utilizzando i controlli cloud del framework. Puoi eseguire il deployment di più framework in ogni organizzazione, cartella o progetto. Se esegui il deployment di un framework che include solo i controlli cloud di sicurezza dei dati avanzati, puoi eseguire il deployment del framework nelle applicazioni App Hub nelle cartelle configurate per la gestione delle applicazioni.

Le cartelle e i progetti ereditano i framework tramite la gerarchia delle risorse Google Cloud . Pertanto, se esegui il deployment dei framework a livello di organizzazione e di progetto, tutti i controlli cloud di entrambi i framework si applicano alle risorse del progetto. Se esistono differenze nelle definizioni dei controlli cloud, le risorse del progetto utilizzano il controllo cloud di livello inferiore. Ad esempio, se una regola di controllo cloud è impostata su Consenti a livello di organizzazione e su Nega a livello di progetto, l'impostazione Nega a livello di progetto viene applicata alle risorse del progetto.

Come best practice, ti consigliamo di eseguire il deployment di un framework a livello di organizzazione che includa i controlli cloud applicabili all'intera attività. Puoi quindi eseguire il deployment di framework più rigorosi nelle cartelle e nei progetti che li richiedono.

Console

  1. Nella console Google Cloud , vai alla pagina Conformità.

    Vai a Conformità

  2. Seleziona la tua organizzazione o il tuo progetto.

  3. Nella scheda Configura, per il framework di cui vuoi eseguire il deployment, fai clic su Altre azioni > Applica alle risorse.

  4. Scegli Monitora o Monitora e previeni per monitorare solo la deviazione.

  5. Seleziona la risorsa in cui vuoi eseguire il deployment del framework. Puoi scegliere un'organizzazione, una cartella o un progetto esistente. Solo per DSPM, puoi selezionare un'applicazione per eseguire il deployment di un framework che include solo i controlli cloud avanzati di DSPM in un'applicazione. Facoltativamente, puoi creare una nuova cartella o un nuovo progetto ed eseguire il deployment del framework al suo interno.

  6. Completa una delle seguenti operazioni:

    • Se hai selezionato Monitora, completa i seguenti passaggi:

      1. Verifica le informazioni.
      2. Se hai selezionato una cartella configurata per la gestione delle applicazioni e il tuo framework include solo controlli cloud DSPM avanzati, seleziona l'applicazione che vuoi monitorare.
      3. Fai clic su Monitora.
    • Se hai selezionato Monitora e previeni, completa i seguenti passaggi:

      1. Fai clic su Avanti. Esamina i controlli e le modalità cloud.
      2. Fai clic su Continua.
      3. Se visualizzate, verifica le informazioni aggiuntive richieste per alcuni controlli cloud.
      4. Fai clic su Avanti.
      5. Controlla le selezioni e poi fai clic su Applica.

Interfaccia a riga di comando

Per eseguire il deployment di un framework nella tua organizzazione, esegui il comando gcloud compliance-manager framework-deployments create. Prendi in esame queste best practice:

  • Crea un file YAML o JSON separato per i metadati del controllo cloud.

  • Utilizza i flag di destinazione appropriati per indicare se eseguirai il deployment in un'organizzazione, una cartella o un progetto esistente o se creerai un nuovo progetto o una nuova cartella contemporaneamente al deployment del framework.

  • Se possibile, utilizza solo gli identificatori delle risorse anziché i nomi completi delle risorse.

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]

Sostituisci i seguenti valori:

  • FRAMEWORK_DEPLOYMENT: l'ID del deployment del framework

  • ORGANIZATION: ID organizzazione

  • LOCATION: la regione in cui è archiviato il deployment del framework

  • cloud-control-metadata=[cloudControlDetails=CLOUD_CONTROL_DETAILS],[enforcementMode=ENFORCEMENT_MODE]: l'elenco dei controlli cloud nel framework, con i relativi nomi, parametri, ID revisione e modalità di applicazione forzata, nel seguente formato:

    • CLOUD_CONTROL_DETAILS: un oggetto che include l'elenco dei nomi, dei parametri e degli ID revisione dei controlli cloud. Utilizza il seguente formato:

      • name=NAME: il nome completo della risorsa del controllo cloud, nel formato organizations/ORGANIZATION_ID/locations/LOCATION/cloudControls/CLOUD_CONTROL_NAME

      • majorRevisionId=MAJOR_REVISION_ID: la versione principale del controllo cloud

      • parameters=PARAMETERS: i parametri facoltativi richiesti da determinati controlli cloud. Ad esempio, se vuoi attivare un controllo cloud di Data Security Posture Management come Limita l'accesso ai dati sensibili agli utenti autorizzati, specifica le località che le entità devono utilizzare.

    • ENFORCEMENT_MODE: indica se il controllo è un controllo AUDIT, DETECTIVE o PREVENTIVE

      In alternativa, puoi specificare un file JSON o YAML che includa i dettagli dei controlli cloud e le modalità di applicazione forzata. Ad esempio, --cloud-control-metadata=path_to_file.(yaml|json). Espandi le sezioni seguenti per visualizzare i file JSON e YAML di esempio.

      Esempio di file 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"
          }
        ]
            

      File YAML di esempio

        - 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: il nome di un framework esistente di cui vuoi eseguire il deployment, nel formato organizations/ORGANIZATION_ID/locations/LOCATION/frameworks/FRAMEWORK_NAME

    • FRAMEWORK_MAJOR_REVISION_ID: il numero di versione del framework di cui vuoi eseguire il deployment

    • TARGET_RESOURCE_CONFIG_EXISTING : il nome di un'organizzazione, una cartella o un progetto esistente in cui vuoi eseguire il deployment del nuovo framework, in uno dei seguenti formati:

      • organizations/ORGANIZATION_ID
      • folders/FOLDER_ID
      • projects/PROJECT_ID
    • TARGET_RESOURCE_CREATION_CONFIG_FOLDER_DISPLAY_NAME: il nome della cartella che vuoi creare e in cui vuoi eseguire il deployment del framework

    • TARGET_RESOURCE_CREATION_CONFIG_FOLDER_PARENT: il nome dell'organizzazione o della cartella esistente in cui vuoi creare la nuova cartella. I formati supportati sono organizations/ORGANIZATION_ID e folders/FOLDER_ID.

    • TARGET_RESOURCE_CREATION_CONFIG_PROJECT_BILLING_ACCOUNT_ID: l'ID account di fatturazione da assegnare al nuovo progetto, se stai creando un nuovo progetto in cui vuoi eseguire il deployment del framework

    • TARGET_RESOURCE_CREATION_CONFIG_PROJECT_DISPLAY_NAME: il nome del progetto che vuoi creare e in cui vuoi eseguire il deployment del framework

    • TARGET_RESOURCE_CREATION_CONFIG_PROJECT_PARENT: il nome dell'organizzazione o della cartella esistente in cui vuoi creare il nuovo progetto. I formati supportati sono organizations/ORGANIZATION_ID e folders/FOLDER_ID.

    • DESCRIPTION: una descrizione facoltativa del deployment del framework

Ad esempio, per eseguire il deployment di un framework denominato organizations/3589215982/locations/global/frameworks/builtin-aipp in una cartella esistente con l'ID cartella example-folder, esegui questo comando:

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"

Ad esempio, per eseguire il deployment di un framework denominato organizations/3589215982/locations/global/frameworks/builtin-aipp e creare un nuovo progetto denominato example-new-project in una cartella esistente con l'ID cartella example-folder, esegui questo comando:

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"

Per informazioni, consulta gcloud compliance-manager framework-deployments create.

Terraform

L'esempio seguente mostra come eseguire il deployment di un framework utilizzando 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"]
              }
            }
          }
        }
      }
    }
  }
}

Dopo aver eseguito il deployment del framework, puoi monitorare l'ambiente per rilevare eventuali deviazioni dai controlli cloud definiti. Security Command Center segnala le istanze di deviazione come risultati che puoi esaminare, filtrare e risolvere. Potrebbero essere necessarie circa sei ore dopo il deployment di un framework per visualizzare i risultati relativi ai controlli cloud.

Modifica un framework personalizzato

Dopo aver creato un framework, puoi modificarne il nome e la descrizione, aggiungere o rimuovere controlli cloud e aggiornare i parametri. Puoi modificare solo i framework che crei, non quelli integrati. Inoltre, puoi modificare solo i framework di cui non è stato eseguito il deployment.

  1. Nella console Google Cloud , vai alla pagina Conformità.

    Vai a Conformità

  2. Seleziona la tua organizzazione o il tuo progetto.

  3. Nella scheda Configura, fai clic sul framework che vuoi modificare.

  4. Nella pagina Dettagli framework, verifica che il framework non sia assegnato a una risorsa. Se necessario, rimuovi le assegnazioni.

  5. Fai clic su Azioni > Modifica.

  6. Nella pagina Aggiorna i dettagli del framework, modifica il nome e la descrizione in base alle tue esigenze. Fai clic su Continua.

  7. Per modificare i controlli cloud inclusi nel framework, completa i seguenti passaggi:

    • Per aggiungere un controllo cloud esistente, fai clic su Aggiungi controlli cloud. Seleziona tutti i controlli cloud di cui hai bisogno, quindi fai clic su Aggiungi.

    • Per creare un controllo cloud personalizzato, fai clic su Crea un controllo cloud personalizzato. Per le istruzioni, vedi Crea un controllo cloud personalizzato.

    • Per rimuovere un controllo cloud, selezionalo e fai clic su Rimuovi.

  8. Fai clic su Continua.

  9. Aggiungi eventuali parametri aggiuntivi richiesti dai controlli cloud.

  10. Fai clic su Salva.

Rimuovi un framework di cui è stato eseguito il deployment da una risorsa

Puoi rimuovere un framework dall'organizzazione, dalle cartelle o dai progetti a cui lo hai assegnato. La rimozione del framework significa che Compliance Manager non genera più risultati per quel nodo della gerarchia delle risorse.

Quando rimuovi un framework, lo stato della maggior parte dei risultati correlati cambia in Inactive dopo sette giorni. Se il tuo framework include il controllo cloud Limita il flusso di dati sensibili tra giurisdizioni geografiche, i risultati cambiano in Inactive dopo 90 giorni. Gli stati dei risultati relativi al controllo cloud Limita il flusso di dati sensibili tra giurisdizioni geografiche e al controllo cloud Limita l'accesso ai dati sensibili agli utenti autorizzati non vengono modificati automaticamente.

Console

  1. Nella console Google Cloud , vai alla pagina Conformità.

    Vai a Conformità

  2. Seleziona la tua organizzazione o il tuo progetto.

  3. Nella scheda Configura, fai clic sul framework che vuoi rimuovere.

  4. Nella pagina Dettagli framework, fai clic su Azioni > Gestisci assegnazioni risorse.

  5. Nella tabella Risorse assegnate, trova la risorsa che vuoi rimuovere e fai clic su Elimina.

  6. Esamina il messaggio di conferma e fai clic su Annulla assegnazione.

  7. (Facoltativo) Cambia lo stato dei risultati associati in Inactive. Per istruzioni, consulta Modifica lo stato di un risultato.

Interfaccia a riga di comando

Per rimuovere un deployment di un framework specifico nella tua organizzazione, esegui il comando gcloud compliance-manager framework-deployments delete:

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

Sostituisci i seguenti valori:

  • FRAMEWORK_DEPLOYMENT: l'ID del deployment del framework

  • ORGANIZATION: ID organizzazione

  • LOCATION: la regione in cui è archiviato il deployment del framework

  • ETAG_ID: l'identificatore della versione corrente del deployment del framework, che consente di assicurarti di eliminare la versione prevista del deployment del framework. Se l'identificatore non corrisponde alla versione corrente, la richiesta non va a buon fine. Se ometti questo valore, Compliance Manager elimina il deployment del framework incondizionatamente.

Ad esempio, per rimuovere example-deployment dall'organizzazione 3589215982 e archiviarlo nella località globale, esegui questo comando:

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

Per informazioni sui flag facoltativi, consulta gcloud compliance-manager framework-deployments delete.

Aggiorna un framework integrato a una versione più recente

Google pubblica aggiornamenti regolari dei suoi framework integrati man mano che i servizi implementano nuove funzionalità o emergono nuove best practice.

Puoi visualizzare le release dei framework integrati nella dashboard dei framework nella scheda Configura o nella pagina dei dettagli del framework.

Google ti invia una notifica nella console quando si verificano i seguenti aggiornamenti:

Per aggiornare un framework di cui hai eseguito il deployment, completa i seguenti passaggi:

  1. Nella console Google Cloud , vai alla pagina Conformità.

    Vai a Conformità

  2. Seleziona la tua organizzazione o il tuo progetto.

  3. Nella scheda Configura, fai clic sul framework che vuoi aggiornare.

  4. Nella pagina Dettagli framework, nella tabella Risorse assegnate, esamina lo Stato aggiornamento per tutte le assegnazioni identificate come Aggiornamento disponibile.

  5. Crea un elenco dei controlli cloud aggiornati, inclusi i relativi ID, parametri e ID revisione, che vuoi includere o rimuovere dal framework aggiornato.

  6. Per applicare le modifiche, completa i seguenti passaggi:

    Console

    Puoi utilizzare la console Google Cloud per aggiornare i framework rimuovendoli e poi eseguendo nuovamente il deployment. Utilizza gcloud CLI o l'API REST Cloud Security Compliance per aggiornare i framework esistenti senza influire sulla dashboard dei risultati e senza dover rimuovere e rifare il deployment del framework.

    1. Rimuovi l'assegnazione delle risorse.

    2. Rifai il deployment del framework nella risorsa in modo che Compliance Manager possa riprendere la valutazione della risorsa e la creazione dei risultati.

    Interfaccia a riga di comando

    Per aggiornare un deployment del framework in loco, esegui il comando gcloud compliance-manager framework-deployments update. Per specificare i controlli cloud e le modalità di applicazione forzata che si applicano al framework, utilizza una delle seguenti opzioni:

    • Specifica i controlli cloud e le modalità di applicazione forzata in linea utilizzando il flag --cloud-control-metadata. Se utilizzi questo flag, devi specificare tutti i controlli cloud e le modalità di applicazione forzata che si applicano al framework.
    • Specifica i controlli cloud e le modalità di applicazione forzata in un file JSON o YAML. Se utilizzi un file, devi specificare tutti i controlli cloud e le modalità di applicazione forzata che si applicano al framework.
    • Utilizza i flag --add-cloud-control-metadata e --remove-cloud-control-metadata per aggiungere o rimuovere singoli controlli cloud.

    Esegui questo comando:

    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]
    

    Sostituisci quanto segue:

    • FRAMEWORK_DEPLOYMENT: l'ID del deployment del framework.

    • LOCATION: la regione in cui è archiviato il deployment del framework.

    • ORGANIZATION o PROJECT_ID: l'ID organizzazione o l'ID progetto.

    • FRAMEWORK_MAJOR_REVISION_ID: l'ID della revisione principale del framework a cui vuoi eseguire l'aggiornamento. Se ometti questo flag, Compliance Manager aggiorna il deployment all'ultima revisione principale del framework. Non puoi eseguire il downgrade a un ID revisione principale precedente.

    • Il valore sarà uno dei seguenti:

      • --cloud-control-metadata=[cloudControlDetails=CLOUD_CONTROL_DETAILS],[enforcementMode=ENFORCEMENT_MODE]: l'elenco dei controlli cloud nel framework, con i relativi nomi, parametri, ID revisione e modalità di applicazione forzata, nel seguente formato:

      • CLOUD_CONTROL_DETAILS: un oggetto che include l'elenco dei nomi, dei parametri e degli ID revisione dei controlli cloud. Utilizza il seguente formato:

        • name=NAME: il nome completo della risorsa del controllo cloud, nel formato organizations/ORGANIZATION_ID/locations/LOCATION/cloudControls/CLOUD_CONTROL_NAME o projects/PROJECT_ID/locations/LOCATION/cloudControls/CLOUD_CONTROL_NAME.

        • majorRevisionId=MAJOR_REVISION_ID: la versione principale del controllo cloud.

        • parameters=PARAMETERS: i parametri facoltativi richiesti da alcuni controlli cloud.

      • ENFORCEMENT_MODE: indica se il controllo è un controllo AUDIT, DETECTIVE o PREVENTIVE.

      • --cloud-control-metadata=PATH_TO_FILE: il percorso di un file JSON o YAML che include i dettagli dei controlli cloud e le modalità di applicazione. Espandi le sezioni seguenti per visualizzare i file JSON e YAML di esempio.

        Esempio di file 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"
            }
          ]
              

        File YAML di esempio

          - 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 o --remove-cloud-control-metadata: i controlli cloud da aggiungere o rimuovere dal deployment del framework. Puoi utilizzare entrambi i flag nello stesso comando. Puoi utilizzare una delle seguenti opzioni per specificare più controlli cloud da aggiungere o rimuovere:

        • Ripeti il flag per ogni controllo.
        • Includi i controlli all'interno di un elenco JSON [ {...}, {...} ] in un singolo flag.
        • Fornisci un percorso a un file JSON o YAML che includa un elenco di controlli. Utilizza lo stesso schema del flag --cloud-control-metadata. Ad esempio: --add-cloud-control-metadata=add-controls.yaml --remove-cloud-control-metadata=remove-controls.yaml.
    • ETAG_ID: l'identificatore della versione corrente del deployment del framework, che aiuta a garantire che l'aggiornamento venga eseguito sulla versione prevista del deployment del framework. Se l'identificatore non corrisponde alla versione corrente, la richiesta non va a buon fine. Se ometti questo valore, Compliance Manager aggiorna il deployment del framework in modo incondizionato.

    Se vuoi, includi il flag --async per tornare immediatamente senza attendere il completamento dell'operazione di aggiornamento a lunga esecuzione.

    Ad esempio, per aggiornare example-deployment di cui è stato eseguito il deployment nell'organizzazione 3589215982 e archiviato nella località global, esegui questo comando:

    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=
    

    Per informazioni sui flag facoltativi, consulta gcloud compliance-manager framework-deployments update.

    REST

    Per aggiornare un deployment del framework in loco, chiama il metodo frameworkDeployments.patch (per organizzazioni o progetti). Specifica l'ID della revisione principale di destinazione e tutti i controlli cloud e le modalità di applicazione forzata che si applicano al framework in cloudControlMetadata.

    Prima di utilizzare i dati della richiesta, apporta le sostituzioni seguenti:

    • RESOURCE_TYPE: il tipo di container della risorsa principale per il deployment del framework: organizations o projects.
    • RESOURCE_ID: l'ID numerico dell'organizzazione o l'ID progetto. Ad esempio: 3589215982.
    • LOCATION: la località del deployment del framework. Valore supportato: global.
    • FRAMEWORK_DEPLOYMENT: l'ID del deployment del framework che vuoi aggiornare. Ad esempio: example-deployment.
    • UPDATE_MASK: elenco facoltativo di campi da sovrascrivere, separati da virgole, relativi alla risorsa FrameworkDeployment. Ad esempio framework.majorRevisionId,cloudControlMetadata. Se omesso, vengono sovrascritti tutti i campi.
    • FRAMEWORK_NAME: il nome della risorsa del framework, nel formato organizations/ORGANIZATION_ID/locations/LOCATION/frameworks/FRAMEWORK_ID o projects/PROJECT_ID/locations/LOCATION/frameworks/FRAMEWORK_ID. Ad esempio: organizations/3589215982/locations/global/frameworks/builtin-aipp.
    • FRAMEWORK_MAJOR_REVISION_ID: l'ID della revisione principale del framework a cui vuoi eseguire l'aggiornamento. Se omesso, Compliance Manager aggiorna il deployment all'ultima revisione principale del framework.
    • CLOUD_CONTROL_NAME: il nome completo della risorsa di un controllo cloud nel framework, nel formato organizations/ORGANIZATION_ID/locations/LOCATION/cloudControls/CLOUD_CONTROL_ID.
    • MAJOR_REVISION_ID: l'ID della revisione principale del controllo cloud.
    • ENFORCEMENT_MODE: indica se il controllo cloud è un controllo AUDIT, DETECTIVE o PREVENTIVE.
    • ETAG_ID: identificatore facoltativo per la versione corrente del deployment del framework per evitare che gli aggiornamenti simultanei si sovrascrivano a vicenda. Ad esempio: MTc3NDU4MjM4OTY0MzU5MjQ5OTI=.

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

    {
      "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"
    }
    

    Per inviare la richiesta, scegli una di queste opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

    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

    Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

    $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

    Dovresti ricevere una risposta JSON simile alla seguente:

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

    La risposta include le seguenti informazioni:

    • name: un identificatore di stringa univoco per l'operazione di aggiornamento a lunga esecuzione, che puoi utilizzare per monitorare l'avanzamento dell'aggiornamento.
    • done: un flag booleano impostato su false quando inizia l'operazione di aggiornamento e su true quando l'aggiornamento viene completato.

Elimina un framework personalizzato

Elimina un framework quando non è più necessario. Puoi eliminare solo i framework che hai creato, non quelli integrati.

Console

  1. Nella console Google Cloud , vai alla pagina Conformità.

    Vai a Conformità

  2. Seleziona la tua organizzazione o il tuo progetto.

  3. Nella scheda Configura, fai clic sul framework da cui vuoi annullare l'assegnazione delle risorse.

  4. Nella pagina Dettagli framework, verifica che il framework non sia assegnato a una risorsa. Se necessario, rimuovi le assegnazioni.

  5. Fai clic su Azioni > Elimina.

  6. Nella finestra Elimina, esamina il messaggio. Digita Delete e fai clic su Conferma.

Interfaccia a riga di comando

Per eliminare un framework specifico nella tua organizzazione, esegui il comando gcloud compliance-manager frameworks delete:

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

Sostituisci i seguenti valori:

  • FRAMEWORK: il nome del framework

  • ORGANIZATION: ID organizzazione

  • LOCATION: la regione in cui è archiviato il framework

Ad esempio, per rimuovere example-framework dall'organizzazione 3589215982 e archiviato nella località globale, esegui questo comando:

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

Per informazioni sui flag facoltativi, consulta gcloud compliance-manager frameworks delete.

Passaggi successivi