Usar os VPC Service Controls com o Apigee e o Apigee Hybrid

Esta página aplica-se ao Apigee e ao Apigee Hybrid.

Veja a documentação do Apigee Edge.

O Apigee integra-se com os VPC Service Controls, que lhe permitem isolar recursos dos seus projetos do Google Cloud. Isto ajuda a evitar fugas/exfiltração de dados.

Esta secção descreve como usar os VPC Service Controls com o Apigee.

Vista geral

O VPC Service Controls define um perímetro de serviço que funciona como um limite entre um projeto e outros serviços. Os perímetros de serviço são um método ao nível da organização para proteger os serviços do Google Cloud nos seus projetos, de modo a mitigar o risco de exfiltração de dados.

Os VPC Service Controls também podem garantir que os clientes dentro de um perímetro que têm acesso privado a recursos não têm acesso a recursos não autorizados fora do perímetro.

Para uma análise detalhada das vantagens dos perímetros de serviço, consulte a vista geral dos VPC Service Controls.

Quando usar os VPC Service Controls, tenha em atenção que:

  • O projeto do Google Cloud e o respetivo tempo de execução associado estão incluídos no perímetro do VPC Service Controls desse projeto.
  • A interação entre serviços dentro de um perímetro pode ser restrita através da funcionalidade Serviços acessíveis da rede VPC.

O Apigee e o Apigee Hybrid integram-se com o VPC Service Controls. Para ver uma lista completa dos produtos que se integram com o VPC Service Controls, consulte os produtos suportados.

Impacto na conetividade à Internet

Quando os VPC Service Controls estão ativados, o acesso à Internet é desativado: o tempo de execução do Apigee deixa de comunicar com qualquer destino público da Internet. Tem de encaminhar o tráfego para a sua VPC estabelecendo rotas personalizadas. Consulte o artigo Importar e exportar encaminhamentos personalizados.

Configurar o VPC Service Controls com o Apigee

O processo geral de configuração do VPC Service Controls com o Apigee é o seguinte:

  1. Ative os VPC Service Controls.
  2. Crie um novo perímetro de serviço.
  3. Configure o perímetro de serviço.

Estes passos são descritos mais detalhadamente abaixo.

Para configurar o VPC Service Controls com o Apigee:

  1. Ative os VPC Service Controls para a ligação de peering da sua rede ao Apigee executando o seguinte comando:

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

    Onde:

    • SHARED_VPC_NETWORK é o nome da sua rede VPC partilhada.
    • PROJECT_ID é o nome do projeto que aloja a rede VPC partilhada; não é o projeto usado para criar a organização Apigee.

    Este comando ativa os VPC Service Controls para o seu projeto. Pode executar este comando várias vezes para ativar os VPC Service Controls para mais do que um projeto.

  2. Crie um novo perímetro conforme descrito no guia de início rápido do VPC Service Controls. Quando cria um perímetro, escolhe os projetos a adicionar nesse perímetro, bem como os serviços a proteger.

    Para o Apigee e o Apigee Hybrid, a Google recomenda que proteja todos os serviços quando cria um perímetro, incluindo a API Apigee.

    Para mais informações, consulte o artigo Criar um perímetro de serviço.

  3. Configure o perímetro de serviço, conforme descrito nos detalhes do perímetro de serviço e na configuração.

Para adicionar um portal integrado no seu perímetro, consulte o artigo Adicionar um portal integrado ao perímetro.

Configurar o VPC Service Controls com o Apigee Hybrid

O Apigee hybrid suporta os VPC Service Controls, mas tem de realizar passos adicionais. O processo geral de integração do Apigee hybrid com o VPC Service Controls é o seguinte:

  1. Configure a conetividade privada.
  2. Proteja serviços adicionais dentro do perímetro.
  3. Configure um repositório privado. (Um repositório privado é um que está dentro do perímetro. Não tem necessariamente de ser um repositório local, desde que esteja dentro do perímetro.)
  4. Envie as imagens do Apigee para o seu repositório privado.
  5. Atualize as substituições para usar o repositório privado durante o processo de instalação e configuração híbrido.

