0Pricing
SQL Academy · Ders

Roller ve Ayrıcalıklar

GRANT ve REVOKE ile erişim verin veya kaldırın.

Roller ve Ayrıcalıklar, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.

Roller ve Ayrıcalıklar Nedir

SQL'de roller, kullanıcılara atanabilen adlandırılmış ayrıcalık gruplarıdır. Ayrıcalıklar, bir kullanıcının veya rolün tablolar, görünümler ve işlevler gibi veritabanı nesneleri üzerinde hangi işlemleri gerçekleştirebileceğini denetler.

Her kullanıcıya ayrı ayrı izin vermek yerine, gerekli ayrıcalıklara sahip bir rol oluşturur ve bu rolü aynı anda birçok kullanıcıya atarsınız. Bu, erişim denetimini büyük ölçekte yönetmeyi çok kolaylaştırır.

Rol Oluşturma

PostgreSQL'de yeni bir rol tanımlamak için CREATE ROLE kullanın. Bir rol, nasıl yapılandırdığınıza bağlı olarak tek bir kullanıcıyı veya bir kullanıcı grubunu temsil edebilir.

Roller varsayılan olarak hiçbir ayrıcalık olmadan oluşturulur; nesnelere erişim izni vermeniz gerekir.

CREATE ROLE readonly_user;
CREATE ROLE app_writer;
CREATE ROLE db_admin;

Tablo Ayrıcalıkları Verme

GRANT ifadesi, bir role veya kullanıcıya bir veritabanı nesnesi üzerinde belirli işlemleri gerçekleştirme izni verir. Tablo düzeyindeki yaygın ayrıcalıklar arasında SELECT, INSERT, UPDATE ve DELETE bulunur.

Tek bir ayrıcalık verebilir veya ayrıcalıkları virgülle ayırarak birden çok ayrıcalığı aynı anda verebilirsiniz.

-- Grant SELECT only (read-only role)
GRANT SELECT ON employees TO readonly_user;

-- Grant multiple privileges
GRANT SELECT, INSERT, UPDATE ON orders TO app_writer;

Tüm Ayrıcalıkları Verme

Bir rolün bir tabloya tam erişime ihtiyacı varsa her izni tek tek listelemek yerine GRANT ALL PRIVILEGES kullanabilirsiniz. Bu, belirtilen nesne için geçerli olan tüm ayrıcalıkları verir.

ALL PRIVILEGES kullanırken dikkatli olun; bunu yalnızca nesne üzerinde gerçekten tam denetime ihtiyaç duyan rollere verin.

-- Grant full access to db_admin on a table
GRANT ALL PRIVILEGES ON employees TO db_admin;

-- Or the shorthand form
GRANT ALL ON orders TO db_admin;

Ayrıcalıkları Geri Alma

REVOKE ifadesi, daha önce verilmiş ayrıcalıkları bir rolden veya kullanıcıdan kaldırır. Gereksinimler değiştiğinde ya da bir rolün belirli izinlere artık ihtiyacı kalmadığında erişimi bu şekilde sıkılaştırırsınız.

REVOKE işleminden sonra etkilenen rol, adı belirtilen nesne üzerindeki belirtilen ayrıcalığı hemen kaybeder.

-- Remove UPDATE access from app_writer
REVOKE UPDATE ON orders FROM app_writer;

-- Remove all privileges from a role
REVOKE ALL PRIVILEGES ON employees FROM readonly_user;

Bir Kullanıcıya Rol Atama

PostgreSQL'de kullanıcılar da roldür; LOGIN özniteliğine sahip bir rol veritabanına bağlanabilir. Bir grup rolünü giriş rolüne GRANT role TO user kullanarak atarsınız.

Atama yapıldıktan sonra kullanıcı, o role ait tüm ayrıcalıkları devralır; böylece birçok kullanıcı için izinleri aynı anda yönetmek kolaylaşır.

-- Create a login user
CREATE ROLE alice WITH LOGIN PASSWORD 'secret123';

-- Assign the readonly role to alice
GRANT readonly_user TO alice;

-- Alice can now SELECT on tables granted to readonly_user

Bir Rolü Kullanıcıdan Geri Alma

Bir rol atamasını kullanıcıdan kaldırmak için REVOKE role FROM user kullanın. Bundan sonra kullanıcı, bu rolle gelen ayrıcalıkları artık devralmaz.

Bu, bir çalışanın sorumlulukları değiştiğinde veya kurumdan ayrıldığında kullanışlıdır; rolün kendi ayrıcalık tanımlarına dokunmadan çalışanın rolünü geri alabilirsiniz.

-- Remove the readonly role from alice
REVOKE readonly_user FROM alice;

-- Alice no longer has SELECT on tables via that role

Şema Düzeyinde Ayrıcalıklar

