	{"id":68170,"date":"2022-10-10T10:16:34","date_gmt":"2022-10-10T09:16:34","guid":{"rendered":"https:\/\/www.artefact.com\/?post_type=blog&#038;p=68170"},"modified":"2024-09-20T17:45:51","modified_gmt":"2024-09-20T16:45:51","slug":"snowflake-access-control-at-scale","status":"publish","type":"blog","link":"https:\/\/www.artefact.com\/nl\/blog\/snowflake-access-control-at-scale\/","title":{"rendered":"Snowflake toegangscontrole op schaal"},"content":{"rendered":"<p><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling article-author\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-color:#ffffff;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_2 1_2 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-title title fusion-title-1 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-margin-bottom-small:8px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:50;line-height:1.2;\">Auteur<\/h2><\/div><img decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27150%27%20height%3D%270%27%20viewBox%3D%270%200%20150%200%27%3E%3Crect%20width%3D%27150%27%20height%3D%270%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/10\/benoit-goujon.jpeg\" alt=\"Image\" class=\"lazyload artefact-elegant-image align-left article-author-image\" style=\"width: 150px; border-radius: 54% 46% 77% 23% \/ 74% 40% 60% 26%; overflow: hidden;\" width=\"150\" height=\"auto\" \/><div class=\"fusion-title title fusion-title-2 fusion-sep-none fusion-title-text fusion-title-size-three article-author-name-title\" style=\"--awb-margin-bottom-small:8px;\"><h3 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:20;line-height:1.2;\">Beno\u00eet Goujon<\/h3><\/div><div class=\"fusion-text fusion-text-1 article-author-description\" style=\"--awb-text-transform:none;\"><p>Data Engineer bij Artefact<\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-margin-top:40px;--awb-margin-bottom:40px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-center fusion-flex-justify-content-center fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_1 1_1 fusion-flex-column fusion-flex-align-self-center fusion-column-inner-bg-wrapper\" style=\"--awb-padding-top:20px;--awb-padding-right:20px;--awb-padding-bottom:20px;--awb-padding-left:20px;--awb-overflow:hidden;--awb-inner-bg-size:cover;--awb-border-color:rgba(10,17,40,0.1);--awb-border-top:1px;--awb-border-right:1px;--awb-border-bottom:1px;--awb-border-left:1px;--awb-border-style:solid;--awb-border-radius:4px 4px 4px 4px;--awb-inner-bg-border-radius:4px 4px 4px 4px;--awb-inner-bg-overflow:hidden;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><span class=\"fusion-column-inner-bg hover-type-none\"><a class=\"fusion-column-anchor\" href=\"https:\/\/medium.com\/artefact-engineering-and-data-science\/snowflake-access-management-at-scale-44b7add1b978\" rel=\"noopener noreferrer\" target=\"_blank\"><span class=\"fusion-column-inner-bg-image\"><\/span><\/a><\/span><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-center fusion-content-layout-row fusion-flex-align-items-center\"><div class=\"fusion-text fusion-text-2\"><p><u>Lees ons artikel over<\/u><\/p>\n<\/div><div class=\"fusion-image-element\" style=\"--awb-margin-right:20px;--awb-margin-left:20px;--awb-max-width:150px;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\"fusion-imageframe imageframe-none imageframe-1 hover-type-none\"><img decoding=\"async\" width=\"4000\" height=\"992\" title=\"Medium Blog\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog.png\" alt class=\"lazyload img-responsive wp-image-60582\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%274000%27%20height%3D%27992%27%20viewBox%3D%270%200%204000%20992%27%3E%3Crect%20width%3D%274000%27%20height%3D%27992%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-200x50.png 200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-400x99.png 400w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-600x149.png 600w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-800x198.png 800w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-1200x298.png 1200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog.png 4000w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 4000px\" \/><\/span><\/div><div class=\"fusion-text fusion-text-3\"><p>.<\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-3 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-4 description\" style=\"--awb-text-transform:none;\"><p>Hoe we het beheer van een account met meer dan 50 gebruikers automatiseerden en tegelijkertijd aan de data governance normen voldeden<\/p>\n<\/div><\/div><\/div><\/div><\/div><article class=\"fusion-fullwidth fullwidth-box fusion-builder-row-4 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-justify-content-center fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-3 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-5\" style=\"--awb-text-transform:none;\"><p>Steeds meer bedrijven stellen Snowflake centraal in hun data platforms. Zelfs als het een beheerde oplossing is, moet u nog steeds de omgeving beheren. Dat kan een uitdaging zijn, vooral voor grote bedrijven.<\/p>\n<p>Een van de uitdagingen is\u00a0<strong>toegangscontrole<\/strong>. Het is een essentieel onderdeel van elk data governance-programma. Snowflake biedt\u00a0<a class=\"au lc\" href=\"https:\/\/docs.snowflake.com\/en\/user-guide\/security-access-control-overview.html\" target=\"_blank\" rel=\"noopener ugc nofollow\">kant-en-klare functies<\/a>\u00a0om deze uitdaging aan te gaan. Maar wanneer u tientallen gebruikers en terabytes aan data hebt, zijn ingebouwde functies niet genoeg. U moet nadenken over een strategie om uw account te beheren.<\/p>\n<p>Wij zijn er geweest. Voor \u00e9\u00e9n van <a href=\"https:\/\/www.artefact.com\/nl\/about-us\/\">onze klanten<\/a>, We beheerden een account met meer dan 50 actieve gebruikers. We ontwierpen een oplossing om het toegangsbeheer op te schalen.<\/p>\n<p>Dit artikel beschrijft de belangrijkste lessen van het afgelopen jaar.<\/p>\n<\/div><div class=\"fusion-title title fusion-title-3 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-margin-bottom-small:8px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:50;line-height:1.2;\">Initi\u00eble situatie<\/p><\/h2><\/div><div class=\"fusion-text fusion-text-6\" style=\"--awb-text-transform:none;\"><p>Voordat we bij het bedrijf kwamen, was de account opgezet en waren er veel goede idee\u00ebn ge\u00efmplementeerd.\u00a0<a class=\"au lc\" href=\"https:\/\/docs.snowflake.com\/en\/user-guide\/security-access-control-overview.html#custom-roles\" target=\"_blank\" rel=\"noopener ugc nofollow\">Aangepaste rollen<\/a>\u00a0was gemaakt. Gebruikers werden zorgvuldig beheerd. Maar er waren een paar beperkingen:<\/p>\n<\/div><ul style=\"--awb-line-height:27.2px;--awb-icon-width:27.2px;--awb-icon-height:27.2px;--awb-icon-margin:11.2px;--awb-content-margin:38.4px;\" class=\"fusion-checklist fusion-checklist-1 fusion-checklist-default type-icons\"><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">De administratie werd gedaan\u00a0<strong>handmatig<\/strong>\u00a0wat de verantwoordelijken veel tijd kostte.<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">Data analisten en ontwikkelaars gebruikten hun accounts voor geautomatiseerde taken. Dat was een probleem omdat werknemers hun wachtwoorden moesten delen. Naast het grote beveiligingsprobleem, waren er ook bugs door ingetrokken inloggegevens toen mensen het bedrijf verlieten.<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p>Er was\u00a0<strong>geen documentatie<\/strong>\u00a0van de aanwezige rollen, waardoor het moeilijk is om de huidige machtigingen te controleren en regelmatig te herzien.<\/p>\n<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">Gebruikers werden uitsluitend vanuit Snowflake beheerd. Wanneer werknemers het bedrijf verlieten, moesten de beheerders van de Snowflake-omgeving zich daarvan bewust zijn. Het team dat verantwoordelijk was voor het gebruikersbeheer (Active Directory) was niet hetzelfde als het team dat verantwoordelijk was voor het Snowflake-account. Er bestond dus een risico dat ex-werknemers na hun vertrek toegang konden krijgen tot de data van het bedrijf.<\/div><\/li><\/ul><div class=\"fusion-text fusion-text-7\" style=\"--awb-text-transform:none;\"><p>We cre\u00eberden een nieuw systeem om de toegangscontrole te beheren en deze tekortkomingen te bestrijden.<\/p>\n<\/div><div class=\"fusion-title title fusion-title-4 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-margin-bottom-small:8px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:50;line-height:1.2;\">Ontwerp van het toegangscontrole framework<\/p><\/h2><\/div><div class=\"fusion-text fusion-text-8\" style=\"--awb-text-transform:none;\"><p>Eerst trokken we alle standaard roltoewijzingen (SYSADMIN, USERADMIN ...) aan gebruikers in ... Slechts een paar mensen konden die rollen aannemen. Dat waren de mensen die verantwoordelijk waren voor de administratie.<\/p>\n<p>Ten tweede cre\u00eberden we een kader voor toegangscontrole op basis van aangepaste rollen. We hebben twee soorten aangepaste rollen gedefinieerd:<\/p>\n<\/div><ul style=\"--awb-line-height:27.2px;--awb-icon-width:27.2px;--awb-icon-height:27.2px;--awb-icon-margin:11.2px;--awb-content-margin:38.4px;\" class=\"fusion-checklist fusion-checklist-2 fusion-checklist-default type-icons\"><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p><strong>Toegangsrollen<\/strong>\u00a0dekken een reeks rechten op laag niveau op Snowflake-objecten. Een toegangsrol kan bijvoorbeeld alleen-lezen rechten op een bepaalde database omvatten. Ze worden niet rechtstreeks aan gebruikers toegekend.<\/p>\n<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p><strong>Functionele rollen<\/strong>\u00a0zijn de rollen die aan gebruikers worden toegekend. Ze omvatten een reeks toegangsrollen. Ze worden aangemaakt voor een specifiek team.<\/p>\n<\/div><\/li><\/ul><div class=\"fusion-text fusion-text-9\" style=\"--awb-text-transform:none;\"><p>We hebben ervoor gekozen om toegangsrollen te defini\u00ebren op het\u00a0<strong>databasisniveau<\/strong>. Het maakt het eenvoudig om de privileges van de ene omgeving naar de andere te repliceren met behulp van zero-copy cloning. Het was ook een\u00a0<strong>afweging<\/strong>\u00a0tussen de flexibiliteit die we eindgebruikers bieden en de strikte toepassing van het principe van de laagste rechten.<\/p>\n<p>Op het niveau database hebben we 3 niveaus van toegangsrollen gedefinieerd:<\/p>\n<\/div><ul style=\"--awb-line-height:27.2px;--awb-icon-width:27.2px;--awb-icon-height:27.2px;--awb-icon-margin:11.2px;--awb-content-margin:38.4px;\" class=\"fusion-checklist fusion-checklist-3 fusion-checklist-default type-icons\"><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p>Alleen-lezen<\/p>\n<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p>Lezen en schrijven<\/p>\n<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p>Admin<\/p>\n<\/div><\/li><\/ul><div class=\"fusion-text fusion-text-10\" style=\"--awb-text-transform:none;\"><p>We hebben een vergelijkbare strategie toegepast voor toegang tot magazijnen met twee soorten rollen:<\/p>\n<\/div><ul style=\"--awb-line-height:27.2px;--awb-icon-width:27.2px;--awb-icon-height:27.2px;--awb-icon-margin:11.2px;--awb-content-margin:38.4px;\" class=\"fusion-checklist fusion-checklist-4 fusion-checklist-default type-icons\"><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p>Gebruiker<\/p>\n<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p>Admin<\/p>\n<\/div><\/li><\/ul><div class=\"fusion-text fusion-text-11\" style=\"--awb-text-transform:none;\"><p>Hieronder ziet u een illustratie van ons raamwerk. Pijlen staan voor subsidies.<\/p>\n<\/div><div class=\"fusion-image-element\" style=\"--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\"fusion-imageframe imageframe-none imageframe-2 hover-type-none\"><img decoding=\"async\" width=\"632\" height=\"596\" alt=\"Below is an illustration of our framework. Arrows represent grants. Snowflakes\" title=\"Hieronder ziet u een illustratie van ons raamwerk. Pijlen staan voor subsidies.\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2022\/10\/Below-is-an-illustration-of-our-framework.-Arrows-represent-grants..png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2022\/10\/Below-is-an-illustration-of-our-framework.-Arrows-represent-grants..png\" class=\"lazyload img-responsive wp-image-68174\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27632%27%20height%3D%27596%27%20viewBox%3D%270%200%20632%20596%27%3E%3Crect%20width%3D%27632%27%20height%3D%27596%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2022\/10\/Below-is-an-illustration-of-our-framework.-Arrows-represent-grants.-200x189.png 200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2022\/10\/Below-is-an-illustration-of-our-framework.-Arrows-represent-grants.-400x377.png 400w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2022\/10\/Below-is-an-illustration-of-our-framework.-Arrows-represent-grants.-600x566.png 600w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2022\/10\/Below-is-an-illustration-of-our-framework.-Arrows-represent-grants..png 632w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 632px\" \/><\/span><\/div><div class=\"fusion-text fusion-text-12\" style=\"--awb-text-transform:none;\"><p>Op dit punt hadden we een beter idee van hoe we machtigingen zouden beheren, maar we hadden ook problemen met gebruikersbeheer.<\/p>\n<\/div><div class=\"fusion-title title fusion-title-5 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-margin-bottom-small:8px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:50;line-height:1.2;\">Gebruikersbeheer<\/p><\/h2><\/div><div class=\"fusion-text fusion-text-13\" style=\"--awb-text-transform:none;\"><p>We hebben\u00a0<strong>Eenmalige aanmelding<\/strong>\u00a0zodat Snowflake-gebruikers\u00a0<strong>aanmelden via Azure Active Directory (AAD)<\/strong>. Zo hebben we de complexiteit van het onderhouden van twee data-bases van gebruikers weggenomen en was het offboardingproces robuuster. We hoefden de gebruiker alleen maar uit te schakelen in AAD en de verwijdering werd automatisch gerepliceerd naar Snowflake.<\/p>\n<p>Aangezien er een mapping is tussen AD-groepen en rollen in Snowflake, konden we een rol toekennen aan elke gebruiker die we aanmaken. We volgen hetzelfde proces voor elke nieuwe gebruiker.<\/p>\n<\/div><ul style=\"--awb-line-height:27.2px;--awb-icon-width:27.2px;--awb-icon-height:27.2px;--awb-icon-margin:11.2px;--awb-content-margin:38.4px;\" class=\"fusion-checklist fusion-checklist-5 fusion-checklist-default type-icons paddingList dark-text\"><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">Ze sturen een verzoek via ons ticketingsysteem waarin ze uitleggen tot welk team ze behoren en wat hun toegangsbehoeften zijn.<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p>We voegen de gebruiker toe aan de overeenkomstige AD-groep(en)<\/p>\n<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p>De synchronisatie gebeurt op de achtergrond<\/p>\n<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p>De gebruiker heeft toegang tot Snowflake en kan de rol gebruiken die wij hem hebben toegekend<\/p>\n<\/div><\/li><\/ul><div class=\"fusion-text fusion-text-14\" style=\"--awb-text-transform:none;\"><p>Dit is het proces voor echte menselijke gebruikers, maar het biedt geen oplossing voor een van de beperkingen die aan het begin van dit artikel werden genoemd: het gebruik van persoonlijke referenties voor geautomatiseerde taken.<\/p>\n<p>Daarom hebben we\u00a0<strong>serviceaccounts<\/strong>. Het beheer van serviceaccounts lijkt erg op wat we zojuist beschreven hebben. Het enige verschil is dat we voor elke serviceaccount een functionele rol maken. Er is een\u00a0<strong>\u00e9\u00e9n-op-\u00e9\u00e9n relatie tussen servicerekeningen en hun rollen<\/strong>. Daarom beperken we het bereik van de machtigingen voor elke serviceaccount strikt.<\/p>\n<p>Die stappen waren grote verbeteringen. Alles werd gedocumenteerd. Teams namen het nieuwe framework snel over. We waren tevreden.<\/p>\n<p>Maar we besteedden nog steeds veel tijd aan het handmatig verlenen van toegang, en omdat dit erg handmatig was, was het ook foutgevoelig. De behoefte aan een tool om deze taken te automatiseren was duidelijk.<\/p>\n<\/div><div class=\"fusion-title title fusion-title-6 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-margin-bottom-small:8px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:50;line-height:1.2;\">Automatisering als redding<\/p><\/h2><\/div><div class=\"fusion-text fusion-text-15\" style=\"--awb-text-transform:none;\"><p>We hadden een paar opties:<\/p>\n<\/div><ul style=\"--awb-line-height:27.2px;--awb-icon-width:27.2px;--awb-icon-height:27.2px;--awb-icon-margin:11.2px;--awb-content-margin:38.4px;\" class=\"fusion-checklist fusion-checklist-6 fusion-checklist-default type-icons paddingList dark-text\"><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">Gebruik de\u00a0<a class=\"au lc\" href=\"https:\/\/registry.terraform.io\/providers\/Snowflake-Labs\/snowflake\/latest\" target=\"_blank\" rel=\"noopener ugc nofollow\">Snowflake Terraform leverancier<\/a>\u00a0het milieu beheren<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">Bash-scripts schrijven om het aanmaken van gebruikers en het toekennen van rechten te automatiseren<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p>Onze eigen CLI schrijven in een taal zoals Python of Go<\/p>\n<\/div><\/li><\/ul><div class=\"fusion-text fusion-text-16\" style=\"--awb-text-transform:none;\"><p>Uiteindelijk hebben we een CLI in Python gemaakt.<\/p>\n<p>Wij geven de voorkeur aan het gebruik van Terraform om infrastructuur te implementeren en alleen infrastructuur. Ongewenst gedrag kan optreden wanneer u uw gebruikers en rechten met Terraform gaat beheren. Geheime rotatie is bijvoorbeeld erg moeilijk te beheren.<\/p>\n<p>Wij houden van bash, maar alleen voor ad-hoc en eenvoudige bewerkingen. Hier moeten we configuratiebestanden laden, communiceren met de Snowflake API en data structuren manipuleren. Dit is mogelijk, maar zou op de lange termijn moeilijk te onderhouden zijn.<\/p>\n<p>Naast dit aspect hadden we ook betrouwbaarheid nodig. E\u00e9n manier om dit te bereiken is door tests te schrijven. Dit is gemakkelijker te doen in programmeertalen zoals Python.<\/p>\n<p>Wanneer u het hulpprogramma uitvoert, gebeurt er het volgende achter de schermen.<\/p>\n<\/div><div class=\"fusion-image-element\" style=\"--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\"fusion-imageframe imageframe-none imageframe-3 hover-type-none\"><img decoding=\"async\" width=\"282\" height=\"647\" title=\"0_qDJt0rvHAJJb0wuZ\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2022\/10\/0_qDJt0rvHAJJb0wuZ.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2022\/10\/0_qDJt0rvHAJJb0wuZ.png\" alt class=\"lazyload img-responsive wp-image-68175\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27282%27%20height%3D%27647%27%20viewBox%3D%270%200%20282%20647%27%3E%3Crect%20width%3D%27282%27%20height%3D%27647%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2022\/10\/0_qDJt0rvHAJJb0wuZ-200x459.png 200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2022\/10\/0_qDJt0rvHAJJb0wuZ.png 282w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 282px\" \/><\/span><\/div><div class=\"fusion-text fusion-text-17\" style=\"--awb-text-transform:none;\"><p>Het is de bedoeling dat de tool geen rol maakt die al bestaat. Hetzelfde geldt voor privileges. De tool berekent de\u00a0<strong>verschil tussen de configuratie en de externe omgeving<\/strong>\u00a0en past de nodige wijzigingen toe. Hierdoor kunnen we downtime voorkomen.<\/p>\n<p>In eerste instantie hebben we deze tool lokaal uitgevoerd. Maar dit kon tot problemen leiden. We konden bijvoorbeeld conflicten krijgen tussen twee engineers die tegelijkertijd wijzigingen probeerden aan te brengen. Daarom hebben we een\u00a0<strong>workflow gebaseerd op de CI\/CD-mogelijkheden van Azure DevOps (ADO)<\/strong>.<\/p>\n<blockquote class=\"nn no np\">\n<p>Opmerking: wij gebruikten ADO, maar u kunt hetzelfde doen met GitHub, GitLab of Bitbucket.<\/p>\n<\/blockquote>\n<p>Dit is het uiteindelijke proces.<\/p>\n<\/div><div class=\"fusion-image-element\" style=\"--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\"fusion-imageframe imageframe-none imageframe-4 hover-type-none\"><img decoding=\"async\" width=\"974\" height=\"416\" alt=\"Here is the final process of snowflakes\" title=\"sneeuwvlokken-medium\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2022\/10\/snowflakes-medium.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2022\/10\/snowflakes-medium.png\" class=\"lazyload img-responsive wp-image-68176\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27974%27%20height%3D%27416%27%20viewBox%3D%270%200%20974%20416%27%3E%3Crect%20width%3D%27974%27%20height%3D%27416%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2022\/10\/snowflakes-medium-200x85.png 200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2022\/10\/snowflakes-medium-400x171.png 400w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2022\/10\/snowflakes-medium-600x256.png 600w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2022\/10\/snowflakes-medium-800x342.png 800w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2022\/10\/snowflakes-medium.png 974w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 974px\" \/><\/span><\/div><div class=\"fusion-text fusion-text-18\" style=\"--awb-text-transform:none;\"><p>Deze volledig geautomatiseerde workflow werkt erg goed. Tests vangen defaults vroeg in de CI-pijplijn. En verplichte review is ook een manier om incidenten te voorkomen.<\/p>\n<p>Daarnaast dienen pull requests als een soort documentatie van alle eisen.<\/p>\n<\/div><div class=\"fusion-title title fusion-title-7 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-margin-bottom-small:8px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:50;line-height:1.2;\">Conclusie<\/p><\/h2><\/div><div class=\"fusion-text fusion-text-19\" style=\"--awb-text-transform:none;\"><p>Het is nu iets minder dan een jaar geleden dat we deze oplossing in gebruik namen. Hoewel het een initi\u00eble tijdsinvestering vergde voor de implementatie, was het het helemaal waard.<\/p>\n<p>We besteden nu meer tijd aan discussies met de gebruikers over hun verzoeken en niet aan de daadwerkelijke implementatie. De meeste verzoeken kunnen worden opgelost in ongeveer 10 regels YAML. Dit is erg effici\u00ebnt en het schaalt goed. We verwelkomen nog steeds nieuwe gebruikers en kunnen de vraag aan. Ook hebben we de aanvankelijke problemen opgelost. Het was dus een succes!<\/p>\n<\/div><div class=\"fusion-text fusion-text-20\" style=\"--awb-text-transform:none;\"><article>\n<div class=\"l\">\n<div class=\"l\">\n<section>\n<div class=\"ir is it iu iv\">\n<p class=\"pw-post-body-paragraph ld le iy lf b lg lh jz li lj lk kc ll lm ln lo lp lq lr ls lt lu lv lw lx ly ir ga\" data-selectable-paragraph=\"\">Met dank aan <a class=\"oc et cj\" href=\"https:\/\/medium.com\/u\/16b1369e2064?source=post_page-----44b7add1b978--------------------------------\" target=\"_blank\" rel=\"noopener\">Samy Dougui\u00a0<\/a>die dit artikel heeft beoordeeld en met mij heeft samengewerkt aan het ontwerp van deze oplossing<\/p>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/article>\n<\/div><\/div><\/div><\/div><\/article><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-5 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-margin-top:40px;--awb-margin-bottom:40px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-center fusion-flex-justify-content-center fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-4 fusion_builder_column_1_1 1_1 fusion-flex-column fusion-flex-align-self-center\" style=\"--awb-padding-top:40px;--awb-padding-right:40px;--awb-padding-bottom:40px;--awb-padding-left:40px;--awb-overflow:hidden;--awb-bg-position:left center;--awb-bg-size:cover;--awb-border-color:rgba(10,17,40,0.1);--awb-border-style:solid;--awb-border-radius:4px 4px 4px 4px;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper lazyload fusion-column-has-shadow fusion-flex-justify-content-center fusion-content-layout-column fusion-column-has-bg-image\" data-bg-url=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/03\/background.jpg\" data-bg=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/03\/background.jpg\"><div class=\"fusion-image-element\" style=\"text-align:center;--awb-margin-right:20px;--awb-margin-left:20px;--awb-max-width:150px;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\"fusion-imageframe imageframe-none imageframe-5 hover-type-none\"><img decoding=\"async\" width=\"72\" height=\"41\" title=\"middelgrote\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%2772%27%20height%3D%2741%27%20viewBox%3D%270%200%2072%2041%27%3E%3Crect%20width%3D%2772%27%20height%3D%2741%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/03\/medium.png\" alt class=\"lazyload img-responsive wp-image-60927\"\/><\/span><\/div><div class=\"fusion-title title fusion-title-8 fusion-sep-none fusion-title-center fusion-title-text fusion-title-size-three\" style=\"--awb-margin-top:20px;--awb-margin-bottom:0px;--awb-margin-bottom-small:8px;\"><h3 class=\"fusion-title-heading title-heading-center fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:20;line-height:1.2;\">Medium Blog bij Artefact.<\/h3><\/div><div class=\"fusion-text fusion-text-21\" style=\"--awb-content-alignment:center;\"><p>Dit artikel werd oorspronkelijk gepubliceerd op <strong>Medium.com<\/strong>.<br \/>\nVolg ons op ons medium Blog !<\/p>\n<\/div><div style=\"text-align:center;\"><a class=\"fusion-button button-flat button-medium button-default fusion-button-default button-1 fusion-button-default-span fusion-button-default-type\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/medium.com\/artefact-engineering-and-data-science\/snowflake-access-management-at-scale-44b7add1b978\"><span class=\"fusion-button-text awb-button__text awb-button__text--default\">Lees ons artikel<\/span><\/a><\/div><\/div><\/div><\/div><\/div><\/p>","protected":false},"excerpt":{"rendered":"<p>Snowflake | Hoe we het beheer van een account met meer dan 50 gebruikers hebben geautomatiseerd en tegelijkertijd aan de data governance normen hebben voldaan<\/p>","protected":false},"featured_media":68680,"parent":0,"template":"","meta":{"_acf_changed":false,"ep_exclude_from_search":false},"blog-category":[21939],"blog-language":[2991],"class_list":["post-68170","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog-category-medium","blog-language-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.artefact.com\/nl\/wp-json\/wp\/v2\/blog\/68170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.artefact.com\/nl\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.artefact.com\/nl\/wp-json\/wp\/v2\/types\/blog"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.artefact.com\/nl\/wp-json\/wp\/v2\/media\/68680"}],"wp:attachment":[{"href":"https:\/\/www.artefact.com\/nl\/wp-json\/wp\/v2\/media?parent=68170"}],"wp:term":[{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/www.artefact.com\/nl\/wp-json\/wp\/v2\/blog-category?post=68170"},{"taxonomy":"blog-language","embeddable":true,"href":"https:\/\/www.artefact.com\/nl\/wp-json\/wp\/v2\/blog-language?post=68170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}