Verwenden von AWS Glue mit AWS Lake Formation für die differenzierte Zugriffskontrolle - AWS Glue

Verwenden von AWS Glue mit AWS Lake Formation für die differenzierte Zugriffskontrolle

Übersicht

Mit AWS Glue Version 5.0 und höher können Sie AWS Lake Formation nutzen, um differenzierte Zugriffskontrollen auf Data-Catalog-Tabellen anzuwenden, die von S3 unterstützt werden. Mit dieser Funktion können Sie Zugriffskontrollen auf Tabellen-, Zeilen-, Spalten- und Zellenebene für read-Abfragen innerhalb Ihrer AWS Glue für Apache-Spark-Aufträge konfigurieren. In den folgenden Abschnitten erfahren Sie mehr über Lake Formation und die Verwendung mit AWS Glue.

Die GlueContext-basierte Zugriffskontrolle auf Tabellenebene mit Berechtigungen für AWS Lake Formation, die in Glue 4.0 oder früher unterstützt wurde, wird in Glue 5.0 nicht unterstützt. Verwenden Sie die neue native differenzierte Zugriffskontrolle (FGAC) von Spark in Glue 5.0. Beachten Sie folgende Details:

  • Wenn Sie eine differenzierte Zugriffskontrolle (FGAC) für die Zugriffskontrolle auf Zeilen/Spalten/Zellen benötigen, müssen Sie von GlueContext/Glue DynamicFrame in Glue 4.0 und früheren Versionen zu Spark DataFrame in Glue 5.0 migrieren. Beispiele finden Sie unter Migration von GlueContext/Glue DynamicFrame zu Spark DataFrame

  • Wenn Sie eine vollständige Tabellenzugriffskontrolle (FTA) benötigen, können Sie FTA mit DynamicFrames in AWS Glue 5.0 nutzen. Sie können auch zum nativen Spark-Ansatz migrieren, um zusätzliche Funktionen wie Resilient Distributed Datasets (RDDs), benutzerdefinierte Bibliotheken und benutzerdefinierte Funktionen (User Defined Functions, UDFs) mit Tabellen für AWS Lake Formation zu nutzen. Beispiele finden Sie unter Migration von AWS Glue 4.0 zu AWS Glue 5.0.

  • Wenn Sie FGAC nicht benötigen, ist keine Migration zu Spark DataFrame erforderlich und GlueContext-Features wie Auftragslesezeichen und Push-Down-Prädikate funktionieren weiterhin.

  • Aufträge mit FGAC erfordern mindestens 4 Worker: einen Benutzertreiber, einen Systemtreiber, einen System-Executor und einen Standby-Benutzer-Executor.

Die Verwendung von AWS Glue mit AWS Lake Formation verursacht zusätzliche Gebühren.

Funktionsweise von AWS Glue mit AWS Lake Formation

Wenn Sie AWS Glue mit Lake Formation verwenden, können Sie für jeden Spark-Auftrag eine Berechtigungsebene erzwingen, um die Lake-Formation-Berechtigungssteuerung anzuwenden, wenn AWS Glue Aufträge ausführt. AWS Glue verwendet Spark-Ressourcenprofile, um zwei Profile für die effektive Ausführung von Aufträgen zu erstellen. Das Benutzerprofil führt vom Benutzer bereitgestellten Code aus, während das Systemprofil die Lake-Formation-Richtlinien durchsetzt. Weitere Informationen finden Sie unter Was ist AWS Lake Formation und Überlegungen und Einschränkungen.

Nachfolgend finden Sie einen allgemeinen Überblick darüber, wie AWS Glue Zugriff auf Daten erhält, die durch Sicherheitsrichtlinien von Lake Formation geschützt sind.

