Para crear una nueva política de seguridad de Cloud Armor, usa el comando gcloud compute security-policies create.
En el campo type, usa CLOUD_ARMOR para crear una política de seguridad de backend o CLOUD_ARMOR_EDGE para crear una política de seguridad perimetral. La marca type es opcional. Si no se especifica un tipo, se crea una política de seguridad de backend de forma predeterminada:
gcloud compute security-policies create NAME \
[--type=CLOUD_ARMOR|CLOUD_ARMOR_EDGE] \
[--file-format=FILE_FORMAT | --description=DESCRIPTION] \
[--file-name=FILE_NAME]
Reemplaza lo siguiente:
NAME: el nombre de la política de seguridad
FILE_FORMAT: el formato del archivo especificado en --file-name; especifica yaml o json
DESCRIPTION: la descripción de la política de seguridad
FILE_NAME: el nombre de un archivo que contiene una exportación YAML o JSON de la política de seguridad
Con el siguiente comando, se actualiza la política que creaste antes, se activa el análisis de JSON y se cambia el nivel de registro a VERBOSE:
gcloud compute security-policies update my-policy \
--json-parsing=STANDARD \
--log-level=VERBOSE
Para agregar reglas a una política de seguridad, usa el gcloud
compute security-policies rules create PRIORITY comando.
gcloud compute security-policies rules create PRIORITY \
[--security-policy POLICY_NAME] \
[--description DESCRIPTION] \
--src-ip-ranges IP_RANGE,... | --expression EXPRESSION \
--action=[ allow | deny-403 | deny-404 | deny-502 ] \
[--preview]
Reemplaza lo siguiente:
PRIORITY: la prioridad que se asignará a la regla en la política (para obtener información sobre cómo funciona la prioridad de las reglas, consulta
Orden de evaluación de las reglas)
POLICY_NAME: el nombre de tu política de seguridad
DESCRIPTION: una descripción de la regla
IP_RANGE,...: una lista separada por comas de rangos de direcciones IP
EXPRESSION: una expresión del lenguaje de reglas de Cloud Armor
Por ejemplo, el siguiente comando agrega una regla para bloquear el tráfico de los rangos de direcciones IP 192.0.2.0/24 y 198.51.100.0/24. La regla tiene una prioridad de 1, 000 y es una regla en una política llamada my-policy.
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--description "block traffic from 192.0.2.0/24 and 198.51.100.0/24" \
--src-ip-ranges "192.0.2.0/24","198.51.100.0/24" \
--action "deny-403"
Con la marca --preview agregada, la regla se agrega a la política, pero no se aplica, y solo se registra el tráfico que la activa.
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--description "block traffic from 192.0.2.0/24 and 198.51.100.0/24" \
--src-ip-ranges "192.0.2.0/24","198.51.100.0/24" \
--action "deny-403" \
--preview
Usa la marca --expression para especificar una condición personalizada. Para obtener más
información, consulta
Configura los atributos del lenguaje de reglas personalizadas.
El siguiente comando agrega una regla para permitir el tráfico desde la dirección IP 1.2.3.4 y contiene la string example en el encabezado del usuario-agente:
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('example')" \
--action allow \
--description "Block User-Agent 'example'"
Con el siguiente comando, se agrega una regla para bloquear solicitudes si la cookie de la solicitud contiene un valor específico:
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')" \
--action "deny-403" \
--description "Cookie Block"
Con el siguiente comando, se agrega una regla para bloquear solicitudes de la región AU:
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "origin.region_code == 'AU'" \
--action "deny-403" \
--description "AU block"
Con el siguiente comando, se agrega una regla para bloquear las solicitudes de la región AU que no están en el rango de IP especificado:
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "origin.region_code == 'AU' && !inIpRange(origin.ip, '1.2.3.0/24')" \
--action "deny-403" \
--description "country and IP block"
Con el siguiente comando, se agrega una regla para bloquear solicitudes con un URI que coincide con una expresión regular:
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "request.path.matches('/example_path/')" \
--action "deny-403" \
--description "regex block"
Con el siguiente comando, se agrega una regla para bloquear solicitudes si el valor decodificado en Base64 del encabezado de user-id contiene un valor específico:
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')" \
--action "deny-403" \
--description "country and IP block"
Con el siguiente comando, se agrega una regla que usa un conjunto de expresiones preconfiguradas para mitigar los ataques de SQLi:
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "evaluatePreconfiguredWaf('sqli-v422-stable')" \
--action "deny-403"
Con el siguiente comando, se agrega una regla que usa un conjunto de expresiones preconfiguradas para permitir el acceso desde todas las direcciones IP en una lista de direcciones IP con nombre:
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "evaluatePreconfiguredWaf('sourceiplist-fastly')" \
--action "allow"