Utiliser VPC Service Controls avec Apigee et Apigee hybrid

Cette page s'applique à Apigee et à Apigee hybrid.

Consultez la documentation d'Apigee Edge.

Apigee s'intègre à VPC Service Controls qui vous permet d'isoler les ressources de vos projets Google Cloud. Cela permet d'éviter les fuites ou l'exfiltration de données.

Cette section explique comment utiliser VPC Service Controls avec Apigee.

Présentation

VPC Service Controls définit un périmètre de service qui agit comme une limite entre un projet et d'autres services. Les périmètres de service constituent une méthode appliquée au niveau de l'organisation qui vise à protéger les services Google Cloud au sein de vos projets afin de minimiser le risque d'exfiltration des données.

VPC Service Controls permet également de s'assurer que les clients qui disposent d'un accès privé à certaines ressources dans un périmètre ne peuvent pas accéder à des ressources non autorisées situées en dehors du périmètre.

Pour obtenir des informations détaillées sur les avantages des périmètres de service, consultez la page Présentation de VPC Service Controls.

Lorsque vous utilisez VPC Service Controls, tenez compte des points suivants :

  • Le projet Google Cloud et son environnement d'exécution associé sont tous deux inclus dans le périmètre VPC Service Controls de ce projet.
  • L'interaction entre les services au sein d'un périmètre peut être limitée à l'aide de la fonctionnalité Services accessibles au réseau VPC.

Apigee et Apigee hybrid s'intègrent à VPC Service Controls. Pour obtenir la liste complète des produits qui s'intègrent à VPC Service Controls, consultez la page Produits compatibles.

Impact sur la connexion Internet

Lorsque VPC Service Controls est activé, l'accès à Internet est désactivé : l'environnement d'exécution Apigee ne communique plus avec aucune cible Internet publique. Vous devez acheminer le trafic vers votre VPC en établissant des routes personnalisées. Consultez la page Importer et exporter des routes personnalisées.

Configurer VPC Service Controls avec Apigee

Le processus général de configuration de VPC Service Controls avec Apigee se déroule comme suit :

  1. Activez VPC Service Controls.
  2. Créez un périmètre de service.
  3. Configurez le périmètre de service.

Ces fichiers sont décrits plus en détail ci-dessous.

Pour configurer VPC Service Controls avec Apigee, procédez comme suit :

  1. Activez VPC Service Controls sur la connexion d'appairage entre votre réseau et Apigee en exécutant la commande suivante :

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

    Où :

    • SHARED_VPC_NETWORK correspond au nom du réseau VPC partagé.
    • PROJECT_ID correspond au nom du projet hébergeant le réseau VPC partagé ; il ne s'agit pas du projet utilisé pour créer l'organisation Apigee.

    Cette commande active VPC Service Controls pour votre projet. Vous pouvez exécuter cette commande plusieurs fois pour activer VPC Service Controls pour plusieurs projets.

  2. Créez un périmètre comme décrit dans le guide de démarrage rapide de VPC Service Controls. Lorsque vous créez un périmètre, vous choisissez les projets à ajouter au sein de ce périmètre, ainsi que les services à sécuriser.

    Pour Apigee et Apigee hybrid, Google vous recommande de sécuriser tous les services lorsque vous créez un périmètre, y compris l'API Apigee.

    Pour plus d'informations, consultez la section Créer un périmètre de service.

  3. Configurez le périmètre de service, comme décrit dans la section Détails et configuration du périmètre de service.

Pour ajouter un portail intégré à votre périmètre, consultez la section Ajouter un portail intégré au périmètre.

Configurer VPC Service Controls avec Apigee hybrid

Apigee hybrid est compatible avec VPC Service Controls, mais vous devez effectuer des étapes supplémentaires. Le processus général d'intégration d'Apigee hybrid à VPC Service Controls est le suivant :

  1. Configurez la connectivité privée
  2. Sécurisez les services supplémentaires au sein du périmètre.
  3. Configurez un dépôt privé. Un dépôt privé est un dépôt qui se trouve dans le périmètre. Il n'est pas nécessairement un dépôt local tant qu'il se trouve dans le périmètre.
  4. Transférez les images Apigee vers votre dépôt privé.
  5. Mettez à jour les remplacements afin d'utiliser le dépôt privé lors du processus d'installation et de configuration hybrides.

Chacune de ces étapes est décrite plus en détail dans la procédure suivante.

