Forum

SQL Server Managmen...
 
Bildirimler
Hepsini Temizle

SQL Server Managment Studio Login Engelleme

Mustafa DOĞRU
(@MustafaDOGRU)
Üye

Arkadaşlar Günaydın,

Tüm ÇözümPark ailesine iyi bir hafta güzel bir gün dilerim,

işletmemizde kullandığımız MPR Programı için tüm kullanıcılar SQL'e "windows authentication mode" ile login olmaktadırlar,

ancak bu durum aynı zamanda SQL Managment Studio login olmasını da sağlamakta,

 

Amacım Kullanıcı Kullandığı MRP/ERP için SQL Server Login olmaya devam edebilsin, ancak Managment Studio oturum açamasın,

Windows authentication mode ile bu konuda bilgisi olan var mı ?

 

iyi çalışmalar,

 

Alıntı
Konu başlatıcı Gönderildi : 05/02/2018 12:16

Resul SOYDAŞ
(@resulsoydas)
Üye

Kullanıcıların bilgisayarında Managment Studio'nun olması mı gerekiyor? Bunu zaten kullanmayacaklarsa uninstall edin gitsin.

CevapAlıntı
Gönderildi : 05/02/2018 14:10

oldmember
(@yavuzfilizlibay)
Üye

Merhaba

Windows authenticaton kullanılmasında bir sıkıntı yok, kullancııların management studio ya girmesini engellemek için DDL triger yazabilirsiniz.

CevapAlıntı
Gönderildi : 05/02/2018 14:11

Mustafa DOĞRU
(@MustafaDOGRU)
Üye

Üstad araştırdığımda bu şekilde örnek trigger mevcut,

eğer mümkünse doğrulayabildiğiniz bir script paylaşabilir misiniz,

CevapAlıntı
Konu başlatıcı Gönderildi : 05/02/2018 17:13

Mustafa DOĞRU
(@MustafaDOGRU)
Üye

Merhaba Arakdaşlar bu konuda 1-2 trigger oluşturup denedim ama istediğim sonucu vermedi,

önerisi yada fikri olan varmıdır ?

selamlar,

Örnek

USE [master]
GO

/*** Object:  DdlTrigger [TR_LOGON_APP]    Script Date: 9.02.2018 1044 ***/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER [TR_LOGON_APP]
ON ALL SERVER
FOR LOGON
AS
BEGIN

   DECLARE @program_name nvarchar(128)
   DECLARE @host_name nvarchar(128)

   SELECT @program_name = program_name,
      @host_name = 'sa'
   FROM sys.dm_exec_sessions AS c
   WHERE c.session_id = @@spid

   
   IF ORIGINAL_LOGIN() IN('YOUR_APP_LOGIN_NAME')
      AND @program_name LIKE '%Management%Studio%'
   BEGIN
      RAISERROR('This login is for application use only.',16,1)
      ROLLBACK;
   END
END;
GO

DISABLE TRIGGER [TR_LOGON_APP] ON ALL SERVER
GO

CevapAlıntı
Konu başlatıcı Gönderildi : 09/02/2018 13:17

Cenker Çetin
(@cenkercetin)
Değerli Üye Yönetici

Bir de şu şekilde kullanıp sonucu iletir misiniz?

 

CREATE TRIGGER [TR_LOGON_APP]
ON ALL SERVER 
FOR LOGON
AS
BEGIN

   DECLARE @program_name nvarchar(128)
   DECLARE @host_name nvarchar(128)

   SELECT @program_name = program_name, 
      @host_name = host_name
   FROM sys.dm_exec_sessions AS c
   WHERE c.session_id = @@spid


   IF ORIGINAL_LOGIN() IN('YOUR_APP_LOGIN_NAME') 
      AND @program_name LIKE '%Management%Studio%' 
   BEGIN
      RAISERROR('This login is for application use only.',16,1)
      ROLLBACK;
   END
END;

 

[quote user="Mustafa DOĞRU"]

Merhaba Arakdaşlar bu konuda 1-2 trigger oluşturup denedim ama istediğim sonucu vermedi,

önerisi yada fikri olan varmıdır ?

selamlar,

Örnek

USE [master]
GO

