Cargando…
No se encontraron resultados.

Aplica tus habilidades en la consola de Google Cloud

Obtén acceso a más de 700 labs y cursos

Protege APIs con Apigee X y Cloud Armor

Lab 1 hora 30 minutos universal_currency_alt 1 crédito show_chart Introductorio
info Es posible que este lab incorpore herramientas de IA para facilitar tu aprendizaje.
Obtén acceso a más de 700 labs y cursos

GSP909

Logotipo de los labs de autoaprendizaje de Google Cloud

Descripción general

En este lab, usarás una política de protección contra amenazas de Apigee X para proteger las APIs contra amenazas basadas en contenido. También agregarás Cloud Armor a un balanceador de cargas HTTPS externo global para proporcionar funciones de firewall de aplicación web como protección contra denegación de servicio distribuido (DDoS), mitigación de riesgos de OWASP Top 10 y control de acceso basado en IP y en ubicación geográfica.

Se creó un balanceador de cargas y un grupo de instancias administrado de VMs puente para proporcionar acceso a tu instancia de entorno de ejecución. Aquí se muestra la arquitectura para esta configuración:

Diagrama de flujo que muestra la arquitectura de configuración

Las llamadas entrantes a la API ingresan al proyecto del cliente a través de un balanceador de cargas HTTPS externo global. El balanceador de cargas HTTPS externo no puede reenviar llamadas al proyecto de usuario. En cambio, el balanceador de cargas reenvía la solicitud a un grupo de instancias administrado de VMs puente en el proyecto del cliente. Estas VMs puente están en la red con intercambio de tráfico conectada a la instancia del entorno de ejecución de Apigee, lo que permite que las VMs reenvíen llamadas a la API a la instancia de dicho entorno.

Todo el tráfico HTTP enviado al balanceador de cargas se reenviará a las VMs puente y, luego, a la instancia del entorno de ejecución de Apigee. Agregarás políticas de seguridad de Cloud Armor para bloquear el envío de tráfico específico al entorno de ejecución.

Los ataques JSON y XML usan cargas útiles creadas para sobrecargar los analizadores de JSON y XML, y provocar ataques de denegación del servicio a nivel de la aplicación. Cloud Armor no detecta estos tipos de ataques, pero Apigee, sí. Las políticas JSONThreatProtection y XMLThreatProtection pueden detectar estas cargas útiles maliciosas sin colocar la carga útil en un analizador. Usarás la política JSONThreatProtection para protegerte contra cargas útiles de JSON con errores de formato.

Las instrucciones de este lab son aplicables tanto a las organizaciones pagadas como a las de evaluación.

Objetivos

En este lab, aprenderás a realizar las siguientes tareas:

  • Usar las políticas de protección contra amenazas de Apigee para bloquear cargas útiles de JSON y XML maliciosas
  • Crear una política de Cloud Armor
  • Crear una regla de Cloud Armor para bloquear y permitir solicitudes
  • Aplicar una política de Cloud Armor a un balanceador de cargas
  • Probar una política de Cloud Armor con tráfico HTTP

Configuración

Antes de hacer clic en el botón Comenzar lab

Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.

Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.

Para completar este lab, necesitarás lo siguiente:

  • Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
  • Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta. Nota: Se recomienda que uses una nueva ventana de incógnito para completar este lab.

Cómo iniciar tu lab y acceder a la consola de Google Cloud

  1. Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago. A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:

    • El botón para abrir la consola de Google Cloud
    • El tiempo restante
    • Las credenciales temporales que debes usar para el lab
    • Otra información para completar el lab, si es necesaria
  2. Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).

    El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.

    Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.

    Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usar otra cuenta.
  3. De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.

    {{{user_0.username | "Username"}}}

    También puedes encontrar el nombre de usuario en el panel Detalles del lab.

  4. Haz clic en Siguiente.

  5. Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.

    {{{user_0.password | "Password"}}}

    También puedes encontrar la contraseña en el panel Detalles del lab.

  6. Haz clic en Siguiente.

    Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud. Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
  7. Haz clic para avanzar por las páginas siguientes:

    • Acepta los Términos y Condiciones.
    • No agregues opciones de recuperación o autenticación de dos factores (esta es una cuenta temporal).
    • No te registres para obtener pruebas gratuitas.

Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.

Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar. Ícono del menú de navegación y campo de búsqueda