Pour configurer VPC Service Controls avec Apigee hybrid :

  1. Configurez des adresses IP privées pour vos hôtes de réseau hybride, comme décrit dans la section Configurer une connectivité privée aux API et services Google. Vous devez configurer les routes, les règles de pare-feu et les entrées DNS pour permettre aux API Google d'accéder à ces adresses IP privées.
  2. Suivez les étapes de la section Configurer VPC Service Controls avec Apigee.

    Au cours de ce processus, vous devez veiller à sécuriser les services suivants dans votre périmètre, en plus de ceux spécifiés pour Apigee :

    • Anthos Service Mesh
    • Cloud Monitoring (Stackdriver)
    • Google Kubernetes Engine (si vous exécutez GKE)
    • Google Container Registry (si vous l'utilisez comme dépôt local)

    Pour ajouter ces services à votre périmètre, suivez les instructions de la section Détails et configuration du périmètre de service.

  3. Copiez les images Apigee dans votre dépôt privé :
    1. Téléchargez les images Apigee signées de Docker Hub comme décrit ici. Veillez à indiquer les derniers numéros de version.

      Exemple :

      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. Ajoutez des tags aux images.

      L'exemple suivant ajoute des tags aux images dans un dépôt GCR basé aux États-Unis :

      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

      Bien que cela ne soit pas obligatoire, Google recommande d'inclure l'ID du projet ou une autre valeur d'identification dans le chemin du dépôt pour chaque image.

    3. Transférez les images vers votre dépôt privé.

      L'exemple suivant envoie les images vers un dépôt GCR basé aux États-Unis :

      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

      Bien que cela ne soit pas obligatoire, Google recommande d'inclure l'ID du projet ou une autre valeur d'identification dans le chemin du dépôt pour chaque image.

  4. Mettez à jour votre fichier de remplacement pour faire pointer les URL d'images vers votre dépôt privé, comme décrit dans la section Spécifier des remplacements de configuration.

    Vous devez modifier les URL d'images pour les composants suivants :

    Nom du composant (dans le fichier de remplacement) URL de l'image
    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. Appliquez vos modifications à l'aide des nouvelles images dans GCR, comme décrit dans la section Appliquer la configuration au cluster.

Accorder au périmètre l'accès aux portails intégrés

VPC Service Controls accepte l'attribution de niveaux d'accès VPC Service Controls aux portails intégrés, mais ce processus nécessite des étapes supplémentaires, comme décrit dans cette section.

Si vous n'accordez pas de niveau d'accès aux portails intégrés, ceux-ci ne sont pas disponibles pour les organisations Apigee sur lesquelles VPC Service Controls est activé.

Attribuer un niveau d'accès aux portails :

  • Ne permet pas de placer les portails intégrés dans le périmètre.
  • Autorise l'accès aux portails intégrés depuis l'extérieur du périmètre.
  • Autorise l'exposition de données Apigee protégées par VPC Service Controls (telles que les données d'application) aux utilisateurs du portail en dehors du périmètre VPC Service Controls.

Pour en savoir plus, consultez la section Autoriser l'accès aux ressources protégées depuis l'extérieur d'un périmètre.

Prérequis

Avant d'accorder au périmètre un accès à un portail intégré, vous devez activer Access Context Manager API pour votre projet, si ce n'est pas déjà fait. Vous pouvez effectuer cette action dans la console Cloud ou à l'aide de la commande gcloud services enable.

Pour vérifier si l'API est activée, examinez le résultat de la commande gcloud services list, comme décrit dans la section Étape 2 : Activer les API Apigee.

