RBAC (Role-based Access Control) is een Snowflake beveiligingsmodel dat gebruik maakt van rollen om Snowflake gebruikers directe toegang te verlenen tot de objecten binnen hun account. Een gebruiker kan dus alleen taken uitvoeren nadat hij een geschikte rol heeft aangenomen.

Snowflake beveiligingsmodel kent 2 soorten rollen:

  • Vooraf Gedefinieerde Systeem beveiligingsrollen. Dit zijn vooraf geconfigureerd rollen in Snowflake die bij de eerste installatie van Snowflake mee geleverd worden. De best practices voor deze rollen gaan we uitgebreid bespreken verder in dit blog.
  • Aangepaste beveiligingsrollen (alle andere rollen dan de systeem gedefinieerde rollen)
    Aangepaste rollen kunnen aangemaakt worden door de rol USERADMIN (of een hogere rol) en door elke rol waaraan het ‘CREATE ROLE’ voorrecht toegekend is. Standaard wordt een nieuw aangemaakte rol niet toegekend aan een gebruiker, ook wordt het niet toegekend aan een andere rol.

Best Practices Aangepaste beveiligingsrollen

Omdat het in Snowflake mogelijk is om rollen aan elkaar toe te kennen, raadt Snowflake aan een hiërarchie van aangepaste rollen aan te maken, en vervolgens met de hoogste aangepaste rol toegewezen aan de systeemrol SYSADMIN. In het onderstaande diagram zie je hoe rollen andere rollen erven (in de Snowflake rol-hiërarchie lezen we met de pijlrichting).

Naarmate uw organisatie groeit, zullen er waarschijnlijk meer van zulke aangepaste rollen ontstaan. Overzicht houden van wie, wat, waar toegang op mag hebben kan dan bemoeilijkt worden. 

Door deze rolstructuur aan te houden, betekent dat de SYSADMIN rol toegang heeft tot elke tabel en alle gegevens van het hele systeem. Dit stelt namelijk systeembeheerders op accountniveau elke data object (tabel, schema, view etc..)  in het hele systeem kunnen beheren.

Omgekeerd, als een aangepaste rol niet is toegewezen aan SYSADMIN via een rol-hiërarchie, kunnen de systeembeheerders de objecten die eigendom zijn van de rol niet beheren. Dit kan in sommige gevallen een gevaar vormen voor de beveiliging van uw bedrijf. Verder kan deze structuur gebruikt worden voor de audit van een bedrijf. 


Best Practices Vooraf Gedefinieerde
Systeem beveiligingsrollen

ACCOUNTADMIN – De accountbeheerder is een zeer krachtige rol; hij heeft alle beveiligings voorrechten van de SECURITYADMIN en SYSADMIN. Deze rol moet alleen worden gebruikt voor de eerste installatie van Snowflake. Snowflake raadt dan ook aan om verder met USERADMIN rol te werken in het dagelijks praktijk.

Verder heeft deze rol ook toegang tot factureringsinformatie en is tevens de enige rol die de Snowflake Monitoren kan aanmaken (deze monitoren houden de algehele kosten op zowel account niveau als per ‘Compute Warehouse’ ‘in de gaten’). Let op: deze rol nooit aan een andere rol toekennen! Hij moet de absolute top van de rol-hiërarchie zijn.

SECURITYADMIN – Het bijzonder aan deze rol is dat het een heel krachtige beveiligings voorrecht heeft, namelijk: MANAGE GRANTS voorrecht. Met deze voorrecht is het mogelijk elke (rol) toekenning te kunnen wijzigen (inclusief het toekennen van de ACCOUNTADMIN rol aan elke gebruiker). Dit geldt ook voor het intrekken van ALLE rollen! Een heel krachtige rol dus. Om die reden, is het sterk aan raden deze rol alleen in uitzonderlijke omstandigheden te gebruiken, bijvoorbeeld om de toegang tot rollen in te stellen of te controleren, of om bepaalde bevoorrechten in te trekken. Net als de ACCOUNTADMIN rol, wordt sterk aangeraden in plaats van SECURITYADMIN, de USERADMIN te gebruiken. Evenmin, wordt het toekennen van deze rol aan andere rollen ten strengst afgeraden. 

USERADMIN – net als de  SECURITYADMIN rol, is het niet aan te raden deze rol toe te kennen aan een andere rol(len). Verder met deze rol kan een gebruiker of een aangepaste rol worden aangemaakt, maar krijgt verder geen toegang tot onderliggende database-objecten (tabellen, schema’s, views etc.) ervan.

SYSADMIN – De SYSADMIN is verantwoordelijk voor alle databases, schema’s, tabellen en views.

Hoewel ook vermeden moet worden om deze rol aan anderen toe te kennen, kunnen de onderliggende voorrechten (inclusief schema’s maken en tabellen maken, enz.) toegekend worden aan een andere rol die op zijn beurt eigenaar wordt van de onderliggende objecten. Dit komt door de rol-hiërarchie in Snowflake (oftewel een rol ‘erft’ een onderliggende rol). 

PUBLIC – Deze wordt automatisch toegekend aan iedere gebruiker en rol en is publiekelijk beschikbaar.

 

Conclusie

We hebben gezien dat de ACCOUNTADMIN & SECURITYADMIN rollen zoveel mogelijk vermeden moeten worden. In plaats daarvan, wordt de USERADMIN aangeraden te gebruiken voor het aanmaken van gebruikers en aangepaste rollen. 

Verder is het heel belangrijk om na het aanmaken van aangepaste rol, deze dan gelijk toe te kennen aan de SYSADMIN rol – dit stelt de SYSADMIN in staat om aangepaste rollen en alle objecten die eigendom zijn van die rollen te beheren binnen Snowflake.