Usa los Controles del servicio de VPC con Apigee Hybrid y Apigee

Estás viendo la documentación de Apigee X.
Consulta la documentación de Apigee Edge.

Apigee se integra a los Controles del servicio de VPC, que te permiten aislar recursos de tus proyectos de Google Cloud. Esto ayuda a evitar filtraciones o robo de datos.

En esta sección, se describe cómo usar los Controles del servicio de VPC con Apigee.

Descripción general

Los Controles del servicio de VPC definen un perímetro de servicio que actúa como un límite entre un proyecto y otros servicios. Los perímetros de servicio son un método a nivel de organización que protegen a los servicios de Google Cloud en los proyectos a fin de mitigar el riesgo de robo de datos.

Los Controles del servicio de VPC también pueden garantizar que los clientes dentro de un perímetro que tengan acceso privado a los recursos no tengan acceso a recursos no autorizados fuera del perímetro.

Para obtener una descripción detallada de los beneficios de los perímetros de servicio, consulta la Descripción general de los Controles del servicio de VPC.

Ten en cuenta lo siguiente cuando uses los Controles del servicio de VPC:

  • Tanto el proyecto de Google Cloud como el entorno de ejecución asociado se incorporan dentro del perímetro de los Controles del servicio de VPC de ese proyecto.
  • La interacción entre servicios dentro de un perímetro se puede restringir mediante la característica de servicios accesibles de red de VPC.

Apigee Hybrid y Apigee Hybrid se integran a los Controles del servicio de VPC. Para ver una lista completa de los productos que se integran con los Controles del servicio de VPC, consulta Productos compatibles.

Impacto en la conexión a Internet

Cuando los Controles del servicio de VPC están habilitados, se inhabilita el acceso a Internet: el entorno de ejecución de Apigee ya no se comunicará con ningún destino de Internet público. Para enrutar el tráfico a tu VPC, debes establecer rutas personalizadas. Consulta Importa y exporta rutas personalizadas.

Configura los Controles del servicio de VPC con Apigee

El proceso general para configurar los Controles del servicio de VPC con Apigee es el siguiente:

  1. Habilitar los controles del servicio de VPC
  2. Crear un nuevo perímetro de servicio
  3. Configurar el perímetro de servicio

Estos archivos se describen con más detalle a continuación.

Para configurar los Controles del servicio de VPC con Apigee:

  1. Habilita los Controles del servicio de VPC para la conexión de intercambio de tráfico de tu red a Apigee mediante la ejecución del comando siguiente:

    gcloud services vpc-peerings enable-vpc-service-controls \
      --network=NETWORK_NAME --project=PROJECT_ID

    Aquí:

    • NETWORK_NAME es el nombre de tu red de VPC.

      Si usaste los valores predeterminados durante la configuración de Apigee, el nombre de la red es “DEFAULT”. Sin embargo, en entornos de producción, este es el nombre de tu red de intercambio de tráfico personalizado.

    • PROJECT_ID es el nombre del proyecto que creaste durante el proceso de configuración de Apigee.

    Este comando habilita los Controles del servicio de VPC para tu proyecto. Puedes ejecutar este comando varias veces para habilitar los Controles del servicio de VPC en más de un proyecto.

  2. Crea un perímetro nuevo como se describe en la Guía de inicio rápido de los Controles del servicio de VPC. Cuando creas un perímetro, eliges qué proyectos agregar dentro de ese perímetro y qué servicios proteger.

    Para Apigee Hybrid y Apigee, Google recomienda que protejas todos los servicios cuando crees un perímetro, incluidas las API de Apigee.

    Para obtener más información, consulta Crea un perímetro de servicio.

  3. Configura el perímetro de servicio, como se describe en Detalles y configuración del perímetro de servicio.

Para agregar un portal integrado dentro de tu perímetro, consulta Agrega un portal integrado al perímetro.

Configura los Controles del servicio de VPC con Apigee Hybrid

