{"id":31808,"date":"2025-10-14T07:01:42","date_gmt":"2025-10-14T04:01:42","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/"},"modified":"2025-10-14T07:01:42","modified_gmt":"2025-10-14T04:01:42","slug":"spicedb-hrbac-pratik-uygulama-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/","title":{"rendered":"SpiceDB HRBAC: Pratik Uygulama Rehberi"},"content":{"rendered":"<p><body><\/p>\n<p>Modern uygulamalarda yetkilendirme karma\u015f\u0131kl\u0131\u011f\u0131yla m\u0131 bo\u011fu\u015fuyorsunuz? SpiceDB ile Hiyerar\u015fik Rol Tabanl\u0131 Eri\u015fim Kontrol\u00fc (HRBAC) modelini pratik bir \u015fekilde nas\u0131l uygulayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedin. Bu kapsaml\u0131 rehber, geli\u015ftiricilere g\u00fcvenli, \u00f6l\u00e7eklenebilir ve y\u00f6netilebilir bir yetkilendirme sistemi kurmalar\u0131 i\u00e7in gerekli t\u00fcm ara\u00e7lar\u0131 ve bilgileri sunuyor. Eri\u015fim kontrol\u00fc stratejilerinizi optimize etmeye haz\u0131r m\u0131s\u0131n\u0131z?<\/p>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k yaz\u0131l\u0131m ekosistemlerinde, kullan\u0131c\u0131lar\u0131n hangi kaynaklara eri\u015febilece\u011fini y\u00f6netmek, sadece bir g\u00fcvenlik meselesi olmaktan \u00f6te, uygulaman\u0131n genel mimarisi ve s\u00fcrd\u00fcr\u00fclebilirli\u011fi i\u00e7in kritik bir bile\u015fendir. Geleneksel yakla\u015f\u0131mlar genellikle yetersiz kal\u0131rken, Hiyerar\u015fik Rol Tabanl\u0131 Eri\u015fim Kontrol\u00fc (HRBAC) modeli, bu karma\u015f\u0131kl\u0131\u011f\u0131 y\u00f6netmek i\u00e7in g\u00fc\u00e7l\u00fc bir \u00e7\u00f6z\u00fcm sunar. Peki, HRBAC tam olarak nedir ve neden bu kadar b\u00fcy\u00fck bir \u00f6neme sahiptir?<\/p>\n<p>HRBAC, kullan\u0131c\u0131lar\u0131n rollerine g\u00f6re kaynaklara eri\u015fim yetkilerini tan\u0131mlayan bir sistemdir. Ancak basit Rol Tabanl\u0131 Eri\u015fim Kontrol\u00fc (RBAC) modellerinden farkl\u0131 olarak, HRBAC rolleri aras\u0131nda hiyerar\u015fik ili\u015fkiler kurar. \u00d6rne\u011fin, bir &#8220;Y\u00f6netici&#8221; rol\u00fc, &#8220;\u00c7al\u0131\u015fan&#8221; rol\u00fcn\u00fcn t\u00fcm yetkilerine ek olarak kendi y\u00f6neticilik yetkilerine sahip olabilir. Bu hiyerar\u015fi, izin y\u00f6netimini daha sezgisel ve daha az hataya a\u00e7\u0131k hale getirir, \u00e7\u00fcnk\u00fc alt roller \u00fcst rollerin izinlerini otomatik olarak devral\u0131r. Bu durum, \u00f6zellikle b\u00fcy\u00fck organizasyonlarda ve mikroservis tabanl\u0131 mimarilerde, kullan\u0131c\u0131 yetkilendirme politikalar\u0131n\u0131 tutarl\u0131 bir \u015fekilde uygulamak i\u00e7in vazge\u00e7ilmezdir.<\/p>\n<p>HRBAC&#8217;nin sundu\u011fu ba\u015fl\u0131ca avantajlar aras\u0131nda, y\u00f6netim kolayl\u0131\u011f\u0131, g\u00fcvenlik politikalar\u0131n\u0131n daha net bir \u015fekilde tan\u0131mlanabilmesi ve denetlenebilirli\u011fin artmas\u0131 yer al\u0131r. Kullan\u0131c\u0131lar\u0131n rolleri de\u011fi\u015fti\u011finde, sadece rol atamas\u0131n\u0131 g\u00fcncellemek yeterli olur; bu da eri\u015fim haklar\u0131n\u0131n manuel olarak tek tek ayarlanmas\u0131 ihtiyac\u0131n\u0131 ortadan kald\u0131r\u0131r. Bu esneklik, geli\u015ftiricilerin ve g\u00fcvenlik uzmanlar\u0131n\u0131n i\u015f y\u00fck\u00fcn\u00fc \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131rken, uygulaman\u0131n genel g\u00fcvenlik duru\u015funu da g\u00fc\u00e7lendirir. Ayr\u0131ca, HRBAC, &#8220;en az ayr\u0131cal\u0131k&#8221; ilkesini (principle of least privilege) uygulamak i\u00e7in ideal bir yap\u0131d\u0131r; kullan\u0131c\u0131lara yaln\u0131zca g\u00f6revlerini yerine getirmeleri i\u00e7in kesinlikle gerekli olan eri\u015fim yetkileri verilir.<\/p>\n<aside class=\"expert-tip\">Uzman \u0130pucu: HRBAC, \u00f6zellikle b\u00fcy\u00fck organizasyonlarda ve mikroservis mimarilerinde yetkilendirme karma\u015f\u0131kl\u0131\u011f\u0131n\u0131 azalt\u0131rken, g\u00fcvenlik politikas\u0131n\u0131n tutarl\u0131l\u0131\u011f\u0131n\u0131 sa\u011flaman\u0131n anahtar\u0131d\u0131r. Do\u011fru bir HRBAC tasar\u0131m\u0131, gelecekteki de\u011fi\u015fikliklere kar\u015f\u0131 uygulaman\u0131z\u0131 daha dayan\u0131kl\u0131 hale getirir.<\/aside>\n<h3>Geleneksel Yetkilendirme Yakla\u015f\u0131mlar\u0131n\u0131n Zorluklar\u0131 Nelerdir?<\/h3>\n<p>Geli\u015ftiriciler, tarih boyunca farkl\u0131 yetkilendirme yakla\u015f\u0131mlar\u0131 denemi\u015f olsalar da, her birinin kendine \u00f6zg\u00fc zorluklar\u0131 bulunmaktad\u0131r. Bu zorluklar, \u00f6zellikle modern, da\u011f\u0131t\u0131k ve h\u0131zla de\u011fi\u015fen uygulama ortamlar\u0131nda daha belirgin hale gelmektedir. Geleneksel y\u00f6ntemlerin k\u0131s\u0131tlamalar\u0131n\u0131 anlamak, SpiceDB gibi \u00e7\u00f6z\u00fcmlerin neden bu kadar de\u011ferli oldu\u011funu kavramam\u0131za yard\u0131mc\u0131 olur.<\/p>\n<ul>\n<li>\n      <strong>Eri\u015fim Kontrol Listeleri (ACL&#8217;ler):<\/strong> Her kayna\u011fa ayr\u0131 ayr\u0131 atanan izin listeleri olan ACL&#8217;ler, ba\u015flang\u0131\u00e7ta basit g\u00f6r\u00fcnse de, kaynak say\u0131s\u0131 artt\u0131k\u00e7a y\u00f6netimi kabusa d\u00f6n\u00fc\u015ft\u00fcrebilir. Bir kullan\u0131c\u0131n\u0131n yetkileri de\u011fi\u015fti\u011finde, ilgili t\u00fcm ACL&#8217;lerin g\u00fcncellenmesi gerekebilir ki bu da hataya a\u00e7\u0131k bir s\u00fcre\u00e7tir. Ayr\u0131ca, yeni bir kaynak tipi eklendi\u011finde, t\u00fcm izin yap\u0131s\u0131n\u0131n ba\u015ftan tan\u0131mlanmas\u0131 gerekebilir.\n    <\/li>\n<li>\n      <strong>Basit Rol Tabanl\u0131 Eri\u015fim Kontrol\u00fc (RBAC):<\/strong> ACL&#8217;lere g\u00f6re daha iyi bir soyutlama sunsa da, standart RBAC modelleri genellikle hiyerar\u015fik veya dinamik izin ihtiya\u00e7lar\u0131n\u0131 kar\u015f\u0131lamakta yetersiz kal\u0131r. \u00d6rne\u011fin, bir departman y\u00f6neticisinin sadece kendi departman\u0131ndaki kaynaklara eri\u015fmesini sa\u011flamak, basit RBAC ile olduk\u00e7a karma\u015f\u0131k kodlama gerektirebilir. Bu durum, &#8220;N+1 problemi&#8221; olarak bilinen, her yeni kural veya istisna i\u00e7in ek kod yazma ihtiyac\u0131n\u0131 do\u011furur.\n    <\/li>\n<li>\n      <strong>Uygulama \u0130\u00e7i Kod Tabanl\u0131 Yetkilendirme:<\/strong> Yetkilendirme mant\u0131\u011f\u0131n\u0131n do\u011frudan uygulama koduna g\u00f6m\u00fclmesi, h\u0131zl\u0131 ba\u015flang\u0131\u00e7 i\u00e7in uygun olsa da, uzun vadede s\u00fcrd\u00fcr\u00fclemez bir durum yarat\u0131r. \u0130\u015f kurallar\u0131n\u0131n de\u011fi\u015fmesi, yeni rollerin eklenmesi veya g\u00fcvenlik politikalar\u0131n\u0131n g\u00fcncellenmesi durumunda, uygulaman\u0131n bir\u00e7ok farkl\u0131 yerinde kod de\u011fi\u015fikli\u011fi yapmak gerekir. Bu durum, hem geli\u015ftirme s\u00fcrecini yava\u015flat\u0131r hem de g\u00fcvenlik a\u00e7\u0131\u011f\u0131 riskini art\u0131r\u0131r. Ayr\u0131ca, farkl\u0131 mikroservislerin ayn\u0131 yetkilendirme mant\u0131\u011f\u0131n\u0131 kullanmas\u0131n\u0131 sa\u011flamak olduk\u00e7a zorla\u015f\u0131r ve yetkilendirme kararlar\u0131n\u0131n denetimi imkans\u0131z hale gelir.\n    <\/li>\n<\/ul>\n<p>Bu zorluklar, \u00f6zellikle b\u00fcy\u00fck ve dinamik organizasyonlarda, geli\u015ftiricilerin zamanlar\u0131n\u0131n b\u00fcy\u00fck bir k\u0131sm\u0131n\u0131 yetkilendirme mant\u0131\u011f\u0131n\u0131 y\u00f6netmeye harcamas\u0131na neden olurken, as\u0131l i\u015f de\u011feri yaratan \u00f6zelliklere odaklanmalar\u0131n\u0131 engeller. \u0130\u015fte tam da bu noktada, SpiceDB gibi merkezi ve ili\u015fkisel bir yetkilendirme \u00e7\u00f6z\u00fcm\u00fcne olan ihtiya\u00e7 ortaya \u00e7\u0131kar.<\/p>\n<h2>SpiceDB Nedir ve HRBAC ile Nas\u0131l B\u00fct\u00fcnle\u015fir?<\/h2>\n<p>Geleneksel yetkilendirme y\u00f6ntemlerinin kar\u015f\u0131la\u015ft\u0131\u011f\u0131 zorluklar g\u00f6z \u00f6n\u00fcne al\u0131nd\u0131\u011f\u0131nda, modern uygulamalar\u0131n daha esnek, \u00f6l\u00e7eklenebilir ve y\u00f6netilebilir bir yetkilendirme \u00e7\u00f6z\u00fcm\u00fcne ihtiyac\u0131 oldu\u011fu a\u00e7\u0131kt\u0131r. \u0130\u015fte bu noktada <a href=\"https:\/\/spicedb.com\" target=\"_blank\" rel=\"noopener noreferrer\">SpiceDB<\/a> devreye giriyor. SpiceDB, Google&#8217;\u0131n \u00e7\u0131\u011f\u0131r a\u00e7an &#8220;Zanzibar: Google&#8217;s Global Authorization System&#8221; makalesinden ilham alarak geli\u015ftirilmi\u015f, a\u00e7\u0131k kaynakl\u0131, bulut yerlisi bir yetkilendirme (AuthZ) veritaban\u0131d\u0131r. Temelinde, &#8220;kimin neye, hangi rol ile eri\u015fimi var&#8221; sorusunu en verimli \u015fekilde yan\u0131tlamak yatar.<\/p>\n<p>SpiceDB, yetkilendirme kararlar\u0131n\u0131 uygulama kodundan ay\u0131rarak merkezi bir yetkilendirme servisi olarak i\u015flev g\u00f6r\u00fcr. Bu, geli\u015ftiricilerin karma\u015f\u0131k yetkilendirme mant\u0131\u011f\u0131n\u0131 her uygulaman\u0131n i\u00e7ine yazmak zorunda kalmadan, tek bir yerden y\u00f6netmelerine olanak tan\u0131r. HRBAC modelini SpiceDB ile b\u00fct\u00fcnle\u015ftirmek, roller ve hiyerar\u015filer aras\u0131ndaki ili\u015fkileri tan\u0131mlaman\u0131z\u0131 ve bu ili\u015fkiler \u00fczerinden izin kontrolleri yapman\u0131z\u0131 sa\u011flar. Yani, &#8220;organizasyon y\u00f6neticisi olan bir kullan\u0131c\u0131n\u0131n, bu organizasyondaki t\u00fcm departmanlar\u0131n t\u00fcm d\u00f6k\u00fcmanlar\u0131n\u0131 g\u00f6r\u00fcnt\u00fcleme yetkisi var m\u0131?&#8221; gibi karma\u015f\u0131k sorulara saniyeler i\u00e7inde cevap verebilirsiniz.<\/p>\n<p>SpiceDB&#8217;nin g\u00fcc\u00fc, &#8220;ili\u015fki grafi\u011fi&#8221; ad\u0131 verilen temel bir kavramdan gelir. Bu grafikte, kullan\u0131c\u0131lar, roller, kaynaklar ve bunlar aras\u0131ndaki ili\u015fkiler (\u00f6rne\u011fin, &#8220;Ali, M\u00fchendislik Departman\u0131&#8217;n\u0131n \u00fcyesidir&#8221;, &#8220;M\u00fchendislik Departman\u0131, &#8216;ACME&#8217; organizasyonunun alt\u0131ndad\u0131r&#8221;) atomik par\u00e7ac\u0131klar halinde saklan\u0131r. Bu ili\u015fkiler, bir &#8220;schema&#8221; arac\u0131l\u0131\u011f\u0131yla tan\u0131mlan\u0131r ve yetkilendirme sorgular\u0131 bu ili\u015fki grafi\u011fi \u00fczerinde y\u00fcr\u00fct\u00fcl\u00fcr. Bu sayede, HRBAC&#8217;nin hiyerar\u015fik yap\u0131s\u0131, SpiceDB&#8217;nin do\u011fal ili\u015fki modelleme yetenekleriyle m\u00fckemmel bir uyum i\u00e7inde \u00e7al\u0131\u015f\u0131r.<\/p>\n<h3>SpiceDB&#8217;nin Temel Bile\u015fenleri Nelerdir?<\/h3>\n<p>SpiceDB&#8217;nin mimarisi, g\u00fc\u00e7l\u00fc ve \u00f6l\u00e7eklenebilir bir yetkilendirme sistemi sa\u011flamak i\u00e7in tasarlanm\u0131\u015ft\u0131r. Temel olarak \u00fc\u00e7 ana bile\u015fen etraf\u0131nda \u015fekillenir:<\/p>\n<table>\n<thead>\n<tr>\n<th>Bile\u015fen<\/th>\n<th>A\u00e7\u0131klama<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Relationship Tuples (\u0130li\u015fki \u00dc\u00e7l\u00fcleri)<\/strong><\/td>\n<td>SpiceDB&#8217;nin kalbi, &#8220;subject is relation of object&#8221; (\u00f6rne\u011fin, <code>user:alice is member of department:engineering<\/code>) format\u0131ndaki atomik ili\u015fkilerdir. Bu \u00fc\u00e7l\u00fcler, kullan\u0131c\u0131lar, nesneler ve aralar\u0131ndaki ba\u011flant\u0131lar\u0131 tan\u0131mlar ve yetkilendirme grafi\u011fini olu\u015fturur.<\/td>\n<\/tr>\n<tr>\n<td><strong>Schema<\/strong><\/td>\n<td>Yetkilendirme modelinizi tan\u0131mlad\u0131\u011f\u0131n\u0131z bir YAML benzeri dildir. Hangi nesne tiplerinin (kullan\u0131c\u0131, departman, belge vb.) mevcut oldu\u011funu, bu nesneler aras\u0131nda hangi ili\u015fkilerin kurulabilece\u011fini (\u00fcye, y\u00f6netici, sahip vb.) ve bu ili\u015fkilerden hangi izinlerin t\u00fcredi\u011fini (g\u00f6r\u00fcnt\u00fcle, d\u00fczenle, sil vb.) belirler.<\/td>\n<\/tr>\n<tr>\n<td><strong>APIs (gRPC\/HTTP)<\/strong><\/td>\n<td>SpiceDB ile etkile\u015fim kurmak i\u00e7in kullan\u0131lan aray\u00fczlerdir. Bu API&#8217;ler arac\u0131l\u0131\u011f\u0131yla ili\u015fki \u00fc\u00e7l\u00fclerini yazabilir, silebilir ve en \u00f6nemlisi, belirli bir kullan\u0131c\u0131n\u0131n belirli bir eylemi ger\u00e7ekle\u015ftirmeye yetkili olup olmad\u0131\u011f\u0131n\u0131 (<code>check<\/code>) veya bir nesneye kimlerin eri\u015febilece\u011fini (<code>expand<\/code>, <code>lookup<\/code>) sorgulayabilirsiniz.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Bu bile\u015fenler bir araya gelerek, uygulaman\u0131z\u0131n yetkilendirme kararlar\u0131n\u0131 merkezi bir yerden, d\u00fc\u015f\u00fck gecikme s\u00fcresiyle almas\u0131n\u0131 sa\u011flar. Geli\u015ftiriciler, uygulama kodlar\u0131nda karma\u015f\u0131k if-else bloklar\u0131 yazmak yerine, sadece bir SpiceDB API \u00e7a\u011fr\u0131s\u0131 yaparak h\u0131zl\u0131 ve tutarl\u0131 yetkilendirme kararlar\u0131 alabilirler. Bu mimari, yetkilendirme mant\u0131\u011f\u0131n\u0131 soyutlayarak, uygulama geli\u015ftirme h\u0131z\u0131n\u0131 art\u0131r\u0131r ve g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 en aza indirmeye yard\u0131mc\u0131 olur.<\/p>\n<h2>HRBAC Modelini SpiceDB ile Nas\u0131l Tan\u0131mlar\u0131z? (Schema Yaz\u0131m\u0131)<\/h2>\n<p>SpiceDB&#8217;nin g\u00fcc\u00fcn\u00fc ortaya koyman\u0131n ilk ad\u0131m\u0131, yetkilendirme modelinizi bir schema (\u015fema) olarak tan\u0131mlamakt\u0131r. Bu schema, uygulaman\u0131zdaki nesne tiplerini, aralar\u0131ndaki ili\u015fkileri ve bu ili\u015fkilerden t\u00fcreyen izinleri belirleyen bir blueprint g\u00f6revi g\u00f6r\u00fcr. HRBAC modelini uygulamak i\u00e7in, kullan\u0131c\u0131lar, roller, organizasyonlar ve departmanlar gibi temel bile\u015fenleri ve bunlar\u0131n hiyerar\u015fik yap\u0131s\u0131n\u0131 schema&#8217;da ifade etmemiz gerekir. \u015eimdi bir \u0130nsan Kaynaklar\u0131 (\u0130K) uygulamas\u0131 i\u00e7in \u00f6rnek bir HRBAC schema&#8217;s\u0131 olu\u015ftural\u0131m.<\/p>\n<p>Bu \u00f6rnekte, bir <code>user<\/code> (kullan\u0131c\u0131), <code>organization<\/code> (organizasyon), <code>department<\/code> (departman) ve <code>document<\/code> (belge) nesnelerimiz olacak. Rollerimizi ise ili\u015fkiler arac\u0131l\u0131\u011f\u0131yla tan\u0131mlayaca\u011f\u0131z: <code>manager<\/code> (y\u00f6netici), <code>member<\/code> (\u00fcye), <code>admin<\/code> (y\u00f6netici). Hiyerar\u015fiyi, bir departman\u0131n bir organizasyona ait olmas\u0131 (<code>parent<\/code> ili\u015fkisi) ve bir belgenin bir departmana ait olmas\u0131 (<code>parent<\/code> ili\u015fkisi) ile kuraca\u011f\u0131z.<\/p>\n<pre><code>\ndefinition user {}\n\ndefinition organization {\n  \/\/ \u0130li\u015fkiler: Kimler bu organizasyona ne \u015fekilde ba\u011fl\u0131?\n  relation admin: user        \/\/ Organizasyon Y\u00f6neticisi\n  relation member: user      \/\/ Organizasyon \u00dcyesi (daha geni\u015f bir rol i\u00e7in)\n\n  \/\/ \u0130zinler: Organizasyon y\u00f6neticileri, organizasyon \u00fcyelerini g\u00f6r\u00fcnt\u00fcleyebilir.\n  permission view_members = admin + member\n  permission manage_organization = admin\n}\n\ndefinition department {\n  \/\/ \u0130li\u015fkiler: Bu departman hangi organizasyonun alt\u0131nda ve kimler bu departmanla ilgili?\n  relation parent: organization \/\/ Departman\u0131n ba\u011fl\u0131 oldu\u011fu organizasyon\n  relation manager: user        \/\/ Departman Y\u00f6neticisi\n  relation member: user         \/\/ Departman \u00dcyesi\n\n  \/\/ \u0130zinler: Departman \u00fcyeleri ve y\u00f6neticileri kendi departman belgelerini g\u00f6rebilir.\n  \/\/ Ayr\u0131ca organizasyon y\u00f6neticileri de bu departman belgelerini g\u00f6rebilir.\n  permission view_department_docs = manager + member + parent->admin\n  \/\/ Departman\u0131 y\u00f6netme izni, departman y\u00f6neticisinde veya \u00fcst organizasyonun y\u00f6neticisinde olabilir.\n  permission manage_department = manager + parent->admin\n}\n\ndefinition document {\n  \/\/ \u0130li\u015fkiler: Bu belge hangi departmana ait ve kimler bu belgenin sahibi?\n  relation parent: department \/\/ Belgenin ba\u011fl\u0131 oldu\u011fu departman\n  relation owner: user        \/\/ Belgenin sahibi\n\n  \/\/ \u0130zinler:\n  \/\/ Belgeyi g\u00f6r\u00fcnt\u00fcleme: Sahibi, departman y\u00f6neticisi, departman \u00fcyesi veya organizasyon y\u00f6neticisi.\n  permission view = owner + parent->manager + parent->member + parent->parent->admin\n  \/\/ Belgeyi d\u00fczenleme: Sahibi veya departman y\u00f6neticisi.\n  permission edit = owner + parent->manager\n}\n  <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki schema'da, <code>definition<\/code> anahtar kelimesiyle nesne tiplerimizi (<code>user<\/code>, <code>organization<\/code> vb.) tan\u0131mlad\u0131k. <code>relation<\/code> anahtar kelimesiyle bu nesneler aras\u0131ndaki ba\u011flant\u0131lar\u0131 belirledik. \u00d6rne\u011fin, <code>department<\/code> tan\u0131m\u0131 i\u00e7indeki <code>relation parent: organization<\/code> ifadesi, bir departman\u0131n bir organizasyonun \"ebeveyni\" (alt\u0131nda) olabilece\u011fini belirtir. <code>permission<\/code> anahtar kelimesi ise belirli eylemlerin kimler taraf\u0131ndan yap\u0131labilece\u011fini tan\u0131mlar. Burada, <code>+<\/code> operat\u00f6r\u00fc, birden fazla ili\u015fki yolunun birle\u015fimiyle iznin verildi\u011fini g\u00f6sterir. En kritik nokta ise <code>-><\/code> operat\u00f6r\u00fcd\u00fcr; bu, ili\u015fkiler aras\u0131nda ge\u00e7i\u015f yaparak hiyerar\u015fiyi takip etmemizi sa\u011flar. \u00d6rne\u011fin, <code>parent->admin<\/code> ifadesi, bir departman\u0131n \u00fcst\u00fcndeki organizasyonun \"admin\" rol\u00fcne sahip kullan\u0131c\u0131lar\u0131n\u0131n da ilgili departmana belirli bir izinle eri\u015febilece\u011fi anlam\u0131na gelir. Bu esneklik, HRBAC'nin g\u00fc\u00e7l\u00fc y\u00f6nlerinden biridir ve karma\u015f\u0131k organizasyon yap\u0131lar\u0131n\u0131n SpiceDB'de kolayca modellenmesini sa\u011flar.<\/p>\n<h2>Kullan\u0131c\u0131 Rollerini ve Kaynak \u0130li\u015fkilerini SpiceDB'ye Nas\u0131l Ekleriz? (Veri Yaz\u0131m\u0131)<\/h2>\n<p>Schema'm\u0131z\u0131 tan\u0131mlad\u0131ktan sonra, s\u0131ra ger\u00e7ek kullan\u0131c\u0131lar\u0131, rolleri ve kaynaklar\u0131 SpiceDB'ye tan\u0131tmaya gelir. Bu i\u015flem, \"ili\u015fki \u00fc\u00e7l\u00fcleri\" (relationship tuples) yazarak ger\u00e7ekle\u015ftirilir. Her bir ili\u015fki \u00fc\u00e7l\u00fcs\u00fc, \"nesne\" (object), \"ili\u015fki\" (relation) ve \"konu\" (subject) \u00fc\u00e7l\u00fcs\u00fcnden olu\u015fur ve \"konu, nesneye kar\u015f\u0131 bu ili\u015fkiye sahip\" anlam\u0131na gelir. \u00d6rne\u011fin, \"Alice, M\u00fchendislik Departman\u0131'n\u0131n bir \u00fcyesidir\" gibi.<\/p>\n<p>\u0130li\u015fki \u00fc\u00e7l\u00fclerini yazmak i\u00e7in SpiceDB'nin gRPC veya HTTP API'lerini kullanabiliriz. Genellikle bu, uygulaman\u0131z\u0131n kullan\u0131c\u0131 aray\u00fcz\u00fc, y\u00f6netim paneli veya arka u\u00e7 servisleri taraf\u0131ndan yap\u0131l\u0131r. Geli\u015ftirme ve test s\u00fcre\u00e7leri i\u00e7in ise <code>zcli<\/code> ad\u0131nda bir komut sat\u0131r\u0131 arac\u0131 olduk\u00e7a kullan\u0131\u015fl\u0131d\u0131r. \u015eimdi \u00f6nceki schema'm\u0131za uygun olarak birka\u00e7 \u00f6rnek ili\u015fki yazal\u0131m.<\/p>\n<p>Farz edelim ki bir \u0130K uygulamam\u0131z var ve a\u015fa\u011f\u0131daki senaryoyu SpiceDB'ye eklememiz gerekiyor:<\/p>\n<ul>\n<li>Alice, M\u00fchendislik Departman\u0131'nda bir \u00e7al\u0131\u015fand\u0131r.<\/li>\n<li>Bob, M\u00fchendislik Departman\u0131'n\u0131n y\u00f6neticisidir.<\/li>\n<li>M\u00fchendislik Departman\u0131, 'ACME Corp' organizasyonuna ba\u011fl\u0131d\u0131r.<\/li>\n<li>Cem, \u0130nsan Kaynaklar\u0131 (HR) Departman\u0131'n\u0131n y\u00f6neticisidir.<\/li>\n<li>Dilek, 'ACME Corp' organizasyonunun genel y\u00f6neticisidir.<\/li>\n<li>'ACME Corp' organizasyonunun bir belgesi var: 'policy_doc:hr_policy'.<\/li>\n<\/ul>\n<p>Bu ili\u015fkileri <code>zcli relationship write<\/code> komutuyla SpiceDB'ye ekleyebiliriz:<\/p>\n<pre><code>\n\/\/ Alice'i M\u00fchendislik Departman\u0131 \u00fcyesi yapal\u0131m\nzcli relationship write department:engineering#member user:alice\n\n\/\/ Bob'u M\u00fchendislik Departman\u0131 y\u00f6neticisi yapal\u0131m\nzcli relationship write department:engineering#manager user:bob\n\n\/\/ M\u00fchendislik Departman\u0131n\u0131 ACME Organizasyonuna ba\u011flayal\u0131m\nzcli relationship write department:engineering#parent organization:acme\n\n\/\/ Cem'i \u0130K Departman\u0131 y\u00f6neticisi yapal\u0131m\nzcli relationship write department:hr#manager user:cem\n\n\/\/ \u0130K Departman\u0131n\u0131 da ACME Organizasyonuna ba\u011flayal\u0131m\nzcli relationship write department:hr#parent organization:acme\n\n\/\/ Dilek'i ACME Organizasyonunun genel y\u00f6neticisi yapal\u0131m\nzcli relationship write organization:acme#admin user:dilek\n\n\/\/ 'policy_doc:hr_policy' belgesini \u0130K Departman\u0131na ba\u011flayal\u0131m\nzcli relationship write document:policy_doc_hr_policy#parent department:hr\n\n\/\/ 'policy_doc:hr_policy' belgesinin sahibi olarak Cem'i atayal\u0131m\nzcli relationship write document:policy_doc_hr_policy#owner user:cem\n  <\/pre>\n<p><\/code><\/p>\n<p>Her bir <code>zcli relationship write<\/code> komutu, SpiceDB'nin ili\u015fki grafi\u011fine yeni bir kenar ekler. Bu kenarlar, daha sonra izin sorgular\u0131nda kullan\u0131lacak olan ili\u015fkisel a\u011f\u0131 olu\u015fturur. Tuple yap\u0131s\u0131 her zaman <code><nesne_t\u00fcr\u00fc>:<nesne_id>#<ili\u015fki_ad\u0131> <konu_t\u00fcr\u00fc>:<konu_id><\/code> \u015feklindedir. \u00d6rne\u011fin, <code>department:engineering#member user:alice<\/code> ifadesi, \"<code>user:alice<\/code>'in <code>department:engineering<\/code> nesnesinin <code>member<\/code> ili\u015fkisine sahip oldu\u011funu\" belirtir. Bu basit ama g\u00fc\u00e7l\u00fc yap\u0131, herhangi bir karma\u015f\u0131kl\u0131ktaki HRBAC modelini ifade etmemizi sa\u011flar. Bu ili\u015fkiler, uygulaman\u0131z\u0131n kullan\u0131c\u0131 y\u00f6netim mod\u00fcl\u00fc veya bir otomasyon beti\u011fi arac\u0131l\u0131\u011f\u0131yla dinamik olarak da eklenebilir veya silinebilir, b\u00f6ylece yetkilendirme sistemi her zaman g\u00fcncel kal\u0131r.<\/p>\n<h2>Yetkilendirme Sorgular\u0131n\u0131 Nas\u0131l Yapar\u0131z ve Sonu\u00e7lar\u0131 Nas\u0131l Yorumlar\u0131z?<\/h2>\n<p>SpiceDB'ye schema'm\u0131z\u0131 ve ili\u015fkilerimizi y\u00fckledikten sonra, yetkilendirme sistemimizin kalbi olan sorgu i\u015flemlerine ge\u00e7ebiliriz. Bir kullan\u0131c\u0131n\u0131n belirli bir kayna\u011fa eri\u015fim yetkisinin olup olmad\u0131\u011f\u0131n\u0131 anlamak, SpiceDB'nin ana i\u015flevidir. Bu sorgular\u0131 yaparken, yine <code>zcli<\/code> arac\u0131n\u0131 veya uygulaman\u0131zdan gRPC\/HTTP API'lerini kullanabiliriz. SpiceDB, bu t\u00fcr sorgular i\u00e7in \u00fc\u00e7 ana API sa\u011flar: <code>Check<\/code>, <code>Expand<\/code> ve <code>Lookup<\/code>.<\/p>\n<ul>\n<li>\n      <strong><code>Check<\/code> API:<\/strong> En s\u0131k kullan\u0131lan API'dir. Belirli bir kullan\u0131c\u0131n\u0131n belirli bir nesne \u00fczerinde belirli bir izne sahip olup olmad\u0131\u011f\u0131n\u0131 kontrol eder. \u00d6rne\u011fin, \"Ali, 'rapor:ayl\u0131k' belgesini g\u00f6r\u00fcnt\u00fcleyebilir mi?\" gibi sorular\u0131 yan\u0131tlar. Sonu\u00e7 olarak sadece <code>true<\/code> veya <code>false<\/code> d\u00f6ner.\n    <\/li>\n<li>\n      <strong><code>Expand<\/code> API:<\/strong> Bir nesne \u00fczerindeki belirli bir iznin kimler taraf\u0131ndan (veya hangi ili\u015fkiler arac\u0131l\u0131\u011f\u0131yla) verildi\u011fini g\u00f6steren ayr\u0131nt\u0131l\u0131 bir a\u011fa\u00e7 yap\u0131s\u0131 d\u00f6nd\u00fcr\u00fcr. Bu, bir iznin neden verildi\u011fini veya verilmedi\u011fini anlamak i\u00e7in hata ay\u0131klama s\u00fcre\u00e7lerinde \u00e7ok faydal\u0131d\u0131r.\n    <\/li>\n<li>\n      <strong><code>Lookup<\/code> API:<\/strong> Belirli bir kullan\u0131c\u0131n\u0131n belirli bir izinle eri\u015febilece\u011fi t\u00fcm nesneleri listeler. \u00d6rne\u011fin, \"Ali'nin d\u00fczenleyebilece\u011fi t\u00fcm belgeleri listele\" gibi bir sorguya yan\u0131t verir. Bu, \u00f6zellikle kullan\u0131c\u0131 aray\u00fczlerinde \"eri\u015febildi\u011fim belgeler\" listesi olu\u015fturmak i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/li>\n<\/ul>\n<p>\u015eimdi daha \u00f6nce ekledi\u011fimiz ili\u015fkiler \u00fczerinden baz\u0131 <code>check<\/code> sorgular\u0131 yapal\u0131m:<\/p>\n<pre><code>\n\/\/ Alice, 'document:policy_doc_hr_policy' belgesini g\u00f6r\u00fcnt\u00fcleyebilir mi?\n\/\/ Alice, M\u00fchendislik Departman\u0131 \u00fcyesi. Belge ise \u0130K Departman\u0131'nda.\n\/\/ Schema'ya g\u00f6re, belgeyi g\u00f6r\u00fcnt\u00fcleyebilmek i\u00e7in ya sahibi, ya departman y\u00f6neticisi,\n\/\/ ya departman \u00fcyesi ya da organizasyon y\u00f6neticisi olmak gerekir.\n\/\/ Alice bu \u015fartlardan hi\u00e7birini kar\u015f\u0131lam\u0131yor.\nzcli permission check document:policy_doc_hr_policy view user:alice\n\/\/ \u00c7\u0131kt\u0131: false\n\n\/\/ Bob (M\u00fchendislik Departman\u0131 y\u00f6neticisi), 'document:policy_doc_hr_policy' belgesini d\u00fczenleyebilir mi?\n\/\/ Bob, M\u00fchendislik Departman\u0131 y\u00f6neticisi. Belge ise \u0130K Departman\u0131'nda.\n\/\/ D\u00fczenleme izni i\u00e7in belge sahibi veya ait oldu\u011fu departman\u0131n y\u00f6neticisi olmak gerek.\n\/\/ Bob, \u0130K Departman\u0131 y\u00f6neticisi de\u011fil.\nzcli permission check document:policy_doc_hr_policy edit user:bob\n\/\/ \u00c7\u0131kt\u0131: false\n\n\/\/ Cem (\u0130K Departman\u0131 y\u00f6neticisi), 'document:policy_doc_hr_policy' belgesini d\u00fczenleyebilir mi?\n\/\/ Cem, belgenin sahibi ve \u0130K Departman\u0131 y\u00f6neticisi. Her iki \u015fart\u0131 da sa\u011fl\u0131yor.\nzcli permission check document:policy_doc_hr_policy edit user:cem\n\/\/ \u00c7\u0131kt\u0131: true\n\n\/\/ Dilek (ACME Organizasyonu y\u00f6neticisi), 'department:engineering' departman\u0131n\u0131 y\u00f6netebilir mi?\n\/\/ Dilek, organizasyonun y\u00f6neticisi. Schema'ya g\u00f6re 'manage_department' izni i\u00e7in\n\/\/ ya departman y\u00f6neticisi ya da 'parent->admin' (\u00fcst organizasyon y\u00f6neticisi) olmak gerek.\n\/\/ Dilek bu \u015fart\u0131 kar\u015f\u0131l\u0131yor.\nzcli permission check department:engineering manage_department user:dilek\n\/\/ \u00c7\u0131kt\u0131: true\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu sorgular, SpiceDB'nin ili\u015fki grafi\u011fi \u00fczerinde dinamik olarak dola\u015farak izin kararlar\u0131n\u0131 nas\u0131l verdi\u011fini g\u00f6sterir. En \u00f6nemlisi, bu kararlar uygulaman\u0131z\u0131n kodundan tamamen ayr\u0131d\u0131r. Bu sayede, g\u00fcvenlik politikalar\u0131n\u0131 de\u011fi\u015ftirmek i\u00e7in uygulama kodunu yeniden derlemenize veya da\u011f\u0131tman\u0131za gerek kalmaz; sadece SpiceDB schema's\u0131n\u0131 g\u00fcncelleyip yeni ili\u015fkiler eklemeniz yeterlidir. Bu, \u00e7evik geli\u015ftirme s\u00fcre\u00e7leri i\u00e7in hayati bir avantaj sa\u011flar.<\/p>\n<h2>Pratik Bir Senaryo: \u0130K Uygulamas\u0131nda \u00c7al\u0131\u015fan Bilgilerine Eri\u015fim<\/h2>\n<p>\u015eimdiye kadar \u00f6\u011frendiklerimizi ger\u00e7ek\u00e7i bir senaryo \u00fczerinde uygulayarak SpiceDB ve HRBAC'nin g\u00fcc\u00fcn\u00fc daha iyi anlayal\u0131m. Bir \u0130nsan Kaynaklar\u0131 (\u0130K) y\u00f6netim uygulamas\u0131 geli\u015ftiriyoruz ve bu uygulamada \u00e7al\u0131\u015fan bilgilerine eri\u015fim yetkilerini detayl\u0131 bir \u015fekilde kontrol etmemiz gerekiyor. Senaryomuzda a\u015fa\u011f\u0131daki roller ve kaynaklar bulunacak:<\/p>\n<ul>\n<li><strong>Roller:<\/strong> <code>Employee<\/code> (\u00c7al\u0131\u015fan), <code>DepartmentManager<\/code> (Departman Y\u00f6neticisi), <code>HRSpecialist<\/code> (\u0130K Uzman\u0131), <code>OrganizationAdmin<\/code> (Organizasyon Y\u00f6neticisi).<\/li>\n<li><strong>Kaynaklar:<\/strong> <code>EmployeeRecord<\/code> (\u00c7al\u0131\u015fan Kayd\u0131), <code>SalaryInfo<\/code> (Maa\u015f Bilgisi), <code>PerformanceReview<\/code> (Performans De\u011ferlendirme).<\/li>\n<li><strong>Hiyerar\u015fi:<\/strong> \u00c7al\u0131\u015fanlar departmanlara, departmanlar organizasyonlara ba\u011fl\u0131d\u0131r.<\/li>\n<\/ul>\n<h3>Senaryo Detaylar\u0131 ve Gerekli \u0130zinler<\/h3>\n<ul>\n<li>\u00c7al\u0131\u015fanlar, sadece kendi <code>EmployeeRecord<\/code> ve <code>PerformanceReview<\/code> kay\u0131tlar\u0131n\u0131 g\u00f6r\u00fcnt\u00fcleyebilirler. Kendi <code>SalaryInfo<\/code> kay\u0131tlar\u0131n\u0131 g\u00f6r\u00fcnt\u00fcleyemezler.<\/li>\n<li>Departman Y\u00f6neticileri, kendi departmanlar\u0131ndaki t\u00fcm \u00e7al\u0131\u015fanlar\u0131n <code>EmployeeRecord<\/code> ve <code>PerformanceReview<\/code> kay\u0131tlar\u0131n\u0131 g\u00f6r\u00fcnt\u00fcleyebilir ve d\u00fczenleyebilirler. <code>SalaryInfo<\/code>'ya eri\u015femezler.<\/li>\n<li>\u0130K Uzmanlar\u0131, t\u00fcm \u00e7al\u0131\u015fanlar\u0131n <code>EmployeeRecord<\/code>, <code>SalaryInfo<\/code> ve <code>PerformanceReview<\/code> kay\u0131tlar\u0131n\u0131 g\u00f6r\u00fcnt\u00fcleyebilirler. Sadece belirli durumlarda d\u00fczenleme yetkileri olabilir.<\/li>\n<li>Organizasyon Y\u00f6neticileri, t\u00fcm organizasyondaki her t\u00fcrl\u00fc kayd\u0131 g\u00f6r\u00fcnt\u00fcleyebilir ve \u00e7o\u011fu kayd\u0131 d\u00fczenleyebilirler.<\/li>\n<\/ul>\n<p>Bu senaryoyu SpiceDB schema's\u0131nda \u015fu \u015fekilde tan\u0131mlayabiliriz:<\/p>\n<pre><code>\ndefinition user {}\n\ndefinition organization {\n  relation admin: user\n  relation hr_specialist: user \/\/ \u0130K Uzmanlar\u0131, organizasyon d\u00fczeyinde tan\u0131mlan\u0131r\n}\n\ndefinition department {\n  relation parent: organization\n  relation manager: user\n  relation member: user\n}\n\ndefinition employee_record {\n  relation parent_department: department\n  relation owner: user\n\n  \/\/ \u0130zinler\n  permission view_basic = owner + parent_department->manager + parent_department->parent->hr_specialist + parent_department->parent->admin\n  permission edit_basic = owner + parent_department->manager + parent_department->parent->admin\n  permission view_performance = owner + parent_department->manager + parent_department->parent->hr_specialist + parent_department->parent->admin\n  permission edit_performance = parent_department->manager + parent_department->parent->hr_specialist + parent_department->parent->admin\n}\n\ndefinition salary_info {\n  relation parent_record: employee_record\n  relation hr_access: user \/\/ Sadece \u0130K Uzmanlar\u0131 i\u00e7in direkt eri\u015fim\n  permission view_salary = parent_record->parent_department->parent->hr_specialist + parent_record->parent_department->parent->admin\n  permission edit_salary = parent_record->parent_department->parent->admin \/\/ Maa\u015f d\u00fczenleme sadece Org Admin'de\n}\n  <\/pre>\n<p><\/code><\/p>\n<p>\u015eimdi \u00f6rnek ili\u015fkiler ve kontrol sorgular\u0131 olu\u015ftural\u0131m:<\/p>\n<pre><code>\n\/\/ Kullan\u0131c\u0131lar ve rolleri\nzcli relationship write user:ali is member of department:sales\nzcli relationship write department:sales#manager user:mehmet_manager\nzcli relationship write user:ayse_hr is hr_specialist of organization:mycompany\nzcli relationship write organization:mycompany#admin user:fatma_admin\n\n\/\/ Kay\u0131tlar ve ili\u015fkileri\nzcli relationship write employee_record:ali_record#parent_department department:sales\nzcli relationship write employee_record:ali_record#owner user:ali\nzcli relationship write salary_info:ali_salary#parent_record employee_record:ali_record\n\n\/\/ Kontrol sorgular\u0131\n\n\/\/ Ali kendi temel kayd\u0131n\u0131 g\u00f6rebilir mi? (owner ili\u015fkisi ile)\nzcli permission check employee_record:ali_record view_basic user:ali\n\/\/ \u00c7\u0131kt\u0131: true\n\n\/\/ Mehmet (sat\u0131\u015f m\u00fcd\u00fcr\u00fc) Ali'nin temel kayd\u0131n\u0131 g\u00f6rebilir mi? (parent_department->manager ili\u015fkisi ile)\nzcli permission check employee_record:ali_record view_basic user:mehmet_manager\n\/\/ \u00c7\u0131kt\u0131: true\n\n\/\/ Ay\u015fe (\u0130K uzman\u0131) Ali'nin maa\u015f\u0131n\u0131 g\u00f6rebilir mi? (hr_specialist ili\u015fkisi ile)\nzcli permission check salary_info:ali_salary view_salary user:ayse_hr\n\/\/ \u00c7\u0131kt\u0131: true\n\n\/\/ Mehmet (sat\u0131\u015f m\u00fcd\u00fcr\u00fc) Ali'nin maa\u015f\u0131n\u0131 g\u00f6rebilir mi? (Yetkisi yok)\nzcli permission check salary_info:ali_salary view_salary user:mehmet_manager\n\/\/ \u00c7\u0131kt\u0131: false\n\n\/\/ Fatma (Organizasyon Y\u00f6neticisi) Ali'nin performans de\u011ferlendirmesini d\u00fczenleyebilir mi?\nzcli permission check employee_record:ali_record edit_performance user:fatma_admin\n\/\/ \u00c7\u0131kt\u0131: true\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu senaryo, SpiceDB'nin karma\u015f\u0131k i\u015f kurallar\u0131n\u0131 ve hiyerar\u015fik yap\u0131lar\u0131 nas\u0131l kolayca modelleyebildi\u011fini g\u00f6stermektedir. Schema tan\u0131mlar\u0131 ve ili\u015fki \u00fc\u00e7l\u00fcleri sayesinde, her bir yetkilendirme karar\u0131 merkezi olarak y\u00f6netilir ve dinamik olarak sorgulan\u0131r. Bu, \u0130K uygulamas\u0131 gibi hassas verilere sahip sistemlerde g\u00fcvenli\u011fi sa\u011flaman\u0131n ve uyumlulu\u011fu y\u00f6netmenin anahtar\u0131d\u0131r.<\/p>\n<h2>Performans ve \u00d6l\u00e7eklenebilirlik \u0130\u00e7in \u0130leri D\u00fczey \u0130pu\u00e7lar\u0131<\/h2>\n<p>SpiceDB, Google'\u0131n Zanzibar sisteminden ilham alarak y\u00fcksek performans ve \u00f6l\u00e7eklenebilirlik i\u00e7in tasarlanm\u0131\u015f olsa da, karma\u015f\u0131k uygulamalarda en iyi sonu\u00e7lar\u0131 elde etmek i\u00e7in baz\u0131 ileri d\u00fczey ipu\u00e7lar\u0131n\u0131 bilmek faydal\u0131d\u0131r. Do\u011fru schema tasar\u0131m\u0131 ve entegrasyon stratejileri, sisteminizin milyonlarca yetkilendirme sorgusunu d\u00fc\u015f\u00fck gecikme s\u00fcresiyle i\u015flemesini sa\u011flayabilir.<\/p>\n<ul>\n<li>\n      <strong>Schema Tasar\u0131m\u0131 Optimizasyonu:<\/strong> \u00c7ok derin ili\u015fki hiyerar\u015filerinden ka\u00e7\u0131nmaya \u00e7al\u0131\u015f\u0131n. Her ne kadar SpiceDB derin hiyerar\u015fileri desteklese de, sorgu performans\u0131, bir iznin belirlenmesi i\u00e7in ge\u00e7ilmesi gereken ili\u015fki katmanlar\u0131n\u0131n say\u0131s\u0131yla orant\u0131l\u0131 olabilir. \u0130li\u015fkilerinizi ve izinlerinizi olabildi\u011fince d\u00fcz tutmaya \u00e7al\u0131\u015f\u0131n, ancak bu HRBAC modelinizin do\u011fall\u0131\u011f\u0131n\u0131 bozmamal\u0131d\u0131r.\n    <\/li>\n<li>\n      <strong>Caveats Kullan\u0131m\u0131:<\/strong> SpiceDB, \"caveats\" ad\u0131 verilen ko\u015fullu yetkilendirme yetenekleri sunar. Bu, bir iznin yaln\u0131zca belirli ko\u015fullar kar\u015f\u0131land\u0131\u011f\u0131nda ge\u00e7erli olmas\u0131n\u0131 sa\u011flar (\u00f6rne\u011fin, \"belgeyi sadece \u00e7al\u0131\u015fma saatleri i\u00e7inde g\u00f6r\u00fcnt\u00fcle\"). Caveats, yetkilendirme mant\u0131\u011f\u0131n\u0131z\u0131 daha da esnek hale getirir, ancak bunlar\u0131 a\u015f\u0131r\u0131ya ka\u00e7madan, yaln\u0131zca gerekli oldu\u011funda kullanmaya \u00f6zen g\u00f6sterin, \u00e7\u00fcnk\u00fc her bir caveat kontrol\u00fc ek i\u015flem y\u00fck\u00fc getirir.\n    <\/li>\n<li>\n      <strong><code>Lookup<\/code> ve <code>Expand<\/code> API'lerinin Do\u011fru Kullan\u0131m\u0131:<\/strong> <code>Check<\/code> API'si tekil izin sorgular\u0131 i\u00e7in idealdir. Ancak, bir kullan\u0131c\u0131n\u0131n eri\u015febilece\u011fi t\u00fcm nesneleri listelemeniz gerekti\u011finde (\u00f6rne\u011fin, bir kullan\u0131c\u0131n\u0131n g\u00f6rebilece\u011fi t\u00fcm departmanlar), <code>Lookup<\/code> API'si \u00e7ok daha verimlidir. Benzer \u015fekilde, bir iznin neden verildi\u011fini anlamak i\u00e7in <code>Expand<\/code> API'sini kullan\u0131n. Bu API'ler, uygulaman\u0131z\u0131n performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde etkileyebilir.\n    <\/li>\n<li>\n      <strong>\u00d6nbellekleme Stratejileri:<\/strong> SpiceDB h\u0131zl\u0131 olsa da, uygulaman\u0131z\u0131n performans\u0131n\u0131 daha da art\u0131rmak i\u00e7in yetkilendirme kararlar\u0131n\u0131 \u00f6nbelle\u011fe almay\u0131 d\u00fc\u015f\u00fcnebilirsiniz. S\u0131k\u00e7a sorgulanan ve nadiren de\u011fi\u015fen izinleri (\u00f6rne\u011fin, statik rol atamalar\u0131) uygulama katman\u0131n\u0131zda veya bir ara katman servisinde \u00f6nbelle\u011fe almak, SpiceDB'ye yap\u0131lan \u00e7a\u011fr\u0131 say\u0131s\u0131n\u0131 azaltabilir. Ancak \u00f6nbellekleme yaparken tutarl\u0131l\u0131k sorunlar\u0131na dikkat etmek ve \u00f6nbelle\u011fi ge\u00e7ersiz k\u0131lma stratejileri geli\u015ftirmek \u00f6nemlidir. SpiceDB'nin kendisi de g\u00fc\u00e7l\u00fc bir \u00f6nbellekleme mekanizmas\u0131na sahiptir.<\/li>\n<li>\n      <strong>\u0130zleme ve G\u00f6zetim:<\/strong> SpiceDB kurulumunuzu s\u00fcrekli olarak izlemek, performans darbo\u011fazlar\u0131n\u0131 veya olas\u0131 g\u00fcvenlik ihlallerini tespit etmek i\u00e7in kritik \u00f6neme sahiptir. Sorgu gecikmeleri, hata oranlar\u0131 ve ili\u015fki grafi\u011fi boyutundaki de\u011fi\u015fiklikler gibi metrikleri takip edin.\n    <\/li>\n<\/ul>\n<aside class=\"expert-tip\">Uzman \u0130pucu: Karma\u015f\u0131k yetkilendirme modellerinde <code>lookup<\/code> API'si, belirli bir kullan\u0131c\u0131 i\u00e7in eri\u015filebilir kaynaklar\u0131 listelemek gerekti\u011finde <code>check<\/code> API'sinden daha verimli olabilir. \u00d6zellikle kullan\u0131c\u0131 aray\u00fczlerinde dinamik navigasyon men\u00fcleri olu\u015ftururken bu API'yi de\u011ferlendirin.<\/aside>\n<h3>Mobile Uyumlu Tasar\u0131m Yakla\u015f\u0131mlar\u0131<\/h3>\n<p>SpiceDB do\u011frudan mobil cihazlarda \u00e7al\u0131\u015fmasa da, mobil uygulamalar\u0131n\u0131z\u0131n yetkilendirme kontrollerini merkezi bir API \u00fczerinden yapmas\u0131, g\u00fcvenlik ve y\u00f6netim a\u00e7\u0131s\u0131ndan kritik \u00f6neme sahiptir. Mobil tarafta kullan\u0131c\u0131 deneyimini iyile\u015ftirmek ve performans\u0131 optimize etmek i\u00e7in a\u015fa\u011f\u0131daki yakla\u015f\u0131mlar\u0131 benimseyebilirsiniz:<\/p>\n<ul>\n<li>\n      <strong>API \u00d6nbellekleme:<\/strong> S\u0131k\u00e7a sorgulanan ve kullan\u0131c\u0131n\u0131n oturumu boyunca de\u011fi\u015fme ihtimali d\u00fc\u015f\u00fck olan izinleri mobil cihaz taraf\u0131nda (lokal depolama) veya ara katman bir serviste k\u0131sa s\u00fcreli \u00f6nbelle\u011fe al\u0131n. Bu, her ekran y\u00fcklemesinde veya her etkile\u015fimde SpiceDB'ye yap\u0131lan gereksiz API \u00e7a\u011fr\u0131lar\u0131n\u0131 azalt\u0131r ve mobil uygulaman\u0131n daha h\u0131zl\u0131 tepki vermesini sa\u011flar.\n    <\/li>\n<li>\n      <strong>Minimum Gerekli \u0130zin Denetimi:<\/strong> Kullan\u0131c\u0131 aray\u00fcz\u00fcnde belirli bir \u00f6zelli\u011fin g\u00f6sterilip g\u00f6sterilmeyece\u011fini veya bir d\u00fc\u011fmenin etkin olup olmayaca\u011f\u0131n\u0131 belirlemek i\u00e7in yaln\u0131zca kesinlikle gerekli olan izinleri sorgulay\u0131n. A\u015f\u0131r\u0131 yetkilendirme sorgular\u0131ndan ka\u00e7\u0131n\u0131n ve sunucu yan\u0131tlar\u0131n\u0131 optimize edin.\n    <\/li>\n<li>\n      <strong>Gecikmeli Y\u00fckleme ve A\u015famal\u0131 Eri\u015fim:<\/strong> \u0130lk a\u00e7\u0131l\u0131\u015fta yaln\u0131zca temel izinleri kontrol edin ve daha az kritik olan veya daha derin katmanlarda yer alan \u00f6zelliklerin izinlerini kullan\u0131c\u0131 o k\u0131sma eri\u015fmeye \u00e7al\u0131\u015ft\u0131\u011f\u0131nda dinamik olarak sorgulay\u0131n. Bu, mobil uygulaman\u0131n ba\u015flang\u0131\u00e7 performans\u0131n\u0131 art\u0131r\u0131r.\n    <\/li>\n<\/ul>\n<p>Modern web ve mobil uygulamalarda, responsive tasar\u0131m prensipleri, kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fcn farkl\u0131 ekran boyutlar\u0131na uyum sa\u011flamas\u0131n\u0131 garanti eder. CSS media query'leri, bu uyumu sa\u011flamak i\u00e7in g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. SpiceDB'nin kendisi bir UI elementi olmasa da, onunla entegre olan web veya mobil uygulamalar\u0131n responsive olmas\u0131 \u00f6nemlidir:<\/p>\n<pre><code>\n\/* Genel stiller *\/\nbody {\n  font-family: Arial, sans-serif;\n  line-height: 1.6;\n  color: #333;\n}\n\n.container {\n  width: 95%;\n  margin: 0 auto;\n  padding: 15px;\n}\n\nh2 {\n  color: #2c3e50;\n  font-size: 1.8em;\n  margin-bottom: 15px;\n}\n\n\/* Tabletler ve daha b\u00fcy\u00fck cihazlar i\u00e7in (min-width: 768px) *\/\n@media screen and (min-width: 768px) {\n  .container {\n    width: 85%;\n    padding: 20px;\n  }\n  h2 {\n    font-size: 2.2em;\n  }\n  p {\n    font-size: 1.05em;\n  }\n}\n\n\/* Masa\u00fcst\u00fc cihazlar i\u00e7in (min-width: 1200px) *\/\n@media screen and (min-width: 1200px) {\n  .container {\n    width: 75%;\n    max-width: 1100px;\n    padding: 25px;\n  }\n  h2 {\n    font-size: 2.5em;\n  }\n  p {\n    font-size: 1.1em;\n  }\n}\n  <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki \u00f6rnekte, <code>.container<\/code> s\u0131n\u0131f\u0131na sahip bir elementin geni\u015fli\u011fi, ba\u015fl\u0131klar\u0131n font boyutlar\u0131 ve paragraf metinlerinin boyutlar\u0131, ekran boyutuna g\u00f6re otomatik olarak ayarlan\u0131r. Bu, makale i\u00e7eri\u011finin mobil cihazlarda da rahat\u00e7a okunmas\u0131n\u0131 ve uygulamalar\u0131n\u0131z\u0131n kullan\u0131c\u0131ya her platformda tutarl\u0131 bir deneyim sunmas\u0131n\u0131 sa\u011flar.<\/p>\n<h2>Sonu\u00e7: Gelece\u011fin Yetkilendirme Modelleri SpiceDB ile Nas\u0131l \u015eekilleniyor?<\/h2>\n<p>Eri\u015fim kontrol\u00fc ve yetkilendirme, modern yaz\u0131l\u0131m geli\u015ftirmenin en karma\u015f\u0131k ancak en kritik alanlar\u0131ndan biridir. Geleneksel y\u00f6ntemlerin s\u0131n\u0131rlar\u0131n\u0131 a\u015fan ve mikroservis, bulut yerlisi mimarilerde ortaya \u00e7\u0131kan dinamik ihtiya\u00e7lara yan\u0131t veren \u00e7\u00f6z\u00fcmlere olan talep giderek artmaktad\u0131r. Bu makalede ele ald\u0131\u011f\u0131m\u0131z SpiceDB, Google'\u0131n Zanzibar sisteminden ilham alan yap\u0131s\u0131yla, HRBAC (Hiyerar\u015fik Rol Tabanl\u0131 Eri\u015fim Kontrol\u00fc) gibi karma\u015f\u0131k modelleri pratik ve \u00f6l\u00e7eklenebilir bir \u015fekilde uygulaman\u0131n \u00f6n\u00fcn\u00fc a\u00e7maktad\u0131r.<\/p>\n<p>SpiceDB'nin ili\u015fki grafi\u011fi tabanl\u0131 mimarisi, yetkilendirme kararlar\u0131n\u0131 uygulama kodundan ay\u0131rarak geli\u015ftiricilere b\u00fcy\u00fck bir esneklik ve y\u00f6netim kolayl\u0131\u011f\u0131 sunar. Schema arac\u0131l\u0131\u011f\u0131yla politikalar\u0131n bildirimsel olarak tan\u0131mlanabilmesi, de\u011fi\u015fen i\u015f kurallar\u0131na h\u0131zl\u0131 adaptasyonu m\u00fcmk\u00fcn k\u0131lar. Ayn\u0131 zamanda, h\u0131zl\u0131 ve tutarl\u0131 izin sorgulama yetenekleri sayesinde, kullan\u0131c\u0131 deneyiminden \u00f6d\u00fcn vermeden g\u00fcvenli\u011fi en \u00fcst d\u00fczeye \u00e7\u0131kar\u0131r.<\/p>\n<p>Gelecekte, uygulamalar\u0131n daha da da\u011f\u0131t\u0131k hale gelmesi ve veri eri\u015fim modellerinin \u00e7e\u015fitlenmesi beklenmektedir. Bu ortamda SpiceDB gibi merkezi, ili\u015fkisel ve y\u00fcksek performansl\u0131 yetkilendirme servisleri, geli\u015ftiricilerin g\u00fcvenlik endi\u015feleri yerine i\u015f mant\u0131\u011f\u0131na odaklanmas\u0131na olanak tan\u0131yacak, b\u00f6ylece daha yenilik\u00e7i ve g\u00fcvenli \u00fcr\u00fcnlerin ortaya \u00e7\u0131kmas\u0131n\u0131 sa\u011flayacakt\u0131r. SpiceDB ile HRBAC uygulamak, sadece mevcut sorunlar\u0131 \u00e7\u00f6zmekle kalmaz, ayn\u0131 zamanda gelece\u011fin yetkilendirme ihtiya\u00e7lar\u0131na kar\u015f\u0131 sa\u011flam bir temel olu\u015fturur.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<ul>\n<li>\n      <strong>SpiceDB sadece HRBAC i\u00e7in mi kullan\u0131l\u0131yor?<\/strong><\/p>\n<p>Hay\u0131r, SpiceDB genel ama\u00e7l\u0131 bir yetkilendirme sistemi olarak tasarlanm\u0131\u015ft\u0131r. HRBAC (Hiyerar\u015fik Rol Tabanl\u0131 Eri\u015fim Kontrol\u00fc) sadece pop\u00fcler uygulama alanlar\u0131ndan biridir. ABAC (Nitelik Tabanl\u0131 Eri\u015fim Kontrol\u00fc), ReBAC (\u0130li\u015fki Tabanl\u0131 Eri\u015fim Kontrol\u00fc) ve hatta daha karma\u015f\u0131k hibrit modelleri de destekleyebilir. Temelinde \"kimin neye, hangi yolla eri\u015fimi var\" sorusunu yan\u0131tlayabilen her t\u00fcrl\u00fc yetkilendirme modelini modelleyebilirsiniz.<\/p>\n<\/li>\n<li>\n      <strong>SpiceDB'yi kendi altyap\u0131mda bar\u0131nd\u0131rabilir miyim?<\/strong><\/p>\n<p>Evet, SpiceDB a\u00e7\u0131k kaynakl\u0131 bir projedir ve kendi sunucular\u0131n\u0131zda (on-premise) veya bulut ortam\u0131n\u0131zda (Kubernetes \u00fczerinde vb.) kolayca bar\u0131nd\u0131rabilirsiniz. Resmi dok\u00fcmantasyon, \u00e7e\u015fitli da\u011f\u0131t\u0131m y\u00f6ntemleri i\u00e7in kapsaml\u0131 k\u0131lavuzlar sunar. Ayr\u0131ca, Authzed gibi y\u00f6netilen bir hizmet olarak da sunulmaktad\u0131r, bu da operasyonel y\u00fck\u00fc azaltmak isteyen ekipler i\u00e7in idealdir.<\/p>\n<\/li>\n<li>\n      <strong>SpiceDB performans\u0131 nas\u0131l sa\u011fl\u0131yor?<\/strong><\/p>\n<p>SpiceDB, Google'\u0131n Zanzibar makalesinde a\u00e7\u0131klanan da\u011f\u0131t\u0131k bir ili\u015fki grafi\u011fi veritaban\u0131 mimarisi \u00fczerine kurulmu\u015ftur. Bu mimari, d\u00fc\u015f\u00fck gecikme s\u00fcresiyle y\u00fcksek hacimli izin sorgular\u0131n\u0131 i\u015flemek \u00fczere optimize edilmi\u015ftir. Ak\u0131ll\u0131 \u00f6nbellekleme mekanizmalar\u0131, verimli veri yap\u0131lar\u0131 ve e\u015fzamanl\u0131 sorgu i\u015fleme yetenekleri sayesinde, \u00e7ok b\u00fcy\u00fck \u00f6l\u00e7eklerde bile tutarl\u0131 ve h\u0131zl\u0131 yan\u0131t s\u00fcreleri sunar.<\/p>\n<\/li>\n<li>\n      <strong>Mevcut uygulamamla SpiceDB'yi nas\u0131l entegre ederim?<\/strong><\/p>\n<p>SpiceDB, gRPC ve HTTP API'leri arac\u0131l\u0131\u011f\u0131yla entegrasyon i\u00e7in Go, Python, JavaScript, Java, .NET ve Rust gibi pop\u00fcler diller i\u00e7in zengin SDK'lar sunar. Uygulaman\u0131z\u0131n yetkilendirme karar\u0131 vermesi gereken her noktada (\u00f6rne\u011fin, bir API endpoint'ine gelen istekte veya bir veritaban\u0131 sorgusu \u00f6ncesinde) SpiceDB'ye bir sorgu g\u00f6ndererek kolayca entegre edilebilirsiniz. Bu, uygulaman\u0131zdaki yetkilendirme mant\u0131\u011f\u0131n\u0131 merkezi bir servise ta\u015f\u0131r.<\/p>\n<\/li>\n<li>\n      <strong>Schema'm\u0131 de\u011fi\u015ftirirken mevcut ili\u015fkilerimi nas\u0131l y\u00f6netirim?<\/strong><\/p>\n<p>SpiceDB'nin schema g\u00fcncellemeleri, mevcut ili\u015fkileri bozmayacak \u015fekilde tasarlanm\u0131\u015ft\u0131r. Yeni ili\u015fkiler veya izinler ekleyebilirsiniz. Schema'da bir nesneyi veya ili\u015fkiyi kald\u0131rmak gibi y\u0131k\u0131c\u0131 de\u011fi\u015fiklikler yapmadan \u00f6nce, bu de\u011fi\u015fikliklerin mevcut ili\u015fkiler \u00fczerindeki etkisini dikkatlice analiz etmeniz \u00f6nerilir. Karma\u015f\u0131k schema de\u011fi\u015fiklikleri i\u00e7in \"\u00f6nizleme\" ve \"ge\u00e7i\u015f\" (migration) s\u00fcre\u00e7leri uygulayarak ge\u00e7i\u015fleri daha kontroll\u00fc yapman\u0131z, potansiyel hatalar\u0131 ve kesintileri en aza indirir.<\/p>\n<\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Modern uygulamalarda yetkilendirme karma\u015f\u0131kl\u0131\u011f\u0131yla m\u0131 bo\u011fu\u015fuyorsunuz? SpiceDB ile Hiyerar\u015fik Rol Tabanl\u0131 Eri\u015fim Kontrol\u00fc (HRBAC) modelini pratik bir \u015fekilde&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-31808","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>SpiceDB HRBAC: Pratik Uygulama Rehberi<\/title>\n<meta name=\"description\" content=\"Modern uygulamalarda yetkilendirme karma\u015f\u0131kl\u0131\u011f\u0131yla m\u0131 bo\u011fu\u015fuyorsunuz? SpiceDB ile Hiyerar\u015fik Rol Tabanl\u0131 Eri\u015fim Kontrol\u00fc (HRBAC) modelini pratik bir \u015fekilde nas\u0131l uygulayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedin. Bu kapsaml\u0131 rehber, geli\u015ftiricilere g\u00fcvenli, \u00f6l\u00e7eklenebilir ve y\u00f6netilebilir bir yetkilendirme sistemi kurmalar\u0131 i\u00e7in gerekli t\u00fcm ara\u00e7lar\u0131 ve bilgileri sunuyor. Eri\u015fim kontrol\u00fc stratejilerinizi optimize etmeye haz\u0131r m\u0131s\u0131n\u0131z?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SpiceDB HRBAC: Pratik Uygulama Rehberi\" \/>\n<meta property=\"og:description\" content=\"Modern uygulamalarda yetkilendirme karma\u015f\u0131kl\u0131\u011f\u0131yla m\u0131 bo\u011fu\u015fuyorsunuz? SpiceDB ile Hiyerar\u015fik Rol Tabanl\u0131 Eri\u015fim Kontrol\u00fc (HRBAC) modelini pratik bir \u015fekilde nas\u0131l uygulayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedin. Bu kapsaml\u0131 rehber, geli\u015ftiricilere g\u00fcvenli, \u00f6l\u00e7eklenebilir ve y\u00f6netilebilir bir yetkilendirme sistemi kurmalar\u0131 i\u00e7in gerekli t\u00fcm ara\u00e7lar\u0131 ve bilgileri sunuyor. Eri\u015fim kontrol\u00fc stratejilerinizi optimize etmeye haz\u0131r m\u0131s\u0131n\u0131z?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-14T04:01:42+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"26 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"SpiceDB HRBAC: Pratik Uygulama Rehberi\",\"datePublished\":\"2025-10-14T04:01:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/\"},\"wordCount\":4158,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/\",\"name\":\"SpiceDB HRBAC: Pratik Uygulama Rehberi\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-14T04:01:42+00:00\",\"description\":\"Modern uygulamalarda yetkilendirme karma\u015f\u0131kl\u0131\u011f\u0131yla m\u0131 bo\u011fu\u015fuyorsunuz? SpiceDB ile Hiyerar\u015fik Rol Tabanl\u0131 Eri\u015fim Kontrol\u00fc (HRBAC) modelini pratik bir \u015fekilde nas\u0131l uygulayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedin. Bu kapsaml\u0131 rehber, geli\u015ftiricilere g\u00fcvenli, \u00f6l\u00e7eklenebilir ve y\u00f6netilebilir bir yetkilendirme sistemi kurmalar\u0131 i\u00e7in gerekli t\u00fcm ara\u00e7lar\u0131 ve bilgileri sunuyor. Eri\u015fim kontrol\u00fc stratejilerinizi optimize etmeye haz\u0131r m\u0131s\u0131n\u0131z?\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SpiceDB HRBAC: Pratik Uygulama Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SpiceDB HRBAC: Pratik Uygulama Rehberi","description":"Modern uygulamalarda yetkilendirme karma\u015f\u0131kl\u0131\u011f\u0131yla m\u0131 bo\u011fu\u015fuyorsunuz? SpiceDB ile Hiyerar\u015fik Rol Tabanl\u0131 Eri\u015fim Kontrol\u00fc (HRBAC) modelini pratik bir \u015fekilde nas\u0131l uygulayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedin. Bu kapsaml\u0131 rehber, geli\u015ftiricilere g\u00fcvenli, \u00f6l\u00e7eklenebilir ve y\u00f6netilebilir bir yetkilendirme sistemi kurmalar\u0131 i\u00e7in gerekli t\u00fcm ara\u00e7lar\u0131 ve bilgileri sunuyor. Eri\u015fim kontrol\u00fc stratejilerinizi optimize etmeye haz\u0131r m\u0131s\u0131n\u0131z?","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:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"SpiceDB HRBAC: Pratik Uygulama Rehberi","og_description":"Modern uygulamalarda yetkilendirme karma\u015f\u0131kl\u0131\u011f\u0131yla m\u0131 bo\u011fu\u015fuyorsunuz? SpiceDB ile Hiyerar\u015fik Rol Tabanl\u0131 Eri\u015fim Kontrol\u00fc (HRBAC) modelini pratik bir \u015fekilde nas\u0131l uygulayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedin. Bu kapsaml\u0131 rehber, geli\u015ftiricilere g\u00fcvenli, \u00f6l\u00e7eklenebilir ve y\u00f6netilebilir bir yetkilendirme sistemi kurmalar\u0131 i\u00e7in gerekli t\u00fcm ara\u00e7lar\u0131 ve bilgileri sunuyor. Eri\u015fim kontrol\u00fc stratejilerinizi optimize etmeye haz\u0131r m\u0131s\u0131n\u0131z?","og_url":"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-14T04:01:42+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"26 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"SpiceDB HRBAC: Pratik Uygulama Rehberi","datePublished":"2025-10-14T04:01:42+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/"},"wordCount":4158,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/","name":"SpiceDB HRBAC: Pratik Uygulama Rehberi","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-14T04:01:42+00:00","description":"Modern uygulamalarda yetkilendirme karma\u015f\u0131kl\u0131\u011f\u0131yla m\u0131 bo\u011fu\u015fuyorsunuz? SpiceDB ile Hiyerar\u015fik Rol Tabanl\u0131 Eri\u015fim Kontrol\u00fc (HRBAC) modelini pratik bir \u015fekilde nas\u0131l uygulayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedin. Bu kapsaml\u0131 rehber, geli\u015ftiricilere g\u00fcvenli, \u00f6l\u00e7eklenebilir ve y\u00f6netilebilir bir yetkilendirme sistemi kurmalar\u0131 i\u00e7in gerekli t\u00fcm ara\u00e7lar\u0131 ve bilgileri sunuyor. Eri\u015fim kontrol\u00fc stratejilerinizi optimize etmeye haz\u0131r m\u0131s\u0131n\u0131z?","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/spicedb-hrbac-pratik-uygulama-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SpiceDB HRBAC: Pratik Uygulama Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31808","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=31808"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31808\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31808"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31808"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31808"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}