Activa Cloud Shell

Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.

  1. Haz clic en Activar Cloud Shell Ícono de Activar Cloud Shell en la parte superior de la consola de Google Cloud.

  2. Haz clic para avanzar por las siguientes ventanas:

    • Continúa en la ventana de información de Cloud Shell.
    • Autoriza a Cloud Shell para que use tus credenciales para realizar llamadas a la API de Google Cloud.

Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu Project_ID, . El resultado contiene una línea que declara el Project_ID para esta sesión:

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.

  1. Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
  1. Haz clic en Autorizar.

Resultado:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project

Resultado:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} Nota: Para obtener toda la documentación de gcloud, en Google Cloud, consulta la guía con la descripción general de gcloud CLI.

Tarea 1: Crea un flujo compartido de protección contra amenazas de JSON

En esta tarea, crearás un flujo compartido con una política de JSONThreatProtection y, luego, usarás un hook de flujo para habilitarlo en todas las APIs de Apigee.

La política JSONThreatProtection rechazará las solicitudes JSON entrantes que superen los límites especificados. Si colocas la política en un flujo compartido y lo conectas a un hook de flujo, la política puede proteger cualquier solicitud para todos los proxies implementados en un entorno.

Abre la consola de Apigee

Para abrir la consola de Apigee, haz lo siguiente:

  • En el campo Buscar de la consola de Google Cloud, ingresa Apigee y, luego, haz clic en Administración de APIs de Apigee en los resultados de la búsqueda.

Se abrirá la consola de Apigee y, en la página de destino, se mostrarán vínculos rápidos a ubicaciones de uso frecuente.

  • En el menú de navegación (Menú de navegación), junto a Apigee, haz clic en Fijar (Ícono de fijar).

Apigee ahora está fijada en el menú de navegación.

Crea el flujo compartido

  1. En el menú de navegación, selecciona Desarrollo de proxies > Flujos compartidos.

  2. Haz clic en Crear.

    Un flujo compartido puede contener un conjunto de políticas y condiciones, y puede ejecutarse en proxies de API o en otros flujos compartidos con una política de FlowCallout. En este lab, usarás el flujo compartido en un hook de flujo, que lo conecta a cada proxy implementado en la organización de evaluación.

  3. Asigna el nombre protect-json al flujo compartido y, luego, haz clic en Crear.

  4. Haz clic en la pestaña Desarrollar:

  5. En el menú de la izquierda del flujo compartido, en la sección Flujos compartidos, haz clic en predeterminado.

  6. En el panel sharedflows/default.xml, haz clic en el paso Agregar política (Ícono del paso Agregar política).

  7. En Seleccionar política, selecciona Crear una política nueva.

  8. Selecciona JSON Threat Protection y, luego, establece el Nombre visible y el Nombre como JTP-Protect.

  9. Haz clic en Agregar.

    La política JSONThreatProtection contiene varios elementos que proporcionan límites a las solicitudes de JSON entrantes. Por lo general, estos límites se establecen en función de los valores máximos de tus APIs. En este caso, mantén la configuración predeterminada de la política.

    Esta política solo se ejecutará si el encabezado Content-Type de la solicitud se establece en application/json, lo que indica que la solicitud entrante tiene una carga útil de JSON.

  10. Haz clic en Guardar.

  11. Haz clic en Implementar y, en Entorno, selecciona eval.

  12. Haz clic en Implementar y, luego, en Confirmar.

Conecta el flujo compartido a un hook de flujo

