Administrar frameworks

Los frameworks del Administrador de cumplimiento consisten en controles de nube que te ayudan a cumplir con los requisitos de seguridad y reglamentarios de una organización o un proyecto en tus entornos de nube. La aplicación de un marco de trabajo es un proceso de dos pasos. Primero, debes identificar los controles de la nube que se alinean con las obligaciones de seguridad y cumplimiento de tu empresa. Luego, implementas un framework que incluye esos controles de la nube en la organización, la carpeta o el proyecto adecuados en Google Cloud. Esta página te ayuda a completar los siguientes pasos:

  1. Evalúa qué framework integrado se alinea mejor con tus requisitos normativos y de seguridad. Puedes crear tu propio framework personalizado, pero te recomendamos comenzar con uno integrado.

  2. Determinar qué controles integrados de la nube se asignan a tus requisitos empresariales (Solo para los niveles Premium y Enterprise) Puedes crear controles de nube personalizados, si es necesario.

  3. Determina si implementarás el framework en tu organización de Google Cloud o en carpetas y proyectos específicos. Solo puedes implementar un framework en cada organización, carpeta o proyecto. El Administrador de cumplimiento admite carpetas configuradas para la administración de aplicaciones.

  4. Copia un marco de trabajo existente y modifícalo para que se ajuste a tus requisitos. Si es necesario, puedes crear un framework personalizado.

  5. Implementa el framework en la organización, la carpeta o el proyecto adecuados.

Antes de comenzar

Completa estas tareas antes de completar las tareas restantes de esta página.

Configurar los permisos

  • Para obtener los permisos que necesitas para aplicar frameworks, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu organización o proyecto:

    Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

    Los roles para implementar frameworks con políticas de la organización contienen los permisos orgpolicy.policies.create, orgpolicy.policies.update y orgpolicy.policies.get requeridos.

    En el caso de las implementaciones a nivel de la organización, los roles para crear carpetas contienen los permisos resourcemanager.folders.get, resourcemanager.folders.create y resourcemanager.folders.delete requeridos.

    En las implementaciones a nivel de la organización, los roles para crear proyectos contienen los permisos resourcemanager.projects.get, resourcemanager.projects.create, resourcemanager.projects.delete y resourcemanager.projects.createBillingAssignment necesarios.

    Los roles para asignar frameworks de DSPM a aplicaciones contienen los permisos apphub.locations.list, apphub.applications.list y apphub.applications.get requeridos.

    También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Configura Google Cloud CLI

Instala Google Cloud CLI y, luego, accede a gcloud CLI con tu identidad federada. Después de acceder, inicializa Google Cloud CLI con el siguiente comando:

gcloud init

Para configurar la gcloud CLI con el objetivo de usar la identidad temporal como cuenta de servicio y autenticarte en las APIs de Google, en lugar de tus credenciales de usuario, ejecuta el comando siguiente:

gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL

Para obtener más información, consulta Identidad temporal como cuenta de servicio.

Ver frameworks

Completa los siguientes pasos para ver la configuración de los frameworks integrados o de otros frameworks que ya hayas creado.

Console

  1. En la consola de Google Cloud , ve a la página Cumplimiento.

    Ve a cumplimiento

  2. Elige tu organización o proyecto.

  3. Para ver todos los frameworks disponibles, haz clic en la pestaña Configurar.

    En el panel, se muestran los frameworks disponibles, una breve descripción, las plataformas y los niveles compatibles, y los recursos a los que se aplicó el framework.

  4. Para ver los detalles de un framework específico, haz clic en su nombre.

CLI

Puedes consultar información sobre un framework específico o enumerar todos los frameworks de tu organización.

Consulta los detalles de un framework

Para ver los detalles de un framework específico, ejecuta el comando gcloud compliance-manager frameworks describe:

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

