Безопасность является важным аспектом управления базой данных SQL Server. Вашей ответственностью в качестве администратора базы данных (DBA) является обеспечение безопасности инфраструктуры SQL Server и защита данных от возможных нарушений или потерь. В этой статье мы рассмотрим некоторые важные концепции и советы по управлению безопасностью в SQL Server.
Аутентификация Windows против смешанного режима
Часто рекомендуется использовать только аутентификацию Windows для SQL Server, так как она обеспечивает более безопасный способ аутентификации пользователей. Однако могут возникнуть ситуации, когда необходимо использовать смешанный режим аутентификации. Смешанный режим позволяет использовать как аутентификацию Windows, так и аутентификацию SQL Server, где учетная запись и пароль, аутентифицируемые SQL Server, принудительно применяются тем же API и протоколом, которые применяются для применения политик входа в Windows.
При использовании аутентификации SQL Server важно применять строгие политики паролей. SQL Server поддерживает сложность истории паролей, что позволяет применять более безопасные политики паролей. Установкой минимальной длины пароля, правильными комбинациями символов и регулярным изменением паролей можно предотвратить нарушения безопасности серверов баз данных.
Мониторинг политик входа
После создания аутентифицированного входа SQL Server и его сопоставления с пользователем базы данных необходимо отслеживать вход и его политики. Начиная с SQL Server 2008, вы можете использовать функцию LOGINPROPERTY и системное представление sys.sql_logins для получения информации о настройках политики входа.
Например, вы можете использовать следующий скрипт для быстрой проверки состояния входа:
SELECT name, CASE Is_disabled WHEN 0 THEN 'Нет' WHEN 1 THEN 'Да' ELSE 'Неизвестно' END as IsLoginDisabled, CASE LOGINPROPERTY(name, 'IsLocked') WHEN 0 THEN 'Нет' WHEN 1 THEN 'Да' ELSE 'Неизвестно' END as IsAccountLocked, CASE LOGINPROPERTY(name, 'IsExpired') WHEN 0 THEN 'Нет' WHEN 1 THEN 'Да' ELSE 'Неизвестно' END as IsPasswordExpired, CASE LOGINPROPERTY(name, 'IsMustChange') WHEN 0 THEN 'Нет' WHEN 1 THEN 'Да' ELSE 'Неизвестно' END as MustChangePasswordOnNextLogin, LOGINPROPERTY(name, 'PasswordLastSetTime') as PasswordLastSetDate, LOGINPROPERTY(name, 'BadPasswordCount') as CountOfFailedLoginAttempts, LOGINPROPERTY(name, 'BadPasswordTime') as LastFailedLoginTime, LOGINPROPERTY(name, 'LockoutTime') as LoginLockedOutDateTime, LOGINPROPERTY(name, 'DaysUntilExpiration') as 'NoDaysUntilthePasswordExpires' FROM sys.sql_logins ORDER BY name
Этот скрипт предоставляет информацию о том, отключен ли вход, заблокирован ли он, истек ли срок действия пароля или требуется изменение пароля при следующем входе. Он также дает сведения о последнем сбросе пароля, неудачных попытках входа, времени блокировки и количестве дней до истечения срока действия пароля. Эту информацию можно использовать для настройки оповещений и уведомлений, например, предупреждения пользователей о скором истечении срока действия их пароля.
Заключение
Управление безопасностью в SQL Server является важной задачей для DBA. Следуя bew practices, таким как использование аутентификации Windows, применение строгих политик паролей и мониторинг политик входа, вы можете повысить безопасность вашей инфраструктуры SQL Server и защитить ваши данные от потенциальных угроз.
Помните, что безопасность – это широкая тема, и есть много других аспектов, которые следует учитывать. Эта статья предоставляет отправную точку для понимания и управления безопасностью в SQL Server. Будьте бдительны и обеспечивайте безопасность вашей среды SQL Server!
Подписывайтесь на нас в Twitter @YourTwitterHandle для получения больше советов и понимания SQL Server.