Das Diagramm zeigt, wie eine differenzierte Zugriffskontrolle mit der StartJobRun-API von AWS Glue funktioniert.
  1. Ein Benutzer ruft die StartJobRun-API für einen AWS Lake Formation-fähigen AWS-Glue-Auftrag auf.

  2. AWS Glue sendet den Auftrag an einen Benutzertreiber und führt den Auftrag im Benutzerprofil aus. Der Benutzertreiber führt eine schlanke Version von Spark aus, die nicht in der Lage ist, Aufgaben zu starten, Executors anzufordern, auf S3 oder den Glue-Katalog zuzugreifen. Er erstellt einen Auftragsplan.

  3. AWS Glue richtet einen zweiten Treiber ein, den Systemtreiber, und führt ihn im Systemprofil aus (mit einer privilegierten Identität). AWS Glue richtet einen verschlüsselten TLS-Kanal zwischen den beiden Treibern für die Kommunikation ein. Der Benutzertreiber verwendet den Kanal, um die Auftragspläne an den Systemtreiber zu senden. Der Systemtreiber führt keinen vom Benutzer übermittelten Code aus. Er führt Spark vollständig aus und kommuniziert mit S3 und dem Datenkatalog für den Datenzugriff. Er fordert Executors an und stellt den Auftragsplan in eine Abfolge von Ausführungsphasen zusammen.

  4. AWS Glue führt dann die Phasen auf Executors mit dem Benutzertreiber oder Systemtreiber aus. Benutzercode wird in jeder Phase ausschließlich auf Benutzerprofil-Executors ausgeführt.

  5. Phasen, die Daten aus durch AWS Lake Formation geschützten Data-Catalog-Tabellen lesen oder Sicherheitsfilter anwenden, werden an System-Executors delegiert.

Mindestanforderung an Worker

Ein Lake-Formation-fähiger Auftrag in AWS Glue benötigt mindestens 4 Worker: einen Benutzertreiber, einen Systemtreiber, einen System-Executor und einen Standby-Benutzer-Executor. Dies ist eine Steigerung gegenüber den mindestens 2 Workern, die für standardmäßige AWS-Glue-Aufträge erforderlich sind.

Ein Lake-Formation-fähiger Auftrag in AWS Glue nutzt zwei Spark-Treiber – einen für das Systemprofil und einen für das Benutzerprofil. Ebenso sind die Executors in zwei Profile unterteilt:

  • System-Executors: Bearbeiten Aufgaben, bei denen Lake-Formation-Datenfilter angewendet werden.

  • Benutzer-Executoren: Werden bei Bedarf vom Systemtreiber angefordert.

Da Spark-Aufträge von Natur aus träge sind, reserviert AWS Glue 10 % der gesamten Worker (mindestens 1) nach Abzug der beiden Treiber für Benutzer-Executors.

Für alle Lake-Formation-fähigen Aufträge ist Auto Scaling aktiviert. Das bedeutet, dass die Benutzer-Executors nur bei Bedarf gestartet werden.

Eine Beispielkonfiguration finden Sie unter Überlegungen und Einschränkungen.

IAM-Berechtigungen für die Auftrag-Laufzeitrolle

Lake-Formation-Berechtigungen kontrollieren den Zugriff auf Ressourcen von AWS Glue Data Catalog, Amazon-S3-Standorte und die zugrunde liegenden Daten an diesen Standorten. IAM-Berechtigungen steuern den Zugriff auf die APIs und AWS-Ressourcen von Lake Formation und Glue. Obwohl Sie möglicherweise über die Lake-Formation-Berechtigung verfügen, auf eine Tabelle im Datenkatalog (SELECT) zuzugreifen, schlägt Ihr Vorgang fehl, wenn Sie nicht über die IAM-Berechtigung für den glue:Get*-API-Vorgang verfügen.