Reemplaza lo siguiente:

  • FRAMEWORK: Es el nombre del framework.

  • ORGANIZATION: Es el ID de tu organización.

  • LOCATION: la región en la que se almacena el framework

  • MAJOR_REVISION_ID: Es una marca opcional que especifica qué versión del framework se debe ver. Si no incluyes la marca, se devuelve la versión más reciente.

Por ejemplo, para ver un framework con el nombre builtin-security-essentials y el número de revisión principal 12, ejecuta el siguiente comando:

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

Para obtener más información, consulta gcloud compliance-manager frameworks describe.

Obtén la lista de frameworks

Para obtener la lista de frameworks de tu organización, ejecuta el comando gcloud compliance-manager frameworks list:

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

Reemplaza los siguientes valores:

  • ORGANIZATION: Es el ID de tu organización.

  • LOCATION: la región en la que se almacenan los frameworks

Por ejemplo, para ver todos los frameworks dentro de la organización 3589215982 que se almacenan en la ubicación global, ejecuta el siguiente comando:

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

Para obtener información sobre las marcas opcionales, consulta gcloud compliance-manager frameworks list.

Crea un framework

Después de determinar qué controles de nube se aplican a los recursos dentro de tu organización o de una carpeta o un proyecto específicos, puedes crear un framework. Puedes crear un framework personalizado o copiar uno existente y modificarlo. Cuando copias un framework, se incluyen las versiones más recientes de los controles de nube integrados.

Console

  1. En la consola de Google Cloud , ve a la página Cumplimiento.

    Ve a cumplimiento

  2. Elige tu organización o proyecto.

  3. En la pestaña Configurar, haz clic en Crear un framework personalizado.

  4. Realiza una de las siguientes acciones:

    • Para usar un framework existente, completa los siguientes pasos:

      1. Selecciona Comenzar con un framework existente.

      2. Selecciona el framework que quieras copiar.

      3. Haz clic en Agregar.

    • Para crear un marco de trabajo personalizado, selecciona Comenzar nuevo.

  5. Ingresa un nombre, un identificador único y una descripción para tu framework. Haz clic en Continuar.

    Si copias un framework existente, se mostrará la lista de controles en la nube que formaban parte de él.

  6. Para agregar los controles de nube que necesitas, completa los siguientes pasos:

    • Para agregar un control de la nube existente, haz clic en Agregar controles de la nube. Selecciona todos los controles de la nube que necesites y, luego, haz clic en Agregar.

      Cuando agregues un control, verifica su tipo (de detección, preventivo o de auditoría). Ten en cuenta que los controles preventivos y de auditoría solo están disponibles en los niveles Premium y Enterprise. No incluyas controles de solo auditoría en un framework que quieras usar para supervisar tu entorno y detectar incumplimientos. No puedes implementar frameworks que incluyan controles de solo auditoría.

    • (Solo para los niveles Premium y Enterprise) Para crear un control de nube personalizado, haz clic en Crear un control de nube personalizado. Para obtener instrucciones, consulta Crea un control de nube personalizado.

  7. Haz clic en Continuar.

  8. Agrega los parámetros adicionales que requieran los controles de nube.

    Por ejemplo, si deseas habilitar un control de nube de administración de la postura de seguridad de los datos (DSPM), como el control de nube Restringir el acceso a datos sensibles a usuarios permitidos, especifica las ubicaciones que deben usar las principales. Para obtener más información sobre los controles de la administración de la postura de seguridad de los datos, consulta Controles avanzados de administración de datos y seguridad en la nube.

  9. Haz clic en Crear.

CLI

Para crear un framework personalizado, ejecuta el 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]]

