Roles (Roller)


Merhaba arkadaşlar, bu makalemizde öncelikle rol’ün tanımını ve özelliklerini öğreneceğiz. Ayrıca CREATE ROLE ile rollerin oluşturulması, GRANT/REVOKE deyimleri ile rollere ayrıcalıkların verilmesi ya da verilen ayrıcalıkların alınması, ENABLE/DISABLE deyimleri ile rollerin etkinleştirilmesi ya da etkin olan rollerin devre dışı bırakılması, DEFAULT ROLE ile varsayılan rolün ayarlanması, DROP ROLE ile mevcut rollerin kaldırılması gibi bir çok işlevi belirli sözdizimleri kullanarak nasıl yapacağımızı göreceğiz.

Öncelikle rol’ün tanımını yaparak başlayalım.

Rol nedir? Özellikleri nelerdir?

Rol, bir kullanıcıya veya başka bir role atayabileceğiniz ayrıcalıklar grubudur. Birden çok kullanıcı ve role bir rol verebilirsiniz. Bir role bir ayrıcalık verildiğinde ya da verilen ayrıcalık geri alındığında, bu role sahip tüm kullanıcılar ve roller de verilen ayrıcalığa otomatik olarak sahip olur veya bu ayrıcalığı kaybederler. Bir kullanıcı veya role birden fazla rol atayabilirsiniz. Bir rol için parola tanımlayabilirsiniz. Kabaca bu adam ne biçim bir adamdır? Ne iş yapabilir ya da ne iş yapamaz, ayrıcalıkları nelerdir? Hangi seviye ayrıcalıklara sahiptir gibi sorular sorduğumuzda bu sorulara karşılık gelen tanım rol tanımıdır.

Roller

Mantıksal olarak kullanıcı gruplarına vereceğiniz izinleri belirlemek için rol oluşturmalısınız. Ama bir rol oluşturabilmek için CREATE ROLE sistem ayrıcalığına sahip olmanız gerektiğini unutmamalısınız.

Daha somut bir anlatımla; içinde bulunduğunuz bir ekipte yazılımcıların ve iş analistlerinin olduğunu düşünün. Bu durumda yazılımcıların (veritabanı yönetiminin izin verdiği ölçüde) her türlü obje üzerinde değişiklik yapma, procedure oluşturma, fonksiyon oluşturma, bunlar üzerinde değişiklikler yapma, index oluşturma, tablo create etme, kolon ekleme, mevcut bir kolonu kaldırma, hatta tablo drop etme, truncate etme gibi bir takım işlemleri yapabildiğini düşünün, fakat yazılımcıların aksine iş analistlerinin bunlara izinlerinin olmadığı, sadece sorgulama yapabildiği ya da silme işlemleri yapabildiğini düşünün, işte bu izinlerin yönetilmesi ancak rollere ya da kullanıcılara verilebilecek ayrıcalıklar ile mümkündür.

SÖZDİZİMİ:

Oracle’da rol oluşturmak için kullanılan sözdizimi aşağıdaki gibidir:

CREATE ROLE role_name
[ NOT IDENTIFIED | IDENTIFIED {BY password | USING [schema.] package | EXTERNALLY | GLOBALLY } ];

role_name
Oluşturduğunuz rol adı.

NOT IDENTIFIED
Rolün hemen etkin olacağı anlamına gelir. Şifre olmadan rolü etkinleştirmek için kullanılır.

IDENTIFIED
Rolü etkinleştirmeden önce bir kullanıcı tarafından belirtilen yöntem ile onaylanması gerektiği anlamına gelir.

BY password
Rolü etkinleştirmek için yetkili bir kullanıcı tarafından bir parola girilmesi gerektiği anlamına gelir.

USING package
Sadece uygulamaların yetkili olduğu (Uygulama Rolü) bir paket kullanarak etkinleştirilebileceği anlamına gelir.

EXTERNALLY
Bir kullanıcının harici bir servis vasıtasıyla rolünü etkinleştirmek için yetkili olması gerektiği anlamına gelir. Harici servis bir işletim sistemi veya üçüncü parti bir servis olabilir.