Die folgende Beispielrichtlinie beschreibt, wie Sie IAM-Berechtigungen für den Zugriff auf ein Skript in S3, das Hochladen von Protokollen in S3, API-Berechtigungen für AWS Glue und die Berechtigung für den Zugriff auf Lake Formation erteilen.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ScriptAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*.amzn-s3-demo-bucket/scripts", "arn:aws:s3:::*.amzn-s3-demo-bucket/*" ] }, { "Sid": "LoggingAccess", "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/logs/*" ] }, { "Sid": "GlueCatalogAccess", "Effect": "Allow", "Action": [ "glue:Get*", "glue:Create*", "glue:Update*" ], "Resource": [ "*" ] }, { "Sid": "LakeFormationAccess", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": [ "*" ] } ] }

Lake-Formation-Berechtigungen für die Auftrag-Laufzeitrolle einrichten

Registrieren Sie zunächst den Speicherort Ihrer Hive-Tabelle bei Lake Formation. Erstellen Sie anschließend Berechtigungen für Ihre Auftrag-Laufzeitrolle für die gewünschte Tabelle. Weitere Informationen über Lake Formation finden Sie unter Was ist AWS Lake Formation? im Entwicklerhandbuch von AWS Lake Formation.

Nachdem Sie die Lake-Formation-Berechtigungen eingerichtet haben, können Sie Spark-Aufträge auf AWS Glue senden.

Senden einer Auftragsausführung

Nachdem Sie die Lake-Formation-Berechtigungen eingerichtet haben, können Sie Spark-Aufträge auf AWS Glue senden. Um Iceberg-Aufträge auszuführen, müssen Sie die folgenden Spark-Konfigurationen angeben. Geben Sie den folgenden Parameter ein, um die Konfiguration über Glue-Auftragsparameter vorzunehmen:

  • Schlüssel:

    --conf
  • Wert:

    spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog --conf spark.sql.catalog.spark_catalog.warehouse=<S3_DATA_LOCATION> --conf spark.sql.catalog.spark_catalog.glue.account-id=<ACCOUNT_ID> --conf spark.sql.catalog.spark_catalog.client.region=<REGION> --conf spark.sql.catalog.spark_catalog.glue.endpoint=https://glue.<REGION>.amazonaws.com

Verwenden einer interaktiven Sitzung

Nachdem Sie die Berechtigungen für AWS Lake Formation eingerichtet haben, können Sie interaktive Sitzungen auf AWS Glue verwenden. Sie müssen die folgenden Spark-Konfigurationen über die %%configure-Magic angeben, bevor Sie Code ausführen.

%%configure { "--enable-lakeformation-fine-grained-access": "true", "--conf": "spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog --conf spark.sql.catalog.spark_catalog.warehouse=<S3_DATA_LOCATION> --conf spark.sql.catalog.spark_catalog.catalog-impl=org.apache.iceberg.aws.glue.GlueCatalog --conf spark.sql.catalog.spark_catalog.io-impl=org.apache.iceberg.aws.s3.S3FileIO --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.spark_catalog.client.region=<REGION> --conf spark.sql.catalog.spark_catalog.glue.account-id=<ACCOUNT_ID> --conf spark.sql.catalog.spark_catalog.glue.endpoint=https://glue.<REGION>.amazonaws.com" }

FGAC für AWS Glue 5.0 Notebook oder interaktive Sitzungen

Um die Fine-Grained Access Control (FGAC) in AWS Glue zu aktivieren, müssen Sie die für Lake Formation erforderlichen Spark-Konfigurationen als Teil der %%configure-Magic angeben, bevor Sie die erste Zelle erstellen.

Eine spätere Angabe über die Aufrufe SparkSession.builder().conf("").get() oder SparkSession.builder().conf("").create() reicht nicht aus. Dies ist eine Änderung gegenüber dem Verhalten von AWS Glue 4.0.

Unterstützung für das offene Tabellenformat

AWS Glue Version 5.0 oder höher bietet Unterstützung für eine differenzierte Zugriffskontrolle auf Basis von Lake Formation. AWS Glue unterstützt die Tabellentypen Hive und Iceberg. In der folgenden Tabelle werden alle unterstützten Vorgänge beschrieben.

Operationen Hive Iceberg
DDL-Befehle Nur mit IAM-Rollenberechtigungen Nur mit IAM-Rollenberechtigungen
Inkrementelle Abfragen Nicht zutreffend Vollständig unterstützt
Zeitreiseabfragen Gilt nicht für dieses Tabellenformat Vollständig unterstützt
Metadaten-Tabellen Gilt nicht für dieses Tabellenformat Wird unterstützt, aber bestimmte Tabellen sind ausgeblendet. Weitere Informationen finden Sie unter Überlegungen und Einschränkungen.
DML INSERT Nur mit IAM-Berechtigungen Nur mit IAM-Berechtigungen
DML-UPDATE Gilt nicht für dieses Tabellenformat Nur mit IAM-Berechtigungen
DML DELETE Gilt nicht für dieses Tabellenformat Nur mit IAM-Berechtigungen
Lesevorgänge Vollständig unterstützt Vollständig unterstützt
Gespeicherte Prozeduren Nicht zutreffend Unterstützt mit den Ausnahmen von register_table und migrate. Weitere Informationen finden Sie unter Überlegungen und Einschränkungen.