Reemplaza los siguientes valores:

  • FRAMEWORK: Es el identificador alfanumérico único del framework.

  • ORGANIZATION: Es el ID de tu organización.

  • LOCATION: la región en la que se almacena el framework

  • DISPLAY_NAME: un nombre legible por humanos para el framework

  • DESCRIPTION: una descripción opcional del propósito del framework

  • [CATEGORY,...]: Es un parámetro opcional que define las categorías de las que forma parte el framework. El valor recomendado para tu framework personalizado es custom-framework.

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

    es la lista opcional de controles de la nube que se incluirán en tu framework, con el siguiente formato:

    • MAJOR_REVISION_ID: Es una marca opcional que especifica qué versión del control de Cloud se debe ver. Si no incluyes la marca, se usará la versión más reciente.

    • NAME: Es el nombre del control de la nube, en el formato organizations/ORGANIZATION_ID/locations/LOCATION/cloudControls/NAME. NAME es el ID único del control de nube. Puedes encontrar el ID de control de la nube con el comando gcloud compliance-manager cloud-controls list.

    • PARAMETERS: Son los parámetros opcionales que requieren ciertos controles de la nube. Por ejemplo, si deseas habilitar un control de la nube de administración de la postura de seguridad de los datos, como el control de la nube Restringir el acceso a datos sensibles a usuarios permitidos, especifica las ubicaciones que deben usar las principales.

    Como alternativa, puedes especificar un archivo JSON o YAML que incluya una lista de todos los controles de la nube. Por ejemplo, --cloud-control-details=path_to_file.(yaml|json). Expande la siguiente sección para ver ejemplos de archivos JSON y YAML.

    Ejemplo de archivo 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
        }
      ]
          

    Ejemplo de archivo 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
          

    Si no especificas los controles de Cloud cuando creas un framework, puedes agregarlos más adelante con la consola.

Por ejemplo, para crear un framework con el nombre my-custom-framework, ejecuta lo siguiente:

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

Para obtener más información, consulta gcloud compliance-manager frameworks create.

Terraform

En el siguiente ejemplo, se muestra cómo puedes crear un framework con 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
      }
    }
  }


}

Implementa un framework

Implementa un framework en una organización, carpeta o proyecto para que puedas controlar y supervisar esos recursos con los controles de nube del framework. Puedes implementar varios frameworks en cada organización, carpeta o proyecto. Si implementas un framework que solo incluye los controles de nube de seguridad de los datos avanzados, puedes implementar el framework en aplicaciones de App Hub en carpetas configuradas para la administración de aplicaciones.

Las carpetas y los proyectos heredan los frameworks a través de la jerarquía de recursos de Google Cloud . Por lo tanto, si implementas frameworks a nivel de la organización y del proyecto, todos los controles de la nube de ambos frameworks se aplicarán a los recursos del proyecto. Si hay diferencias en las definiciones de los controles de la nube, los recursos del proyecto usan el control de la nube de nivel inferior. Por ejemplo, si una regla de control de nube se establece en Permitir a nivel de la organización y en Denegar a nivel del proyecto, se aplica el parámetro de configuración Denegar a nivel del proyecto a los recursos del proyecto.

Como práctica recomendada, te sugerimos que implementes un framework a nivel de la organización que incluya los controles de la nube que se puedan aplicar a toda tu empresa. Luego, puedes implementar frameworks más estrictos en las carpetas y los proyectos que los requieran.

Console

  1. En la consola de Google Cloud , ve a la página Cumplimiento.

    Ve a cumplimiento

  2. Elige tu organización o proyecto.

  3. En la pestaña Configurar, para el framework que deseas implementar, haz clic en Más acciones > Aplicar a los recursos.

  4. Elige Supervisar o Supervisar y prevenir para supervisar solo el desvío.

  5. Selecciona el recurso en el que deseas implementar el framework. Puedes elegir una organización, una carpeta o un proyecto existentes. Solo para DSPM, puedes seleccionar una aplicación para implementar un framework que incluya solo controles avanzados de DSPM en la nube en una aplicación. De manera opcional, puedes crear una carpeta o un proyecto nuevos, y, luego, implementar el framework en ellos.

  6. Realiza una de las siguientes acciones:

    • Si seleccionaste Supervisar, completa lo siguiente:

      1. Verifica la información.
      2. Si seleccionaste una carpeta configurada para la administración de aplicaciones y tu framework solo incluye controles avanzados de DSPM en la nube, selecciona la aplicación que quieres supervisar.
      3. Haz clic en Monitor.
    • Si seleccionaste Supervisar y prevenir, completa lo siguiente:

      1. Haz clic en Siguiente. Revisa los controles y modos de la nube.
      2. Haz clic en Continuar.
      3. Si se muestra, verifica la información adicional que se requiere para algunos controles de la nube.
      4. Haz clic en Siguiente.
      5. Revisa tus selecciones y, luego, haz clic en Aplicar.

