Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Veri Kontrol Dili (DCL) DCL, bir veri tabanı ile ilişkili kullanıcıları ve rollerin izinlerini değiştirmek için kullanılır. Diğer bir deyişle verilere.

Benzer bir sunumlar


... konulu sunumlar: "Veri Kontrol Dili (DCL) DCL, bir veri tabanı ile ilişkili kullanıcıları ve rollerin izinlerini değiştirmek için kullanılır. Diğer bir deyişle verilere."— Sunum transkripti:

1 Veri Kontrol Dili (DCL) DCL, bir veri tabanı ile ilişkili kullanıcıları ve rollerin izinlerini değiştirmek için kullanılır. Diğer bir deyişle verilere erişim yetkilerini düzenlemede kullanılır. Temel komutları aşağıdaki şekildedir. Temel Komutlar Açıklama GRANT Bir kullanıcının verileri kullanmasına ve T-SQL komutlarını çalıştırmasına izin verir. DENY Bir kullanıcının verileri kullanmasını kısıtlar. REVOKE Daha önce yapılan tüm kısıtlama ve izinleri iptal eder.

2 Veri Kontrol Dili (DCL)
DCL komutlarını kullanabilmek için SQL Server'da varsayılan değer (default) olarak yetki sahibi olan gruplar: sysadmin , dbcreator , db_owner , db_securityadmin 'dir. Sunucuya dışarıdan bir erişim sağlamak için bir giriş (login) oluşturulmalıdır. Bunun için; CREATE LOGIN user1 WITH PASSWORD =’123456’ Bu rol ile veri tabanına bir kullanıcı olarak erişim için aşağıdaki satırlar yazılmalıdır: CREATE USER User FOR LOGIN user1 Eğer User adı ile Login adı aynı ise FOR LOGIN satırına gerek kalmaz.

3 Veri Kontrol Dili (DCL)
GRANT Komutu Veri tabanı kullanıcısına, veri tabanı rolüne veya uygulama rolüne izinler vermek için kullanılan komuttur.  Genel Yazımı GRANT {ALL veya izinler} ON {izin_verilenler} TO {hesaplar} ALL ifadesi, tüm hakların verilebileceğini gösterir

4 Veri Kontrol Dili (DCL)
DENY Komutu Kullanıcıların haklarını kısıtlayan komuttur.  Genel Yazımı DENY { ALL veya izinler} TO {kullanıcılar}

5 Veri Kontrol Dili (DCL)
REVOKE Komutu Daha önce yapılan tüm kısıtlama ve izinleri iptal eden komuttur. Bir nesneyi oluşturan kullanıcının REVOKE ile nesne üzerindeki yetkilendirme ve kullanma hakkı yok edilemez. REVOKE komutunu, sys_admin rolüne veya db_owner, db_securityadmin sabit veri tabanı rollerine sahip kullanıcılar ve nesne için dbo olan kullanıcı çalıştırabilir.  Genel Yazımı REVOKE {ALL veya izinler} {TO veya FROM} {hesaplar}

6 Veri Kontrol Dili (DCL)
Örnek: user1 adlı kullanıcıya tablo oluşturma izni şöyle verilebilir: GRANT CREATE TABLE TO user1 Aynı anda Lab1 rolüne de aynı izin verilebilir. GRANT CREATE TABLE TO Lab1, user1 Bir kullanıcıya hem veri tabanı hem de tablo oluşturma izni şöyle verilir: GRANT CREATE DATABASE, CREATE TABLE TO user2

7 Veri Kontrol Dili (DCL)
Örnek: DENY CREATE TABLE TO user1 user1 adlı kullanıcının tablo oluşturma yetkisi kısıtlanır. DENY SELECT ON PERSONEL TO user1 PERSONEL tablosunda user1 adlı kullanıcı SELECT komutuyla ilgili işlem yapamaz.

8 Veri Kontrol Dili (DCL)
Örnek: REVOKE ALL TO PUBLIC PUBLIC rolüne verilmiş olan tüm yetkiler kaldırılır. REVOKE SELECT ON PERSONEL TO PUBLIC PUBLIC rolüne PERSONEL tablosunda seçim için verilen izin kaldırılır.

