SQL 2005 sql логин ip ограничение - PullRequest
2 голосов
/ 06 ноября 2008

Есть ли способ ограничить конкретный вход в систему SQL 2005 на Microsoft SQL Server 2005, стандартная версия (sql в смешанном режиме) для определенных IP-адресов, в то время как другие учетные записи, аутентифицированные Windows, не затрагиваются?

Ответы [ 6 ]

5 голосов
/ 28 ноября 2008

Я использую следующий триггер, чтобы ограничить доступ к конкретному имени входа - комбинированный IP-адрес.

CREATE TRIGGER [LOGIN_IP_RESTRICTION]
    ON ALL SERVER FOR LOGON
AS
BEGIN
    DECLARE @host NVARCHAR(255);

    SET @host = EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'nvarchar(max)');

    IF(EXISTS(SELECT * FROM master.dbo.IP_RESTRICTION 
        WHERE UserName = SYSTEM_USER))
    BEGIN
        IF(NOT EXISTS(SELECT * FROM master.dbo.IP_RESTRICTION 
            WHERE UserName = SYSTEM_USER AND ValidIP = @host))
        BEGIN
            ROLLBACK;
        END
    END
END;

DDL для таблицы IP_RESTRICTION:

CREATE TABLE [dbo].[IP_RESTRICTION](
    [UserName] [varchar](255) NOT NULL,
    [ValidIP] [varchar](15) NOT NULL,
    [Comment] [nvarchar](255) NULL,
 CONSTRAINT [PK_IP_RESTRICTION] PRIMARY KEY CLUSTERED 
([UserName] ASC, [ValidIP] ASC) ON [PRIMARY]
) ON [PRIMARY]
2 голосов
/ 16 апреля 2012

Несколько слов предупреждения!

Если вы получите что-нибудь неправильно с этим сценарием и выйдете из системы до того, как вы это поймете, вы просто заблокируете себя из SQL Server.

Затем вам нужно будет перезагрузить сервер в автономном режиме в минимальном режиме -f

Затем DROP TRIGGER [LOGIN_IP_RESTRICTION] НА ВСЕХ СЕРВЕРАХ

Тогда у вас есть шанс вернуться. Откуда я знаю? Я только что сделал эту ошибку, и у меня было несколько моментов ослабления кишечника, прежде чем я понял, как вернуться и убрать курок.

2 голосов
/ 15 ноября 2008

Да, вы можете сделать это. Вам нужно написать триггер входа в систему, как описано здесь:

http://technet.microsoft.com/en-us/library/bb326598.aspx

Я занимался этим последние пятнадцать минут и имел ограниченный успех, но, возможно, здесь есть кто-то еще, кто выполнил фильтрацию триггера входа в систему DDL по IP-адресу, который может показать исходный код.

1 голос
/ 07 ноября 2008

SQL Server может быть сопоставлен с несколькими конфигурациями портов / IP с помощью диспетчера сервера, но AFAIK нет способа привязать метод входа к порту / IP.

Единственное, о чем я могу думать, - это создать триггер FOR LOGON, а внутри этого триггера проверить данные события, например:

SELECT EVENTDATA (). Value ('(/ EVENT_INSTANCE / LoginType)', 'nvarchar (max)'), EVENTDATA (). Value ('(/ EVENT_INSTANCE / ClientHost)', 'nvarchar (max)')

... и, возможно, вызов RAISEERROR или ROLLBACK, если вам не нравится то, что, по вашему мнению, может прервать соединение?

Надеюсь, это поможет

1 голос
/ 06 ноября 2008

Я ограничил вход в систему одним IP-адресом, просто используйте брандмауэр.

0 голосов
/ 07 ноября 2008

Зачем вам нужно ограничение по IP-адресу? Если все ваши пользователи прошли проверку подлинности, просто настройте групповые разрешения на SQL Server и разрешите или запретите нужные вам группы.

Если проблема в том, что различные пользователи используют приложения с одним и тем же логином SQL (вы упомянули, что используете смешанный режим), тогда возникает вопрос, почему вы хотите разрешить некоторым пользователям, использующим приложения, доступ к SQL Server, а не разрешить другим? Реализуйте безопасность в приложениях, не откажитесь от них на уровне базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...