Blog
Trainieren Sie Modelle für maschinelles Lernen auf sichere Weise mit Produktionsdaten

"Jedes Unternehmen ist ein Datenunternehmen". Deshalb werden in den meisten Unternehmen vertrauenswürdige Daten, wie z.B. personenbezogene Daten oder Finanzdaten, verarbeitet. Um den Service oder die Rentabilität eines Unternehmens zu verbessern, werden diese Daten oft mit maschinellen Lernalgorithmen verwendet, um Muster zu erkennen. Für Datenwissenschaftler ist es ein großer Vorteil, maschinelle Lernmodelle sicher mit Produktionsdaten zu trainieren. Es ist nicht einfach, dies auf sichere Weise zu tun und wird daher von Sicherheits- und Datenschutzexperten in Unternehmen oft abgelehnt. Die größten Befürchtungen sind das Risiko der Datenexfiltration und die mangelnde Kontrolle darüber, welche Daten von wem, wo und wann abgerufen werden. Dies kann vermieden werden, indem Vertex AI Workbenches innerhalb von VPC Service Controls platziert werden. In diesem Blog zeige ich, wie VPC Service Controls verwendet werden können, um die Datenexfiltration zu verhindern und feinkörnige Zugriffskontrollen für Vertex AI Workbenches anzuwenden. Diese so genannten Service Perimeter wurden speziell entwickelt, um den Zugriff auf die APIs von Google zu begrenzen und zu verhindern, dass Daten aus einer Umgebung extrahiert werden. Für die Datenwissenschaftler werden Vertex AI Workbench-Instanzen eingesetzt. Die Audit-Protokollierung erfolgt über personalisierte Dienstkonten. Ich zeige Ihnen in einer Übersicht, wie das gemacht werden kann.
Referenzdesign
Dieses Referenzdesign gibt Ihnen einen guten Eindruck von der Infrastruktur, die wir besprechen werden.