El flujo compartido se conectará al hook de flujo previo al proxy para que se ejecute antes que el proxy.

  1. Navega a Administración > Entornos.

  2. Haz clic en eval > Flow Hooks.

  3. En el menú desplegable de la fila Pre-proxy, selecciona el flujo compartido protect-json y, luego, haz clic en Guardar.

    Probarás este hook de flujo en una tarea posterior.

Haz clic en Revisar mi progreso para verificar el objetivo. Crear un flujo compartido y un hook de flujo

Tarea 2: Agrega una política de seguridad de Cloud Armor

En esta tarea, agregarás una política de seguridad de Cloud Armor para proteger tu balanceador de cargas y controlar el acceso a tus APIs.

Cloud Armor es el firewall de aplicación web de Google Cloud. Se puede especificar una sola política de Cloud Armor para un balanceador de cargas. En este lab, usarás una política de seguridad de Cloud Armor para rechazar tráfico específico antes de que llegue a la instancia de entorno de ejecución de Apigee, lo que protegerá tu API.

Diagrama de flujo que muestra la arquitectura de configuración con Cloud Armor destacado

Nota: El balanceador de cargas no se puede configurar por completo hasta que se conozca la dirección IP de la instancia del tiempo de ejecución de Apigee, por lo que es posible que veas el balanceador de cargas con instancias en mal estado hasta que se complete su configuración.

Crea una nueva política de seguridad

  1. En la pestaña de la consola de Cloud, en el menú de navegación (botón del menú de navegación), haz clic en Ver todos los productos, luego selecciona Seguridad de red en la sección Herramientas de redes y, a continuación, navega a las políticas de Cloud Armor.

  2. Haz clic en Crear política.

  3. En Nombre, especifica protect-apis.

    Esta política de seguridad usará reglas para bloquear el tráfico específico destinado a nuestras APIs de Apigee.

  4. En Acción de la regla predeterminada, selecciona Rechazar.

    Se les denegará el acceso a las APIs a los usuarios, a menos que coincidan con una regla que permita específicamente el tráfico.

  5. En el menú desplegable Código de denegación, selecciona 403 (Prohibido).

    Si una solicitud no coincide con una regla que permite el tráfico, se devolverá al usuario un código de estado 403 (Prohibido).

  6. Haz clic en Paso siguiente.

Agrega una regla de política de seguridad para permitir solicitudes por código de país de origen

Esta regla solo permitirá las solicitudes provenientes de los países especificados.

  1. Haz clic en Agregar una regla.

  2. Haz clic en Modo avanzado.

    Una regla en modo básico solo puede especificar direcciones IP o rangos de direcciones IP para que coincidan. En este caso, quieres especificar los códigos de país permitidos.

  3. En Coincidencia, especifica la siguiente expresión:

    origin.region_code == 'US'

    Para Cloud Armor, region_code se especifica como una región ISO 3166-2. Esta regla coincide con las solicitudes provenientes de Estados Unidos.

  4. En Acción, especifica Permitir.

  5. Establece la Prioridad en 1000 y, luego, haz clic en GUARDAR CAMBIO EN LA REGLA.

Agrega una regla para bloquear ataques de inyección de SQL