CLI

Para implementar un framework en tu organización, ejecuta el comando gcloud compliance-manager framework-deployments create. Analiza las siguientes prácticas recomendadas:

  • Crea un archivo YAML o JSON independiente para los metadatos de control de la nube.

  • Usa las marcas de destino adecuadas para indicar si implementarás en una organización, carpeta o proyecto existentes, o si crearás un proyecto o una carpeta nuevos al mismo tiempo que implementas el framework.

  • Si es posible, usa solo identificadores de recursos, en lugar de nombres de recursos completamente calificados.

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]

Reemplaza los siguientes valores:

  • FRAMEWORK_DEPLOYMENT: Es el ID de la implementación del framework.

  • ORGANIZATION: Es el ID de tu organización.

  • LOCATION: la región en la que se almacena la implementación del framework

  • cloud-control-metadata=[cloudControlDetails=CLOUD_CONTROL_DETAILS],[enforcementMode=ENFORCEMENT_MODE]: es la lista de controles de Cloud en el framework, con sus nombres, parámetros, ID de revisión y modo de aplicación forzosa, en el siguiente formato:

    • CLOUD_CONTROL_DETAILS: Es un objeto que incluye la lista de nombres de controles de Cloud, parámetros y los IDs de revisión. Usa el siguiente formato:

      • name=NAME: Es el nombre completo del recurso del control en la nube, con el formato organizations/ORGANIZATION_ID/locations/LOCATION/cloudControls/CLOUD_CONTROL_NAME.

      • majorRevisionId=MAJOR_REVISION_ID: Es la versión principal del control de Cloud.

      • parameters=PARAMETERS: Son los parámetros opcionales que requieren ciertos controles de la nube. Por ejemplo, si quieres habilitar un control de la nube de administración de la postura de seguridad de los datos, como el control de la nube Restringe el acceso a datos sensibles a los usuarios permitidos, especifica las ubicaciones que deben usar las principales.

    • ENFORCEMENT_MODE: Indica si el control es AUDIT, DETECTIVE o PREVENTIVE

      Como alternativa, puedes especificar un archivo JSON o YAML que incluya los detalles del control de la nube y los modos de aplicación forzosa. Por ejemplo, --cloud-control-metadata=path_to_file.(yaml|json). Expande las siguientes secciones para ver ejemplos de archivos JSON y YAML.

      Ejemplo de archivo 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"
          }
        ]
            

      Ejemplo de archivo 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: Es el nombre de un framework existente que deseas implementar, en el formato organizations/ORGANIZATION_ID/locations/LOCATION/frameworks/FRAMEWORK_NAME.

    • FRAMEWORK_MAJOR_REVISION_ID: Es el número de versión del framework que deseas implementar.

    • TARGET_RESOURCE_CONFIG_EXISTING : Es el nombre de una organización, carpeta o proyecto existente en el que deseas implementar el framework nuevo, en uno de los siguientes formatos:

      • organizations/ORGANIZATION_ID
      • folders/FOLDER_ID
      • projects/PROJECT_ID
    • TARGET_RESOURCE_CREATION_CONFIG_FOLDER_DISPLAY_NAME: es el nombre de la carpeta que deseas crear y, luego, implementar el framework en ella.

    • TARGET_RESOURCE_CREATION_CONFIG_FOLDER_PARENT: Es el nombre de la organización o carpeta existente en la que deseas crear la carpeta nueva. Los formatos admitidos son organizations/ORGANIZATION_ID y folders/FOLDER_ID.

    • TARGET_RESOURCE_CREATION_CONFIG_PROJECT_BILLING_ACCOUNT_ID: Es el ID de la cuenta de facturación que se asignará al proyecto nuevo, si creas un proyecto nuevo en el que deseas implementar el framework.

    • TARGET_RESOURCE_CREATION_CONFIG_PROJECT_DISPLAY_NAME: es el nombre del proyecto que deseas crear y, luego, implementar el framework en él.

    • TARGET_RESOURCE_CREATION_CONFIG_PROJECT_PARENT: es el nombre de la organización o carpeta existente en la que deseas crear el proyecto nuevo. Los formatos admitidos son organizations/ORGANIZATION_ID y folders/FOLDER_ID.

    • DESCRIPTION: Es una descripción opcional para la implementación del framework.

