Usar Controles de Servicio de VPC con Apigee y Apigee hybrid

Esta página se aplica a Apigee y Apigee Hybrid.

Consulta la documentación de Apigee Edge.

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

En esta sección se describe cómo usar Controles de Servicio de VPC con Apigee.

Información general

Controles de Servicio de VPC define un perímetro de servicio que actúa como límite entre un proyecto y otros servicios. Los perímetros de servicio son un método a nivel de organización para proteger los servicios de Google Cloud de tus proyectos y, de esta forma, mitigar el riesgo de filtración externa de datos.

Controles de Servicio de VPC también puede asegurarse de que los clientes de un perímetro que tengan acceso privado a los recursos no tengan acceso a recursos no autorizados fuera del perímetro.

Para obtener información detallada sobre las ventajas de los perímetros de servicio, consulta la descripción general de Controles de Servicio de VPC.

Cuando uses Controles de Servicio de VPC, ten en cuenta lo siguiente:

  • Tanto el proyecto de Google Cloud como su tiempo de ejecución asociado se incluyen en el perímetro de Controles de Servicio de VPC de ese proyecto.
  • La interacción entre los servicios dentro de un perímetro se puede restringir mediante la función Servicios accesibles de la red de VPC.

Tanto Apigee como Apigee Hybrid se integran con Controles de Servicio de VPC. Para ver una lista completa de los productos que se integran con Controles de Servicio de VPC, consulta Productos admitidos.

Impacto en la conectividad a Internet

Cuando los Controles de Servicio de VPC están habilitados, el acceso a Internet está inhabilitado: el tiempo de ejecución de Apigee ya no se comunicará con ningún destino público de Internet. Para ello, debes enrutar el tráfico a tu red VPC mediante rutas personalizadas. Consulta Importar y exportar rutas personalizadas.

Configurar Controles de Servicio de VPC con Apigee

El proceso general para configurar Controles de Servicio de VPC con Apigee es el siguiente:

  1. Habilita Controles de Servicio de VPC.
  2. Crea un perímetro de servicio.
  3. Configura el perímetro de servicio.

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

Para configurar Controles de Servicio de VPC con Apigee, haz lo siguiente:

  1. Habilita los Controles de Servicio de VPC para la conexión emparejada de tu red a Apigee ejecutando el siguiente comando:

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

    Donde:

    • SHARED_VPC_NETWORK es el nombre de tu red de VPC compartida.
    • PROJECT_ID es el nombre del proyecto que aloja la red de VPC compartida. No es el proyecto que se usa para crear la organización de Apigee.

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

  2. Crea un perímetro como se describe en la guía de inicio rápido de Controles de Servicio de VPC. Cuando creas un perímetro, eliges qué proyectos quieres añadir a ese perímetro y qué servicios quieres proteger.

    En Apigee y Apigee Hybrid, Google recomienda proteger todos los servicios al crear un perímetro, incluida la API de Apigee.

    Para obtener más información, consulta el artículo Crear un perímetro de servicio.

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

Para añadir un portal integrado a tu perímetro, consulta Añadir un portal integrado al perímetro.

Configurar Controles de Servicio de VPC con Apigee Hybrid

Apigee hybrid admite Controles de Servicio de VPC, pero debes seguir otros pasos. El proceso general para integrar Apigee hybrid con Controles de 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 aquel que se encuentra dentro del perímetro. No es necesario que sea 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íbrido.

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

Para configurar Controles de Servicio de VPC con Apigee hybrid, haz lo siguiente:

  1. Configura direcciones IP privadas para los hosts de tu red híbrida, tal como se describe en el artículo Configurar la conectividad privada con las APIs y los servicios de Google. Para ello, debes configurar rutas, reglas de cortafuegos y entradas de DNS para que las APIs de Google puedan acceder a esas IPs privadas.
  2. Sigue los pasos que se indican en el artículo sobre cómo configurar Controles de Servicio de VPC con Apigee.

    Durante este proceso, debes asegurarte de proteger los siguientes servicios, además de los que se especifican para Apigee, dentro de tu perímetro:

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

    Para añadir estos servicios a tu perímetro, sigue las instrucciones que se indican en 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 números de la última 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 de un repositorio de GCR ubicado en 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

      Aunque no es obligatorio, Google recomienda que incluya el ID del proyecto u otro valor identificativo en la ruta del repositorio de cada imagen.

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

      En el siguiente ejemplo se insertan las imágenes en un repositorio de GCR ubicado en 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

      Aunque no es obligatorio, Google recomienda que incluya el ID del proyecto u otro valor identificativo en la ruta del repositorio de cada imagen.

  4. Actualiza el archivo de anulaciones para que las URLs de las imágenes dirijan a tu repositorio privado, tal como se describe en el artículo Especificar anulaciones de configuración.

    Debe cambiar las URLs de las imágenes de los siguientes componentes:

    Nombre del componente (en el archivo de anulaciones) URL de 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 nuevas imágenes de GCR, tal como se describe en Aplicar la configuración al clúster.

