Configuración del piso de Model Armor

La configuración de límites de Model Armor define reglas que determinan los requisitos mínimos para todas las plantillas de Model Armor creadas en un punto específico de la jerarquía de recursos de Google Cloud(es decir, a nivel de la organización, la carpeta o el proyecto). Si hay varios parámetros de configuración de la planta que entran en conflicto entre sí, tienen prioridad los parámetros de configuración que se encuentran más abajo en la jerarquía de recursos. Por ejemplo, si se crea una política de configuración de límite inferior a nivel de la carpeta y del proyecto, se aplicará la política a nivel del proyecto.

Este es un ejemplo para mostrar cómo funciona una política de configuración mínima de Model Armor. La política de precios mínimos X se establece en una carpeta con el filtro de URLs maliciosas habilitado. La política de nivel mínimo Y se establece en un proyecto dentro de esa carpeta para el filtro de detección de inyección de instrucciones y jailbreaking con un umbral de confianza medio. El resultado es que cada plantilla de Model Armor creada en el proyecto debe tener, al menos, el filtro de detección de inyección de instrucciones y jailbreak establecido con un umbral de confianza medio. Una plantilla creada en una carpeta que no sea la carpeta principal de este proyecto no requiere el filtro de URI malicioso.

La configuración de límites ayuda a los CISOs y a los arquitectos de seguridad a aplicar una postura de seguridad mínima en todas las plantillas de Model Armor de su organización, lo que evita que los desarrolladores individuales reduzcan accidental o intencionalmente los estándares de seguridad por debajo de los niveles aceptables. En el caso de los clientes con un nivel Premium o Enterprise de Security Command Center, los incumplimientos de la configuración de la tarifa mínima activan hallazgos. Esto significa que, si se crea una plantilla antes de un parámetro de configuración de límites y la plantilla tiene parámetros de configuración menos restrictivos, aparecerá un hallazgo en Security Command Center para ayudarte a identificar y corregir las plantillas de Model Armor menos seguras.

Cómo habilitar y deshabilitar la configuración de límite de Model Armor

Para habilitar la configuración de límites de Model Armor, establece la marca enable_floor_setting_enforcement en true. En los siguientes ejemplos, se muestra cómo hacerlo.

gcloud

  • Configura el extremo de Model Armor en su extremo global.

      gcloud config set api_endpoint_overrides/modelarmor "https://modelarmor.googleapis.com/"
    
  • Habilita la configuración de Model Armor Floor para un proyecto determinado.

      gcloud model-armor floorsettings update \
       --full-uri='projects/PROJECT_ID/locations/global/floorSetting' \
       --enable-floor-setting-enforcement=true
    
  • Habilita la configuración de Model Armor para una organización determinada.

      gcloud model-armor floorsettings update \
      --full-uri='organizations/ORGANIZATION_ID/locations/global/floorSetting' \
      --enable-floor-setting-enforcement=true
    
  • Habilita la configuración de Model Armor para una carpeta determinada.

      gcloud model-armor floorsettings update \
      --full-uri='folders/FOLDER_ID/locations/global/floorSetting' \
      --enable-floor-setting-enforcement=true
    

    Reemplaza lo siguiente:

  • PROJECT_ID es el ID del proyecto para la plantilla.

  • FOLDER_ID es el ID de la carpeta de la plantilla.

  • ORGANIZATION_ID es el ID de la organización para la plantilla.

REST

  curl -X PATCH
  -d '{"enable_floor_setting_enforcement" : "true"}'
  -H "Content-Type: application/json"
  -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://modelarmor.googleapis.com/v1/projects/PROJECT_ID/locations/global/floorSetting?update_mask=enable_floor_setting_enforcement"
  

Reemplaza PROJECT_ID por el ID del proyecto de la plantilla.

Si no quieres usar la configuración de nivel de Model Armor, establece la marca filter_config en empty o la marca enable_floor_setting_enforcement en false.

gcloud

    gcloud model-armor floorsettings get 
--full-uri='projects/PROJECT_ID/locations/global/floorSetting'
Flags --full-uri = name of the floor setting resource
--enable-floor-setting-enforcement=false
--filterConfig = {}

Reemplaza PROJECT_ID por el ID del proyecto de la plantilla.

    curl -X PATCH 
-H "Content-Type: application/json"
-H "Authorization: Bearer $(gcloud auth print-access-token)"
-d '{"filterConfig" :{},"enable_floor_setting_enforcement":"false"}'
"https://modelarmor.googleapis.com/v1/projects/PROJECT_ID/locations/global/floorSetting"

Reemplaza PROJECT_ID por el ID del proyecto de la plantilla.

Cómo ver la configuración de Model Armor

Ejecuta el siguiente comando para ver la configuración del piso de Model Armor.

gcloud

  • Visualiza el parámetro de configuración de Model Armor para un proyecto determinado.

      gcloud model-armor floorsettings describe \
      --full-uri='projects/PROJECT_ID/locations/global/floorSetting'
  • Consulta el parámetro de configuración de Model Armor para una organización determinada.

      gcloud model-armor floorsettings describe \
      --full-uri='organizations/ORGANIZATION_ID/locations/global/floorSetting'
  • Visualiza el parámetro de configuración de Model Armor para una carpeta determinada.

       gcloud model-armor floorsettings describe \
       --full-uri='folders/FOLDER_ID/locations/global/floorSetting'

    Reemplaza lo siguiente:

    • PROJECT_ID es el ID del proyecto para la plantilla.
    • FOLDER_ID es el ID de la carpeta de la plantilla.
    • ORGANIZATION_ID es el ID de la organización para la plantilla.

REST

  • Visualiza el parámetro de configuración de Model Armor para un proyecto determinado.

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://modelarmor.googleapis.com/v1/projects/PROJECT_ID/locations/global/floorSetting"
  • Visualiza el parámetro de configuración de Model Armor para una carpeta determinada.

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://modelarmor.googleapis.com/v1/folders/FOLDER_ID/locations/global/floorSetting"
  • Consulta el parámetro de configuración de Model Armor para una organización determinada.

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://modelarmor.googleapis.com/v1/organizations/ORGANIZATION_ID/locations/global/floorSetting"

Reemplaza lo siguiente:

  • PROJECT_ID es el ID del proyecto para la plantilla.
  • FOLDER_ID es el ID de la carpeta de la plantilla.
  • ORGANIZATION_ID es el ID de la organización para la plantilla.

Python

Para ejecutar este comando, primero inicializa un cliente de Model Armor en Python.

  • Visualiza el parámetro de configuración de Model Armor para un proyecto determinado.

    request = modelarmor_v1.GetFloorSettingRequest(
    floor_setting={
      "name": "projects/PROJECT_ID/locations/global/floorSetting",
    }
    )
    response = client.get_floor_setting(request=request)
  • Visualiza el parámetro de configuración de Model Armor para una carpeta determinada.

    request = modelarmor_v1.GetFloorSettingRequest(
    floor_setting={
      "name": "folders/FOLDER_ID/locations/global/floorSetting",
    }
    )
    response = client.get_floor_setting(request=request)
  • Consulta el parámetro de configuración de Model Armor para una organización determinada.

    request = modelarmor_v1.GetFloorSettingRequest(
    floor_setting={
      "name": "organizations/ORGANIZATION_ID/locations/global/floorSetting",
    }
    )
    response = client.get_floor_setting(request=request)

    Reemplaza lo siguiente:

    • PROJECT_ID es el ID del proyecto al que pertenece la plantilla.
    • FOLDER_ID es el ID de la carpeta de la plantilla.
    • ORGANIZATION_ID es el ID de la organización para la plantilla.

Actualiza la configuración de Model Armor Floor

Ejecuta el siguiente comando para actualizar la configuración del piso de Model Armor.

gcloud

   gcloud model-armor floorsettings update --full-uri=<full-uri-of-the-floorsetting>

Comando de ejemplo:

       gcloud model-armor floorsettings update \
       --malicious-uri-filter-settings-enforcement=ENABLED \
       --pi-and-jailbreak-filter-settings-enforcement=DISABLED \
       --pi-and-jailbreak-filter-settings-confidence-level=LOW_AND_ABOVE \
       --basic-config-filter-enforcement=ENABLED \
       --add-rai-settings-filters='[{"confidenceLevel": "low_and_above", "filterType": "HARASSMENT"}, {"confidenceLevel": "high", "filterType": "SEXUALLY_EXPLICIT"}]'
       --full-uri='folders/FOLDER_ID/locations/global/floorSetting' \
       --enable-floor-setting-enforcement=true

Reemplaza FOLDER_ID por el ID de la carpeta de la plantilla.

REST

  • Actualiza el parámetro de configuración de nivel mínimo de Model Armor para un proyecto determinado.

    curl -X PATCH -d '{"filterConfig" :{"piAndJailbreakFilterSettings": { "filterEnforcement": "ENABLED"}, "maliciousUriFilterSettings": { "filterEnforcement": "ENABLED" }, "rai_settings":{"rai_filters":{"filter_type":"DANGEROUS", "confidence_level":"LOW_AND_ABOVE" },
    "rai_filters":{"filter_type":"HATE_SPEECH", "confidence_level":"LOW_AND_ABOVE" }, "rai_filters":{"filter_type":"HARASSMENT", "confidence_level":"LOW_AND_ABOVE" }, "rai_filters":{"filter_type":"SEXUALLY_EXPLICIT", "confidence_level":"LOW_AND_ABOVE" }}},"enable_floor_setting_enforcement":"true"}' -H "Content-Type: application/json" -H "Authorization: Bearer $(gcloud auth print-access-token) "https://modelarmor.googleapis.com/v1/projects/PROJECT_ID/locations/global/floorSetting"
  • Actualiza el parámetro de configuración de nivel de Model Armor para una carpeta determinada.

    curl -X PATCH \
    -d '{"filterConfig" :{"piAndJailbreakFilterSettings": { "filterEnforcement": "ENABLED"}, "maliciousUriFilterSettings": { "filterEnforcement": "ENABLED" }},"enable_floor_setting_enforcement":"true"}' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://modelarmor.googleapis.com/v1/folders/FOLDER_ID/locations/global/floorSetting"
  • Actualiza el parámetro de configuración de nivel de Model Armor para una organización determinada.

    curl -X PATCH \
    -d '{"filterConfig" :{"piAndJailbreakFilterSettings": { "filterEnforcement": "ENABLED"}, "maliciousUriFilterSettings": { "filterEnforcement": "ENABLED" }},"enable_floor_setting_enforcement":"true"}' \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        "https://modelarmor.googleapis.com/v1/organizations/ORGANIZATION_ID/locations/global/floorSetting"

    Reemplaza lo siguiente:

    • PROJECT_ID es el ID del proyecto para la plantilla.
    • FOLDER_ID es el ID de la carpeta de la plantilla.
    • ORGANIZATION_ID es el ID de la organización para la plantilla.

    El comando de actualización devuelve la siguiente respuesta:

    {
    "name": "projects/PROJECT_ID/locations/global/floorSetting",
    "updateTime": "2024-12-19T15:36:21.318191Z",
    "filterConfig": {
    "piAndJailbreakFilterSettings": {
      "filterEnforcement": "ENABLED"
    },
    "maliciousUriFilterSettings": {
    "filterEnforcement": "ENABLED"
    }
    }
    }

Python

Para ejecutar este comando, primero inicializa un cliente de Model Armor en Python.

  • Actualiza el parámetro de configuración de nivel mínimo de Model Armor para un proyecto determinado.

    request = modelarmor_v1.UpdateFloorSettingRequest(
    floor_setting={
      "name": "projects/PROJECT_ID/locations/global/floorSetting",
      "filter_config": FILTER_CONFIG,
      "enable_floor_setting_enforcement": True
    }
    )
    response = client.update_floor_setting(request=request)
  • Actualiza el parámetro de configuración de nivel de Model Armor para una carpeta determinada.

    request = modelarmor_v1.UpdateFloorSettingRequest(
    floor_setting={
      "name": "folders/FOLDER_ID/locations/global/floorSetting",
      "filter_config": FILTER_CONFIG
      "enable_floor_setting_enforcement": True
    }
    )
    response = client.update_floor_setting(request=request)
  • Actualiza el parámetro de configuración de nivel de Model Armor para una organización determinada.

    request = modelarmor_v1.UpdateFloorSettingRequest(
    floor_setting={
      "name": "organizations/ORGANIZATION_ID/locations/global/floorSetting",
      "filter_config": FILTER_CONFIG
      "enable_floor_setting_enforcement": True
    }
    )
    response = client.update_floor_setting(request=request)

    Reemplaza lo siguiente:

  • FILTER_CONFIG es la configuración del filtro para la plantilla.

  • PROJECT_ID es el ID del proyecto al que pertenece la plantilla.

  • FOLDER_ID: Es el ID de la carpeta de la plantilla.

  • ORGANIZATION_ID es el ID de la organización para la plantilla.

Incumplimiento de la configuración de límites

Cada hallazgo del servicio de Model Armor identifica un incumplimiento de la configuración de límites que se produce cuando una plantilla de Model Armor no cumple con los estándares de seguridad mínimos definidos por la configuración de límites de la jerarquía de recursos. La configuración de límites establece el nivel menos estricto permitido para cada filtro dentro de una plantilla. Un incumplimiento de la configuración de límites puede involucrar una plantilla que no incluye los filtros obligatorios o que no cumple con el nivel de confianza mínimo para esos filtros. Cuando se detecta un incumplimiento, se publica un hallazgo de gravedad alta en Security Command Center. El hallazgo especifica el parámetro de configuración de límite incumplido, la plantilla que no cumple con los requisitos y los detalles sobre el incumplimiento. Para obtener más información, consulta Hallazgos del servicio de Model Armor.

Este es un ejemplo del campo source_properties del hallazgo dentro del incumplimiento de la configuración de la planta.

{
  "filterConfig": {
    "raiSettings": {
      "raiFilters": [
        {
          "filterType": "HATE_SPEECH",
          "confidenceLevel": {
            "floorSettings": "LOW_AND_ABOVE",
            "template": "MEDIUM_AND_ABOVE"
          }
        },
        {
          "filterType": "HARASSMENT",
          "confidenceLevel": {
            "floorSettings": "MEDIUM_AND_ABOVE",
            "template": "HIGH"
          }
        }
      ]
    },
    "piAndJailbreakFilterSettings": {
      "confidenceLevel": {
        "floorSettings": "LOW_AND_ABOVE",
        "template": "HIGH"
      }
    },
    "maliciousUriFilterSettings": {
      "floorSettings": "ENABLED",
      "template": "DISABLED"
    }
  }
}

¿Qué sigue?