Esta regla bloqueará las solicitudes que tengan entradas de SQL que puedan provocar una inyección de SQL.

  1. Haz clic en Agregar una regla.

  2. Haz clic en Modo avanzado.

  3. En Coincidencia, especifica la siguiente expresión:

    evaluatePreconfiguredExpr('sqli-stable', ['owasp-crs-v030001-id942251-sqli', 'owasp-crs-v030001-id942420-sqli', 'owasp-crs-v030001-id942431-sqli', 'owasp-crs-v030001-id942460-sqli', 'owasp-crs-v030001-id942421-sqli', 'owasp-crs-v030001-id942432-sqli'])

    Esta expresión especifica una regla preconfigurada de Cloud Armor. Las reglas preconfiguradas usan firmas estándar de la industria de código abierto para detectar solicitudes maliciosas. Las firmas específicas se pueden inhabilitar proporcionando los nombres de las firmas que se deben desactivar.

    En este caso, las firmas con nivel de sensibilidad 3 y 4 están desactivadas. El nivel de sensibilidad de una firma, también conocido como su nivel de paranoia, especifica una compensación de un nivel de seguridad más alto a expensas de un mayor número de falsos positivos.

    El nivel 1 es el nivel de seguridad predeterminado que rara vez, o nunca, debería tener falsos positivos. El nivel 2 agrega protección adicional contra ataques avanzados y ofuscados. Las firmas de nivel 3 y 4 son más agresivas y tienen muchas más probabilidades de causar falsos positivos. Por ejemplo, las solicitudes POST con cargas útiles de JSON simples pueden marcarse con firmas de nivel 3 o 4.

  4. Deja Acción configurado como Rechazar y Código de denegación como 403 (Prohibido).

  5. Establece la Prioridad en 500.

    Cuando se evalúan las reglas de la política de Cloud Armor, la primera regla que se encuentra y que coincide con la solicitud especifica la acción que se tomará. La verificación de la inyección de SQL debe ocurrir antes de la verificación de la región, porque queremos rechazar las solicitudes que provienen de una región permitida, pero también contienen patrones de inyección de SQL. Si eliges un número de prioridad más pequeño, la verificación de la inyección de SQL se realizará antes de la verificación de la región.

  6. Haz clic en GUARDAR CAMBIO EN LA REGLA.

    Mira la imagen a la derecha. La política contiene 3 reglas Las reglas se evalúan en orden de menor a mayor prioridad, y se usará la primera regla que coincida.

    La primera regla deniega el acceso si se detectan patrones de inyección de SQL.

    La segunda regla permite el acceso si el origen es Estados Unidos.

    La regla final deniega el acceso a todo el tráfico.

  7. Haz clic en Crear política.

    La pestaña Políticas muestra que la nueva política protect-apis tiene 0 objetivos porque aún no la conectaste a tu balanceador de cargas.

Conecta la política al balanceador de cargas

  1. Junto a protect-apis, haz clic en el botón del menú de políticas (botón del menú de políticas) y, luego, en Aplicar política al destino.

  2. En el menú desplegable Backend Service 1, selecciona apigee-proxy-backend y, luego, haz clic en Agregar.

    La página de detalles de la política protect-apis debería mostrar pronto que la política se aplica a 1 destino.

    Nota: Es posible que los cambios de Cloud Armor tarden unos minutos en propagarse al destino.

Haz clic en Revisar mi progreso para verificar el objetivo. Agregar una política de seguridad de Cloud Armor

Tarea 3: Espera a que se complete el aprovisionamiento de la instancia de Apigee

En esta tarea, esperarás a que se complete el aprovisionamiento de la organización de evaluación de Apigee.

El aprovisionamiento de la organización de Apigee puede tardar bastante en completarse. El progreso del aprovisionamiento de la organización se puede supervisar con la API de Apigee.