Por ejemplo, para implementar un framework llamado organizations/3589215982/locations/global/frameworks/builtin-aipp en una carpeta existente con el ID de carpeta example-folder, ejecuta lo siguiente:

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"

Por ejemplo, para implementar un framework llamado organizations/3589215982/locations/global/frameworks/builtin-aipp y crear un proyecto nuevo llamado example-new-project en una carpeta existente con el ID de carpeta example-folder, ejecuta lo siguiente:

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"

Para obtener información, consulta gcloud compliance-manager framework-deployments create.

Terraform

En el siguiente ejemplo, se muestra cómo puedes implementar un framework con 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"]
              }
            }
          }
        }
      }
    }
  }
}

Después de implementar el framework, puedes supervisar tu entorno para detectar cualquier desvío de los controles de la nube definidos. Security Command Center informa las instancias de desvío como hallazgos que puedes revisar, filtrar y resolver. Después de implementar un framework, los hallazgos relacionados con los controles de la nube pueden tardar aproximadamente seis horas en aparecer.

Edita un framework personalizado

Después de crear un framework, puedes cambiar su nombre y descripción, agregar o quitar controles de la nube y actualizar cualquier parámetro. Solo puedes editar los frameworks que crees, no los integrados. Además, solo puedes editar los frameworks que no se implementaron.

  1. En la consola de Google Cloud , ve a la página Cumplimiento.

    Ve a cumplimiento

  2. Elige tu organización o proyecto.

  3. En la pestaña Configurar, haz clic en el framework que quieres editar.

  4. En la página Detalles del framework, verifica que el framework no esté asignado a un recurso. Si es necesario, quita las asignaciones.

  5. Haz clic en Acciones > Editar.

  6. En la página Actualizar detalles del framework, cambia el nombre y la descripción según sea necesario. Haga clic en Continuar.

  7. Para cambiar los controles de la nube que se incluyen en el framework, completa lo siguiente:

    • Para agregar un control de la nube existente, haz clic en Agregar controles de la nube. Selecciona todos los controles de la nube que necesites y, luego, haz clic en Agregar.

    • Para crear un control de nube personalizado, haz clic en Crear un control de nube personalizado. Para obtener instrucciones, consulta Crea un control de la nube personalizado.

    • Para quitar un control de la nube, selecciónalo y haz clic en Quitar.

  8. Haz clic en Continuar.

  9. Agrega los parámetros adicionales que requieran los controles de nube.

  10. Haz clic en Guardar.

Quita un framework implementado de un recurso

Puedes quitar un framework de la organización, las carpetas o los proyectos a los que lo asignaste. Quitar el framework significa que Compliance Manager ya no genera hallazgos para ese nodo de tu jerarquía de recursos.

Cuando quitas un framework, el estado de la mayoría de los hallazgos relacionados cambia a Inactive después de siete días. Si tu framework incluye el control de nube Restringe el flujo de datos sensibles entre jurisdicciones geográficas, los hallazgos cambian a Inactive después de 90 días. Los estados de los hallazgos relacionados con el control de la nube Restringe el flujo de datos sensibles entre jurisdicciones geográficas y el control de la nube Restringe el acceso a datos sensibles a los usuarios permitidos no se cambian automáticamente.