9 Veri Kontrol Dili (DCL)
WITH GRANT OPTION: Dereceli yetkilendirme işleminde kullanılır. Yetki verilmiş kullanıcının kendisinde bulunan yetkileri başka kullanıcılara verebilmesini sağlar. GRANT SELECT,INSERT ON tablo1 TO user1 WITH GRANT OPTION

10 (DCL) Ve SSMS Login ilk önce sunucu (Server Seviyesinde oluşturulur)

11 (DCL) Ve SSMS Enforce password policy – Domaindeki veya Windows işletim sisteminde password policy kuralları geçerli olur. * Enforce password expiration – Domaindeki veya Windows işletim sisteminde şifre geçerlilik süresi bu seçenek ile geçerli olur. * User must change password at next login – Kullanıcı bir sonraki oturumunda şifresini değiştirmek zorunda kalır. SSMS ile bu şifre değiştirebilir. * Default Database – SSMS bağlanıldığında kullanıcı bazlı, çalışılacak olan veritabanı otomatik olarak gelir. * Default Language – SSMS üzerindeki dil ayarları, format ve hata mesajları istenen dilde bu seçenek ile ayarlanabilir.

12 Bir SQL Server hesabı varsayılan olarak hiçbir yönetici yetkisi olmadan oluşturulur. Bu role de public rolü denir. 

13 SQL Server Yönetim Rolleri :
bulkadmin : Toplu ekleme yöneticisi. Toplu Insert işlemlerini yerine getirir. NOT: Genelde başka bir veri kaynağından ya da Excel’den veri çekme işlemleri için kullanılır. dbcreator : Veritabanı oluşturucusu. Veritabanı oluşturulması ve değiştirilmesi işlemlerini yönetir. NOT : Bu role sahip olan kullanıcı, herhangi bir veritabanı oluşturabilir, silebilir veya düzenleyebilir. Yazılımcılara test amaçlı bu yetki verilebilir. diskadmin : Disk yöneticisi. Veritabanı dosyalarını yönetir. processadmin : İşlem yöneticisi. SQL Server’daki process’leri kontrol eder. NOT : Bu role sahip olan kullanıcı, çalışan tüm process’leri görebilir, kill komutu ile istenen process’leri sonlandırabilir. public : SQL Server üzerinde standart ayarlarla giriş yapan herkesin atandığı roldür. Bu kural ile tüm kullanıcıların kısıtlı hakları vardır. Daha sonra bu kullanıcılara kural değişikliği yapılarak diğer kurallar atanabilir. securityadmin : Güvenlik Yöneticisi. SQL Server login bilgilerini yönetir. NOT : Bu role sahip olan kullanıcı, SQL Server hesabı oluşturup silebilir. Rol oluşturma yetkisi yoktur. serveradmin : Sunucu yöneticisi. Sunucu temelli ayarlamalardan sorumludur. setupadmin : Kurulum yöneticisi. SQL Server Raplication’ı kurar. NOT : Bu role sahip olan kullanıcı, Linked Server oluşturma yetkileri vardır. sysadmin : Sistem yöneticisi. Server’daki hemen her işi yapabilir. NOT : Bu role sahip olan kullanıcı, tüm yönetici yetkilerine sahip olur.

14 db_accessadmin: Veritabanı yöneticisi
db_backupoperator : Veritabanı Yedekleme Operatörü db_datareader: Veritabanı Okuyucusu db_datawriter: Veritabanı Veri Yazıcısı db_ddladmin: Veritabanı DDL Yöneticisi db_denydatareader: Veritabanı engelli veri okuyucu db_owner: Vertabanı sahibi db_security: veritabanı güvenlik yöneticisi

15