Apigee Hybrid admite los Controles del servicio de VPC, pero hay pasos adicionales que debes realizar. El proceso general para integrar Apigee Hybrid en los Controles del servicio de VPC es el siguiente:

  1. Configura la conectividad privada.
  2. Protege servicios adicionales dentro del perímetro.
  3. Configura un repositorio privado. (Un repositorio privado es el único que está dentro del perímetro; no necesita ser un repositorio local siempre que esté dentro del perímetro).
  4. Envía las imágenes de Apigee a tu repositorio privado.
  5. Actualiza las anulaciones para usar el repositorio privado durante el proceso de instalación y configuración híbrida.

Cada uno de estos pasos se describe con más detalle en el siguiente procedimiento.

Para configurar los Controles del servicio de VPC con Apigee Hybrid:

  1. Configura direcciones IP privadas para tus hosts de red híbrida, como se describe en Configura la conectividad privada a las API y a los servicios de Google. Esto implica configurar rutas, reglas de firewall y entradas de DNS para permitir que las API de Google accedan a esas IP privadas.
  2. Sigue los pasos de Configura los Controles del servicio de VPC con Apigee.

    Durante este proceso, debes asegurarte de proteger los siguientes servicios, además de los especificados para Apigee, en tu perímetro:

    • Anthos Service Mesh
    • Cloud Monitoring (Stackdriver)
    • Google Kubernetes Engine (si ejecutas en GKE)
    • Google Container Registry (si lo usas como repositorio local)

    Para agregar estos servicios a tu perímetro, sigue las instrucciones de Detalles y configuración del perímetro de servicio.

  3. Copia las imágenes de Apigee en tu repositorio privado:
    1. Descarga las imágenes firmadas de Apigee desde Docker Hub como se describe aquí. Asegúrate de especificar los últimos números de la versión.

      Por ejemplo:

      docker pull google/apigee-installer:1.3.3
      docker pull google/apigee-authn-authz:1.3.3
      docker pull google/apigee-mart-server:1.3.3
      docker pull google/apigee-synchronizer:1.3.3
      docker pull google/apigee-runtime:1.3.3
      docker pull google/apigee-hybrid-cassandra-client:1.3.3
      docker pull google/apigee-hybrid-cassandra:1.3.3
      docker pull google/apigee-cassandra-backup-utility:1.3.3
      docker pull google/apigee-udca:1.3.3
      docker pull google/apigee-stackdriver-logging-agent:1.6.8
      docker pull google/apigee-prom-prometheus:v2.9.2
      docker pull google/apigee-stackdriver-prometheus-sidecar:0.7.5
      docker pull google/apigee-connect-agent:1.3.3
      docker pull google/apigee-watcher:1.3.3
      docker pull google/apigee-operators:1.3.3
      docker pull google/apigee-kube-rbac-proxy:v0.4.1
    2. Etiqueta las imágenes.

      En el siguiente ejemplo, se etiquetan las imágenes en un repositorio GCR de EE.UU.:

      docker tag google/apigee-installer:1.3.3 us.gcr.io/project_ID/apigee-installer:1.3.3
      docker tag google/apigee-authn-authz:1.3.3 us.gcr.io/project_ID/apigee-authn-authz:1.3.3
      docker tag google/apigee-mart-server:1.3.3 us.gcr.io/project_ID/apigee-mart-server:1.3.3
      docker tag google/apigee-synchronizer:1.3.3 us.gcr.io/project_ID/apigee-synchronizer:1.3.3
      docker tag google/apigee-runtime:1.3.3 us.gcr.io/project_ID/apigee-runtime:1.3.3
      docker tag google/apigee-hybrid-cassandra-client:1.3.3 us.gcr.io/project_ID/apigee-hybrid-cassandra-client:1.3.3
      docker tag google/apigee-hybrid-cassandra:1.3.3 us.gcr.io/project_ID/apigee-hybrid-cassandra:1.3.3
      docker tag google/apigee-cassandra-backup-utility:1.3.3 us.gcr.io/project_ID/apigee-cassandra-backup-utility:1.3.3
      docker tag google/apigee-udca:1.3.3 us.gcr.io/project_ID/apigee-udca:1.3.3
      docker tag google/apigee-stackdriver-logging-agent:1.6.8 us.gcr.io/project_ID/apigee-stackdriver-logging-agent:1.6.8
      docker tag google/apigee-prom-prometheus:v2.9.2 us.gcr.io/project_ID/apigee-prom-prometheus:v2.9.2
      docker tag google/apigee-stackdriver-prometheus-sidecar:0.7.5 us.gcr.io/project_ID/apigee-stackdriver-prometheus-sidecar:0.7.5
      docker tag google/apigee-connect-agent:1.3.3 us.gcr.io/project_ID/apigee-connect-agent:1.3.3
      docker tag google/apigee-watcher:1.3.3 us.gcr.io/project_ID/apigee-watcher:1.3.3
      docker tag google/apigee-operators:1.3.3 us.gcr.io/project_ID/apigee-operators:1.3.3
      docker tag google/apigee-kube-rbac-proxy:v0.4.1 us.gcr.io/project_ID/apigee-kube-rbac-proxy:v0.4.1

      Si bien no es obligatorio, Google recomienda que incluyas el ID del proyecto o cualquier otro valor de identificación en la ruta del repositorio para cada imagen.

    3. Envía las imágenes a tu repositorio privado.

      En el siguiente ejemplo, se envían las imágenes a un repositorio GCR de EE.UU.:

      docker push us.gcr.io/project_ID/apigee-installer:1.3.3
      docker push us.gcr.io/project_ID/apigee-authn-authz:1.3.3
      docker push us.gcr.io/project_ID/apigee-mart-server:1.3.3
      docker push us.gcr.io/project_ID/apigee-synchronizer:1.3.3
      docker push us.gcr.io/project_ID/apigee-runtime:1.3.3
      docker push us.gcr.io/project_ID/apigee-hybrid-cassandra-client:1.3.3
      docker push us.gcr.io/project_ID/apigee-hybrid-cassandra:1.3.3
      docker push us.gcr.io/project_ID/apigee-cassandra-backup-utility:1.3.3
      docker push us.gcr.io/project_ID/apigee-cassandra-backup-utility:1.3.3
      docker push us.gcr.io/project_ID/apigee-udca:1.3.3
      docker push us.gcr.io/project_ID/apigee-stackdriver-logging-agent:1.6.8
      docker push us.gcr.io/project_ID/apigee-prom-prometheus:v2.9.2
      docker push us.gcr.io/project_ID/apigee-stackdriver-prometheus-sidecar:0.7.5
      docker push us.gcr.io/project_ID/apigee-connect-agent1.3.3
      docker push us.gcr.io/project_ID/apigee-watcher1.3.3
      docker push us.gcr.io/project_ID/apigee-operators1.3.3
      docker push us.gcr.io/project_ID/apigee-kube-rbac-proxy:v0.4.1

      Si bien no es obligatorio, Google recomienda que incluyas el ID del proyecto o cualquier otro valor de identificación en la ruta del repositorio para cada imagen.

  4. Actualiza tu archivo de anulaciones para dirigir las URL de imagen a tu repositorio privado, como se describe en Especifica anulaciones de configuración.

    Debes cambiar las URL de imagen de los siguientes componentes:

    Nombre del componente (en el archivo de anulación) URL de la imagen
    ao your_private_repo/apigee-operators
    authz your_private_repo/apigee-authn-authz
    cassandra your_private_repo/apigee-hybrid-cassandra

    auth: your_private_repo/apigee-hybrid-cassandra-client
    backup: your_private_repo/apigee-cassandra-backup-utility
    restore: your_private_repo/apigee-cassandra-backup-utility
    connectAgent your_private_repo/apigee-connect-agent
    installer your_private_repo/apigee-installer
    kubeRBACProxy your_private_repo/apigee-kube-rbac-proxy
    logger your_private_repo/apigee-stackdriver-logging-agent
    mart your_private_repo/apigee-mart-server
    metrics your_private_repo/apigee-prom-prometheus

    sdSidecar: your_private_repo/apigee-stackdriver-prometheus-sidecar
    runtime your_private_repo/apigee-runtime
    synchronizer your_private_repo/apigee-synchronizer
    udca your_private_repo/apigee-udca

    fluentd: your_private_repo/apigee-stackdriver-logging-agent
    watcher your_private_repo/apigee-watcher

  5. Aplica los cambios con las imágenes nuevas en GCR, como se describe en Aplica la configuración al clúster.

