VPC Service Controls avec Vertex AI

VPC Service Controls peut vous aider à limiter le risque d'exfiltration de données de l'IA Vertex. Utilisez VPC Service Controls pour créer un périmètre de service qui protège les ressources et les données que vous spécifiez. Par exemple, lorsque vous utilisez VPC Service Controls pour protéger Vertex AI, les artefacts suivants ne peuvent pas quitter votre périmètre de service :

  • Données d'entraînement pour un modèle AutoML ou un modèle personnalisé
  • Modèles que vous avez créés
  • Modèles que vous avez recherchés à l'aide de Neural Architecture Search
  • Demandes d'inférences en ligne
  • Résultats d'une requête d'inférence par lot
  • Modèles Gemini

Contrôler l'accès aux API Google

Les API Vertex AI, comme indiqué dans Accéder à Vertex AI depuis un environnement sur site et multicloud, englobent un éventail d'options d'accessibilité, y compris l'Internet public, Private Service Connect pour les API Google et l'accès privé à Google.

Accès public

Par défaut, ces API publiques sont accessibles depuis Internet. Toutefois, des autorisations IAM sont requises pour les utiliser. Bien que des fonctionnalités telles que Private Service Connect et l'accès privé à Google facilitent la communication privée sur les architectures de réseau hybrides, elles n'éliminent pas l'accessibilité à Internet public pour les API Vertex AI.

Pour établir un contrôle précis sur l'accès aux API et limiter explicitement l'exposition à l'Internet public, il est essentiel d'implémenter VPC Service Controls. Cette couche de sécurité permet aux administrateurs de définir et d'appliquer des règles d'accès, en activant sélectivement la connectivité publique ou privée aux API Google pour répondre aux exigences de l'organisation.

Accès privé

Les organisations qui doivent limiter l'accès public aux API Google à un accès privé peuvent utiliser VPC Service Controls en association avec les API Google Private Service Connect (bundle VPC Service Controls) ou l'accès privé à Google. Lorsqu'elles sont déployées sur un réseau hybride et dans Google Cloud, les deux options permettent un accès privé aux API Google depuis un environnement sur site. Toutefois, Private Service Connect offre également la possibilité de définir une adresse IP et un nom de point de terminaison DNS personnalisés.

Nous vous recommandons d'utiliser l'adresse IP virtuelle (VIP) restreinte avec les API Google Private Service Connect ou l'accès privé à Google pour fournir une route de réseau privée aux requêtes adressées aux services Google Cloud sans exposer les requêtes sur Internet. L'adresse IP virtuelle restreinte est compatible avec toutes les API que VPC Service Controls peut protéger et qui nécessitent des considérations pour les réseaux sur site et VPC. Voici quelques exemples :

Contrôler l'accès aux API via l'accès aux services privés