GLOBALLY
Bir kullanıcının kurumsal dizin hizmeti veren bir servis (enterprise directory service) vasıtasıyla rolünü etkinleştirmek için yetkili olması gerektiği anlamına gelir.

Eğer NOT IDENTIFIED ve IDENTIFIED ifadelerinin her ikisi birden CREATE ROLE sözdiziminde belirtilmezse, rol varsayılan olarak NOT IDENTIFIED olarak oluşturulur.

Örneğin;

CREATE ROLE test_rol;

Bu ilk örnekte test_rol adında bir rol oluşturuluyor.

CREATE ROLE test_rol IDENTIFIED BY sifre123;

Aynı rol bu ikinci örnekte de oluşturuluyor; ama bu sefer şifre koruma ile oluşturuluyor.

ROL’E TABLO AYRICALIKLARI VERME

Oracle’da bir rolü oluşturduğunuzda, bunun ikinci adımı bu role vereceğiniz ayrıcalıkları belirlemek olacaktır. Kullanıcılar için ayrıcalıklar tanımlar gibi roller için de belirli yetkileri tanımlayabilirsiniz. İlk olarak tablo ayrıcalıklarını nasıl vereceğimizi inceleyelim. Tablo ayrıcalıklarını SELECT, INSERT, UPDATE, DELETE, REFERENCES, ALTER, INDEX veya ALL ifadelerinin farklı kombinasyonlarını kullanarak verebilirsiniz.

Sözdizimi;

Oracle’da bir role verebileceğiniz ayrıcalıklar için aşağıdaki gibi bir söz dizimi kullanmalısınız:

GRANT privileges ON object_name TO role_name;

privileges
Role atanan ayrıcalıkları ifade eder, aşağıdaki değerlerden herhangi biri olabilir:

SELECT : Tablo üzerinde SELECT deyiminin işlevini yapabileceğini belirtir.
INSERT : Tablo üzerinde INSERT deyiminin işlevini yapabileceğini belirtir.
UPDATE : Tablo üzerinde UPDATE deyiminin işlevini yapabileceğini belirtir.
DELETE : Tablo üzerinde DELETE deyiminin işlevini yapabileceğini belirtir.
REFERENCES : Başvurulan tabloya bir kısıtlama (CONSTRAINT) oluşturabilme yeteneğini ifade eder.
ALTER : ALTER TABLE ifadesi ile tablo yapısını değiştirebilme yeteneğini tanımlar.
INDEX : Tablo üzerinde index (dizin) oluşturabilme yeteneğini ifade eder.
ALL : Tablodaki tüm ayrıcalıklara sahip olabileceğini ifade eder.

object_name
dedded

role_name
wedwdwedew

qwdqdqd

qwdqwd

About Tuncay Uyar

#CODER #PROGRAMMER #DEVELOPER #CSHARP #DOTNET #SQL #PLSQL #MSSQL #HTML #CSS #JAVASCRIPT #JQUERY #AJAX #XML #JSON #ASPNET #ADONET #AGILE #SCRUM
Bu yazı Oracle PL/SQL içinde yayınlandı ve , , , , , , , olarak etiketlendi. Kalıcı bağlantıyı yer imlerinize ekleyin.

2 Responses to Roles (Roller)

  1. Bora dedi ki:

    Hocam çok güzel bir özet olmuş, devam ederseniz memnun oluruz.

    • Tuncay UYAR dedi ki:

      Teşekkürler Bora Bey, işten fırsat buldukça bir şeyler yazmaya çalışıyorum fakat genelde taslak olarak kalıyor, ilerleyen süreçte tüm yazılarımı genişletmeyi ve paylaşmayı düşünüyorum. Amacım kendim öğrenirken öğrendiğim bilgileri ve tecrübeleri diğer okuyucularla paylaşmak, blog yazma konusunda iddialı olduğum söylenemez 🙂 Kendimi bu konuda geliştirmeye çalışıyorum. Takipte kalmanızı rica ederim. Teşekkürler, saygılarımla.

Yorum bırakın