Inicio de la secuencia de comandos de supervisión

  1. En Cloud Shell, verifica que la variable GOOGLE_CLOUD_PROJECT contenga el nombre de tu proyecto con el siguiente comando:

    echo ${GOOGLE_CLOUD_PROJECT}

    La variable GOOGLE_CLOUD_PROJECT debe contener el nombre de tu proyecto, que es el mismo que el nombre de tu organización de Apigee.

  2. Si la variable GOOGLE_CLOUD_PROJECT no está configurada, configúrala manualmente con un comando como este, reemplazando {project} por el nombre de tu proyecto:

    export GOOGLE_CLOUD_PROJECT={project} Nota: Se deben quitar las llaves durante este paso.
  3. Pega el siguiente comando en Cloud Shell:

    export INSTANCE_NAME=eval-instance; export ENV_NAME=eval; export PREV_INSTANCE_STATE=; echo "waiting for runtime instance ${INSTANCE_NAME} to be active"; while : ; do export INSTANCE_STATE=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${GOOGLE_CLOUD_PROJECT}/instances/${INSTANCE_NAME}" | jq "select(.state != null) | .state" --raw-output); [[ "${INSTANCE_STATE}" == "${PREV_INSTANCE_STATE}" ]] || (echo; echo "INSTANCE_STATE=${INSTANCE_STATE}"); export PREV_INSTANCE_STATE=${INSTANCE_STATE}; [[ "${INSTANCE_STATE}" != "ACTIVE" ]] || break; echo -n "."; sleep 5; done; echo; echo "instance created, waiting for environment ${ENV_NAME} to be attached to instance"; while : ; do export ATTACHMENT_DONE=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${GOOGLE_CLOUD_PROJECT}/instances/${INSTANCE_NAME}/attachments" | jq "select(.attachments != null) | .attachments[] | select(.environment == \"${ENV_NAME}\") | .environment" --join-output); [[ "${ATTACHMENT_DONE}" != "${ENV_NAME}" ]] || break; echo -n "."; sleep 5; done; echo; echo "${ENV_NAME} environment attached, waiting for hello-world to be deployed"; while : ; do export ATTACHMENT_DONE=$(curl -s -H "Authorization: Bearer $(gcloud auth print-access-token)" -X GET "https://apigee.googleapis.com/v1/organizations/${GOOGLE_CLOUD_PROJECT}/instances/${INSTANCE_NAME}/attachments" | jq "select(.attachments != null) | .attachments[] | select(.environment == \"${ENV_NAME}\") | .environment" --join-output); [[ "${ATTACHMENT_DONE}" != "${ENV_NAME}" ]] || break; echo -n "."; sleep 5; done; echo "***ORG IS READY TO USE***";

    Esta serie de comandos usa la API de Apigee para determinar cuándo se creó la instancia del entorno de ejecución y se conectó el entorno de evaluación.

  4. Espera hasta que la instancia esté lista.

    Cuando se imprime el texto ***ORG IS READY TO USE***, la instancia está lista.

    Nota: Si el comando indica de inmediato que la organización está lista para usarse, es posible que el lab se haya precalentado antes de que ingresaras.

    Mientras esperas que la organización esté lista, puedes explorar una descripción general, reglas personalizadas y reglas preconfiguradas de Cloud Armor.

Haz clic en Revisar mi progreso para verificar el objetivo. Espera a que la instancia esté lista

Tarea 4: Prueba desde una región permitida

En esta tarea, verificarás que la política de seguridad de Cloud Armor proteja tus APIs, pero permita el tráfico aceptable de la región permitida, y que el hook de flujo proteja contra amenazas de JSON.

Se creó automáticamente una máquina virtual llamada apigeex-test-vm para ti. Puedes usar esta máquina para llamar a la API desde Estados Unidos.

  1. En Cloud Shell, abre una conexión SSH a tu VM de prueba en Estados Unidos:

    TEST_VM_ZONE=$(gcloud compute instances list --filter="name=('apigeex-test-vm')" --format "value(zone)") gcloud compute ssh apigeex-test-vm --zone=${TEST_VM_ZONE} --force-key-file-overwrite
  2. Si aparece la pregunta Do you want to continue (Y/n)?, presiona Y para continuar.

  3. Para cada pregunta que se haga en Cloud Shell, haz clic en Intro o Retorno para especificar la entrada predeterminada.

    La identidad con la que accediste es la propietaria del proyecto, por lo que se permite la conexión SSH a esta máquina.

    Tu sesión de Cloud Shell ahora se ejecuta dentro de la VM.

  4. Verifica que ahora se pueda acceder al proxy de la API de hello-world:

    export PREV_STATUS_CODE=; echo "waiting for hello-world to be accessible"; while : ; do export STATUS_CODE=$(curl -k -s -o /dev/null -w "%{http_code}" --max-time 5 -X GET "https://eval.example.com/hello-world"); [[ "${STATUS_CODE}" == "${PREV_STATUS_CODE}" ]] || (echo; echo "STATUS_CODE=${STATUS_CODE}"); export PREV_STATUS_CODE=${STATUS_CODE}; [[ "${STATUS_CODE}" != "200" ]] || break; echo -n "."; sleep 5; done; echo; echo "***HELLO-WORLD IS ACCESSIBLE***";

    Puede llevar un poco de tiempo implementar el proxy de hello-world y que esté disponible a través del balanceador de cargas externo. Cuando estos comandos devuelven ***HELLO-WORLD IS ACCESSIBLE***, el proxy hello-world está disponible.

  5. Llama al proxy de la API de hello-world implementado en el entorno eval:

    curl -i -k "https://eval.example.com/hello-world"

    Se creó una entrada de DNS para el nombre de host eval.example.com con la dirección IP entrante de tu balanceador de cargas.

    La opción -i muestra el código de estado y el encabezado de la respuesta.

    La opción -k omite la verificación del certificado TLS del balanceador de cargas, ya que el certificado TLS que se usa para el balanceador de cargas es un certificado autofirmado, no un certificado verificado por una autoridad conocida.

    Nota: No se debe usar la opción -k para omitir la validación de certificados en un entorno de producción.

    La VM está ubicada en Estados Unidos, por lo que tu comando curl debería devolver correctamente la respuesta Hello, Guest! generada por el proxy hello-world:

    HTTP/2 200 x-powered-by: Apigee access-control-allow-origin: * x-frame-options: ALLOW-FROM RESOURCE-URL x-xss-protection: 1 x-content-type-options: nosniff content-type: text/plain; charset=utf-8 content-length: 13 etag: W/"d-GHB1ZrJKk/wdVTdB/jgBsw" date: Mon, 30 Aug 2021 19:14:45 GMT alt-svc: clear alt-svc: clear x-request-id: b5532b95-c051-4f21-a131-07da1574edc3 server: apigee via: 1.1 google, 1.1 google Hello, Guest!
  6. Llama al proxy hello-world con este comando:

    curl -i -k -X POST "https://eval.example.com/hello-world" -H "Content-Type: application/json" -d '{ "ThisIsAReallyLongElementNameIMeanReallyReallyReallyLong": 42 }'

    Esta solicitud supera el límite de ObjectEntryNameLength especificado en la política JSONThreatProtection incluida en el flujo compartido. El flujo compartido se adjunta a todos los proxies de API con el hook de flujo pre-proxy.

    Tu respuesta debería verse similar a lo siguiente:

    HTTP/2 500 content-type: application/json x-request-id: 5360a9fb-b0b9-4fce-968c-22c2d3fd57dd content-length: 235 date: Mon, 30 Aug 2021 19:16:17 GMT server: apigee via: 1.1 google alt-svc: clear {"fault":{"faultstring":"JSONThreatProtection[JTP-Protect]: Execution failed. reason: JSONThreatProtection[JTP-Protect]: Exceeded object entry name length at line 1","detail":{"errorcode":"steps.jsonthreatprotection.ExecutionFailed"}}} Nota: El código de estado predeterminado que se devuelve es 500, lo que indica un error del servidor. En un uso de producción de esta política, tiene más sentido reescribir el error que indica un problema con la solicitud (como 400 Solicitud incorrecta), no un error del servidor.
  7. Intenta llamar al proxy de API hello-world con este comando:

    curl -i -k "https://eval.example.com/hello-world?item=name'%20OR%20'a'='a"

    El parámetro de consulta item usa un patrón de inyección de SQL que puede tener consecuencias no deseadas si se crea una consulta en SQL concatenando cadenas.

    Cloud Armor detecta correctamente el patrón de inyección de SQL y bloquea la solicitud, lo que devuelve una respuesta 403 (Prohibido):

    HTTP/2 403 content-length: 134 content-type: text/html; charset=UTF-8 date: Thu, 22 Jul 2021 18:50:03 GMT alt-svc: clear <!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden Nota: Las reglas de Cloud Armor pueden tardar unos minutos en propagarse. Si la solicitud no se bloquea, vuelve a intentar la llamada hasta que se bloquee.
  8. Escribe exit para detener la conexión SSH a tu máquina virtual de Estados Unidos.