Unser Werkzeugkasten
VPC-Dienst-Kontrollen
Was sind VPC Service Controls?
Das Konzept der
VPC Service Control (auch als Sicherheitsperimeter oder einfach Perimeter bezeichnet) verdient einen eigenen Blogbeitrag, aber um Ihnen einen Überblick zu geben:
Vor ein paar Jahren führte Google auf Subnetzebene ein Flag namens "Private Google Access" ein. Mit dieser Funktion konnten Anwendungen, denen keine externe IP-Adresse zugewiesen war, die Google-APIs aufrufen. Diese Funktion eröffnete Anwendungen, die ansonsten vom Internet abgeschottet waren, einen Zugang zu allen Google APIs.
Es gibt Situationen, in denen Sie einschränken möchten, welche APIs von einer Anwendung aus aufgerufen werden können. Um dies zu ermöglichen, hat Google VPC Service Controls entwickelt, mit denen Sie einen virtuellen Bereich um diese APIs herum einrichten können. Die Einrichtung einer solchen
Warum sollten Sie VPC Service Controls verwenden?
Google hat die Gründe für die Entwicklung von VPC Service Controls in seiner Dokumentation beschrieben. Kurz gesagt gab es dafür mehrere Gründe. Die Implementierung von VPC Service Controls ermöglicht eine strengere Isolierung von Netzwerken und Diensten sowie von Aktionen, die innerhalb dieser Netzwerke durchgeführt werden können. Das bedeutet, dass Daten in einer eigenen Service-Ebene gespeichert werden können, in der Regeln für Datentransaktionen und für das, was damit gemacht werden kann, angewendet werden können. Um sicherzustellen, dass Ressourcen bestimmte Google-APIs weiterhin erreichen können, wurden den APIs zwei spezielle CIDR-Bereiche zugewiesen: private.googleapis.com und restricted.googleapis.com.
Vertex AI Workbench
Mit Vertex AI Workbench bietet Google ein verwaltetes Set von Tools, mit denen Datenwissenschaftler schnell Modelle für maschinelles Lernen entwickeln können. Es handelt sich um eine neue Marke und war zuvor als AI Platform bekannt. Sie bietet Datenwissenschaftlern eine ganze Reihe von Tools für ihre Arbeit, einschließlich eines JupyterLab-Proxy-Dienstes für schnelles Prototyping.
Private Service-Verbindungen
Mit Private Service Connects kann eine Verbindung von Ressourcen in einem Perimeter zu selbst verwalteten Ressourcen in einem anderen Perimeter hergestellt werden. Dies ist notwendig, da wir auf der Data Science-Seite keine Internetverbindung haben und Anfragen daher nicht über das Internet laufen können.
Personalisierte Servicekonten
Um eine ordnungsgemäße Prüfung des Datenzugriffs zu ermöglichen, benötigen wir eine klare Möglichkeit, die Person zu identifizieren, die die Anfrage stellt. Da alle Anfragen, die von einem Rechner kommen, durch das Dienstkonto identifiziert werden, kann es schwierig sein, die tatsächliche Person hinter der Anfrage zu identifizieren, wenn sie aus dem JupyterLab-Proxy kommt. Daher werden wir personalisierte Dienstkonten verwenden, die eins-zu-eins mit einer physischen Person verknüpft sind.
Schritt 1: Einrichten von Service-Perimetern
Welche VPC Service-Kontrollen werden wir benötigen
Für diesen Anwendungsfall benötigen wir zwei Service Controls. Eine für alle unsere Produktionsdienste, wo die Daten auch sicher gespeichert werden. Eine weitere, in der die Vertex AI Workbench-Instanzen bereitgestellt werden können. Letztere muss nur auf bestimmte Dienste aus dem Produktionsperimeter zugreifen können, darf aber keinen Zugang zur Außenwelt haben. Beachten Sie, dass jeder Perimeter seinen eigenen SharedVPC haben sollte. Alle Ressourcen, die mit einem Netzwerk verbunden sind, werden als zum selben Perimeter gehörend betrachtet. Dies kann zu einer Menge Verwirrung führen, wenn es falsch gemacht wird.
Konfigurieren Sie die VPC-Dienstesteuerung
Perimeter der Produktion
Erstellen Sie zunächst eine VPC Service Control, die Ihre Produktionsressourcen enthalten wird. Besonders in einer bereits bestehenden Umgebung ist dies einer der heikelsten Teile. Achten Sie genau darauf, dass Ihre aktuellen Dienste auch nach der Konfiguration noch eine Verbindung zu den erforderlichen APIs herstellen können. Dies gilt insbesondere für Ihre Ressourcen wie BigQuery und Cloud Storage, für die Sie den Zugriff einschränken müssen. Konfigurieren Sie es so, dass alle Projekte, die zu diesem Perimeter gehören, vollen Zugriff auf diese Ressourcen haben. Es ist zwar möglich, bestimmte Projekte in Ihren Perimeter aufzunehmen, aber es ist einfacher, ihn so zu konfigurieren, dass er ganze Ordner umfasst. Dies ist am einfachsten, wenn Sie Ihre GCP-Organisation korrekt mit Ordnern strukturiert haben.
KI-Perimeter
Der nächste Schritt ist der KI-Perimeter. Konfigurieren Sie hierfür eine ähnliche Einrichtung wie für den Produktionsperimeter. Da es sich in der Regel um einen neuen Perimeter handelt, ist dies nicht so schwierig wie der Produktionsperimeter. Achten Sie auch hier auf Ihre Richtlinien und konfigurieren Sie sie entsprechend den Anforderungen Ihres Unternehmens. Dieser Perimeter sollte kein Internet-Gateway haben. Setzen Sie dies durch, indem Sie die richtigen Firewall-Regeln einrichten und die richtigen
Lagerung
Die Datenwissenschaftler werden wahrscheinlich Zwischenmodelle speichern und mit den Daten innerhalb des Perimeters arbeiten wollen. Fügen Sie dazu Big Query-Datensätze und Google Cloud Storage innerhalb des Perimeters selbst hinzu. Diese Speicherressourcen sollten natürlich die Möglichkeit haben, zu lesen und zu schreiben, im Gegensatz zu der für den Produktionsperimeter festgelegten Richtlinie.
Wichtiger Hinweis
Achten Sie genau auf die Zugriffsebenen und Zugriffsrichtlinien. Wenn Sie dies nicht richtig tun, werden Sie feststellen, dass auf bestimmte Ressourcen nicht korrekt zugegriffen werden kann. Im schlimmsten Fall kommt es zu Ausfällen in Ihren Produktionsdiensten, aber es kann auch zu lästigen HTTP 401 oder 403 Fehlern führen, wenn Sie versuchen, auf den Jupyter Notebook Proxy zuzugreifen, den Sie später einrichten werden.
Schritt 2: Konfigurieren Sie den Zugang zwischen Perimetern
Es gibt zwei Möglichkeiten, den Zugang vom KI-Perimeter zum Produktions-Perimeter zu ermöglichen. Eine Möglichkeit besteht darin, eine Perimeter-Brücke einzurichten. Sie können sie als ein weiteres Perimeter betrachten, das als Overlay über die Perimeter-Projekte verwendet wird, die Zugang zueinander benötigen. Die andere Möglichkeit ist die Festlegung von Egress- und Ingress-Regeln. Eine Perimeter Bridge kann sinnvoll sein, wenn Sie eine feste Anzahl von Projekten haben. Eine Bridge muss auch auf der Organisationsebene konfiguriert werden. In diesem Blog wird die alternative Lösung der Ingress- und Egress-Regeln verwendet. Der Grund dafür ist, dass sie eine detailliertere Konfiguration der gewünschten Richtlinien ermöglichen. Dies bietet auch die Möglichkeit, Private Service Connect für selbstverwaltete Dienste zu verwenden.
Austritt aus AI Perimeter
Erstellen Sie eine egressFrom-Regel von den Projekten in Ihrem AI-Perimeter. Gewähren Sie diesen Zugriff auf ANY_SERVICE_ACCOUNT. Geben Sie dann die Regel egressTo an, in der Sie die Projekte auflisten, die Ihre Cloud Storage- und BigQuery-Produktionsdatensätze enthalten. Beschreiben Sie auch die erlaubten Operationen. Da Sie wahrscheinlich nur den Lesezugriff auf Ihre Produktionsdaten zulassen möchten, müssen Sie die Operationen entsprechend angeben.
Eindringen in den Produktionsperimeter
Die vorherige Egress-Regel beschreibt den erlaubten Datenverkehr nur aus der Perspektive des AI-Perimeters. Erstellen Sie nun eine ähnliche Regel, um den tatsächlichen Eintritt in den Produktionsperimeter zuzulassen. Sie können die gleiche Beschreibung wie zuvor verwenden, aber in diesem Fall verwenden Sie die Regeln ingressFrom und ingressTo. Auch hier müssen Sie sicherstellen, dass für Daten innerhalb der Produktion nur der Lesezugriff erlaubt ist. Darüber hinaus können Sie Tools zum Entfernen von PII-Daten mit einem hohen Auswirkungsgrad anwenden(NIST - PII - Impact Level Definitions).
Privater Dienst verbinden
Oft müssen einige Ressourcen dennoch zugänglich sein, insbesondere von einem gesicherten Bereich aus. Ein Beispiel kann eine private Artifactory sein, in der nur zugelassene Pakete gehostet werden. Konfigurieren Sie einen privaten Service Connect, damit Sie auf die benötigten Ressourcen zugreifen können.
Schritt 3: Persönliche Servicekonten erstellen
Für eine ordnungsgemäße Zugriffskontrolle und Audit-Protokollierung benötigen Sie eine Möglichkeit, zu kontrollieren, wer wann auf was Zugriff hat. In einer statischen Umgebung kann der Zugriff auf bestimmte Daten für die Standard-Servicekonten manuell zugewiesen werden. In den meisten Fällen werden die Projekte jedoch kommen und gehen, ebenso wie die Mitarbeiter. Um dieses Problem zu lösen, werden wir die Dienstkonten zentral verwalten.
Einrichten der Dienstkonten
Dies ist normalerweise der einfachste Schritt, je nachdem, wie Ihre Benutzer verwaltet werden. In vielen Unternehmen wird dafür ein System wie Google Workspace oder LDAP verwendet. In Ihrem Benutzerverwaltungssystem müssen Sie für jeden Benutzer, der die Vorteile der Data Science Tools nutzen möchte, ein Dienstkonto erstellen. Es gibt eine Einschränkung: Die Standardquote pro Projekt für die Anzahl der Servicekonten ist auf 100 festgelegt. Wenn Sie mehr Benutzer haben, müssen Sie eine Erhöhung der Quote beantragen. Stellen Sie außerdem sicher, dass diese Servicekonten häufig gepflegt werden, um zu vermeiden, dass Mitarbeiter, die keinen Zugriff mehr haben sollten, weiterhin Konten haben. Diese Dienstkonten lassen sich am besten in einem zentralen Projekt innerhalb des Perimeters erstellen und verwalten. Sie sollten dafür dasselbe Projekt wie Ihren SharedVPC verwenden können.
Konfigurieren Sie den Zugang für die Dienstkonten
Es gibt zwei Arten des Zugriffs, die Sie nun anwenden müssen. Die erste ist der Zugriff auf die Daten, und die zweite ist, wer auf welches Servicekonto zugreifen kann.
Zugang zu Daten
Dieser Schritt erfolgt in der Regel manuell. Jemand mit der Berechtigung, Zugriff auf Datensätze zu gewähren, sollte für jedes der erstellten Servicekonten einen spezifischen Zugriff erlauben. Dieser sollte nur auf Lesezugriff und auf die erforderlichen Ressourcen im Produktionsperimeter eingestellt sein.
Nachahmung
Als Nächstes geben Sie den Benutzer an, der die einzelnen Dienstkonten verkörpern kann. Wenn diese Informationen korrekt im Identitätsmanagement (z.B. Google Workspace oder LDAP) gespeichert sind, können Sie dies im selben Schritt wie die Erstellung und Verwaltung der Dienstkonten automatisieren. Andernfalls müssen Sie dies manuell tun, was bald mühsam werden kann. Gewähren Sie jedem Benutzer zwei Berechtigungen für die persönlichen Servicekonten: Dienstkonto-Benutzer und Dienstkonto-Token-Ersteller. Dies sollte in dem Projekt geschehen, in dem sich die Servicekonten befinden.
Schritt 4: Erstellen Sie die Vertex AI Workbench im gesicherten Bereich
Nun kommen wir endlich zu dem Teil, der Spaß macht: die Erstellung der Vertex AI Workbench-Instanzen in Projekten innerhalb des neu erstellten AI-Perimeters.
Zugriff: Benutzereigene oder Dienstkonto-Impersonation
Es gibt zwei Möglichkeiten, den Zugriff auf Vertex AI Workbench-Instanzen zu beschränken. Sie kann dem Benutzer gehören oder für jeden zugänglich sein, der sich für das verbundene Servicekonto ausgeben kann. Denken Sie daran, dass das Servicekonto immer erforderlich ist, der zusätzliche Benutzer ist also optional. Es ist wichtig zu wissen, dass Anfragen von GCP-Ressourcen, die die GCloud SDK-Tools(gcloud, gsutil, bq usw.) verwenden, immer das Konto des verbundenen Dienstes verwenden. Dies kann jedoch überschrieben werden, indem Sie in der gcloud-Konfiguration in der Workbench die Dienstkonto-Impersonation als Standard einstellen. Beachten Sie auch, dass der Befehl bq keine Dienstkontopersonierung zulässt. Dazu müssen Sie die API vorerst direkt aufrufen.
Schritt 5: Lebenszyklus-Management
Ich werde mich kurz fassen und die Umsetzung den Ingenieuren überlassen. Mit der Lebenszyklusverwaltung wollen wir sicherstellen, dass Notebook-Instanzen keine ewig lebenden Ressourcen sind. Der Grund dafür kann die mögliche Verwendung von PII-Daten sein, die innerhalb einer bestimmten Zeitspanne gelöscht werden sollten (Recht auf Vergessenwerden). Auch die Kosten für lange laufende Instanzen steigen dramatisch an, wenn sie nicht richtig verwaltet werden. Es ist ratsam, die Benutzer über die Kosten aufzuklären und ihnen die Möglichkeit zu geben, die Rechner zu stoppen, wenn sie nicht aktiv genutzt werden. Wenn eine Maschine entfernt werden soll, ohne dass die Statusdateien von Tools wie Terraform zu sehr in Mitleidenschaft gezogen werden, sollten Sie die Maschine einfach anhalten und die Bootdiskette entfernen. Dann kann die Ressource in einem späteren Lauf sicher entfernt werden, ohne dass die Gefahr besteht, dass sie in der Zwischenzeit neu gestartet wird.
Fazit
In diesem Blog wurde beschrieben, wie ein Unternehmen es Datenwissenschaftlern ermöglichen kann, Modelle des maschinellen Lernens auf sichere Weise mit Produktionsdaten zu trainieren. Dies ist eine komplexe Aufgabe, die aus einer Kombination von Techniken besteht. Die Teams, die diese Strategie umsetzen, sollten in engem Kontakt stehen, um sicherzustellen, dass die Prioritäten und Maßnahmen kontinuierlich aufeinander abgestimmt werden. Sobald dies geschehen ist, sollte ein Datenwissenschaftler in der Lage sein, seine Vertex AI Workbench-Instanz zum Trainieren von maschinellen Lernmodellen mit Produktionsdaten zu nutzen, und zwar innerhalb der Grenzen eines Sicherheitsbereichs. (Featured image by Pietro Jeng at Unspash)
Verfasst von

Ruben Kruiver
Unsere Ideen
Weitere Blogs
Contact



