Продажи: 1-800-867-1389

Безопасность в базе данных SQL Azure: рекомендации и ограничения

Обновлено: Июль 2015 г.

В настоящем разделе описаны рекомендации и приведены ограничения, связанные с безопасностью в MicrosoftБаза данных SQL Microsoft Azure. При обеспечении безопасности баз данных База данных SQL Azure необходимо рассматривать следующие вопросы:

Доступ к службе База данных SQL Microsoft Azure предоставляется только через TCP-порт 1433. Чтобы получить доступ к База данных SQL Azure с данного компьютера, убедитесь, что брандмауэр разрешает исходящие соединения через TCP-порт 1433.

Чтобы впервые подключиться к серверу База данных SQL Azure, необходимо воспользоваться порталом управления платформой Azure для настройки брандмауэра База данных SQL Azure. При этом необходимо создать параметр брандмауэра уровня сервера, который разрешает осуществлять попытки подключения с конкретного компьютера или из Azure к серверу База данных SQL Azure. Далее, если требуется управлять доступом к определенным базам данных, размещенным на сервере База данных SQL Azure, создайте правила брандмауэра уровня базы данных для соответствующих баз данных. Дополнительные сведения см. в Брандмауэр базы данных SQL Azure.

Весь обмен данными между База данных SQL Microsoft Azure и конкретным приложением требует постоянного шифрования (SSL). Если в клиентском приложении не проводится проверка сертификатов после создания соединения, то соединение с База данных SQL Microsoft Azure становится восприимчивым к атакам "злоумышленник в середине". 

Для обеспечения проверки сертификатов с помощью прикладного кода или специальных инструментов явно запрашивайте зашифрованное соединение и не доверяйте сертификатам сервера. Если прикладной код или специальные инструменты не запрашивают зашифрованное соединение, то все равно получают зашифрованные соединения. Но эти программные средства могут не проверять сертификаты сервера, поэтому становятся восприимчивыми к атакам путем перехвата сообщений.

Для обеспечения проверки сертификатов с помощью прикладного кода ADO.NET задайте параметры Encrypt=True и TrustServerCertificate=False в строке подключения к базе данных. Дополнительные сведения см. в Инструкции Подключиться к базе данных SQL Azure с использованием ADO.NET.

Среда SQL Server Management Studio также поддерживает проверку сертификатов. В диалоговом окне Подключение к серверу нажмите кнопку Шифровать соединение на вкладке Свойства

noteПримечание
Среда SQL Server Management Studio не поддерживает База данных SQL Microsoft Azure в версиях, предшествующих SQL Server 2008 R2.

Программа SQLCMD поддерживала База данных SQL Microsoft Azure, начиная с версии SQL Server 2008, но не обеспечивала проверку сертификатов в версиях, предшествующих SQL Server 2008 R2. Для проверки сертификатов с применением SQLCMD, начиная с версии SQL Server 2008 R2, используйте параметр командной строки -N и не задавайте параметр -C. С помощью параметра -N программа SQLCMD запрашивает зашифрованное соединение. Если параметр -C не задан, SQLCMD не будет по умолчанию доверять сертификату сервера и будет вынуждена проверить этот сертификат.

Дополнительные технические сведения см. в статье Безопасность соединений с базой данных SQL Azure на веб-сайте TechNet Wiki.

База данных SQL Microsoft Azure поддерживает только проверку подлинности SQL Server. Проверка подлинности Windows (с помощью встроенных средств защиты) не поддерживается. Пользователь должен предоставлять учетные данные (имя входа и пароль) при каждом подключении к База данных SQL Microsoft Azure. Дополнительные сведения о проверке подлинности SQL Server см. в разделе Выбор режима проверки подлинности в электронной документации по SQL Server.

Для предотвращения снижения производительности повторная проверка подлинности в соединении не проводится после переустановки пароля База данных SQL Microsoft Azure, даже если это соединение переустанавливается в результате выполнения операций с пулом соединений. В этом состоит отличие от поведения локального экземпляра SQL Server. Если пароль был изменен, попытка выполнения запроса окончится неудачей и произойдет разрыв (завершение) соединения. Чтобы выполнить проверку подлинности с помощью нового пароля, прервите сеанс с помощью команды KILL и установите подключение повторно. Дополнительные сведения см. в разделе KILL (Transact-SQL).

База данных SQL вер. 12 (Предварительная версия в некоторых регионах) позволяет пользователям проходить проверку подлинности в базе данных в качестве пользователей автономной базы данных. Дополнительные сведения см. в разделах CREATE USER (Transact-SQL) и Автономные базы данных.

