Automatisierte Cloud-Infrastruktur mit Terraform

Automatisierte Cloud-Infrastruktur mit Terraform
Daten und Kontext
Kategorien
Data Management
Schlagworte
No items found.
Autor
Nick Hundenborn
Lesedauer
3 Minuten

Rollenbasierte Zugriffskontrolle in Snowflake mit Terraform verwalten

Data Engineers dürften weinen vor Glück: Die rollenbasierte Zugriffskontrolle in dem mächtigen Cloud Data Warehouse Snowflake kann zu einer lästigen Fleißarbeit ausarten. Das von taod entwickelte Terraform- Modul ermöglicht die automatisierte und sichere Verwaltung von Cloud-Infrastruktur. Ein technischer Einblick.

Zunehmende Compliance-Richtlinien und Datenschutzvorschriften sowie stetig wachsende Data Warehouses mit zahlreichen Ressourcen bringen herkömmliche Sicherheitskonzepte immer mehr an ihre Grenzen. Daher erfreut sich die rollenbasierte Zugriffskontrolle (Role-Based- Access-Control / RBAC) als robustes und skalierbares System immer größerer Beliebtheit. Hierbei werden Nutzer und Rechte auf Datenbankobjekten (DBOs) in Rollen gruppiert. Ziel sind eine vereinfachte Verwaltung und klar definierte Sicherheitsstrukturen, die dennoch flexibel und effizient angepasst werden können. Nutzern werden hierbei immer nur Benutzerrollen (Functional Roles) zugewiesen. Ressourcenrollen (Access Roles) hingegen definieren konkrete Privilegien auf Datenbankobjekte. So kann eine Access Role beispielsweise die READ, WRITE und UPDATE Rechte auf eine Datenbank vereinen. Ressourcenrollen werden dann den Benutzerrollen zugeordnet.

Auf diese Weise bündelt man mehrere Privilegien auf ein DBO in einer Ressourcenrolle, mehrere Ressourcenrollen in einer Benutzerrolle und mehrere Nutzer in derselben Benutzerrolle. Diese Abstraktionsebenen erleichtern nicht nur die Verwaltung von Berechtigungen, sie sind auch weniger fehleranfällig als die manuelle Zuweisung aller direkten Nutzerrechte auf DBOs. Außerdem ist RBAC skalierbar, sodass im Vergleich zu herkömmlichen Sicherheitskonzepten deutlich weniger Aufwand für neue Nutzer oder Ressourcen erforderlich ist.

Traditionelle Zugriffskontrollen
Rollenbasierte Zugriffskontrollen

Grenzen von RBAC

Doch selbst RBAC mit seiner Skalierfähigkeit kommt an seine Grenzen, sobald mit einem Modern Data Stack gearbeitet wird. Durch Ingestion Tools werden hunderte Quellen angebunden und ELT-Tools wie dbt bauen mit Leichtigkeit ein Data Warehouse mit mehreren hundert Tabellen in einer Handvoll Schemas. Das manuelle Verwalten mehrerer Ressourcenrollen für allein jede Datenbank und jedes Schema wird in solchen Szenarien zu einer fehleranfälligen Fleißarbeit.

Der mit Abstand lästigste Aufwand bei der Umsetzung von RBAC in einem so mächtigen Cloud Data Warehouse wie Snowflake ist die Erstellung und Rechteverwaltung der zahlreichen Access Roles. Zum Glück ist diese immer extrem formelhaft. Engineers müssen nur einmal definieren, welche Gruppen von Rechten üblicherweise auf einen Ressourcentyp gebündelt genutzt werden, und erstellen eine entsprechende Access Role für jede Gruppierung und Instanz dieses Typs. So können wir beispielsweise die MANAGE Access Role auf einer Datenbank definieren, als Gruppierung der Privilegien MODIFY, USAGE und MONITOR. Für jede Datenbank würden wir dann eine Access Role namens AR_DATENBANKNAME_MANAGE erstellen, um genau diese drei Privilegien auf dieser Datenbank gebündelt zuweisen zu können. Analog lassen sich Access Roles auf Schemas, Data Warehouses, Resource Monitors und Storage Integrations definieren.

