Como usar o VPC Service Controls com a Apigee e a Apigee híbrida

Você está vendo a documentação da Apigee X.
Ver a documentação da Apigee Edge

A Apigee integra-se ao VPC Service Controls, que permite isolar recursos de seus projetos do Google Cloud. Isso ajuda a evitar vazamentos/exfiltração de dados.

Nesta seção, descrevemos como usar o VPC Service Controls com a Apigee.

Visão geral

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

O VPC Service Controls também pode garantir que os clientes dentro de um perímetro com acesso particular aos recursos não acessem recursos não autorizados fora do perímetro.

Para uma visão detalhada dos benefícios dos perímetros de serviço, consulte a Visão geral do VPC Service Controls.

Ao usar o VPC Service Controls, observe se:

  • o projeto do Google Cloud e o ambiente 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 usando o recurso serviços acessíveis de rede VPC.

Tanto a Apigee quanto a Apigee híbrida se integram com o VPC Service Controls. Para uma lista completa de produtos integrados ao VPC Service Controls, consulte Produtos compatíveis.

Impacto na conectividade da Internet

Quando o VPC Service Controls está ativado, o acesso à Internet é desativado: o ambiente de execução da Apigee não se comunicará mais com nenhum destino da Internet pública. É necessário rotear o tráfego para a VPC estabelecendo rotas personalizadas. Consulte Como importar e exportar rotas personalizadas.

Como configurar o VPC Service Controls com a Apigee

O processo geral para configurar o VPC Service Controls com a Apigee é o seguinte:

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

Esses arquivos são descritos com mais detalhes abaixo.

Para configurar o VPC Service Controls com a Apigee:

  1. Ative o VPC Service Controls para conectar com peering sua rede à Apigee executando o seguinte comando:

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

    Em que:

    • NETWORK_NAME é o nome da rede de peering de VPC.

      Se usou os valores padrão durante a configuração da Apigee, o nome da rede é "DEFAULT". No entanto, em ambientes de produção, este é o nome da sua rede de peering personalizada.

    • PROJECT_ID é o nome do projeto que você criou durante o processo de configuração da Apigee.

    Esse comando ativa o VPC Service Controls do projeto. É possível executar este comando várias vezes para ativar o VPC Service Controls em mais de um projeto.

  2. Crie um novo perímetro, conforme descrito no Guia de início rápido do VPC Service Controls. Ao criar um perímetro, você escolhe quais projetos adicionar nele e quais serviços serão protegidos.

    Para a Apigee e a Apigee híbrida, o Google recomenda que você proteja todos os serviços ao criar um perímetro, incluindo as APIs da Apigee.

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

  3. Configure o perímetro de serviço, conforme descrito em Detalhes e configuração do perímetro de serviço.

Para adicionar um portal integrado ao perímetro, consulte Como adicionar um portal integrado ao perímetro.

Como configurar VPC Service Controls com a Apigee híbrida

A Apigee híbrida oferece suporte ao VPC Service Controls, mas há outras etapas que precisam ser executadas. O processo geral para integrar a Apigee híbrida com o VPC Service Controls é o seguinte:

  1. Configure a conectividade particular
  2. Proteja serviços adicionais dentro do perímetro.
  3. Configure um repositório particular. Um repositório particular é aquele que está dentro do perímetro. Ele não precisa ser necessariamente um repositório local, desde que esteja dentro do perímetro.
  4. Envie as imagens do Apigee para seu repositório particular.
  5. Atualize as modificações para usar o repositório particular durante o processo de instalação híbrida e configuração.

Cada uma dessas etapas é descrita em mais detalhes no procedimento a seguir.