16 SCHEMA Schema databasedeki tablo, view ve stored procedure gibi objeleri gruplamaya yarar. Bir objeyi bir şema altında yaratabilirsiniz veya bir şemanın altına transfer edebilirsiniz. Ayrıca şema bazlı yetki de verebilirsiniz. Yani user sadece izin verdiginiz şemanın altındaki objeleri görebilir diğerleri göremez. Normalde obje sayılarının fazlalığı yönetimi ve izinlerini oldukça zorlaştıracaktır. Her bir objeyi tek tek yetkilendirmek yerine şema bazında yetkilendirme yapmak daha uygun olacaktır.

17 Çoğu yazılım geliştirici tarafından veritabanı yetkilendirmesi göz ardı edilmektedir. Yazılım geliştiriciler  yetkilendirme problemini, uygulama kullanıcısını db_owner yaparak çözüyor. Bu şekilde hiçbir yetki problemi ile karşılaşılmıyor. Ancak üretim ortamlarında bu yetki çok fazladır ve veritabanı yöneticileri bu yetkiyi gerekli ve yeterli olacak seviyede tutmaya çalışmaktadır. Veritabanını kullanan  yazılım, özellikle dış kaynaklı bir yazılım ise, uygulama kullanıcısı “db_owner” rolünde olması çok muhtemeldir.  Bu durumda yapılması gereken uygulama kullanıcısının yetkilerini gerekli ve yeterli olacak bir seviyeye çekmektir. Ama bu çok kolay bir şey değildir, çünkü uygulama yetkilendirme problemlerinden dolayı çalışmayabilir. Uygulama kullanıcısının hangi yetkilere sahip olması gerektiği bilgisi uygulama geliştiricilerden alınmalıdır. Çoğunlukla uygulamalar DML işlemleri (insert, update, delete, select) ile execute (stored procedure ve functionlar için) işlemlerine ihtiyaç duymaktadır. Bunların dışında truncate table, create procedure gibi işlemler yapan uygulamalar nadiren de olsa çıkabilir tabi.

18 APPLICATION ROLE CREATE ROLE [AppUserRole] AUTHORIZATION [DBO]
exec sp_addrolemember [AppUserRole], [AppUser] GRANT select, insert, update, delete, exec on schema::[schemaName] to [AppUserRole]

19 --create a test database
CREATE DATABASE [SecurityTest] GO USE SecurityTest CREATE TABLE [dbo].[table1]( [pkcol] [int] IDENTITY(1,1) NOT NULL, [col1] [int] NULL, PRIMARY KEY CLUSTERED ([pkcol]) ) --create test user login CREATE LOGIN [User1] WITH --create user in test database CREATE USER [User1] FOR LOGIN [User1] WITH DEFAULT_SCHEMA=[Developer_Schema] --create role CREATE ROLE [Developer_Role] AUTHORIZATION [dbo]

20 --create schema CREATE SCHEMA [Developer_Schema] AUTHORIZATION [User1] GO --apply permissions to schemas GRANT ALTER ON SCHEMA::[Developer_Schema] TO [Developer_Role] GRANT CONTROL ON SCHEMA::[Developer_Schema] TO [Developer_Role] GRANT SELECT ON SCHEMA::[Developer_Schema] TO [Developer_Role] GRANT DELETE ON SCHEMA::[dbo] TO [Developer_Role] GRANT INSERT ON SCHEMA::[dbo] TO [Developer_Role] GRANT SELECT ON SCHEMA::[dbo] TO [Developer_Role] GRANT UPDATE ON SCHEMA::[dbo] TO [Developer_Role] GRANT REFERENCES ON SCHEMA::[dbo] TO [Developer_Role]

21 --ensure role membership is correct
EXEC sp_addrolemember N'Developer_Role ', N'User1' GO --allow users to create tables in Developer_Schema GRANT CREATE TABLE TO [Developer_Role] --Allow user to connect to database GRANT CONNECT TO [User1]


"Veri Kontrol Dili (DCL) DCL, bir veri tabanı ile ilişkili kullanıcıları ve rollerin izinlerini değiştirmek için kullanılır. Diğer bir deyişle verilere." indir ppt

Benzer bir sunumlar


Google Reklamları