Les API Vertex AI suivantes déployées avec l'accès aux services privés nécessitent une configuration réseau supplémentaire lorsqu'elles sont implémentées dans un environnement protégé par VPC Service Controls :

  • Vector Search (requête d'index)
  • Entraînement personnalisé (plan de données)
  • Vertex AI Pipelines
  • Points de terminaison de prédiction en ligne privés

Par exemple, Vertex AI Pipelines est un service géré par Google (producteur), déployé dans un projet et un réseau VPC à locataire unique, avec la possibilité de faire évoluer les services compatibles en fonction des exigences des clients. La communication entre les réseaux producteur et consommateur est établie avec l'appairage de réseaux VPC, à l'exception de la sortie Internet, qui est acheminée via le réseau producteur.

Dans le réseau du producteur, il existe une route par défaut qui permet la sortie Internet, en plus d'un accès illimité aux API Google. Pour que le réseau du producteur soit compatible avec l'adresse IP virtuelle restreinte, vous devez activer VPC Service Controls pour les appairages. Cette opération effectue les actions suivantes sur tous les services compatibles déployés dans le réseau du producteur Service Networking :

  • Supprime la route IPv4 par défaut (destination 0.0.0.0/0, passerelle Internet par défaut de saut suivant).
  • Crée des zones privées gérées par Cloud DNS et les autorise pour le réseau VPC du producteur de services. Les zones incluent googleapis.com, pkg.dev, gcr.io et d'autres domaines ou noms d'hôte nécessaires pour les API et services Google compatibles avec VPC Service Controls.
  • Les données d'enregistrement dans les zones résolvent tous les noms d'hôte en 199.36.153.4, 199.36.153.5, 199.36.153.6 et 199.36.153.7.

Une autre méthode pour supprimer la route par défaut du réseau du producteur sans impacter les services gérés par Google existants consiste à utiliser un VPN haute disponibilité sur Cloud Interconnect. Voici les étapes à suivre :

  1. Déployez un réseau VPC de services en plus du VPN haute disponibilité sur le réseau VPC consommateur.
  2. Déployez les services gérés par Google dans le réseau VPC de services.
  3. Activez VPC Service Controls pour les appairages.
  4. Annoncez le sous-réseau d'accès aux services privés en tant qu'annonce de routage personnalisée à partir du routeur Cloud Router si les services gérés nécessitent une accessibilité sur site.
  5. Mettez à jour l'appairage de réseaux VPC Service Networking avec l'option Exporter les routes personnalisées.

Créer un périmètre de service

Pour obtenir un aperçu de la création d'un périmètre de service, consultez Créer un périmètre de service dans la documentation de VPC Service Controls.

Ajouter des services restreints à votre périmètre

Lorsque vous établissez un périmètre de service, nous vous recommandons d'inclure tous les services restreints en tant que bonne pratique de sécurité. Cette approche globale permet de minimiser les failles potentielles et les accès non autorisés. Toutefois, il peut arriver que votre organisation ait des exigences spécifiques axées sur la protection de Vertex AI et de ses API interconnectées. Dans ce cas, vous avez la possibilité de sélectionner et d'inclure uniquement les API Vertex AI spécifiques qui sont essentielles à vos opérations.

Voici quelques exemples d'API Vertex AI que vous pouvez intégrer à votre périmètre de service :

  • L'API Vertex AI est compatible avec les services et fonctionnalités suivants :
    • Inférence par lot
    • Ensembles de données
    • Vertex AI Feature Store (livraison en ligne Bigtable)
    • Vertex AI Feature Store (livraison en ligne optimisée)
    • IA générative sur Vertex AI (Gemini)
    • Vertex AI Model Registry
    • Inférence en ligne
    • Vector Search (création d'index)
    • Vector Search (requête d'index)
    • Entraînement personnalisé (plan de contrôle)
    • Entraînement personnalisé (plan de données)
    • Vertex AI Pipelines
    • Points de terminaison d'inférence en ligne privés
    • Colab Enterprise
    • Vertex AI Agent Engine
  • L'API Notebooks est compatible avec le service suivant :
    • Vertex AI Workbench

Compatibilité de VPC Service Controls avec les pipelines de réglage de l'IA générative

La compatibilité de VPC Service Controls est assurée dans le pipeline de réglage des modèles suivants :

  • text-bison for PaLM 2
  • BERT
  • T5
  • La famille de modèles textembedding-gecko.

Utiliser VPC Service Controls avec Vertex AI Pipelines

Le périmètre de service bloque l'accès de Vertex AI aux API et services tiers sur Internet. Si vous utilisez des composants de pipeline Google Cloud ou créez vos propres composants de pipeline personnalisés pour les utiliser avec Vertex AI Pipelines, vous ne pouvez pas installer les dépendances PyPI à partir du registre public Python Package Index (PyPI). Vous devez plutôt effectuer l'une des opérations suivantes :

Utiliser des conteneurs personnalisés

En tant que bonne pratique pour les logiciels de production, les auteurs de composants doivent utiliser des composants Python conteneurisés et intégrer les dépendances dans leur image de conteneur. Ainsi, aucune installation en direct n'est requise lors de l'exécution d'un pipeline. Voici une façon de procéder :

  1. Créez votre propre image de conteneur avec le SDK Kubeflow Pipelines et d'autres packages préinstallés. Par exemple, vous pouvez utiliser us-docker.pkg.dev/vertex-ai/training/tf-cpu.2-17:latest comme couche de base de votre image et ajouter une couche supplémentaire pour installer les packages lors de la création du conteneur.

  2. Mettez à jour le code de définition de votre composant pour définir le chemin d'accès base_image et le flag install_kfp_package sur False. Cet indicateur indique au compilateur KFP de ne pas injecter de commande pip install kfp dans la ligne de commande du conteneur, car le package SDK Kubeflow Pipelines est déjà installé dans l'image. Exemple :

    @component(
        base_image='gcr.io/deeplearning-platform-release/tf-cpu.2-17',
        install_kfp_package=False,
    )
    def my_component(...):
        ...
    

Installer des packages à partir d'un dépôt Artifact Registry

Vous pouvez également créer un dépôt Artifact Registry dans votre projet, y stocker des packages Python et configurer votre environnement Vertex AI pour qu'il les installe, comme indiqué dans cette section. Pour en savoir plus, consultez Gérer les packages Python.

Configurer les rôles et les autorisations

  1. Le compte de service de votre environnement Vertex AI doit disposer du rôle iam.serviceAccountUser.

  2. Si vous installez des packages PyPI personnalisés à partir d'un dépôt dans le réseau de votre projet et que ce dépôt ne possède pas d'adresse IP publique :

    1. Attribuez des autorisations d'accès à ce dépôt au compte de service de l'environnement.

    2. Assurez-vous que la connectivité à ce dépôt est configurée dans votre projet.

Créer le dépôt

  1. Créez un dépôt Artifact Registry en mode VPC dans votre projet.
  2. Stockez les packages Python requis dans le dépôt.

Configurer l'environnement Vertex AI pour l'installation à partir du dépôt

Pour installer des packages PyPI personnalisés à partir d'un ou de plusieurs dépôts Artifact Registry, effectuez un appel semblable à ce qui suit à @dsl.component :

@dsl.component(packages_to_install=["tensorflow"],
pip_index_urls=['http://myprivaterepo.com/simple', 'http://pypi.org/simple'],)
def hello_world(text: str) -> str:
    import my_package
    import tensorflow

    return my_package.hello_world(text)

Limites

Les limites suivantes s'appliquent lorsque vous utilisez VPC Service Controls :

  • Pour l'étiquetage de données, vous devez ajouter les adresses IP des étiqueteurs à un niveau d'accès.
  • Pour les composants de pipeline Google Cloud , les composants lancent des conteneurs qui vérifient que leur image de base remplit toutes les exigences. Le package KFP, ainsi que tous les packages répertoriés dans l'argument packages_to_install, sont les conditions requises pour un conteneur. Si des exigences spécifiées ne sont pas déjà présentes dans l'image de base (fournie ou personnalisée), le composant tente de les télécharger à partir de l'index de packages Python (PyPI). Étant donné que le périmètre de service bloque l'accès de Vertex AI aux API et services tiers sur Internet, le téléchargement échoue avec Connection to pypi.org timed out. Pour savoir comment éviter cette erreur, consultez Utiliser VPC Service Controls avec Vertex AI Pipelines.
  • Lorsque vous utilisez VPC Service Controls avec des noyaux personnalisés dans Vertex AI Workbench, vous devez configurer l'appairage DNS pour envoyer des requêtes pour *.notebooks.googleusercontent.com au sous-réseau 199.36.153.8/30 (private.googleapis.com) au lieu de 199.36.153.4/30 (restricted.googleapis.com).
  • Lorsque vous utilisez VPC Service Controls avec Vertex AI Inference, les points de terminaison doivent être créés après l'ajout du projet au périmètre de service. Si un point de terminaison est créé dans un projet qui ne fait pas partie d'un périmètre de service, et que ce projet est ensuite ajouté à un périmètre de service, toute tentative de déploiement d'un modèle sur ce point de terminaison échouera. Si le point de terminaison est un point de terminaison public partagé, l'envoi d'une requête au point de terminaison échouera également. De même, toute tentative de déploiement d'un modèle sur un point de terminaison échouera si le point de terminaison a été créé dans un projet qui faisait partie d'un périmètre de service, puis que le projet a été supprimé.

Étapes suivantes