Otorga a los portales integrados acceso al perímetro

VPC-SC admite el otorgamiento de niveles de acceso VPC-SC a portales integrados, pero este proceso requiere pasos adicionales, como se describe en esta sección.

Si no otorgas un nivel de acceso a los portales integrados, estos no estarán disponibles para las organizaciones de Apigee compatibles con VPC-SC.

Otorga un nivel de acceso a los portales:

  • No coloca los portales integrados dentro del perímetro.
  • Permite acceder a portales integrados desde el exterior.
  • Permite la exposición de datos de Apigee protegidos de VPC-SC (como los datos de aplicación) a los usuarios del portal fuera del perímetro VPC-SC.

Para obtener más información, consulta Permite el acceso a recursos protegidos desde fuera del perímetro.

Requisitos previos

Antes de otorgar acceso al perímetro a un portal integrado, debes habilitar el Access Context Manager API para tu proyecto, si aún no está habilitado. Puedes hacerlo en Google Cloud Console o mediante el comando services enable.

Para verificar si la API está habilitada, examina el resultado del comando services list, como se describe en Paso 2: Habilita las API de Apigee.

Además, debes tener la dirección de correo electrónico de la cuenta de servicio en el proyecto en que se usa el portal. Para obtener esto, necesita el ID y el número del proyecto de GCP. En los siguientes pasos, se describe cómo obtener estos valores:

  1. Obtén los detalles del proyecto de GCP con el comando projects list, como se muestra en el siguiente ejemplo:
    gcloud projects list

    Con este comando, se muestra el ID del proyecto (en la columna PROJECT_ID) y el número del proyecto (en la columna PROJECT_NUMBER) de cada proyecto en tu organización de GCP.

  2. Identifica la dirección de correo electrónico de la cuenta de servicio de Apigee. Esta es la misma cuenta que el instalador de Apigee creó cuando aprovisionaste tu organización en el Paso 3: Crea una organización.

    Para obtener esta dirección de correo electrónico, usa el comando iam service-accounts list, que usa la siguiente sintaxis:

    gcloud iam service-accounts list --project GCP_PROJECT_ID

    Por ejemplo:

    gcloud iam service-accounts list --project my-project
    
    DISPLAY NAME                              EMAIL                                                DISABLED
    Apigee default service account            service-8675309@gcp-sa-apigee.iam.gserviceaccount.com  False
    Compute Engine default service account     8675309-compute@developer.gserviceaccount.com          False

    La cuenta de servicio que deseas es la que tiene una dirección de correo electrónico que coincide con el siguiente formato:
    service-GCP_PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com

    Por ejemplo:
    service-8675309@gcp-sa-apigee.iam.gserviceaccount.com

  3. Obtén el ID de política (o perímetro) con el comando access-context-manager policies list. Pasa el ID de la organización a este comando, como se muestra en el siguiente ejemplo:

    gcloud access-context-manager policies list --organization=organizations/GCP_ORG_ID

    gcloud responde con una lista de políticas asociadas con la organización especificada. Por ejemplo:

    gcloud access-context-manager policies list --organization=organizations/2244340
    
    NAME          ORGANIZATION      TITLE                 ETAG
    04081981      2244340           Default policy        421924c5a97c0Icu8

    El ID de política de VPC-SC (también conocido como ID de perímetro) es el ID del perímetro de servicio de VPC-SC que actúa como un límite entre tu proyecto y otros servicios). Es el valor de la columna NAME.

