HİBE, REVOKE ve DENY Veritabanı İzinleri
Veri Denetim Dili (DCL), Yapılandırılmış Sorgu Dili'nin (SQL) bir alt kümesidir ve veritabanı yöneticilerinin ilişkisel veritabanlarına güvenlik erişimini yapılandırmasına izin verir. Veritabanı nesneleri eklemek ve silmek için kullanılan Veri Tanımlama Dilini (DDL) ve bir veritabanının içeriğini almak, eklemek ve değiştirmek için kullanılan Veri Manipülasyon Dili'ni (DML) tamamlar.
DCL, SQL alt kümelerinin en basitidir, çünkü yalnızca üç komuttan oluşur: GRANT, REVOKE ve DENY. Kombine, bu üç komut, yöneticilere veritabanı izinlerini son derece ayrıntılı bir şekilde ayarlama ve kaldırma esnekliği sağlar.
GRANT Komutu ile İzin Ekleme
GRANT komutu, yöneticiler tarafından bir veritabanı kullanıcısına yeni izinler eklemek için kullanılır. Aşağıdaki gibi tanımlanan çok basit bir sözdizimi vardır:
GRANT [ayrıcalık] ON [object] TO [kullanıcı] [GRANT OPTION]İşte bu komutla sağlayabileceğiniz parametrelerin her biri için özet:
- Ayrıcalık , TÜM anahtar sözcüğü (çok çeşitli izinler vermek için) veya belirli bir veritabanı izni veya izin kümesi olabilir. Örnekler CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE ve CREATE VIEW içerir.
- Nesne herhangi bir veritabanı nesnesi olabilir. Geçerli ayrıcalık seçenekleri, bu maddeye dahil ettiğiniz veritabanı nesnesinin türüne göre değişir. Tipik olarak, nesne ya bir veritabanı, fonksiyon, saklı prosedür , tablo ya da görünüştür.
- Kullanıcı herhangi bir veritabanı kullanıcısı olabilir. Rol tabanlı veritabanı güvenliğini kullanmak istiyorsanız, bu maddede kullanıcı için bir rol de kullanabilirsiniz.
- GRANT komutunun sonunda isteğe bağlı WITH GRANT OPTION deyimi eklerseniz, yalnızca belirtilen kullanıcıya SQL deyiminde tanımlanan izinleri vermekle kalmaz, aynı zamanda kullanıcıya diğer veritabanı kullanıcılarına aynı izinleri verme yetkisi de verirsiniz. Bu nedenle, bu maddeyi dikkatli kullanın.
Örneğin, kullanıcıya Joe'nun HR denilen bir veritabanındaki çalışanlar tablosundan bilgi alma yeteneğini vermeyi kabul ettiğinizi varsayalım. Aşağıdaki SQL komutunu kullanabilirsiniz:
HALI SEÇİMİ HR.employees Joe'yaJoe şimdi çalışanların tablosundan bilgi alma yeteneğine sahip olacak. Ancak, diğer kullanıcıların, GRANT deyiminde WITH GRANT OPTION deyimini içermediğinden, o tablodaki bilgileri alma izni veremez.
Veritabanı Erişimini İptal Etme
REVOKE komutu, daha önce bu tür bir erişim izni verilen bir kullanıcıdan veritabanı erişimini kaldırmak için kullanılır. Bu komutun sözdizimi aşağıdaki gibi tanımlanmıştır:
REVOKE [GRANT SEÇENEĞİ] [izin] ON [object] FROM [kullanıcı] [CASCADE]REVOKE komutunun parametrelerini aşağıda bulabilirsiniz:
- İzin, belirtilen kullanıcıdan kaldırılacak veritabanı izinlerini belirtir. Komut önceden belirlenmiş izin için yapılmış hem GRANT ve DENY iddialarını iptal eder.
- Nesne herhangi bir veritabanı nesnesi olabilir. Geçerli ayrıcalık seçenekleri, bu maddeye dahil ettiğiniz veritabanı nesnesinin türüne göre değişir. Tipik olarak, nesne ya bir veritabanı, fonksiyon, saklı prosedür, tablo ya da görünüştür.
- Kullanıcı herhangi bir veritabanı kullanıcısı olabilir. Rol tabanlı veritabanı güvenliğini kullanmak istiyorsanız, bu maddede kullanıcı için bir rol de kullanabilirsiniz.
- GRANT SEÇENEK FORUMU, belirtilen kullanıcının belirtilen izni diğer kullanıcılara verme becerisini kaldırır. Not : Bir REVOKE deyiminde GRANT OPTION FOR yan tümcesini eklerseniz, birincil izin iptal edilmez . Bu fıkra sadece verme kabiliyetini iptal eder.
- CASCADE seçeneği, belirtilen kullanıcının belirtilen izni verdiği herhangi bir kullanıcıdan belirtilen izni de iptal eder.
Örneğin, aşağıdaki komut, önceki örnekte Joe'ya verilen izni iptal eder:
Joe'dan HR.employees SEÇİNİZİ SEÇİNAçıkça Veritabanı Erişimini Reddetme
DENY komutu, bir kullanıcının belirli bir izni almasını açıkça engellemek için kullanılır. Bu, bir kullanıcı bir izin verilen bir rol veya gruba üye olduğunda ve bir kullanıcının istisna oluşturarak izni devralmasını engellemek istediğinizde yararlıdır. Bu komutun sözdizimi şöyledir:
DENY [izin] AÇIK [object] TO [kullanıcı] DENY komutu için parametreler GRANT komutu için kullanılanlarla aynıdır.
Örneğin, Matta'nın çalışanlar tablosundaki bilgileri silme yeteneğini asla almamasını sağlamak isterseniz, aşağıdaki komutu verin: