Una cuenta de servicio es una Cuenta de Google especial no humana que las aplicaciones, los procesos automatizados o las cargas de trabajo de procesamiento, como una instancia de Compute Engine, usan para realizar llamadas autorizadas a la API. A diferencia de las cuentas de usuario, una cuenta de servicio se identifica únicamente por su dirección de correo electrónico única.
Las aplicaciones usan cuentas de servicio para autenticarse y obtener acceso a los recursos deGoogle Cloud . Cuando una aplicación se autentica con una cuenta de servicio, obtiene acceso a los recursos para los que se le asignaron permisos explícitos de Identity and Access Management a la cuenta de servicio. Esto proporciona un método seguro, auditable y centralizado para la autorización de máquina a máquina.
En el caso de Secure Web Proxy, las cuentas de servicio desempeñan un papel fundamental en la autorización y la aplicación de políticas. Si usas una cuenta de servicio para identificar la fuente de tráfico de una carga de trabajo, puedes crear políticas detalladas de Secure Web Proxy que permitan o rechacen específicamente el tráfico web según la identidad de la aplicación, en lugar de solo su dirección IP.
Esta página te muestra cómo hacer lo siguiente:
- Crea una instancia del Secure Web Proxy con una política vacía
- Crea una cuenta de servicio y otorga roles de IAM
- Crea reglas de Secure Web Proxy
- Prueba la conectividad de toda la configuración de tu Secure Web Proxy
Antes de comenzar
Completa los pasos de configuración inicial.
Solicita a un administrador de la organización que te otorgue acceso a una cuenta de servicio.
Verifica que tengas instalada la versión 406.0.0 o posterior de Google Cloud CLI:
gcloud version | head -n1Si tienes instalada una versión anterior de gcloud CLI, actualízala:
gcloud components update --version=406.0.0
Crea una instancia de Secure Web Proxy con una política vacía
Para crear una instancia de Secure Web Proxy, primero debes crear una política de seguridad vacía y, luego, crear un proxy web que use la política.
Crea una política de seguridad vacía
Console
En la consola de Google Cloud , ve a la página Políticas de SWP.
Haz clic en Crear una política.
En el campo Nombre, ingresa un nombre para la política, como
myswppolicy.En el campo Descripción, ingresa una descripción para la política, como
My new swp policy.En Regiones, selecciona la región en la que deseas crear la política, como
us-central1.Haz clic en Crear.
Cloud Shell
Usa tu editor de texto preferido para crear un archivo
policy.yaml.Agrega lo siguiente al archivo
policy.yamlque creaste:name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME description: POLICY_DESCRIPTIONReemplaza lo siguiente:
PROJECT_NAME: Nombre de tu proyectoREGION: Es la región en la que se crea tu política, comous-central1.POLICY_NAME: Nombre de la políticaPOLICY_DESCRIPTION: Descripción de tu política
Importa la política de seguridad con el comando
gcloud network-security gateway-security-policies import:gcloud network-security gateway-security-policies import POLICY_NAME \ --source=POLICY_FILE.yaml \ --location=REGION
Crea un proxy web
Console
En la consola de Google Cloud , ve a la página Proxies web.
Haz clic en Crear un proxy web seguro.
En el campo Nombre, ingresa un nombre para el proxy web, como
myswp.En el campo Descripción, ingresa una descripción para el proxy web, como
My new swp.En Modo de enrutamiento, selecciona una de las siguientes opciones:
- Explícito: Implementa tu instancia de Secure Web Proxy en modo de proxy explícito.
- Próximo salto: Implementa tu instancia de Secure Web Proxy en modo de próximo salto.
En Regiones, selecciona la región en la que deseas crear el proxy web, como
us-central1.En Red, selecciona la red en la que deseas crear el proxy web.
En Subred, selecciona la subred de VPC que creaste durante la configuración inicial.
Opcional: En el campo Dirección IP del proxy web, ingresa la dirección IP del Secure Web Proxy.
Puedes ingresar una dirección IP del rango de direcciones IP de Secure Web Proxy que se encuentra en la subred que creaste en el paso anterior. Si no ingresas la dirección IP, tu instancia de Secure Web Proxy elegirá automáticamente una dirección IP de la subred seleccionada.
En Certificado, selecciona el certificado que deseas usar para crear el proxy web.
En Política, selecciona la política que creaste para asociar el proxy web.
Haz clic en Crear.
Cloud Shell
Usa tu editor de texto preferido para crear un archivo
gateway.yaml.Agrega lo siguiente al archivo
gateway.yaml.name: projects/PROJECT_NAME/locations/REGION/gateways/GATEWAY_NAME type: SECURE_WEB_GATEWAY ports: [GATEWAY_PORT_NUMBERS] certificateUrls: [CERTIFICATE_URLS] gatewaySecurityPolicy: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME network: projects/PROJECT_NAME/global/networks/NETWORK_NAME subnetwork: projects/PROJECT_NAME/regions/REGION/subnetworks/SUBNETWORK routingMode: ROUTING_MODE addresses: [GATEWAY_IP_ADDRESS] scope: samplescopeReemplaza lo siguiente:
GATEWAY_NAME: Nombre de esta instancia de Secure Web ProxyGATEWAY_PORT_NUMBERS: Es una lista de números de puerto para esta puerta de enlace, como[80,443].CERTIFICATE_URLS: Lista de URLs de certificados SSLSUBNETWORK: La subred de VPC que creaste durante la configuración inicialROUTING_MODE: Especifica el modo de enrutamiento del proxy web requerido:EXPLICIT_ROUTING_MODE: Implementa tu instancia de Secure Web Proxy en modo de proxy explícitoNEXT_HOP_ROUTING_MODE: Implementa tu instancia de Secure Web Proxy en modo de próximo salto.
GATEWAY_IP_ADDRESS: Es una lista opcional de direcciones IP para tus instancias de Secure Web Proxy dentro de las subredes del proxy que creaste anteriormente en los pasos de configuración inicial.Si decides no incluir direcciones IP, omite el campo para que el proxy web elija una dirección IP por ti.
Crea la instancia del Secure Web Proxy con el comando
gcloud network-services gateways import:gcloud network-services gateways import GATEWAY_NAME \ --source=gateway.yaml \ --location=REGION
Probar conectividad
Para probar la conectividad, usa el comando curl desde cualquier instancia de máquina virtual (VM) dentro de tu red de nube privada virtual (VPC):
curl -x https://GATEWAY_IP_ADDRESS:PORT_NUMBER https://www.example.com --proxy-insecure
Si todo funciona correctamente, tu instancia de Secure Web Proxy devolverá un código de estado 403 Forbidden. Este error confirma lo siguiente:
La instancia de Secure Web Proxy se implementó correctamente y recibe tráfico de forma activa.
La política de Secure Web Proxy aplica correctamente la postura de seguridad predeterminada de rechazar todo el tráfico hasta que definas reglas
allowespecíficas en las próximas secciones.
Crea una cuenta de servicio y otorga roles de IAM
Crea una cuenta de servicio: Usa el comando
gcloud iam service-accounts createpara crear una cuenta de servicio llamadamy-swp-saen tu proyecto Google Cloud.gcloud iam service-accounts create my-swp-sa \ --display-name="Secure Web Proxy service account" \ --description="Service account for Secure Web Proxy instances"
Otorga roles de IAM a la cuenta de servicio: Usa el comando
gcloud projects add-iam-policy-bindingpara otorgar los roles de IAM necesarios a la cuenta de servicio para que pueda administrar o usar recursos en tu proyecto Google Cloud .Por ejemplo, para permitir que la cuenta de servicio use recursos de red, otórgale el rol de usuario de red de Compute (
roles/compute.networkUser).gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:my-swp-sa@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/compute.networkUser"
Reemplaza
PROJECT_IDpor el ID de tu proyecto deGoogle Cloud .
Crea una regla de Secure Web Proxy
Console
En la consola de Google Cloud , ve a la página Políticas de SWP.
Haz clic en el nombre de la política que creaste anteriormente, como
myswppolicy.Haz clic en Agregar regla.
Para cada regla, haz lo siguiente:
En el campo Prioridad, ingresa un orden de evaluación numérico para la regla. Las reglas se evalúan de mayor a menor prioridad, en la que
0es la prioridad más alta.En el campo Nombre, ingresa un nombre para la regla.
En el campo Descripción, ingresa una descripción para la regla.
En Acción, selecciona una de las siguientes opciones:
- Permitir: Para permitir las solicitudes de conexión que coinciden con la regla
- Rechazar: Para rechazar las solicitudes de conexión que coinciden con la regla.
En el campo Estado, selecciona una de las siguientes opciones para la aplicación de la regla:
- Habilitada: Para aplicar la regla en tu instancia de Secure Web Proxy
- Inhabilitado: Para no aplicar la regla en tu instancia de Secure Web Proxy
En la sección Session Match, especifica la dirección de correo electrónico de la cuenta de servicio que creaste anteriormente. Por ejemplo:
sessionMatcher: "source.matchServiceAccount(SERVICE_ACCOUNT) && host() == 'example.com'"Para obtener más información sobre la sintaxis de
SessionMatcher, consulta la referencia del lenguaje del comparador de CEL.En la sección Application Match, especifica los criterios para correlacionar la solicitud.
Haz clic en Agregar regla.
Para agregar otra regla, haz clic en Agregar regla.
Cloud Shell
Usa tu editor de texto preferido para crear el archivo
rule.yaml.Para permitir el acceso a una URL desde la cuenta de servicio adecuada, agrega lo siguiente al archivo
rule.yamlque creaste:name: projects/PROJECT_NAME/locations/REGION/gatewaySecurityPolicies/POLICY_NAME/rules/RULE_NAME description: RULE_DESCRIPTION enabled: true priority: RULE_PRIORITY sessionMatcher: CEL_EXPRESSION basicProfile: ALLOWReemplaza lo siguiente:
RULE_NAME: Nombre de esta reglaRULE_DESCRIPTION: Descripción de la reglaRULE_PRIORITY: Es la prioridad de esta regla. Un número más bajo corresponde a una prioridad más alta.CEL_EXPRESSION: Es una expresión de Common Expression Language (CEL). Para obtener más información, consulta la referencia del lenguaje del comparador de CEL.
Por ejemplo, para permitir el acceso a
example.comdesde el recurso con la cuenta de servicio requerida, agrega lo siguiente al archivo YAML que creaste parasessionMatcher:```yaml sessionMatcher: "source.matchServiceAccount('SERVICE_ACCOUNT') && host() == 'example.com'" ```Reemplaza
SERVICE_ACCOUNTpor la cuenta de servicio que deseas permitir. Debe ser la dirección de correo electrónico de la cuenta de servicio.Importa las reglas que creaste con el comando
gcloud network-security gateway-security-policies rules import:gcloud network-security gateway-security-policies rules import RULE_NAME \ --source=RULE_FILE.yaml \ --location=REGION \ --gateway-security-policy=POLICY_NAME
Probar conectividad
Puedes volver a probar la conectividad para validar que toda la configuración de Secure Web Proxy, incluida la cuenta de servicio, las reglas de la política de seguridad y la puerta de enlace, funcione según lo previsto.
Para probar la conectividad, usa el comando curl desde el recurso (como una instancia de VM) con el SERVICE_ACCOUNT adjunto:
curl -x https://IPv4_ADDRESS:443 http://example.com
--proxy-insecure
Reemplaza IPv4_ADDRESS por la dirección IPv4 de tu instancia de Secure Web Proxy.
Si todo funciona correctamente, recibirás un código de estado 200 OK. Este código de estado confirma los siguientes resultados clave:
Autorización exitosa: Demuestra que la cuenta de servicio asignada identifica correctamente el tráfico que se origina en el recurso y que esta identidad coincide correctamente con la regla
allowque agregaste a la política de seguridad.Funcionalidad de extremo a extremo: Valida que el tráfico fluya correctamente a través de la ruta configurada, desde el recurso > hasta la instancia de Secure Web Proxy > pasando la política de seguridad > y llegando al destino externo.