Configuración del piso de Model Armor

La configuración de límites de Model Armor define reglas que establecen 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 una organización, carpeta o proyecto). Si hay varios parámetros de configuración de límite que entran en conflicto entre sí, la configuración más baja en la jerarquía de recursos tiene prioridad. Por ejemplo, si se crea una política de configuración mínima 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 de piso de Model Armor. La política de piso X se establece en una carpeta con el filtro de URLs maliciosas habilitado. La política de límite Y se establece en un proyecto dentro de esa carpeta para el filtro de detección de jailbreak y de inyección de instrucciones 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 configurado con un umbral de confianza medio. Una plantilla creada en una carpeta que no sea la carpeta superior de este proyecto no requiere el filtro de URI malicioso.

La configuración de límites ayuda a los CISO 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 mínima activan los resultados. Esto significa que, si se crea una plantilla antes de una configuración de límite y la plantilla tiene una configuración menos restrictiva, aparecerá un hallazgo en Security Command Center para ayudarte a identificar y corregir las plantillas de Model Armor menos seguras.

Habilita y deshabilita la configuración de límite inferior de Model Armor

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

gcloud

  • Habilita la configuración de Model Armor 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 de la plantilla.

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

  • ORGANIZATION_ID es el ID de la organización de 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 límite inferior 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 de la parte inferior de la armadura del modelo.

gcloud

  • Consulta 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'
  • Consulta 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 de la plantilla.
    • FOLDER_ID es el ID de la carpeta de la plantilla.
    • ORGANIZATION_ID es el ID de la organización de la plantilla.

REST

  • Consulta 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"
  • Consulta 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 de la plantilla.
  • FOLDER_ID es el ID de la carpeta de la plantilla.
  • ORGANIZATION_ID es el ID de la organización de la plantilla.

Python

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

  • Consulta 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)
  • Consulta 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 de la plantilla.

Actualiza la configuración de Model Armor

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 límite inferior 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 límite inferior 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 límite inferior 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 de la plantilla.
    • FOLDER_ID es el ID de la carpeta de la plantilla.
    • ORGANIZATION_ID es el ID de la organización de la plantilla.

    El comando update muestra 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 límite inferior 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 límite inferior 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 límite inferior 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 de la plantilla.

Incumplimiento de la configuración del piso

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 determina el nivel menos estricto permitido para cada filtro dentro de una plantilla. Un incumplimiento de la configuración de límite puede implicar una plantilla que no incluya los filtros obligatorios o que no cumpla con el nivel de confianza mínimo para esos filtros. Cuando se detecta una infracción, se publica un resultado de gravedad alta en Security Command Center. El hallazgo especifica el parámetro de configuración de piso que se incumplió, la plantilla que no cumple con los requisitos y los detalles sobre la infracción. Para obtener más información, consulta los resultados del servicio de Model Armor.

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

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