Tarea 5: Prueba la política de seguridad desde una región no permitida

En esta tarea, verificarás que la política de seguridad de Cloud Armor no permita el tráfico para una región que no se haya incluido en la lista de entidades permitidas.

Se creó automáticamente una máquina virtual llamada apigeex-outside-us en la zona . Puedes usar esta máquina para llamar a la API desde fuera de Estados Unidos.

  1. En Cloud Shell, abre una conexión SSH a tu VM de prueba fuera de Estados Unidos:
export SECOND_VM_NAME=apigeex-outside-us export SECOND_VM_ZONE={{{project_0.default_zone_2| Secondary Zone}}} gcloud compute ssh ${SECOND_VM_NAME} --zone=${SECOND_VM_ZONE} --force-key-file-overwrite
  1. Si se te solicita autorización, haz clic en Autorizar.

  2. Para cada pregunta que se haga en Cloud Shell, haz clic en Intro o Retorno para especificar la entrada predeterminada.

    La identidad con la que accediste es la propietaria del proyecto, por lo que se permite la conexión SSH a esta máquina.

    Tu sesión de Cloud Shell ahora se ejecuta dentro de la VM.

  3. Llama al proxy de la API de hello-world implementado en el entorno eval:

    curl -i -k "https://eval.example.com/hello-world"

    La VM no está ubicada en Estados Unidos, por lo que Cloud Armor debería bloquear la solicitud y devolver un código de error 403:

    HTTP/2 403 content-length: 134 content-type: text/html; charset=UTF-8 date: Thu, 22 Jul 2021 22:47:06 GMT alt-svc: clear <!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden

Tarea 6: Explora la supervisión de políticas para Cloud Armor

En esta tarea, consultarás el panel de políticas de Cloud Armor en Cloud Monitoring.

  1. En la pestaña Consola de Cloud, navega a Monitoring > Paneles.

  2. Haz clic en Network Security Policies.

    Este panel muestra la tasa de solicitudes permitidas y bloqueadas para todas las políticas de Cloud Armor. Actualmente, solo tienes una política.

  3. En el panel Políticas, haz clic en protect-apis.

    Este panel muestra la tasa de solicitudes permitidas y bloqueadas para la política protect-apis.

    Para registrar los detalles de solicitudes individuales, deberás activar el registro de solicitudes para el balanceador de cargas.

¡Felicitaciones!

En este lab, creaste una política de Cloud Armor y la usaste para rechazar o permitir el tráfico entrante en función de tus reglas de Cloud Armor.

Próximos pasos y más información

Capacitación y certificación de Google Cloud

Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.

Última actualización del manual: 28 de enero de 2025

Prueba más reciente del lab: 28 de enero de 2025

Copyright 2025 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.

Antes de comenzar

  1. Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
  2. .
  3. Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
  4. En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar

Usa la navegación privada

  1. Copia el nombre de usuario y la contraseña proporcionados para el lab
  2. Haz clic en Abrir la consola en modo privado

Accede a la consola

  1. Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
  2. Acepta las condiciones y omite la página de recursos de recuperación
  3. No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto

Este contenido no está disponible en este momento

Te enviaremos una notificación por correo electrónico cuando esté disponible

¡Genial!

Nos comunicaremos contigo por correo electrónico si está disponible

Un lab a la vez

Confirma para finalizar todos los labs existentes y comenzar este

Usa la navegación privada para ejecutar el lab

Usa una ventana de navegación privada o de Incógnito para ejecutar el lab. Así evitarás cualquier conflicto entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.