Para configurar o VPC Service Controls com a Apigee híbrida:

  1. Configure endereços IP particulares para os hosts da rede híbrida, conforme descrito em Como configurar a conectividade particular com APIs e serviços do Google. Isso envolve configurar rotas, regras de firewall e entradas de DNS para permitir que as APIs do Google acessem esses IPs particulares.
  2. Siga as etapas em Como configurar o VPC Service Controls com a Apigee.

    Durante esse processo, certifique-se de proteger os seguintes serviços, além dos especificados para a Apigee, no perímetro:

    • Anthos Service Mesh
    • Cloud Monitoring (Stackdriver)
    • Google Kubernetes Engine (se estiver executando no GKE)
    • Google Container Registry (se estiver usando-o como seu repositório local)

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

  3. Copie as imagens da Apigee para seu repositório particular:
    1. Faça o download das imagens assinadas da Apigee a partir do Docker Hub, conforme descrito aqui. Especifique os números de versão mais recentes.

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

      O exemplo a seguir marca as imagens em um repositório GCR com base 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, o Google recomenda que você 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 repositório particular.

      O exemplo a seguir envia as imagens para um repositório GCR com base 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, o Google recomenda que você inclua o ID do projeto ou outro valor de identificação no caminho do repositório para cada imagem.

  4. Atualize seu arquivo de modificações para apontar os URLs da imagem para o repositório particular, conforme descrito em Especificar modificações de configuração.

    Você precisa alterar os URLs da imagem para os seguintes componentes:

    Nome do componente (no arquivo de modificaçõ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 usando as novas imagens no GCR, conforme descrito em Aplicar a configuração ao cluster.

Como conceder acesso aos portais integrados ao perímetro

O VPC-SC é compatível com a concessão de níveis de acesso VPC-SC a portais integrados, mas esse processo requer outras etapas, conforme descrito nesta seção.

Se você não conceder um nível de acesso a portais integrados, eles não estarão disponíveis para organizações da Apigee ativadas para VPC-SC.

Como conceder um nível de acesso a portais:

  • Não coloca os portais integrados dentro do perímetro.
  • Permite que os portais integrados sejam acessados de fora do perímetro.
  • Permite a exposição de dados da Apigee protegidos pelo VPC-SC, como dados de aplicativos, a usuários do portal fora do perímetro VPC-SC.

Para mais informações, consulte Como permitir acesso a recursos protegidos de fora de um perímetro.

Pré-requisitos

Antes de conceder acesso de perímetro a um portal integrado, você precisa ativar o Access Context Manager API do projeto, caso ele ainda não esteja ativado. Faça isso no Console do Google Cloud ou usando o comando services enable.

Para verificar se a API está ativada, examine a saída do comando services list, conforme descrito na Etapa 2: ativar APIs da Apigee.

Além disso, você precisa ter o endereço de e-mail da conta de serviço do projeto em que o portal é usado. Para isso, você precisa do ID e do número do projeto do GCP. As etapas a seguir descrevem como conseguir esses valores:

  1. Veja os detalhes do projeto do GCP usando o comando projects list, como mostra o exemplo a seguir:
    gcloud projects list

    Esse comando retorna 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 do GCP.

  2. Identifique o endereço de e-mail da conta de serviço da Apigee. Essa é a mesma conta que o instalador do Apigee criado quando você aprovisionou na sua organização na Etapa 4: criar uma organização.

    Para receber esse endereço de e-mail, use o comando iam service-accounts list, que usa a seguinte sintaxe:

    gcloud iam service-accounts list --project GCP_PROJECT_ID

    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 você quer é aquela cujo endereço de e-mail corresponde ao seguinte formato:
    service-GCP_PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com

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

  3. Receba o ID da política (ou perímetro) usando o comando access-context-manager policies list. Transmita o ID da organização para este comando, conforme o exemplo a seguir mostra:

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

Etapas para conceder acesso de perímetro aos portais integrados

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

  1. Reúna o endereço de e-mail da conta de serviço e o ID da política da VPC-SC, conforme descrito em Pré-requisitos.
  2. Crie um arquivo de condições na sua máquina de administração que especifique o endereço da conta de serviço que concederá o acesso ao portal pelo perímetro.

    O arquivo pode ser qualquer nome, mas precisa ter uma extensão *.yaml. Por exemplo, my-portal-access-rules.yaml.

  3. No arquivo de condições, adicione uma seção members que especifique a conta de serviço da Apigee, como mostrado no exemplo a seguir:

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

    Lembre-se de que adicionar uma seção members é suficiente. não é preciso adicionar uma seção de nível de acesso. Para mais informações sobre como criar um arquivo de condições, consulte Limitar o acesso por usuário 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

    Em que:

    • ACCESS_LEVEL_ID é um identificador do novo nível de acesso que está sendo 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 você quiser, mas o Google recomenda dar um valor significativo para que você e outros administradores saibam o que se aplica. Por exemplo, Meu nível de acesso ao Portal.
    • CONDITIONS_FILE é o caminho para o arquivo YAML criado na etapa anterior;
    • POLICY_ID é o ID da política ou do perímetro.

    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 usando o comando access-context-manager perimeters update:
    gcloud access-context-manager perimeters update POLICY_ID \
      --add-access-levels=ACCESS_LEVEL_ID \
      --policy=POLICY_ID

    Exemplo:

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

Solução de problemas

Verifique se:

  • Se a API Access Context Manager não estiver ativada para seu projeto do GCP, o gcloud solicitará que você a ative ao tentar listar ou definir políticas.
  • Verifique se você está usando o ID da organização do GCP, e não o do Apigee, ao receber detalhes sobre a organização.
  • Alguns comandos descritos nesta seção exigem permissões elevadas; Por exemplo, para ver detalhes sobre as contas de serviço de um projeto, você precisa ser o proprietário desse projeto.
  • Para verificar se a conta de serviço existe, execute o comando iam service-accounts describe, como no exemplo a seguir:

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

    gcloud responde com informações sobre a conta de serviço, incluindo o nome de exibição e o ID do projeto a que pertencem. Se a conta de serviço não existir, gcloud responderá com um erro NOT_FOUND.

Limitações

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

  • Os portais integrados exigem medidas adicionais para serem configuradas.
  • É necessário implantar os portais do Drupal dentro do perímetro de serviço.