De plus, vous devez disposer de l'adresse e-mail du compte de service pour le projet dans lequel le portail est utilisé. Pour ce faire, vous avez besoin de l'ID et du numéro de projet GCP. Pour obtenir ces valeurs, procédez comme suit :

  1. Obtenez des informations sur le projet GCP à l'aide de la commande gcloud projects list, comme le montre l'exemple suivant :
    gcloud projects list

    Cette commande renvoie l'ID du projet (dans la colonne PROJECT_ID) et le numéro de projet (dans la colonne PROJECT_NUMBER) pour chaque projet de votre organisation GCP.

  2. Identifiez l'adresse e-mail du compte de service Apigee. Il s'agit du compte que le programme d'installation d'Apigee a créé lorsque vous avez provisionné votre organisation à l'étape 3 : Créer une organisation.

    Pour obtenir cette adresse e-mail, exécutez la commande iam service-accounts list, qui utilise la syntaxe suivante :

    gcloud iam service-accounts list --project GCP_PROJECT_ID

    Exemple :

    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

    Le compte de service souhaité est celui dont l'adresse e-mail correspond au format suivant :
    service-GCP_PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com

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

  3. Obtenez l'ID de règle (ou périmètre) à l'aide de la commande access-context-manager policies list. Transmettez l'ID d'organisation à cette commande, comme le montre l'exemple suivant :

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

    gcloud répond avec une liste de règles associées à l'organisation spécifiée. Exemple :

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

    L'ID de stratégie de VPC-SC, également appelé ID de périmètre, est l'ID du périmètre de service VPC-SC faisant office de limite entre votre projet et d'autres services. Il s'agit de la valeur de la colonne NAME.

Étapes permettant d'accorder au périmètre l'accès à des portails intégrés

Pour accorder au périmètre l'accès à un portail intégré, procédez comme suit :

  1. Rassemblez l'adresse e-mail du compte de service et l'ID de règle de VPC Service Controls, comme décrit dans la section Prérequis.
  2. Créez sur votre machine d'administrateur un fichier de conditions spécifiant l'adresse de compte de service qui accordera l'accès au portail via le périmètre.

    Vous pouvez choisir le nom de votre choix, mais vous devez inclure l'extension *.yaml. Exemple : my-portal-access-rules.yaml.

  3. Dans le fichier de conditions, ajoutez une section members qui spécifie le compte de service Apigee, comme illustré dans l'exemple suivant :

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

    Notez que l'ajout d'une section members suffit. vous n'avez pas besoin d'ajouter de section de niveau d'accès. Pour en savoir plus sur la création d'un fichier de conditions, consultez la section Limiter l'accès par utilisateur ou compte de service.

  4. Créez un niveau d'accès à l'aide de la commande access-context-manager levels create. Exemple :
    gcloud access-context-manager levels create ACCESS_LEVEL_ID \
      --title ACCESS_LEVEL_TITLE \
      --basic-level-spec PATH/TO/CONDITIONS_FILE.yaml \
      --policy=POLICY_ID

    Où :

    • ACCESS_LEVEL_ID est l'identifiant du nouveau niveau d'accès accordé, par exemple : my-portal-access-level.
    • ACCESS_LEVEL_TITLE est le titre du niveau d'accès. Vous pouvez choisir n'importe quel titre, mais Google vous recommande de lui attribuer une valeur significative, de sorte que vous et les autres administrateurs puissiez connaître la source de l'utilisation. Par exemple, "Mon niveau d'accès au portail".
    • CONDITIONS_FILE correspond au chemin d'accès au fichier YAML créé à l'étape précédente.
    • POLICY_ID est l'ID de règle ou de périmètre.

    Exemple :

    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. Mettez à jour le périmètre avec le nouveau niveau d'accès à l'aide de la commande access-context-manager perimeters update :
    gcloud access-context-manager perimeters update POLICY_ID \
      --add-access-levels=ACCESS_LEVEL_ID \
      --policy=POLICY_ID

    Exemple :

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

Dépannage

Vérifiez les éléments suivants :

  • Si l'API Access Context Manager n'est pas activée pour votre projet GCP, gcloud vous invite à l'activer lorsque vous essayez de répertorier ou de définir des règles.
  • Veillez à utiliser l'ID d'organisation GCP et non l'ID d'organisation Apigee lorsque vous obtenez des informations sur l'organisation.
  • Certaines commandes décrites dans cette section nécessitent des autorisations élevées. Par exemple, pour obtenir les détails des comptes de service d'un projet, vous devez être propriétaire de ce projet.
  • Pour vérifier que le compte de service existe, exécutez la commande iam service-accounts describe, comme le montre l'exemple suivant :

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

    gcloud répond en envoyant des informations sur le compte de service, y compris le nom à afficher et l'ID du projet auquel il appartient. Si le compte de service n'existe pas, gcloud renvoie une erreur NOT_FOUND.

Limites

Les intégrations d'Apigee à VPC Service Controls présentent les limites suivantes :

  • Les portails intégrés nécessitent des étapes supplémentaires de configuration.
  • Vous devez déployer des portails Drupal dans le périmètre de service.