Gruppierung von Privilegien zu Access-Rollen

Infrastructure as Code mit Terraform

Hier kommt Terraform ins Spiel. Dieses Tool für Infrastructure as Code (IaC) ermöglicht die automatisierte und konsistente Bereitstellung und Verwaltung von Cloud-Infrastruktur. Die deklarative Syntax erlaubt das Definieren der gewünschten Ressourcen in Snowflake, ohne sich um die Details der Bereitstellung kümmern zu müssen. Natürlich lassen sich in Terraform auch wiederverwendbare Module beschreiben, durch die ähnliche, formelhafte Ressourcen wie Access Roles automatisch erstellt werden können.

Das von taod eigens hierzu entwickelte Snowflake RBAC Terraform-Modul übernimmt die komplette Arbeit der Ressourcen-Erstellung. Als eine Art Blaupause für den Snowflake Account muss lediglich die gewünschte Struktur hierarchisch in einer Yaml-Datei aufgezeichnet werden. Relevant hierfür sind die Functional Roles inklusive der zuzuordnenden Snowflake-Nutzer und alle Datenbankobjekte, auf die Access Roles vergeben werden sollen. Außerdem können zu eben diesen Objekten die vom Modul vorgegebenen Access Role Blaupausen zugeordnet werden (hier sind create_schema und manage Access Roles auf Datenbankebene).

Auf kurze, deskriptive Weise werden gleich mehrere Objekte und Nutzer definiert. Terraform erstellt diese und alle benötigten Access Roles automatisch und weist sie entsprechend neu zu.

Welche konkreten Rechte eine Access Role hat, wird im Modul für jeden Typ von DBO festgelegt: Das Modul übernimmt außerdem die ganze Logik rund um Namenskonventionen der Access Roles und Functional Roles. Im Beispiel oben würden für die Datenbank db_dev die Access Roles AR_CREATE_SCHEMA__DB_DEV und AR_MANAGE__ DB_DEV erstellt werden, wobei die Benutzerrollen dbt_developer beide Access Roles zugewiesen bekommt und data_loader nur die letztere.

Durch die hierarchische Vererbung von Rollen in Snowflake hat letztendlich die Nutzerin "alice" mit der Rolle data_ loader nun die Access Role create_schema mit den USAGE, MONITOR und CREATE SCHEMA Privilegien auf der db_dev Datenbank. Das Modul zieht sich diesen Bauplan von Ressourcen und übersetzt es in die entsprechenden Befehle in Snowflake, um den Bauplan wie beschrieben umzusetzen. Dabei werden nicht nur die Rollen und Rechte automatisch verwaltet. Auch alle Datenbankobjekte obliegen nach Einsatz des Moduls dem hütenden Auge von Terraform. Als Folge besitzen Snowflake-Nutzer ein robustes Sicherheitskonzept und profitieren von allen Vorteilen, die Terraform als Infrastructure-as-Code-Tool mit sich bringt.

Dieser Artikel erschien erstmalig in abgewandelter Form in der Ausgabe 02/23 unseres Magazins data! Alle Ausgaben und Artikel findest du hier:

data! Magazin: Cloud Services, Data Analytics & AI | taod

No items found.
No items found.
Weitere Themen und Beratung rund um Data und Analytics
No items found.
Bleib mit unserem monatlichen Newsletter immer auf dem aktuellen Stand. Alle neuen Whitepaper, Blog-Artikel und Infos inklusive.
Newsletter abonnieren
Firmensitz Köln

taod Consulting GmbH
Oskar-Jäger-Str. 173, K4
50825 Köln‍
Standort Hamburg

taod Consulting GmbH
Alter Wall 32
20457 Hamburg
Standort Stuttgart

taod Consulting GmbH
Schelmenwasenstraße 37
70567 Stuttgart