Cada um destes passos é descrito mais detalhadamente no procedimento seguinte.

Para configurar o VPC Service Controls com o Apigee Hybrid:

  1. Configure endereços IP privados para os anfitriões da sua rede híbrida, conforme descrito no artigo Configurar a conetividade privada às APIs e aos serviços Google. Isto envolve a configuração de rotas, regras de firewall e entradas de DNS para permitir que as APIs Google acedam a esses IPs privados.
  2. Siga os passos em Configurar o VPC Service Controls com o Apigee.

    Durante este processo, tem de garantir a segurança dos seguintes serviços, além dos especificados para o Apigee, dentro do seu perímetro:

    • Anthos Service Mesh
    • Cloud Monitoring (Stackdriver)
    • Google Kubernetes Engine (se estiver a ser executado no GKE)
    • Google Container Registry (se o estiver a usar como repositório local)

    Para adicionar estes serviços ao seu perímetro, siga as instruções em Detalhes do perímetro de serviço e configuração.

  3. Copie as imagens do Apigee para o seu repositório privado:
    1. Transfira as imagens assinadas do Apigee a partir do Docker Hub, conforme descrito aqui. Certifique-se de que especifica os números da versão mais recentes.

      Por exemplo:

      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. Etiquete as imagens.

      O exemplo seguinte etiqueta as imagens num repositório do GCR sediado nos EUA:

      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

      Embora não seja obrigatório, a Google recomenda que inclua o ID do projeto ou outro valor de identificação no caminho do repositório para cada imagem.

    3. Envie as imagens para o seu repositório privado.

      O exemplo seguinte envia as imagens para um repositório do GCR sediado nos EUA:

      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

      Embora não seja obrigatório, a Google recomenda que inclua o ID do projeto ou outro valor de identificação no caminho do repositório para cada imagem.

  4. Atualize o ficheiro de substituições para direcionar os URLs das imagens para o seu repositório privado, conforme descrito em Especifique substituições de configuração

    Tem de alterar os URLs das imagens dos seguintes componentes:

    Nome do componente (no ficheiro de substituições) URL da imagem
    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. Aplique as alterações com as novas imagens no GCR, conforme descrito em Aplique a configuração ao cluster.

Conceder acesso dos portais integrados ao perímetro

O VPC-SC suporta a concessão de níveis de acesso do VPC-SC a portais integrados, mas este processo requer passos adicionais, conforme descrito nesta secção.

Se não conceder um nível de acesso a portais integrados, estes ficam indisponíveis para organizações do Apigee com o VPC-SC ativado.

Conceder um nível de acesso a portais:

  • Não coloca portais integrados no perímetro.
  • Permite o acesso a portais integrados a partir do exterior do perímetro.
  • Permite a exposição de dados do Apigee protegidos pelo VPC-SC (como dados de aplicações) a utilizadores do portal fora do perímetro do VPC-SC.

Para mais informações, consulte o artigo Permitir o acesso a recursos protegidos a partir do exterior de um perímetro.

Pré-requisitos

Antes de conceder acesso ao perímetro a um portal integrado, tem de ativar a Access Context Manager API para o seu projeto, se ainda não estiver ativada. Pode fazê-lo na Cloud Console ou através do comando gcloud services enable.

Para verificar se a API está ativada, examine o resultado do comando gcloud services list, conforme descrito no Passo 2: ative as APIs Apigee.