Conceder acceso a la periferia a portales integrados

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

Si no concede un nivel de acceso a los portales integrados, estos no estarán disponibles para las organizaciones de Apigee que tengan habilitado VPC-SC.

Para conceder un nivel de acceso a los portales, sigue estos pasos:

  • No coloca portales integrados dentro del perímetro.
  • Permite acceder a los portales integrados desde fuera del perímetro.
  • Permite que los usuarios del portal accedan a los datos de Apigee protegidos por VPC-SC (como los datos de aplicaciones) fuera del perímetro de VPC-SC.

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

Requisitos previos

Antes de conceder acceso perimetral a un portal integrado, debes habilitar la API Access Context Manager API en tu proyecto, si aún no lo has hecho. Puedes hacerlo en la consola de Cloud o mediante el comando gcloud services enable.

Para comprobar si la API está habilitada, examina el resultado del comando gcloud services list, tal como se describe en el paso 2: Habilita las APIs de Apigee.

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

  1. Para obtener los detalles de un proyecto de GCP, usa el comando gcloud projects list, como se muestra en el siguiente ejemplo:
    gcloud projects list

    Este comando devuelve el ID del proyecto (en la columna PROJECT_ID) y el número del proyecto (en la columna PROJECT_NUMBER) de cada proyecto de tu organización de GCP.

  2. Identifica la dirección de correo de la cuenta de servicio de Apigee. Es la misma cuenta que creó el instalador de Apigee cuando aprovisionaste tu organización en el paso 3: Crear una organización.

    Para obtener esta dirección de correo, usa el comando iam service-accounts list, que utiliza 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 necesitas es aquella cuya dirección de correo tiene el siguiente formato:
    service-GCP_PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com

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

  3. Para obtener el ID de la política (o del perímetro), usa 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 a 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 la política de VPC-SC (también conocido como ID del perímetro) es el ID del perímetro de servicio de VPC-SC que actúa como límite entre tu proyecto y otros servicios. Es el valor de la columna NAME.

Pasos para conceder acceso perimetral a portales integrados

Para conceder acceso perimetral a un portal integrado, sigue estos pasos:

  1. Obtén la dirección de correo de la cuenta de servicio y el ID de la política de VPC-SC, tal como se describe en la sección Requisitos previos.
  2. Crea un archivo de condiciones en el equipo del administrador que especifique la dirección de la cuenta de servicio que concederá acceso al portal a través del perímetro.

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

  3. En el archivo de condiciones, añade 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 basta con añadir una sección members; no es necesario que añadas una sección de nivel de acceso. Para obtener más información sobre cómo crear un archivo de condiciones, consulta Limitar 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

    Donde:

    • ACCESS_LEVEL_ID es un identificador del nuevo nivel de acceso que se va a conceder. Por ejemplo, my-portal-access-level.
    • ACCESS_LEVEL_TITLE es el título del nivel de acceso. Puedes ponerle el título que quieras, pero Google recomienda que le asignes un valor significativo para que tú y otros administradores sepáis a qué se aplica. Por ejemplo, My Portal Access Level.
    • CONDITIONS_FILE es la ruta al archivo YAML que has creado en el paso anterior.
    • POLICY_ID es el ID de la política o del perímetro.

    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 nuevo nivel de acceso 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

Solución de problemas

Comprueba lo siguiente:

  • Si la API Access Context Manager no está habilitada en tu proyecto de GCP, gcloud te pedirá que la habilites cuando intentes enumerar o definir políticas.
  • Asegúrate de usar el ID de organización de GCP y no el de Apigee cuando obtengas detalles sobre la organización.
  • Algunos comandos descritos 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 existe, 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 visible 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 Controles de Servicio de VPC tienen las siguientes limitaciones:

  • Los portales integrados requieren pasos adicionales para configurarse.
  • Debes implementar portales de Drupal dentro del perímetro de servicio.