При управлении учетными записями и пользователями в База данных SQL Microsoft Azure необходимо соблюдать определенные ограничения.

  • По отношению к имени входа субъекта серверного уровня применяются следующие ограничения.

    • Пользователь базы данных master, соответствующий имени входа субъекта серверного уровня, не может быть изменен или уничтожен.

    • Хотя пользователь с именем входа субъекта серверного уровня не является членом ролей базы данных dbmanager и loginmanager в базе данных master, он обладает всеми разрешениями, предоставляемыми этим ролям.

noteПримечание
Это имя входа создается во время провизионирования сервера и аналогично имени входа sa в экземпляре SQL Server.

На все имена входа распространяются следующие ограничения.

  • Языком по умолчанию является американский диалект английского языка, US-English.

  • Для доступа к базе данных master необходимо отобразить каждое имя входа на учетную запись пользователя в базе данных master.

  • Если в строке подключения не указана база данных, то по умолчанию происходит подключение к базе данных master.

  • Необходимо соединение с базой данных master для выполнения инструкций CREATE/ALTER/DROP LOGIN и CREATE/ALTER/DROP DATABASE.

  • При выполнении инструкций CREATE/ALTER/DROP LOGIN и CREATE/ALTER/DROP DATABASE в приложении ADO.NET использование параметризованных команд не разрешено. Дополнительные сведения см. в разделе Команды и параметры (ADO.NET).

  • При выполнении инструкций CREATE/ALTER/DROP DATABASE и CREATE/ALTER/DROP LOGIN каждая из этих инструкций должна быть единственной инструкцией в пакете Transact-SQL. В противном случае возникает ошибка. Например, в следующем пакете Transact-SQL производится проверка того, существует ли база данных. Если она существует, то вызывается инструкция DROP DATABASE для удаления базы данных. Поскольку инструкция DROP DATABASE не является единственной инструкцией в пакете, выполнение этого пакета Transact-SQL приводит к ошибке.

IF EXISTS (SELECT [name]
           FROM   [sys].[databases]
           WHERE  [name] = N'database_name')
     DROP DATABASE [database_name];
go
  • Если применяется инструкция CREATE USER с параметром FOR/FROM LOGIN, то она должна быть единственной инструкцией в пакете Transact-SQL.

  • Если применяется инструкция ALTER USER с параметром WITH LOGIN, то она должна быть единственной инструкцией в пакете Transact-SQL.

  • Только имя входа субъекта серверного уровня и члены роли базы данных dbmanager в базе данных master имеют разрешение выполнять инструкции CREATE DATABASE и DROP DATABASE.

  • Только имя входа субъекта серверного уровня и члены роли базы данных loginmanager в базе данных master имеют разрешение на выполнение инструкций CREATE LOGIN, ALTER LOGIN и DROP LOGIN.

  • Если владелец роли базы данных пытается добавить (или удалить) другого пользователя базы данных в роль (из роли) базы данных, может произойти следующая ошибка: User or role 'Name' does not exist in this database. Эта ошибка возникает, поскольку данный пользователь не является видимым для владельца. Чтобы устранить эту проблему, предоставьте владельцу роли разрешение VIEW DEFINITION по отношению к данному пользователю.

Чтобы сделать приложения базы данных База данных SQL Azure менее уязвимыми к угрозам безопасности, необходимо учесть следующие требования.

  • Всегда используйте последние обновления. При соединении с базой данных База данных SQL Azure всегда используйте самую последнюю версию средств и библиотек для предотвращения возникновения уязвимостей в системе безопасности. Дополнительные сведения о поддерживаемых средствах и библиотеках см. в разделе Общие рекомендации и ограничения в базе данных SQL Azure.

  • Блокировать входящие соединения через порт 1433 протокола TCP: Для обеспечения взаимодействия приложений с База данных SQL Microsoft Azure требуются лишь входящие соединения через порт 1433 протокола TCP. Если входящие соединения не требуются ни для одного прочего приложения на компьютере, убедитесь в том, что брандмауэр продолжает блокировать входящие соединения через порт 1433 протокола TCP.

  • Предотвращение возникновения уязвимостей по принципу внедрения кода: Для обеспечения того, чтобы приложения не имели уязвимостей, обусловленных внедрением кода SQL, по возможности следует использовать параметризованные запросы. Кроме того, следует обязательно подвергать код тщательной проверке и выполнять тестирование на возможность проникновения перед развертыванием приложения.

См. также

Была ли вам полезна эта информация?
(1500 символов осталось)
Спасибо за ваш отзыв
Показ:
© 2015 Microsoft