{"id":69782,"date":"2026-10-29T14:19:00","date_gmt":"2026-10-29T13:19:00","guid":{"rendered":"https:\/\/www.inovex.de\/?p=69782"},"modified":"2026-10-29T14:19:00","modified_gmt":"2026-10-29T13:19:00","slug":"snowform-effizientes-snowflake-management-mit-terraform","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/","title":{"rendered":"SnowForm: Effizientes Snowflake-Management mit Terraform"},"content":{"rendered":"<p>Snowflake hat sich als Industriestandard f\u00fcr Datenl\u00f6sungen etabliert, weit \u00fcber reines Data-Warehousing und die Nutzung als Data Lake hinaus. Insbesondere Snowpark er\u00f6ffnet hierbei M\u00f6glichkeiten, das python-basierte \u00d6kosystem f\u00fcr Machine-Learning-Anwendungen in der Snowflake-Plattform zu nutzen und auch komplexe Data-Science-Anwendungsf\u00e4lle z\u00fcgig zur Produktionsreife zu bringen. Gleichzeitig verwaltet Snowflake im Hintergrund viel der erforderlichen Infrastruktur, weswegen Teams aus Anwendungsentwicklern ohne umfassende Kenntnisse\/F\u00e4higkeiten im Bereich des Cloud Engineerings auskommen k\u00f6nnen.<\/p>\n<p>Diese grundlegende Flexibilit\u00e4t bzgl. Features in Kombination mit den reduzierten Aufgaben in der Account-Administration erm\u00f6glicht es, kleine bis mittelgro\u00dfe Teams mit eigenen Accounts auszustatten, um spezifische Anwendungen individuell auszugestalten.<\/p>\n<p>Wird solch ein Ansatz in einem Unternehmen verfolgt, ergeben sich eine Reihe von wiederkehrenden Herausforderungen, von denen alle so betriebenen Accounts betroffen sind.<!--more--><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_89 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#Grundsaetzliche-Infrastruktur-DB-Strukturen\" >Grunds\u00e4tzliche Infrastruktur, DB-Strukturen<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#Rechte-und-Rollenmanagement\" >Rechte- und Rollenmanagement<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#Rechtekonzept\" >Rechtekonzept<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#Datasharing\" >Datasharing<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#Organisation-von-Shares\" >Organisation von Shares<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#Praktische-Anwendungsfaelle\" >Praktische Anwendungsf\u00e4lle<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#KI-gestuetztes-Artikel-Matching\" >KI-gest\u00fctztes Artikel-Matching<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#Datenqualitaetsplattform-fuer-Stammdaten\" >Datenqualit\u00e4tsplattform f\u00fcr Stammdaten<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#Optimierung-der-Supply-Chain\" >Optimierung der Supply Chain<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#Fazit-und-Ausblick-Der-Weg-zur-Self-Service-Plattform\" >Fazit und Ausblick: Der Weg zur Self-Service-Plattform<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Grundsaetzliche-Infrastruktur-DB-Strukturen\"><\/span>Grunds\u00e4tzliche Infrastruktur, DB-Strukturen<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Zun\u00e4chst ist es sinnvoll, organisationsweite Sicherheitsstandards zu etablieren, damit der unternehmensweite Snowflake-Kosmos keinen Sicherheitsl\u00fccken ausgesetzt ist. Ein entsprechendes Sicherheitskonzept kann grunds\u00e4tzlich Regeln zu Usern, z. B. Verwaltung \u00fcber AAD\/EntraID, Synchronisation mit IAM-Systemen, Multi-Faktor-Authentifizierung, Standards f\u00fcr technische User usw. enthalten.<\/p>\n<p>Als grundlegendes Werkzeug, um Strukturen in den jeweiligen Snowflake-Accounts zu verwalten, hat sich Terraform (bzw. OpenTofu) als das dominierende Tool im Bereich Infrastructure as Code (IaC) etabliert. Seine Konfigurationsdateien bieten eine deklarative Methode zur Verwaltung und Bereitstellung von Cloud-Infrastruktur, einschlie\u00dflich spezifischer Snowflake-Objekte und Integrationen mit externen Hyperscaler-Ressourcen (wie S3\/GS Buckets).<\/p>\n<p>Eine nachhaltige Account-Architektur beinhaltet eine Unterteilung in verschiedene Entwicklungsumgebungen, (z. B. DEV, STAGING &amp; PROD) und ein Sternschema mit jeweils eigenen Schichten zur Datenaufbereitung\/\u2011anreicherung (z. B. RAW, PROCESSED, EXPORT &amp; ARTIFACTS).<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Rechte-und-Rollenmanagement\"><\/span>Rechte- und Rollenmanagement<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Rechtekonzept\"><\/span>Rechtekonzept<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Um generell Least-Privileges- und Need-to-Know-Prinzipien zu etablieren, ist ein granulares Berechtigungs- und Daten-Management f\u00fcr all diese Umgebungen erforderlich, wobei auch hier wiederkehrende Strukturen \u00fcber alle Accounts hinweg geschaffen werden sollten (z. B. READ-, READ-&amp;WRITE- &amp; FULL-Rechte auf einzelne Datenbanken).<\/p>\n<p>Die Vergabe solcher Berechtigungen erfolgt nachvollziehbar und einfach \u00fcber ein Identity- &amp; Access-Management (IAM)- System gekoppelt mit einem Role-Based-Access-Control (RBAC)-Mechanismus. IAM-verwalteten Nutzer:innen k\u00f6nnen so einzelne RBAC-Rollen (z. B. Consumer &amp; Developer) zugewiesen werden. Diese Rollen werden in Snowflake dann mit den entsprechenden Privilegien versehen. In Kombination k\u00f6nnte sich so beispielsweise eine Rolle f\u00fcr eine:n Anwendungsentwickler:in in der STAGING-Umgebung ergeben, der\/die dort Read- &amp; Write-Access zu den Datenbankobjekten \u00fcber alle Schichten hinweg ben\u00f6tigt. F\u00fcr einen Business-Reporting-Use-Case hingegen wird eher lesender Zugriff auf die PROD-Daten erforderlich sein.<\/p>\n<p>Um diese Berechnungen entsprechend zu verteilen, haben wir als ersten Schritt<a href=\"https:\/\/github.com\/inovex\/snowform_access_roles\/tree\/main\"> snowform_access_roles<\/a> als Terraform-Modul entwickelt. Dieses Modul erm\u00f6glicht es, Rollen mit Privilegien auszustatten, auf eine hierarchische Art und Weise, iterativ f\u00fcr die angegebenen Schichten. Hieraus ergibt sich eine zentrale Rechteverwaltung, die schnelle Anpassungen und Erg\u00e4nzungen erlaubt. Das entsprechende Modul kann in einem individuellen Snowflake-Infrastruktur-Repo einfach angebunden werden:<\/p>\n<pre class=\"\">module \"access_roles\" \u00a0{\r\n   source = \"https:\/\/github.com\/inovex\/snowform_access_roles\/local\"\r\n   db \u00a0 \u00a0 = snowflake_database.db\r\n   schemas = [\r\n      {\r\n        name = \"YOUR_SCHEMA_1\"\r\n      },\r\n      {\r\n        name = \"YOUR_SCHEMA_2\"\r\n      }\r\n    ]\r\n    depends_on = [\r\n        snowflake_database.db,\r\n        snowflake_schema.your_schema_1,\r\n        snowflake_schema.your_schema_2\r\n    ]\r\n     providers = {\r\n        snowflake.useradmin \u00a0 \u00a0 = snowflake.useradmin\r\n        snowflake.sysadmin\u00a0 \u00a0 \u00a0 = snowflake.sysadmin\r\n        snowflake.securityadmin = snowflake.securityadmin\r\n       }\r\n}<\/pre>\n<p>Schemata k\u00f6nnen gesammelt in der Konfiguration als Liste angegeben werden. Im Deployment iteriert Terraform zun\u00e4chst \u00fcber die angegebenen Konfigurationen und erstellt eine Map aller kombinierbaren Objekte:<\/p>\n<pre class=\"\">variable\u00a0 \"schemas\"\u00a0 {\r\n     description = \u201cThe data layers for which the access roles are defined.\u201c\r\n     type = list(object({\r\n        name = string\r\n       }\r\n     )\r\n    )\r\ndefault = [\r\n   {\r\n    name = \"YOUR_SCHEMA_1\"\r\n   },\r\n   {\r\n    name = \"YOUR_SCHEMA_2\"\r\n   }\r\n  ]\r\n ]\r\n}\r\nlocals {\r\n     schema_map = { for schema in var.schemas : schema:name =&gt; schema}\r\n}<\/pre>\n<p>Mittels eines for-loops (for_each) werden f\u00fcr diese dann einheitliche Ressourcen angelegt und an die Rollen vergeben (hier am Beispiel einer Reader-Rolle):<\/p>\n<pre class=\"\">resource\u00a0 \"snowflake_account_role\" \u201cr\u201c {\r\n    for_each = local.schema_map\r\n    provider\u00a0 = snowflake.useradmin\r\n    name\u00a0 \u00a0 \u00a0 = \u201c${var.db.name_${each.value.name}_R\u201c\r\n}<\/pre>\n<p>Genauso wird anschlie\u00dfend \u00fcber eine Sammlung erforderlicher Berechtigungen f\u00fcr die einzelnen Rollen iteriert und diesen zugewiesen, einschlie\u00dflich den Berechtigungen f\u00fcr zuk\u00fcnftige Objekte.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Datasharing\"><\/span>Datasharing<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ein weiteres, zentrales Konzept des Snowflake-Datenmanagements zielt darauf ab, Daten einfach mit anderen Accounts zu teilen. Hierf\u00fcr hat Snowflake das Konzept der Listings und Datashares entwickelt. Vereinfacht ausgedr\u00fcckt stellen Shares eine Sammlung von Views f\u00fcr einen Konsumenten-Account bereit, inhaltlich identisch zu den dahinterstehenden Datenquellen aus dem Provider-Account, der als Data Owner fungiert.<\/p>\n<p>Insbesondere im Falle einer unternehmensweiten Architektur, bestehend aus einer Reihe kleinerer Teams mit eigenen Accounts und Datenprodukten, ist es w\u00fcnschenswert, diese Daten mit geringem Aufwand und nachvollziehbar in andere Accounts einzubinden. Genau diese Anbindung machen wir durch das Modul<a href=\"https:\/\/github.com\/inovex\/snowform_import_listings\"> snowform_import_listing<\/a> m\u00f6glich.<\/p>\n<p>In einem Zwei-Schritt-Prozess werden zun\u00e4chst Datenbanken f\u00fcr die jeweiligen Shares angelegt, auf die dann automatisiert die ben\u00f6tigten Privilegien an die zuvor bereitgestellten Rollen vergeben werden. Hierdurch k\u00f6nnen geteilte Daten einfach in den Konsumenten-Accounts verwaltet werden. Neue Datenquellen k\u00f6nnen als Variablen lediglich mit dem Namen des Shares und der neu anzulegenden Datenbank erg\u00e4nzt werden.<\/p>\n<pre class=\"\">module \"snowflake_shared_databases\" {\r\n     source = \"github.com\/inovex\/snowform_import_listing.git?ref=0.0.2\"\r\n     providers = {\r\n         snowflake.sysadmin = snowflake.sysadmin\r\n        }\r\n     snowflake_shares = [\r\n        {\r\n         database_name = \"IMPORTED_DB_NAME\"\r\n         share_name\u00a0 \u00a0 = \"YOUR_ORG.SOME_ACCOUNT.SHARE_NAME\u201c\r\n        },\r\n      ]\r\n\r\n      account_roles = [\r\n         \"ANALYST_ROLE\",\r\n         \"DATA_ENGINEER_ROLE\",\r\n        ]\r\n  }<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"Organisation-von-Shares\"><\/span>Organisation von Shares<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Eine besondere Herausforderung entsteht in solch besagter Architektur mit vielen kleinen Accounts und geteilten Daten: Eine zunehmende Anzahl geteilter Datenbanken f\u00fchrt zu einer geringen \u00dcbersichtlichkeit f\u00fcr Entwickler:innen und Analyst:innen, wenn sie Daten in einer gro\u00dfen Auswahl von Datenbanken suchen m\u00fcssen. Kommen die Daten von verschiedenen Providern und werden gleichzeitig f\u00fcr einen gemeinsamen Anwendungsfall verwendet, halten wir es f\u00fcr sinnvoll, diese Daten logisch zu gruppieren. Mit dem Modul<a href=\"https:\/\/github.com\/inovex\/snowform_logical_import_layer\"> snowform_logical_import_layer<\/a> wird genau diese logische Organisation von geteilten Daten in Konsument:innen-Accounts m\u00f6glich. Im Kern besteht dieses Modul aus einer Reihe von Schemata, zu denen die vorliegenden geteilten Views, nach fachlicher Zugeh\u00f6rigkeit aggregiert, eingeteilt werden:<\/p>\n<pre class=\"\">module \"logical_import_layer\" {\r\n     source\u00a0 = \"github.com\/inovex\/snowform_logical_import_layer.git?ref=1.0.0\"\r\n     # Map source objects to logical layer targets\r\n     source_to_target_mappings = {\r\n          \"X.YOUR_SCHEMA_1.TABLE_V3\" = {\r\n              target_database = \"LOGICAL_PRODUCT_DATA\"\r\n              target_schema \u00a0 = \"PRODUCT_DATA\"\r\n              target_name \u00a0 \u00a0 = \"PRODUCT_MASTER\"\r\n          }\r\n          \"Y.YOUR_SCHEMA_1.TABLE_V1\" = {\r\n              target_database = \"LOGICAL_PRODUCT_DATA\"\r\n              target_schema \u00a0 = \"PRODUCT_DATA\"\r\n              target_name \u00a0 \u00a0 = \"MATERIAL_UNITS\"\r\n           }<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Praktische-Anwendungsfaelle\"><\/span>Praktische Anwendungsf\u00e4lle<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Den praktischen Nutzen im Data Engineering demonstrieren wir bei dmTECH, dem Tochterunternehmen der dm-drogerie markt GmbH &amp; Co. KG. Als Technologieunternehmen von dm entwickelt und betreibt dmTECH digitale Produkte und IT-L\u00f6sungen sowohl f\u00fcr dm-Kundinnen und-Kunden, als auch f\u00fcr die Teams in den dm-M\u00e4rkten und im dialogicum. Im Umfeld des Enterprise Resource Planning (ERP) arbeiten eigenverantwortliche Produktteams an unterschiedlichsten Use Cases und Prozessen. Die Teams verantworten dabei jeweils ihre eigenen Produkte und entwickeln passgenaue L\u00f6sungen f\u00fcr die vielf\u00e4ltigen Anforderungen des Unternehmens. In vielf\u00e4ltigen Fachbereichen erm\u00f6glicht uns SnowForm, die grundlegende Infrastruktur z\u00fcgig aufzusetzen, sodass wir anschlie\u00dfend unseren Fokus auf die Entwicklung verschiedener Anwendungsf\u00e4lle bis zur Produktionsreife legen k\u00f6nnen. Zur Implementierung fachlicher Logik, bestehend aus einer Mischung von ETL- und ML-Prozessen, bietet sich nat\u00fcrlich eine Spark-Implementierung wie Snowpark an, mit den bekannten Vorz\u00fcgen eines Python-basierten \u00d6kosystems.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"KI-gestuetztes-Artikel-Matching\"><\/span>KI-gest\u00fctztes Artikel-Matching<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>So haben wir einen LLM-Ansatz zum Vergleich \u00e4hnlicher, aber nicht identischer Artikel entwickelt. F\u00fcr Menschen mit Dom\u00e4nenwissen sind \u00e4hnliche Produkte verschiedener Hersteller, allein \u00fcber die Artikelinformationen, einfach zu vergleichen. F\u00fcr einen Algorithmus ist jedoch die Auswahl des bestm\u00f6glichen Paares zwischen mehreren, sehr \u00e4hnlichen Artikeln h\u00e4ufig mit hoher Unsicherheit verbunden. Eine Kombination aus Snowflakes Arctic-Modell, einem zus\u00e4tzlich angebundenen OpenAI-Modell, sowie einem fachlich definierten Regelwerk erm\u00f6glicht es uns, passende Artikel-Matchings zu identifizieren.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Datenqualitaetsplattform-fuer-Stammdaten\"><\/span>Datenqualit\u00e4tsplattform f\u00fcr Stammdaten<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Ein weiterer Anwendungsfall, an dem wir aktiv arbeiten, ist eine Datenqualit\u00e4ts-Plattform f\u00fcr Stammdaten. Mit einem Snowflake-Account binden wir s\u00e4mtliche Stammdaten aus dem ERP-System an und bauen daraus Datenprodukte, die unternehmensweit geteilt werden. Parallel etablieren wir einheitliche Datenqualit\u00e4tspr\u00fcfungen und Auswertungen, um die Datenqualit\u00e4t kontinuierlich zu sichern. Besonders interessant ist der Einsatz von Machine Learning, um komplexe oder sogar unbekannte Datenqualit\u00e4tsprobleme zu entdecken und automatische Korrekturen f\u00fcr die Datenmassenpflege vorzubereiten.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Optimierung-der-Supply-Chain\"><\/span>Optimierung der Supply Chain<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Ein Snowflake-Account als zentrale Anlaufstelle f\u00fcr analytischen Anwendungsf\u00e4lle, die sich mit der Optimierung der logistischen Supply Chain bei dm befassen, ist ein weiteres Beispiel. Hier ist besonders spannend, dass viele verschiedene Teams mit unterschiedlichsten Bed\u00fcrfnissen entlang der Supply Chain von dem Account mit Daten versorgt werden, als auch die M\u00f6glichkeit haben, auf dedizierten Warehouses, in dedizierten Schemata eigenst\u00e4ndig zu arbeiten. Mithilfe von SQL oder Snowpark werden auf dem Account von Ad-Hoc-Analysen, \u00fcber einfache Automatisierungen (z. B. mithilfe von Tasks oder externen Tools) bis hin zu komplexen, hochautomatisierten Prozessen eine gro\u00dfe Bandbreite an Use Cases umgesetzt und betrieben.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Fazit-und-Ausblick-Der-Weg-zur-Self-Service-Plattform\"><\/span>Fazit und Ausblick: Der Weg zur Self-Service-Plattform<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ein wichtiger Aspekt bei all diesen Beispielen ist die Gestaltung eines Teils unseres Snowflake-Accounts als Self-Service-Plattform, um die Fachbereiche zu bef\u00e4higen, schneller und direkter mit den Daten zu arbeiten. Die parallele Umsetzung all dieser Aspekte in jeweils einem dom\u00e4nenspezifischen Snowflake-Account war mit unseren kleinen Teams nur dadurch m\u00f6glich, dass wir umfangreiche Grundlagen zu Rollenverwaltung und Snowflake Shares durch Terraform-Module automatisiert und abstrahiert haben.<\/p>\n<p>Eine von uns bereits verwendete Erweiterung erm\u00f6glicht dar\u00fcber hinaus Daten von au\u00dferhalb des Snowflake-Kontexts anzubinden. \u00dcber sogenannte \u201aexterne Stages\u2018, also Snowflake-Objekte, die auf Speicherbuckets in Azure oder GCP weisen, holen wir Daten aus anderen Dom\u00e4nen ab, um sie in unseren Use-Cases zu verwenden. Da es sich hierbei ebenfalls um eine Liste regelm\u00e4\u00dfig wiederkehrender (Snowflake-) Ressourcen handelt, liegt es auf der Hand, auch diese in Zukunft zu modularisieren.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Snowflake hat sich als Industriestandard f\u00fcr Datenl\u00f6sungen etabliert, weit \u00fcber reines Data-Warehousing und die Nutzung als Data Lake hinaus. Insbesondere Snowpark er\u00f6ffnet hierbei M\u00f6glichkeiten, das python-basierte \u00d6kosystem f\u00fcr Machine-Learning-Anwendungen in der Snowflake-Plattform zu nutzen und auch komplexe Data-Science-Anwendungsf\u00e4lle z\u00fcgig zur Produktionsreife zu bringen. Gleichzeitig verwaltet Snowflake im Hintergrund viel der erforderlichen Infrastruktur, weswegen Teams aus [&hellip;]<\/p>\n","protected":false},"author":199,"featured_media":71269,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[],"service":[411,1209],"level":[1280],"coauthors":[{"id":199,"display_name":"Darjan Salaj","user_nicename":"dsalaj"},{"id":206,"display_name":"Julian Seither","user_nicename":"jseither"},{"id":462,"display_name":"Max Koeppel","user_nicename":"mkoeppel"}],"class_list":["post-69782","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","service-data-engineering","service-platform-engineering"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>SnowForm: Effizientes Snowflake-Management mit Terraform - inovex GmbH<\/title>\n<meta name=\"description\" content=\"Wie dmTECH mit Terraform-Modulen Rollen, Datasharing und Self-Service-Datenplattformen in Snowflake skaliert. Best Practices &amp; Codebeispiele lesen!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SnowForm: Effizientes Snowflake-Management mit Terraform - inovex GmbH\" \/>\n<meta property=\"og:description\" content=\"Wie dmTECH mit Terraform-Modulen Rollen, Datasharing und Self-Service-Datenplattformen in Snowflake skaliert. Best Practices &amp; Codebeispiele lesen!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-29T13:19:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/Automatisierte-Cloud-Infrastructure-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1500\" \/>\n\t<meta property=\"og:image:height\" content=\"881\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Darjan Salaj, Julian Seither, Max Koeppel\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/Automatisierte-Cloud-Infrastructure-1-1024x601.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Darjan Salaj\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"8\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Darjan Salaj, Julian Seither, Max Koeppel\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/snowform-effizientes-snowflake-management-mit-terraform\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/snowform-effizientes-snowflake-management-mit-terraform\\\/\"},\"author\":{\"name\":\"Darjan Salaj\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/3eb5d9c43358af38d1e463c024df3da5\"},\"headline\":\"SnowForm: Effizientes Snowflake-Management mit Terraform\",\"datePublished\":\"2026-10-29T13:19:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/snowform-effizientes-snowflake-management-mit-terraform\\\/\"},\"wordCount\":1392,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/snowform-effizientes-snowflake-management-mit-terraform\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/Automatisierte-Cloud-Infrastructure-1.png\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/snowform-effizientes-snowflake-management-mit-terraform\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/snowform-effizientes-snowflake-management-mit-terraform\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/snowform-effizientes-snowflake-management-mit-terraform\\\/\",\"name\":\"SnowForm: Effizientes Snowflake-Management mit Terraform - inovex GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/snowform-effizientes-snowflake-management-mit-terraform\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/snowform-effizientes-snowflake-management-mit-terraform\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/Automatisierte-Cloud-Infrastructure-1.png\",\"datePublished\":\"2026-10-29T13:19:00+00:00\",\"description\":\"Wie dmTECH mit Terraform-Modulen Rollen, Datasharing und Self-Service-Datenplattformen in Snowflake skaliert. Best Practices & Codebeispiele lesen!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/snowform-effizientes-snowflake-management-mit-terraform\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/snowform-effizientes-snowflake-management-mit-terraform\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/snowform-effizientes-snowflake-management-mit-terraform\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/Automatisierte-Cloud-Infrastructure-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/Automatisierte-Cloud-Infrastructure-1.png\",\"width\":1500,\"height\":881},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/snowform-effizientes-snowflake-management-mit-terraform\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SnowForm: Effizientes Snowflake-Management mit Terraform\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/inovexde\",\"https:\\\/\\\/x.com\\\/inovexgmbh\",\"https:\\\/\\\/www.instagram.com\\\/inovexlife\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inovex\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/3eb5d9c43358af38d1e463c024df3da5\",\"name\":\"Darjan Salaj\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/cropped-profile_dsalaj_2024_hk-96x96.jpg9fcfeffc54642cddbc08ffd0e0638b80\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/cropped-profile_dsalaj_2024_hk-96x96.jpg\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/cropped-profile_dsalaj_2024_hk-96x96.jpg\",\"caption\":\"Darjan Salaj\"},\"description\":\"As a Data\\\/ML Engineer at inovex, I specialize in building robust pipelines for large-scale data processing in distributed systems. I focus on delivering high-impact data products by prioritizing data quality and master data governance, ensuring that machine learning models are built on a foundation of reliable, well-governed information. I have extensive experience collaborating with SAP customers to modernize their data landscapes and integrate intelligent solutions into their enterprise workflows.\",\"sameAs\":[\"https:\\\/\\\/dsalaj.com\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/darjan-salaj-78599818b\\\/\"],\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/author\\\/dsalaj\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SnowForm: Effizientes Snowflake-Management mit Terraform - inovex GmbH","description":"Wie dmTECH mit Terraform-Modulen Rollen, Datasharing und Self-Service-Datenplattformen in Snowflake skaliert. Best Practices & Codebeispiele lesen!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/","og_locale":"de_DE","og_type":"article","og_title":"SnowForm: Effizientes Snowflake-Management mit Terraform - inovex GmbH","og_description":"Wie dmTECH mit Terraform-Modulen Rollen, Datasharing und Self-Service-Datenplattformen in Snowflake skaliert. Best Practices & Codebeispiele lesen!","og_url":"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2026-10-29T13:19:00+00:00","og_image":[{"width":1500,"height":881,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/Automatisierte-Cloud-Infrastructure-1.png","type":"image\/png"}],"author":"Darjan Salaj, Julian Seither, Max Koeppel","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/Automatisierte-Cloud-Infrastructure-1-1024x601.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"Darjan Salaj","Gesch\u00e4tzte Lesezeit":"8\u00a0Minuten","Written by":"Darjan Salaj, Julian Seither, Max Koeppel"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/"},"author":{"name":"Darjan Salaj","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/3eb5d9c43358af38d1e463c024df3da5"},"headline":"SnowForm: Effizientes Snowflake-Management mit Terraform","datePublished":"2026-10-29T13:19:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/"},"wordCount":1392,"commentCount":0,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/Automatisierte-Cloud-Infrastructure-1.png","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/","url":"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/","name":"SnowForm: Effizientes Snowflake-Management mit Terraform - inovex GmbH","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/Automatisierte-Cloud-Infrastructure-1.png","datePublished":"2026-10-29T13:19:00+00:00","description":"Wie dmTECH mit Terraform-Modulen Rollen, Datasharing und Self-Service-Datenplattformen in Snowflake skaliert. Best Practices & Codebeispiele lesen!","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/Automatisierte-Cloud-Infrastructure-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/Automatisierte-Cloud-Infrastructure-1.png","width":1500,"height":881},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/snowform-effizientes-snowflake-management-mit-terraform\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"SnowForm: Effizientes Snowflake-Management mit Terraform"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/3eb5d9c43358af38d1e463c024df3da5","name":"Darjan Salaj","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/wp-content\/uploads\/cropped-profile_dsalaj_2024_hk-96x96.jpg9fcfeffc54642cddbc08ffd0e0638b80","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/cropped-profile_dsalaj_2024_hk-96x96.jpg","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/cropped-profile_dsalaj_2024_hk-96x96.jpg","caption":"Darjan Salaj"},"description":"As a Data\/ML Engineer at inovex, I specialize in building robust pipelines for large-scale data processing in distributed systems. I focus on delivering high-impact data products by prioritizing data quality and master data governance, ensuring that machine learning models are built on a foundation of reliable, well-governed information. I have extensive experience collaborating with SAP customers to modernize their data landscapes and integrate intelligent solutions into their enterprise workflows.","sameAs":["https:\/\/dsalaj.com\/","https:\/\/www.linkedin.com\/in\/darjan-salaj-78599818b\/"],"url":"https:\/\/www.inovex.de\/de\/blog\/author\/dsalaj\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/69782","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=69782"}],"version-history":[{"count":5,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/69782\/revisions"}],"predecessor-version":[{"id":70592,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/69782\/revisions\/70592"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/71269"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=69782"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=69782"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=69782"},{"taxonomy":"level","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/level?post=69782"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=69782"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}