Pasos para otorgar acceso del perímetro a los portales integrados

Para otorgar acceso del perímetro a un portal integrado, sigue estos pasos:

  1. Recopila la dirección de correo electrónico de la cuenta de servicio y el ID de política de VPC-SC, como se describe en Requisitos.
  2. Crea un archivo de condiciones en tu máquina de administrador que especifique la dirección de la cuenta de servicio que otorgará al portal acceso a través del perímetro.

    El archivo puede tener el nombre que desees, pero debe tener la extensión *.yaml. Por ejemplo: my-portal-access-rules.yaml

  3. En el archivo de condiciones, agrega una sección members que especifique la cuenta de servicio de Apigee, como se muestra en el siguiente ejemplo:

    - members:
      - serviceAccount:service-8675309@gcp-sa-apigee.iam.gserviceaccount.com

    Ten en cuenta que agregar una sección members es suficiente. no es necesario que agregues una sección de nivel de acceso. Si deseas obtener más información para crear un archivo de condiciones, consulta Limita el acceso por usuario o cuenta de servicio.

  4. Crea un nivel de acceso con el comando access-context-manager levels create. Por ejemplo:
    gcloud access-context-manager levels create ACCESS_LEVEL_ID \
      --title ACCESS_LEVEL_TITLE \
      --basic-level-spec PATH/TO/CONDITIONS_FILE.yaml \
      --policy=POLICY_ID

    Aquí:

    • ACCESS_LEVEL_ID es un identificador para el nivel de acceso nuevo que se otorga. Por ejemplo, my-portal-access-level.
    • ACCESS_LEVEL_TITLE es un título para el nivel de acceso. El título puede ser el que desees, pero Google recomienda que le asignes un valor significativo para que tú y otros administradores sepan a qué se aplica. Por ejemplo, Nivel de acceso a mi portal.
    • CONDITIONS_FILE es la ruta al archivo YAML que creaste en el paso anterior.
    • POLICY_ID es el ID de perímetro o política.

    Por ejemplo:

    gcloud access-context-manager levels create my-portal-access-level \
      --title My Portal Access Level \
      --basic-level-spec ~/my-portal-access-rules.yaml \
      --policy=04081981
  5. Actualiza el perímetro con el nivel de acceso nuevo mediante el comando access-context-manager perimeters update:
    gcloud access-context-manager perimeters update POLICY_ID \
      --add-access-levels=ACCESS_LEVEL_ID \
      --policy=POLICY_ID

    Por ejemplo:

    gcloud access-context-manager perimeters update 04081981 \
      --add-access-levels=my-portal-access-level \
      --policy=04081981

Soluciona problemas

Verifica lo siguiente:

  • Si la API de Access Context Manager no está habilitada para tu proyecto de GCP, gcloud te solicitará que la habilites cuando intentes enumerar o establecer políticas.
  • Asegúrate de usar el ID de la organización de GCP y no el ID de la organización Apigee cuando obtienes detalles sobre la organización.
  • Algunos comandos que se describen en esta sección requieren permisos elevados. Por ejemplo, para obtener detalles sobre las cuentas de servicio de un proyecto, debes ser propietario de ese proyecto.
  • Para verificar que la cuenta de servicio exista, ejecuta el comando iam service-accounts describe, como se muestra en el siguiente ejemplo:

    gcloud iam service-accounts describe service-8675309@gcp-sa-apigee.iam.gserviceaccount.com

    gcloud responde con información sobre la cuenta de servicio, incluido el nombre comercial y el ID del proyecto al que pertenece. Si la cuenta de servicio no existe, gcloud responde con un error NOT_FOUND.

Limitaciones

Las integraciones de Apigee con los Controles del servicio de VPC tienen las siguientes limitaciones:

  • Los portales integrados requieren que se configuren pasos adicionales.
  • Debes implementar portales de Drupal dentro del perímetro de servicio.