/*** Object:  DdlTrigger [TR_LOGON_APP]    Script Date: 9.02.2018 1044 ***/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TRIGGER [TR_LOGON_APP]
ON ALL SERVER
FOR LOGON
AS
BEGIN

   DECLARE @program_name nvarchar(128)
   DECLARE @host_name nvarchar(128)

   SELECT @program_name = program_name,
      @host_name = 'sa'
   FROM sys.dm_exec_sessions AS c
   WHERE c.session_id = @@spid

   
   IF ORIGINAL_LOGIN() IN('YOUR_APP_LOGIN_NAME')
      AND @program_name LIKE '%Management%Studio%'
   BEGIN
      RAISERROR('This login is for application use only.',16,1)
      ROLLBACK;
   END
END;
GO

DISABLE TRIGGER [TR_LOGON_APP] ON ALL SERVER
GO

[/quote]

 

Cenker Çetin

Dijital Dönüşüm Danışmanı

CevapAlıntı
Gönderildi : 09/02/2018 14:05

Mustafa DOĞRU
(@MustafaDOGRU)
Üye

Hocam Merhaba,

aşağıdaki gibi kırmızıya boyadığım alanı güncelleyerek domain\username belirterek denedim olmadı,

SQL'de kendi oluşturduğum bir kullanıcıyı denedim oda olmadı,

 

 

CREATE TRIGGER [TR_LOGON_APP]
ON ALL SERVER
FOR LOGON
AS
BEGIN

   DECLARE @program_name nvarchar(128)
   DECLARE @host_name nvarchar(128)

   SELECT @program_name = program_name,
      @host_name = host_name
   FROM sys.dm_exec_sessions AS c
   WHERE c.session_id = @@spid

   IF ORIGINAL_LOGIN() IN('DOMAINNAME\USERNAME')
      AND @program_name LIKE '%Management%Studio%'
   BEGIN
      RAISERROR('This login is for application use only.',16,1)
      ROLLBACK;
   END
END;

CevapAlıntı
Konu başlatıcı Gönderildi : 09/02/2018 19:35

Cenker Çetin
(@cenkercetin)
Değerli Üye Yönetici

Aldığın hatayı paylaşabilir misin? log da olur.

[quote user="Mustafa DOĞRU"]

Hocam Merhaba,

aşağıdaki gibi kırmızıya boyadığım alanı güncelleyerek domain\username belirterek denedim olmadı,

SQL'de kendi oluşturduğum bir kullanıcıyı denedim oda olmadı,

 

 

CREATE TRIGGER [TR_LOGON_APP]
ON ALL SERVER
FOR LOGON
AS
BEGIN

   DECLARE @program_name nvarchar(128)
   DECLARE @host_name nvarchar(128)

   SELECT @program_name = program_name,
      @host_name = host_name
   FROM sys.dm_exec_sessions AS c
   WHERE c.session_id = @@spid

   IF ORIGINAL_LOGIN() IN('DOMAINNAME\USERNAME')
      AND @program_name LIKE '%Management%Studio%'
   BEGIN
      RAISERROR('This login is for application use only.',16,1)
      ROLLBACK;
   END
END;

[/quote]

Cenker Çetin

Dijital Dönüşüm Danışmanı

CevapAlıntı
Gönderildi : 12/02/2018 14:40

eren samet cunbul
(@erensametcunbul)
Üye

https://stackoverflow.com/questions/7048923/cannot-login-to-sql-server-due-logon-trigger  burada detaylı bir anlatım mevcut. Ayrıca  Domain user yerine Current_User'da kullanabilirsiniz.

CevapAlıntı
Gönderildi : 13/02/2018 18:17

Orhan fidancı
(@Orhanfidanci)
Üye

merhaba aşağıda kendi kullandığım trigger var bunu da deneyebilirsiniz

 

CREATE trigger [giris_kontrol] on all server with execute as 'sa'
for logon
as
begin
if (
--ORIGINAL_LOGIN()!='sa'
ORIGINAL_LOGIN() NOT IN ('sa', 'NT AUTHORITY\SYSTEM')
--AND APP_NAME() LIKE 'Microsoft SQL Server Management Studio%'
)
begin
rollback;
end
end

CevapAlıntı
Gönderildi : 05/03/2018 15:07

Paylaş: