В 1 лекции мы разобрали вопрос о том, какие данные стоит, а какие не стоит хранить в базе данных. В данной лекции будут рассмотрены основные концепции обеспечения безопасности баз данных, которые должен знать каждый разработчик, чтобы создавать защищенные базы данных.
Обеспечение безопасности - важный компонент большинства приложений баз данных; поэтому не надо думать, что в процессе разработки этим можно заняться в самую последнюю очередь. Каждый элемент приложения базы данных следует разрабатывать с учетом требований обеспечения безопасности. Вы научитесь предоставлять доступ к экземплярам и базам данных SQL Server и управлять ролями на уровне базы данных и на уровне сервера. Кроме того, вы узнаете, как использовать для обеспечения надежности и безопасности пространства имен объекта схемы. В завершение рассказывается о том, как обеспечить безопасный доступ к таблицам, столбцам и таким программируемым объектам, как хранимые процедуры и функции.
SQL Server 2005 – первая версия SQL Server, которая была разработана в рамках инициативы Microsoft
SQL Server – это система управления базами данных, которая должна работать на сервере сети, принимая подключения от удаленных пользователей и приложений. Можно подключиться к SQL Server локально, с того же компьютера, на котором выполняется SQL Server, но в производственных системах баз данных, как правило, эта возможность не используется. Следовательно, очень важно правильно сконфигурировать SQL Server для приема защищенных подключений от удаленных компьютеров.
Чтобы выполнить удаленный доступ к экземпляру SQL Server, необходим сетевой протокол для установления соединения. Во избежание расточительного использования системных ресурсов, активизируйте только те протоколы, которые необходимо использовать.
При установке SQL Server с параметрами по умолчанию многие функции отключены, чтобы уменьшить уязвимость системы базы данных против атак. Например, в SQL Server 2005 по умолчанию не разрешаются удаленные подключения (за исключением версии Enterprise), поэтому для того, чтобы задействовать удаленные подключения, мы воспользуемся инструментом SQL Server
Для этого выполните перечисленные ниже действия:
(рис 2.1) Инструмент Настройка контактной зоны SQL Server для служб и подключенийДопускается использование удаленных соединений с использованием сетевых протоколов TCP/IP или Named Pipes (именованные каналы). В интересах безопасности и производительности рекомендуется использовать протокол TCP/IP.
Серверы баз данных должны быть хорошо защищены от несанкционированного внешнего доступа ввиду критической важности информации, которая на них хранится. Ни в коем случае нельзя допускать, чтобы к SQL Server можно было обратиться непосредственно через интернет. Если необходимо предоставить доступ к SQL Server через интернет пользователям или приложениям, следует гарантировать, что сетевое окружение имеет адекватные механизмы защиты, такие, как межсетевой экран или система обнаружения вторжений.
Дополнительная информация.SQL Server допускает использование соединений с различными типами конечных точек. О конечных точках рассказывается в лекции 5 курса "Оптимизация работы серверов баз данных Microsoft SQL Server 2005".
Устанавливая соединение с экземпляром SQL Server, вы должны предоставить корректную информацию для проверки подлинности. Ядро базы данных выполняет двухфазный процесс проверки подлинности. Сначала проверяется, предоставили ли вы действующее имя пользователя учетной записи, имеющей разрешение на подключение к экземпляру SQL Server. Далее, ядро базы данных проверяет, имеет ли данная учетная запись разрешение на доступ к той базе данных, к которой выполняется попытка подключения.
В SQL Server 2005 участники – это лица, группы или процессы, которые запрашивают доступ к ресурсам базы данных. Участники иерархически упорядочены по уровням операционной системы, сервера и базы данных и могут быть индивидуальными (неделимыми) или коллективными.
Например, имя входа SQL – это индивидуальный участник на уровне экземпляра SQL Server, а группа Windows – коллективный участник на уровне операционной системы.
SQL Server 2005 для предоставления доступа поддерживает два режима аутентификации: режим проверки подлинности Windows и комбинированный режим проверки подлинности. Режим проверки подлинности можно настроить через SQL Server Management Studio, выполнив следующие действия:
При выборе режима проверки подлинности рекомендуется следовать приведенным ниже рекомендациям:
Как правило, в качестве режима проверки подлинности рекомендуется выбирать режим проверки подлинности Windows . В режиме проверки подлинности Windows по сети не передается пароль пользователя. Кроме того, можно управлять учетными записями пользователей через централизованное корпоративное хранилище, например, через службу каталогов Active Directory, и воспользоваться преимуществами всех функций безопасности, доступных в операционной системе.
Однако существуют ситуации, когда проверка подлинности Windows будет не лучшим вариантом. Например, если необходимо предоставить доступ пользователям, которые не принадлежат к среде вашей операционной системы, например, внешним поставщикам или тем, кто использует операционную систему с несовместимой системой обеспечения безопасности, лучше выбрать комбинированный режим проверки подлинности и использовать имена входа SQL Server, чтобы установить для таких пользователей соединение с SQL Server.
В случаях, когда пользователю необходим доступ к экземпляру SQL Server, администратор должен предоставить этому пользователю корректную информацию для проверки подлинности. Эта информация зависит от выбранного режима проверки подлинности. В данном разделе объясняется, как создавать имена входа для пользователей операционной системы, которые будут поддерживать режим проверки подлинности Windows, и имена входа SQL для поддержки режима проверки подлинности SQL.
Можно разрешить пользователям операционной системы устанавливать соединение с сервером SQL Server посредством создания имени входа для пользователя или группы Windows. По умолчанию, доступ к SQL Server предоставлен только членам локальной группы администраторов Windows и учетной записи службы, которая запускает службы SQL.
Доступ к экземпляру SQL Server можно предоставить, создав имя входа либо путем непосредственного ввода команд SQL, либо через интерфейс SQL Server Management Studio.
Следующий код предоставляет доступ к экземпляру SQL Server пользователю домена Windows ADWORKS\jlucas:
CREATE LOGIN [ADVWORKS\jlucas] FROM WINDOWS;
В процессе установки SQL Server 2005 создаются имена входа Windows, перечисленные в табл. 2.1.
| Имя входа Windows | Описание |
|---|---|
BUILTIN\Administrators |
Имя входа для локальной группы администраторов на компьютерах с установленным экземпляром SQL Server. Для запуска SQL Server это имя входа не обязательно. |
<Servername>\SQLServer2005 MSFTEUser$<Servername>
$MSSQLSERVER |
Имя входа для группы пользователей Windows SQLServer2005 MSFTEUser$ <Servername>$MSSQLSERVER. Члены этой группы имеют необходимые привилегии, которые назначаются им как учетной записи входа в систему ассоциированного экземпляра компонента SQL Server FullText Search.
Эта учетная запись необходима для запуска компонента SQL Server 2005 |
<Servername>\SQLServer 2005MSSQLUser$<Servername>
$MSSQLSERVER |
Имя входа для группы пользователей Windows SQLServer2005 MSSQLUser$ <Servername>$MSSQLSERVER. Члены этой группы имеют необходимые привилегии, которые назначаются им как учетной записи входа в систему ассоциированного экземпляра компонента SQL Server. Эта учетная запись необходима для запуска SQL Server 2005, поскольку является служебной учетной записью для SQL Server в тех случаях, когда экземпляр сконфигурирован на использование локальной служебной учетной записи как своей служебной учетной записи. |
<Servername>\SQLServer2005 SQLAgentUser$<Servername>
$MSSQLSERVER |
Имя входа для группы пользователей SQLServer2005SQLAgentUser$<
Servername>$MSSQLSERVER.
Члены этой группы имеют необходимые привилегии, которые назначаются им как учетной записи входа в
систему ассоциированного экземпляра компонента SQL Server Agent.
Эта учетная запись необходима для запуска компонента SQL Server 2005 Agent. |
При подключении к SQL Server 2005 с использованием имени входа Windows, SQL Server полагается на проверку подлинности операционной системы и проверяет только, имеет ли пользователь Windows соответствующее имя входа, определенное в этом экземпляре сервера SQL Server, или принадлежит ли это имя входа группе Windows с соответствующим именем входа в этот экземпляр SQL Server. Соединение, использующее имя входа Windows, называется доверительным соединением.
sp_validatelogins.Следующая программа на Microsoft Visual Basic (она имеется в файлах примеров под именем ConnectUsing WindowsAuth.vb.txt ) показывает, как установить соединение с SQL Server с использованием проверки подлинности Windows:
"Создаем экземпляр объекта SQLConnection
Dim oConn as New SQLClient.SQLConnection
"Определяем строку соединения
oConn.ConnectionString="server=localhost; database=AdventureWorks;" + _
"Integrated Security=SSPI"
"Открываем соединение
oConn.Open()
"Выполняем необходимые действия
...
"Закрываем соединение
oConn.Close()
В режиме проверки подлинности Windows и SQL Server также можно создавать имена входа SQL Server и управлять ими. При создании имени входа SQL Server необходимо задать для этого имени входа пароль. Пользователи должны указывать пароль при соединении с экземпляром SQL Server. При создании имени входа SQL Server можно задать для него имя базы данных и язык по умолчанию. В том случае, если приложение устанавливает соединение с SQL Server, не указывая контекст и язык базы данных, SQL Server использует свойства этого имени входа для этого соединения по умолчанию.
Доступ к экземпляру SQL Server можно предоставить, создав имя входа SQL Server либо путем непосредственного ввода команд SQL, либо через интерфейс SQL Server Management Studio. В следующем примере мы создаем имя входа SQL Server "Mary" и назначаем для пользователя Mary базу данных Adventure Works в качестве базы данных по умолчанию.
CREATE LOGIN Mary WITH PASSWORD = '34TY$$543', DEFAULT_DATABASE =AdventureWorks;
В процессе установки SQL Server 2005 создается одно имя входа SQL Server - sa. Имя входа sa создается в любом случае, даже если вы выбрали в процессе установки режим проверки подлинности Windows.
При помощи следующего кода можно получить информацию об именах входа SQL Server из представления каталога sql_logins:
SELECT * FROM sys.sql_logins;
При использовании имен входа SQL Server необходимо реализовать сильные политики паролей для этих имен входа во избежание ослабления системы безопасности SQL Server с течением времени. SQL Server 2005 предоставляет возможность принудительного применения парольной политики операционной системы к именам входа SQL Server. Если SQL Server выполняется в среде Windows 2003 Server, то SQL Server использует API (интерфейс для прикладного программирования) NetValidatePasswordPolicy для управления следующими параметрами:
Если сервер SQL Server выполняется в среде Windows 2000 Server, то он использует правило SQL Server Native Password Complexity rule, которое было введено программой Microsoft Baseline Security Analyzer для принудительного применения следующих правил:
NULL"Password", "Admin" или "Administrator".Парольную политику можно включить при помощи следующего кода Transact SQL:
CREATE LOGIN Mary
WITH PASSWORD = '34TY$$543'
MUSTCHANGE,
CHECK EXPIRATION = ON,
CHECK POLICY = ON;
Теперь вы знаете, как предоставить доступ пользователю к экземпляру SQL Server, но до сих пор ничего не было сказано о том, какие разрешения могут иметь эти имена входа в SQL Server. Как правило, пользователю необходим доступ к каким-либо данным. Однако возможно вам придется создать некоторые имена входа с разрешениями на выполнение задач администрирования.
Для выполнения этой задачи SQL Server предоставляет серверные роли на уровне экземпляра. (Серверные роли являются фиксированными, нельзя создать новые роли на уровне экземпляра). В табл. 2.2 перечислены фиксированные серверные роли, созданные SQL Server 2005.
| Фиксированная серверная роль | Описание |
|---|---|
bulkadmin |
Может выполнять предложение BULK INSERT |
dbcreator |
Может создавать, изменять, удалять и восстанавливать базы данных |
diskadmin |
Может управлять файлами на диске |
processadmin |
Может завершать процессы |
securityadmin |
Может управлять именами входа и назначать разрешения |
serveradmin |
Может изменять параметры сервера и завершать работу сервера |
setupadmin |
Может управлять связанными серверами и выполнять системные хранимые процедуры |
|
Может выполнять на сервере любые действия |
Выполнив запрос системной функции IS_SRVROLEMEMBER можно узнать, принадлежит текущий пользователь к одной из серверных ролей. Следующий пример кода Transact SQL возвращает значение 1, если текущее имя входа принадлежит к серверной роли
SELECT IS_SRVROLEMEMBER ('sysadmin');
Добавляем имя входа к серверной роли.Добавить имя входа к существующей серверной роли можно при помощи системной хранимой процедуры sp_addsrvrolemember. Следующий пример добавляет Mary к серверной роли :
EXECUTE sp_addsrvrolemember "Mary", "sysadmin";
Удаляем имя входа из серверной роли.Чтобы удалить имя входа из серверной роли, можно использовать хранимую процедуру sp_dropsrvrolemember. Следующий пример удаляет пользователя Mary из серверной роли
EXECUTE sp_dropsrvrolemember "Mary", "sysadmin";
Предоставляем индивидуальные разрешения.SQL Server 2005 предоставляет более гранулярную структуру разрешений, что позволяет с большей точностью контролировать операции входа. Разрешениями можно манипулировать при помощи операторов GRANT, DENY и REVOKE. Информация о серверных разрешениях доступна из представления каталога sys.server_permissions.
В следующем примере пользователю Mary предоставляются права на создание и выполнение трассировок в SQL Server Profiler:
GRANT ALTER TRACE TO Mary;
Пользователи могут получить информацию о своих разрешениях с помощью функции fn_my_permissions. Следующий пример отображает разрешения пользователя:
SELECT * FROM fn_my_permissions (NULL, 'SERVER');
В некоторых ситуациях, например, когда пользователь увольняется из организации, необходимо запретить доступ определенному имени входа. Если этот запрет временный, можно не удалять имя входа из экземпляра, а просто отключить его. При отключении доступа свойства имени входа и его сопоставление пользователям базы данных сохраняются. Повторно включив это имя входа, вы можете работать с прежними свойствами. Чтобы отключить и включить имя входа, выполните следующую инструкцию ALTER:
ALTER LOGIN Mary DISABLE;
ALTER LOGIN Mary ENABLE;
Можно проверить, отключены ли имена входа, выполнив запрос к представлению каталога sql_logins, как показано в следующем примере:
ALTER LOGIN Mary DISABLE; GO
SELECT * FROM sys.sql_logins WHERE is_disabled=1; GO
ALTER LOGIN Mary ENABLE;
DROP LOGIN. Следующий пример удаляет имя входа.DROP LOGIN Mary;
Следующая программа на Microsoft Visual Basic (она имеется в файлах примеров под именем ConnectUsingSQL Auth.vb.txt ) показывает, как установить соединение с SQL Server с использованием проверки подлинности SQL Server:
"Создаем экземпляр объекта SQLConnection
Dim oConn as New SQLClient.SQLConnection
"Определяем строку соединения
"с заданными именем входа и паролем
oConn.ConnectionString="server=localhost; database=AdventureWorks; " + _
"user id= Mary; password=34TY$$543"
"Открываем соединение
oConn.Open()
"Выполняем необходимые действия
...
"Закрываем соединение
oConn.Close()
В 1 лекции мы разобрали вопрос о том, какие данные стоит, а какие не стоит хранить в базе данных. В данной лекции будут рассмотрены основные концепции обеспечения безопасности баз данных, которые должен знать каждый разработчик, чтобы создавать защищенные базы данных.
Обеспечение безопасности - важный компонент большинства приложений баз данных; поэтому не надо думать, что в процессе разработки этим можно заняться в самую последнюю очередь. Каждый элемент приложения базы данных следует разрабатывать с учетом требований обеспечения безопасности. Вы научитесь предоставлять доступ к экземплярам и базам данных SQL Server и управлять ролями на уровне базы данных и на уровне сервера. Кроме того, вы узнаете, как использовать для обеспечения надежности и безопасности пространства имен объекта схемы. В завершение рассказывается о том, как обеспечить безопасный доступ к таблицам, столбцам и таким программируемым объектам, как хранимые процедуры и функции.
SQL Server 2005 – первая версия SQL Server, которая была разработана в рамках инициативы Microsoft
SQL Server – это система управления базами данных, которая должна работать на сервере сети, принимая подключения от удаленных пользователей и приложений. Можно подключиться к SQL Server локально, с того же компьютера, на котором выполняется SQL Server, но в производственных системах баз данных, как правило, эта возможность не используется. Следовательно, очень важно правильно сконфигурировать SQL Server для приема защищенных подключений от удаленных компьютеров.
Чтобы выполнить удаленный доступ к экземпляру SQL Server, необходим сетевой протокол для установления соединения. Во избежание расточительного использования системных ресурсов, активизируйте только те протоколы, которые необходимо использовать.
При установке SQL Server с параметрами по умолчанию многие функции отключены, чтобы уменьшить уязвимость системы базы данных против атак. Например, в SQL Server 2005 по умолчанию не разрешаются удаленные подключения (за исключением версии Enterprise), поэтому для того, чтобы задействовать удаленные подключения, мы воспользуемся инструментом SQL Server
Для этого выполните перечисленные ниже действия:
(рис 2.1) Инструмент Настройка контактной зоны SQL Server для служб и подключенийДопускается использование удаленных соединений с использованием сетевых протоколов TCP/IP или Named Pipes (именованные каналы). В интересах безопасности и производительности рекомендуется использовать протокол TCP/IP.
Серверы баз данных должны быть хорошо защищены от несанкционированного внешнего доступа ввиду критической важности информации, которая на них хранится. Ни в коем случае нельзя допускать, чтобы к SQL Server можно было обратиться непосредственно через интернет. Если необходимо предоставить доступ к SQL Server через интернет пользователям или приложениям, следует гарантировать, что сетевое окружение имеет адекватные механизмы защиты, такие, как межсетевой экран или система обнаружения вторжений.
Дополнительная информация.SQL Server допускает использование соединений с различными типами конечных точек. О конечных точках рассказывается в лекции 5 курса "Оптимизация работы серверов баз данных Microsoft SQL Server 2005".
Устанавливая соединение с экземпляром SQL Server, вы должны предоставить корректную информацию для проверки подлинности. Ядро базы данных выполняет двухфазный процесс проверки подлинности. Сначала проверяется, предоставили ли вы действующее имя пользователя учетной записи, имеющей разрешение на подключение к экземпляру SQL Server. Далее, ядро базы данных проверяет, имеет ли данная учетная запись разрешение на доступ к той базе данных, к которой выполняется попытка подключения.
В SQL Server 2005 участники – это лица, группы или процессы, которые запрашивают доступ к ресурсам базы данных. Участники иерархически упорядочены по уровням операционной системы, сервера и базы данных и могут быть индивидуальными (неделимыми) или коллективными.
Например, имя входа SQL – это индивидуальный участник на уровне экземпляра SQL Server, а группа Windows – коллективный участник на уровне операционной системы.
SQL Server 2005 для предоставления доступа поддерживает два режима аутентификации: режим проверки подлинности Windows и комбинированный режим проверки подлинности. Режим проверки подлинности можно настроить через SQL Server Management Studio, выполнив следующие действия:
При выборе режима проверки подлинности рекомендуется следовать приведенным ниже рекомендациям:
Как правило, в качестве режима проверки подлинности рекомендуется выбирать режим проверки подлинности Windows . В режиме проверки подлинности Windows по сети не передается пароль пользователя. Кроме того, можно управлять учетными записями пользователей через централизованное корпоративное хранилище, например, через службу каталогов Active Directory, и воспользоваться преимуществами всех функций безопасности, доступных в операционной системе.
Однако существуют ситуации, когда проверка подлинности Windows будет не лучшим вариантом. Например, если необходимо предоставить доступ пользователям, которые не принадлежат к среде вашей операционной системы, например, внешним поставщикам или тем, кто использует операционную систему с несовместимой системой обеспечения безопасности, лучше выбрать комбинированный режим проверки подлинности и использовать имена входа SQL Server, чтобы установить для таких пользователей соединение с SQL Server.
В случаях, когда пользователю необходим доступ к экземпляру SQL Server, администратор должен предоставить этому пользователю корректную информацию для проверки подлинности. Эта информация зависит от выбранного режима проверки подлинности. В данном разделе объясняется, как создавать имена входа для пользователей операционной системы, которые будут поддерживать режим проверки подлинности Windows, и имена входа SQL для поддержки режима проверки подлинности SQL.
Можно разрешить пользователям операционной системы устанавливать соединение с сервером SQL Server посредством создания имени входа для пользователя или группы Windows. По умолчанию, доступ к SQL Server предоставлен только членам локальной группы администраторов Windows и учетной записи службы, которая запускает службы SQL.
Доступ к экземпляру SQL Server можно предоставить, создав имя входа либо путем непосредственного ввода команд SQL, либо через интерфейс SQL Server Management Studio.
Следующий код предоставляет доступ к экземпляру SQL Server пользователю домена Windows ADWORKS\jlucas:
CREATE LOGIN [ADVWORKS\jlucas] FROM WINDOWS;
В процессе установки SQL Server 2005 создаются имена входа Windows, перечисленные в табл. 2.1.
| Имя входа Windows | Описание |
|---|---|
BUILTIN\Administrators |
Имя входа для локальной группы администраторов на компьютерах с установленным экземпляром SQL Server. Для запуска SQL Server это имя входа не обязательно. |
<Servername>\SQLServer2005 MSFTEUser$<Servername>
$MSSQLSERVER |
Имя входа для группы пользователей Windows SQLServer2005 MSFTEUser$ <Servername>$MSSQLSERVER. Члены этой группы имеют необходимые привилегии, которые назначаются им как учетной записи входа в систему ассоциированного экземпляра компонента SQL Server FullText Search.
Эта учетная запись необходима для запуска компонента SQL Server 2005 |
<Servername>\SQLServer 2005MSSQLUser$<Servername>
$MSSQLSERVER |
Имя входа для группы пользователей Windows SQLServer2005 MSSQLUser$ <Servername>$MSSQLSERVER. Члены этой группы имеют необходимые привилегии, которые назначаются им как учетной записи входа в систему ассоциированного экземпляра компонента SQL Server. Эта учетная запись необходима для запуска SQL Server 2005, поскольку является служебной учетной записью для SQL Server в тех случаях, когда экземпляр сконфигурирован на использование локальной служебной учетной записи как своей служебной учетной записи. |
<Servername>\SQLServer2005 SQLAgentUser$<Servername>
$MSSQLSERVER |
Имя входа для группы пользователей SQLServer2005SQLAgentUser$<
Servername>$MSSQLSERVER.
Члены этой группы имеют необходимые привилегии, которые назначаются им как учетной записи входа в
систему ассоциированного экземпляра компонента SQL Server Agent.
Эта учетная запись необходима для запуска компонента SQL Server 2005 Agent. |
При подключении к SQL Server 2005 с использованием имени входа Windows, SQL Server полагается на проверку подлинности операционной системы и проверяет только, имеет ли пользователь Windows соответствующее имя входа, определенное в этом экземпляре сервера SQL Server, или принадлежит ли это имя входа группе Windows с соответствующим именем входа в этот экземпляр SQL Server. Соединение, использующее имя входа Windows, называется доверительным соединением.
sp_validatelogins.Следующая программа на Microsoft Visual Basic (она имеется в файлах примеров под именем ConnectUsing WindowsAuth.vb.txt ) показывает, как установить соединение с SQL Server с использованием проверки подлинности Windows:
"Создаем экземпляр объекта SQLConnection
Dim oConn as New SQLClient.SQLConnection
"Определяем строку соединения
oConn.ConnectionString="server=localhost; database=AdventureWorks;" + _
"Integrated Security=SSPI"
"Открываем соединение
oConn.Open()
"Выполняем необходимые действия
...
"Закрываем соединение
oConn.Close()
В режиме проверки подлинности Windows и SQL Server также можно создавать имена входа SQL Server и управлять ими. При создании имени входа SQL Server необходимо задать для этого имени входа пароль. Пользователи должны указывать пароль при соединении с экземпляром SQL Server. При создании имени входа SQL Server можно задать для него имя базы данных и язык по умолчанию. В том случае, если приложение устанавливает соединение с SQL Server, не указывая контекст и язык базы данных, SQL Server использует свойства этого имени входа для этого соединения по умолчанию.
Доступ к экземпляру SQL Server можно предоставить, создав имя входа SQL Server либо путем непосредственного ввода команд SQL, либо через интерфейс SQL Server Management Studio. В следующем примере мы создаем имя входа SQL Server "Mary" и назначаем для пользователя Mary базу данных Adventure Works в качестве базы данных по умолчанию.
CREATE LOGIN Mary WITH PASSWORD = '34TY$$543', DEFAULT_DATABASE =AdventureWorks;
В процессе установки SQL Server 2005 создается одно имя входа SQL Server - sa. Имя входа sa создается в любом случае, даже если вы выбрали в процессе установки режим проверки подлинности Windows.
При помощи следующего кода можно получить информацию об именах входа SQL Server из представления каталога sql_logins:
SELECT * FROM sys.sql_logins;
При использовании имен входа SQL Server необходимо реализовать сильные политики паролей для этих имен входа во избежание ослабления системы безопасности SQL Server с течением времени. SQL Server 2005 предоставляет возможность принудительного применения парольной политики операционной системы к именам входа SQL Server. Если SQL Server выполняется в среде Windows 2003 Server, то SQL Server использует API (интерфейс для прикладного программирования) NetValidatePasswordPolicy для управления следующими параметрами:
Если сервер SQL Server выполняется в среде Windows 2000 Server, то он использует правило SQL Server Native Password Complexity rule, которое было введено программой Microsoft Baseline Security Analyzer для принудительного применения следующих правил:
NULL"Password", "Admin" или "Administrator".Парольную политику можно включить при помощи следующего кода Transact SQL:
CREATE LOGIN Mary
WITH PASSWORD = '34TY$$543'
MUSTCHANGE,
CHECK EXPIRATION = ON,
CHECK POLICY = ON;
Теперь вы знаете, как предоставить доступ пользователю к экземпляру SQL Server, но до сих пор ничего не было сказано о том, какие разрешения могут иметь эти имена входа в SQL Server. Как правило, пользователю необходим доступ к каким-либо данным. Однако возможно вам придется создать некоторые имена входа с разрешениями на выполнение задач администрирования.
Для выполнения этой задачи SQL Server предоставляет серверные роли на уровне экземпляра. (Серверные роли являются фиксированными, нельзя создать новые роли на уровне экземпляра). В табл. 2.2 перечислены фиксированные серверные роли, созданные SQL Server 2005.
| Фиксированная серверная роль | Описание |
|---|---|
bulkadmin |
Может выполнять предложение BULK INSERT |
dbcreator |
Может создавать, изменять, удалять и восстанавливать базы данных |
diskadmin |
Может управлять файлами на диске |
processadmin |
Может завершать процессы |
securityadmin |
Может управлять именами входа и назначать разрешения |
serveradmin |
Может изменять параметры сервера и завершать работу сервера |
setupadmin |
Может управлять связанными серверами и выполнять системные хранимые процедуры |
|
Может выполнять на сервере любые действия |
Выполнив запрос системной функции IS_SRVROLEMEMBER можно узнать, принадлежит текущий пользователь к одной из серверных ролей. Следующий пример кода Transact SQL возвращает значение 1, если текущее имя входа принадлежит к серверной роли
SELECT IS_SRVROLEMEMBER ('sysadmin');
Добавляем имя входа к серверной роли.Добавить имя входа к существующей серверной роли можно при помощи системной хранимой процедуры sp_addsrvrolemember. Следующий пример добавляет Mary к серверной роли :
EXECUTE sp_addsrvrolemember "Mary", "sysadmin";
Удаляем имя входа из серверной роли.Чтобы удалить имя входа из серверной роли, можно использовать хранимую процедуру sp_dropsrvrolemember. Следующий пример удаляет пользователя Mary из серверной роли
EXECUTE sp_dropsrvrolemember "Mary", "sysadmin";
Предоставляем индивидуальные разрешения.SQL Server 2005 предоставляет более гранулярную структуру разрешений, что позволяет с большей точностью контролировать операции входа. Разрешениями можно манипулировать при помощи операторов GRANT, DENY и REVOKE. Информация о серверных разрешениях доступна из представления каталога sys.server_permissions.
В следующем примере пользователю Mary предоставляются права на создание и выполнение трассировок в SQL Server Profiler:
GRANT ALTER TRACE TO Mary;
Пользователи могут получить информацию о своих разрешениях с помощью функции fn_my_permissions. Следующий пример отображает разрешения пользователя:
SELECT * FROM fn_my_permissions (NULL, 'SERVER');
В некоторых ситуациях, например, когда пользователь увольняется из организации, необходимо запретить доступ определенному имени входа. Если этот запрет временный, можно не удалять имя входа из экземпляра, а просто отключить его. При отключении доступа свойства имени входа и его сопоставление пользователям базы данных сохраняются. Повторно включив это имя входа, вы можете работать с прежними свойствами. Чтобы отключить и включить имя входа, выполните следующую инструкцию ALTER:
ALTER LOGIN Mary DISABLE;
ALTER LOGIN Mary ENABLE;
Можно проверить, отключены ли имена входа, выполнив запрос к представлению каталога sql_logins, как показано в следующем примере:
ALTER LOGIN Mary DISABLE; GO
SELECT * FROM sys.sql_logins WHERE is_disabled=1; GO
ALTER LOGIN Mary ENABLE;
DROP LOGIN. Следующий пример удаляет имя входа.DROP LOGIN Mary;
Следующая программа на Microsoft Visual Basic (она имеется в файлах примеров под именем ConnectUsingSQL Auth.vb.txt ) показывает, как установить соединение с SQL Server с использованием проверки подлинности SQL Server:
"Создаем экземпляр объекта SQLConnection
Dim oConn as New SQLClient.SQLConnection
"Определяем строку соединения
"с заданными именем входа и паролем
oConn.ConnectionString="server=localhost; database=AdventureWorks; " + _
"user id= Mary; password=34TY$$543"
"Открываем соединение
oConn.Open()
"Выполняем необходимые действия
...
"Закрываем соединение
oConn.Close()
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.