Console

  1. En la consola de Google Cloud , ve a la página Cumplimiento.

    Ve a cumplimiento

  2. Elige tu organización o proyecto.

  3. En la pestaña Configurar, haz clic en el framework que deseas quitar.

  4. En la página Detalles del framework, haz clic en Acciones > Administrar asignaciones de recursos.

  5. En la tabla Recursos asignados, busca el recurso que deseas quitar y haz clic en Borrar.

  6. Revisa el mensaje de confirmación y haz clic en Anular asignación.

  7. Opcional: Cambia el estado de los hallazgos asociados a Inactive. Para obtener instrucciones, consulta Cambia el estado de un hallazgo.

CLI

Para quitar una implementación de framework en particular en tu organización, ejecuta el comando gcloud compliance-manager framework-deployments delete:

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

Reemplaza los siguientes valores:

  • FRAMEWORK_DEPLOYMENT: Es el ID de la implementación del framework.

  • ORGANIZATION: Es el ID de tu organización.

  • LOCATION: la región en la que se almacena la implementación del framework

  • ETAG_ID: Es el identificador de la versión actual de la implementación del framework, que ayuda a garantizar que borres la versión prevista de la implementación del framework. Si el identificador no coincide con la versión actual, la solicitud falla. Si omites este valor, el Administrador de cumplimiento borrará la implementación del framework sin condiciones.

Por ejemplo, para quitar example-deployment de la organización 3589215982 y almacenarla en la ubicación global, ejecuta el siguiente comando:

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

Para obtener información sobre las marcas opcionales, consulta gcloud compliance-manager framework-deployments delete.

Actualiza un framework integrado a una versión más reciente

Google publica actualizaciones periódicas de sus frameworks integrados a medida que los servicios implementan funciones nuevas o que surgen prácticas recomendadas nuevas.

Puedes ver las versiones de los frameworks integrados en el panel de frameworks en la pestaña Configurar o en la página de detalles del framework.

Google te notifica en la consola cuando se producen las siguientes actualizaciones:

Para actualizar un framework que implementaste, completa lo siguiente:

  1. En la consola de Google Cloud , ve a la página Cumplimiento.

    Ve a cumplimiento

  2. Elige tu organización o proyecto.

  3. En la pestaña Configurar, haz clic en el framework que deseas actualizar.

  4. En la página Detalles del framework, en la tabla Recursos asignados, revisa el Estado de actualización de las asignaciones que se identifican como Actualización disponible.

  5. Crea una lista de los controles de nube actualizados, incluidos sus IDs, parámetros y IDs de revisión, que deseas incluir en el framework actualizado o quitar de él.

  6. Para aplicar los cambios, completa los siguientes pasos:

    Console

    Puedes usar la consola de Google Cloud para actualizar los frameworks quitándolos y, luego, volviéndolos a implementar. Usa gcloud CLI o la API de REST de Cloud Security Compliance para actualizar los frameworks sin afectar tu panel de hallazgos y sin tener que quitar y volver a implementar el framework.

    1. Quita la asignación de recursos.

    2. Vuelve a implementar el framework en tu recurso para que el Administrador de cumplimiento pueda reanudar la evaluación del recurso y la creación de hallazgos.

    CLI

    Para actualizar una implementación de framework, ejecuta el comando gcloud compliance-manager framework-deployments update. Para especificar los controles de la nube y los modos de aplicación forzosa que se aplican al framework, usa una de las siguientes opciones:

    • Especifica los controles de la nube y los modos de aplicación forzosa de forma intercalada con la marca --cloud-control-metadata. Si usas esta marca, debes especificar todos los controles de nube y los modos de aplicación forzosa que se aplican al framework.
    • Especifica los controles de nube y los modos de aplicación forzosa en un archivo JSON o YAML. Si usas un archivo, debes especificar todos los controles de nube y los modos de aplicación forzosa que se aplican al framework.
    • Usa las marcas --add-cloud-control-metadata y --remove-cloud-control-metadata para agregar o quitar controles de nube individuales.

    Ejecuta el comando siguiente:

    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]
    

    Reemplaza lo siguiente:

    • FRAMEWORK_DEPLOYMENT: Es el ID de la implementación del framework.

    • LOCATION: Es la región en la que se almacena la implementación del framework.

    • ORGANIZATION o PROJECT_ID: el ID de tu organización o el ID del proyecto.

    • FRAMEWORK_MAJOR_REVISION_ID: Es el ID de la revisión principal del framework al que deseas actualizar. Si omites esta marca, el Administrador de cumplimiento actualiza la implementación a la revisión principal más reciente del framework. No puedes cambiar a un ID de revisión principal anterior.

    • Uno de los siguientes:

      • --cloud-control-metadata=[cloudControlDetails=CLOUD_CONTROL_DETAILS],[enforcementMode=ENFORCEMENT_MODE]: Es la lista de controles de Cloud en el framework, con sus nombres, parámetros, ID de revisión y modo de aplicación forzosa, en el siguiente formato:

      • CLOUD_CONTROL_DETAILS: Es un objeto que incluye la lista de nombres de controles de Cloud, parámetros y IDs de revisión. Usa el siguiente formato:

        • name=NAME: Es el nombre completo del recurso del control de Cloud, en el formato organizations/ORGANIZATION_ID/locations/LOCATION/cloudControls/CLOUD_CONTROL_NAME o projects/PROJECT_ID/locations/LOCATION/cloudControls/CLOUD_CONTROL_NAME.

        • majorRevisionId=MAJOR_REVISION_ID: Es la versión principal del control de Cloud.

        • parameters=PARAMETERS: Son los parámetros opcionales que requieren ciertos controles de la nube.

      • ENFORCEMENT_MODE: Indica si el control es de tipo AUDIT, DETECTIVE o PREVENTIVE.

      • --cloud-control-metadata=PATH_TO_FILE: Es la ruta de acceso a un archivo JSON o YAML que incluye los detalles del control de la nube y los modos de aplicación forzosa. Expande las siguientes secciones para ver ejemplos de archivos JSON y YAML.

        Ejemplo de archivo 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"
            }
          ]
              

        Ejemplo de archivo 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 o --remove-cloud-control-metadata: los controles de la nube que se agregarán o quitarán de la implementación del framework. Puedes usar ambas marcas en el mismo comando. Puedes usar una de las siguientes opciones para especificar más de un control de nube que quieras agregar o quitar:

        • Repite la marca para cada control.
        • Incluye los controles dentro de una lista JSON [ {...}, {...} ] en una sola marca.
        • Proporciona una ruta de acceso a un archivo JSON o YAML que incluya una lista de controles. Usa el mismo esquema que la marca --cloud-control-metadata. Por ejemplo: --add-cloud-control-metadata=add-controls.yaml --remove-cloud-control-metadata=remove-controls.yaml
    • ETAG_ID: Es el identificador de la versión actual de la implementación del framework, que ayuda a garantizar que actualices la versión prevista de la implementación del framework. Si el identificador no coincide con la versión actual, la solicitud falla. Si omites este valor, el Administrador de cumplimiento actualiza la implementación del framework sin condiciones.

    De manera opcional, incluye la marca --async para que se muestre de inmediato sin esperar a que se complete la operación de actualización de larga duración.

    Por ejemplo, para actualizar example-deployment implementado en la organización 3589215982 y almacenado en la ubicación global, ejecuta el siguiente 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=
    

    Para obtener información sobre las marcas opcionales, consulta gcloud compliance-manager framework-deployments update.

    REST

    Para actualizar una implementación de framework in situ, llama al método frameworkDeployments.patch (para organizaciones o proyectos). Especifica el ID de la revisión principal de destino y todos los controles de nube y modos de aplicación forzosa que se aplican al framework en cloudControlMetadata.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • RESOURCE_TYPE: Es el tipo de contenedor de recursos superior para la implementación del framework: organizations o projects.
    • RESOURCE_ID: Es el ID numérico de la organización o el ID del proyecto. Por ejemplo: 3589215982.
    • LOCATION: Es la ubicación de la implementación del framework. Valor admitido: global.
    • FRAMEWORK_DEPLOYMENT: Es el ID de la implementación del framework que deseas actualizar. Por ejemplo: example-deployment.
    • UPDATE_MASK: Es una lista opcional separada por comas de los campos que se reemplazarán, en relación con el recurso FrameworkDeployment. Por ejemplo: framework.majorRevisionId,cloudControlMetadata. Si se omite, se reemplazan todos los campos.
    • FRAMEWORK_NAME: Es el nombre del recurso del framework, en el formato organizations/ORGANIZATION_ID/locations/LOCATION/frameworks/FRAMEWORK_ID o projects/PROJECT_ID/locations/LOCATION/frameworks/FRAMEWORK_ID. Por ejemplo: organizations/3589215982/locations/global/frameworks/builtin-aipp.
    • FRAMEWORK_MAJOR_REVISION_ID: Es el ID de la revisión principal del framework al que deseas actualizar. Si se omite, el Administrador de cumplimiento actualiza la implementación a la revisión principal más reciente del framework.
    • CLOUD_CONTROL_NAME: Es el nombre completo del recurso de un control de la nube en el framework, con el formato organizations/ORGANIZATION_ID/locations/LOCATION/cloudControls/CLOUD_CONTROL_ID.
    • MAJOR_REVISION_ID: Es el ID de la revisión principal del control de Cloud.
    • ENFORCEMENT_MODE: Indica si el control de la nube es un control AUDIT, DETECTIVE o PREVENTIVE.
    • ETAG_ID: Es un identificador opcional para la versión actual de la implementación del framework que evita que las actualizaciones simultáneas se reemplacen entre sí. Por ejemplo: MTc3NDU4MjM4OTY0MzU5MjQ5OTI=.

    Método HTTP y URL:

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

    Cuerpo JSON de la solicitud:

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

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    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

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $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

    Deberías recibir una respuesta JSON similar a la que se muestra a continuación:

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

    La respuesta incluye la siguiente información:

    • name: Es un identificador de cadena único para la operación de actualización de larga duración, que puedes usar para hacer un seguimiento del progreso de la actualización.
    • done: Es una marca booleana que se establece en false cuando se inicia la operación de actualización y en true cuando se completa.

Borra un framework personalizado

Borra un framework cuando ya no sea necesario. Solo puedes borrar los frameworks que creas; no puedes borrar los frameworks integrados.

Console

  1. En la consola de Google Cloud , ve a la página Cumplimiento.

    Ve a cumplimiento

  2. Elige tu organización o proyecto.

  3. En la pestaña Configurar, haz clic en el framework del que deseas anular la asignación de recursos.

  4. En la página Detalles del framework, verifica que el framework no esté asignado a un recurso. Si es necesario, quita las asignaciones.

  5. Haz clic en Acciones > Borrar.

  6. En la ventana Borrar, revisa el mensaje. Escribe Delete y haz clic en Confirmar.

CLI

Para borrar un framework específico de tu organización, ejecuta el comando gcloud compliance-manager frameworks delete:

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

Reemplaza los siguientes valores:

  • FRAMEWORK: Es el nombre del framework.

  • ORGANIZATION: Es el ID de tu organización.

  • LOCATION: la región en la que se almacena el framework

Por ejemplo, para quitar example-framework de la organización 3589215982 y almacenarlo en la ubicación global, ejecuta lo siguiente:

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

Para obtener información sobre las marcas opcionales, consulta gcloud compliance-manager frameworks delete.

¿Qué sigue?