Além disso, tem de ter o endereço de email da conta de serviço do projeto no qual o portal é usado. Para o obter, precisa do ID e do número do projeto da GCP. Os passos seguintes descrevem como obter estes valores:

  1. Obtenha detalhes do projeto da GCP através do comando gcloud projects list, como mostra o exemplo seguinte:
    gcloud projects list

    Este comando devolve o ID do projeto (na coluna PROJECT_ID) e o número do projeto (na coluna PROJECT_NUMBER) para cada projeto na sua organização da GCP.

  2. Identifique o endereço de email da conta de serviço do Apigee. Esta é a mesma conta que o instalador do Apigee criou quando aprovisionou a sua organização no Passo 3: crie uma organização.

    Para obter este endereço de email, use o comando iam service-accounts list, que usa a seguinte sintaxe:

    gcloud iam service-accounts list --project GCP_PROJECT_ID

    Por exemplo:

    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

    A conta de serviço que quer é aquela cujo endereço de email corresponde ao seguinte formato:
    service-GCP_PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com

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

  3. Obtenha o ID da política (ou do perímetro) através do comando access-context-manager policies list. Transmita o ID da organização para este comando, como mostra o exemplo seguinte:

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

    gcloud responde com uma lista de políticas associadas à organização especificada; por exemplo:

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

    O ID da política do VPC-SC (também conhecido como ID do perímetro) é o ID do perímetro de serviço do VPC-SC que atua como um limite entre o seu projeto e outros serviços). É o valor na coluna NAME.

Passos para conceder acesso ao perímetro a portais integrados

Para conceder acesso ao perímetro a um portal integrado:

  1. Reúna o endereço de email da conta de serviço e o ID da política do VPC-SC, conforme descrito nos Pré-requisitos.
  2. Crie um ficheiro de condições no seu computador de administrador que especifique o endereço da conta de serviço que vai conceder o acesso ao portal através do perímetro.

    O ficheiro pode ter qualquer nome, mas tem de ter a extensão *.yaml. Por exemplo, my-portal-access-rules.yaml.

  3. No ficheiro de condições, adicione uma secção members que especifique a conta de serviço do Apigee, como mostra o exemplo seguinte:

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

    Tenha em atenção que adicionar uma secção members é suficiente. Não precisa de adicionar uma secção de nível de acesso. Para mais informações sobre como criar um ficheiro de condições, consulte o artigo Limite o acesso por utilizador ou conta de serviço.

  4. Crie um nível de acesso com o comando access-context-manager levels create; por exemplo:
    gcloud access-context-manager levels create ACCESS_LEVEL_ID \
      --title ACCESS_LEVEL_TITLE \
      --basic-level-spec PATH/TO/CONDITIONS_FILE.yaml \
      --policy=POLICY_ID

    Onde:

    • ACCESS_LEVEL_ID é um identificador do novo nível de acesso que está a ser concedido; por exemplo, my-portal-access-level.
    • ACCESS_LEVEL_TITLE é um título para o nível de acesso. O título pode ser o que quiser, mas a Google recomenda que lhe atribua um valor significativo para que você e outros administradores saibam a que se aplica. Por exemplo, O meu nível de acesso ao portal.
    • CONDITIONS_FILE é o caminho para o ficheiro YAML que criou no passo anterior.
    • POLICY_ID é o ID da política ou do perímetro.

    Por exemplo:

    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. Atualize o perímetro com o novo nível de acesso através do comando access-context-manager perimeters update:
    gcloud access-context-manager perimeters update POLICY_ID \
      --add-access-levels=ACCESS_LEVEL_ID \
      --policy=POLICY_ID

    Por exemplo:

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

Resolução de problemas

Verifique o seguinte:

  • Se a API Access Context Manager não estiver ativada para o seu projeto da GCP, gcloud pede-lhe que a ative quando tentar listar ou definir políticas.
  • Certifique-se de que usa o ID da organização do GCP e não o ID da organização do Apigee quando obtiver detalhes sobre a organização.
  • Alguns comandos descritos nesta secção requerem autorizações elevadas. Por exemplo, para obter detalhes sobre as contas de serviço de um projeto, tem de ser proprietário desse projeto.
  • Para verificar se a conta de serviço existe, execute o comando iam service-accounts describe, como mostra o exemplo seguinte:

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

    O gcloud responde com informações sobre a conta de serviço, incluindo o nome a apresentar e o ID do projeto ao qual pertence. Se a conta de serviço não existir, o gcloud responde com um erro NOT_FOUND.

Limitações

As integrações do Apigee com os VPC Service Controls têm as seguintes limitações:

  • Os portais integrados requerem passos adicionais para a configuração.
  • Tem de implementar portais do Drupal dentro do perímetro do serviço.