Bir rolün şema içindeki herhangi bir nesneye erişebilmesi için önce o şema üzerinde USAGE ayrıcalığına sahip olması gerekir. Bu ayrıcalık olmadan, belirli bir tablo üzerinde SELECT ayrıcalığına sahip bir rol bile verileri okuyamaz; çünkü şema yolunu çözümleyemez.

Nesne düzeyindeki ayrıcalıklarla birlikte şema üzerinde her zaman USAGE verin.

-- Allow readonly_user to see inside the public schema
GRANT USAGE ON SCHEMA public TO readonly_user;

-- Then grant table-level privilege
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;

Gelecekteki Nesneler İçin Varsayılan Ayrıcalıklar

Bir şemada yeni tablolar oluşturulduğunda mevcut roller bunlara otomatik olarak erişemez. Belirli bir rol tarafından oluşturulacak gelecekteki nesnelerin başka bir rol tarafından otomatik olarak erişilebilir olmasını sağlamak için ALTER DEFAULT PRIVILEGES kullanın.

Bu, yeni oluşturulan bir tablonun birilerinin elle GRANT çalıştırmayı hatırlamasına kadar uygulama rolleri tarafından görünmemesi gibi yaygın bir sorunu önler.

-- Future tables created by the current user will be SELECTable by readonly_user
ALTER DEFAULT PRIVILEGES IN SCHEMA public
  GRANT SELECT ON TABLES TO readonly_user;

-- Future tables will allow INSERT/UPDATE/DELETE for app_writer
ALTER DEFAULT PRIVILEGES IN SCHEMA public
  GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_writer;

WITH GRANT OPTION

Varsayılan olarak bir ayrıcalığı alan rol, bu ayrıcalığı başka rollere devredemez. WITH GRANT OPTION eklemek, alıcının bu ayrıcalığı başkalarına da vermesine olanak tanır.

Bunu dikkatli kullanın; rol, erişim denetimi için güvenilen bir yetki devri noktası hâline gelir ve aşırı kullanılırsa denetimi karmaşıklaştırabilir.

-- app_writer can now grant SELECT on orders to other roles
GRANT SELECT ON orders TO app_writer WITH GRANT OPTION;

-- app_writer can then do:
-- GRANT SELECT ON orders TO reporting_role;

Verilen Ayrıcalıkları Görüntüleme

PostgreSQL, ayrıcalık bilgilerini sistem katalog görünümlerinde saklar. Hangi rollerin hangi tablolarda hangi ayrıcalıklara sahip olduğunu görmek için information_schema.role_table_grants sorgulanabilir.

psql içindeki ters eğik çizgi komutu \dp tablename da bir tablonun erişim ayrıcalıkları listesini kompakt bir biçimde gösterir.

-- List all table-level grants in the current database
SELECT grantee, table_schema, table_name, privilege_type
FROM information_schema.role_table_grants
WHERE table_schema = 'public'
ORDER BY grantee, table_name;

Hızlı Kontrol

SQL'deki roller ve ayrıcalıklar konusundaki anlayışınızı sınayın.

Özet: Roller ve Ayrıcalıklar

Bu derste SQL'in roller ve ayrıcalıklar aracılığıyla erişim denetimini nasıl yönettiğini öğrendiniz:

  • CREATE ROLE yeni bir rol veya kullanıcı hesabı tanımlar
  • GRANT, nesneler üzerindeki ayrıcalıkları (SELECT, INSERT, UPDATE, DELETE, ALL) bir role atar
  • REVOKE bu ayrıcalıkları kaldırır
  • GRANT role TO user, bir grup rolünü giriş yapan kullanıcıya atar; böylece kullanıcı rolün ayrıcalıklarını devralır
  • Rollerin, içindeki nesnelere erişebilmesi için önce şema üzerinde USAGE ayrıcalığına sahip olması gerekir
  • ALTER DEFAULT PRIVILEGES, gelecekteki nesnelerin otomatik olarak erişilebilir olmasını sağlar
  • WITH GRANT OPTION, alıcının ayrıcalığı daha ileriye devretmesine olanak tanır

Ayrıcalıkları asgari düzeyde ve rol tabanlı tutmak, güvenli veritabanı tasarımının temel ilkelerindendir; yalnızca gerekeni verin ve artık gerekli olmadığında ayrıcalığı derhâl geri alın.

Sıkça Sorulan Sorular

“Roller ve Ayrıcalıklar” dersi ücretsiz mi?

Evet — “Roller ve Ayrıcalıklar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.

“Roller ve Ayrıcalıklar” dersinde ne öğreneceğim?

GRANT ve REVOKE ile erişim verin veya kaldırın. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Roller ve Ayrıcalıklar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Roller ve Ayrıcalıklar
  2. Satır Düzeyi Güvenlik Politikaları
  3. Sütun Düzeyi İzinler
  4. Erişimi Denetleme
← SQL Academy Sayfasına Dön