Обзор возможностей безопасности Базы данных SQL AzureAn overview of Azure SQL Database security capabilities

В этой статье описано, как защитить уровень данных приложения, использующего базу данных SQL Azure.This article outlines the basics of securing the data tier of an application using Azure SQL Database. Эта стратегия безопасности использует многоуровневый подход (эшелонированная защита), который представлен на следующем рисунке (уровни рассматриваются, начиная с наружного):The security strategy described follows the layered defense-in-depth approach as shown in the picture below, and moves from the outside in:

sql-security-layer.png

Безопасность сетиNetwork security

База данных SQL Microsoft Azure предоставляет службу реляционной базы данных для облачных и корпоративных приложений.Microsoft Azure SQL Database provides a relational database service for cloud and enterprise applications. Чтобы защитить клиентские данные, брандмауэр запрещает сетевой доступ к серверу базы данных, кроме разрешенного явным образом по IP-адресу или виртуальной сети Azure источника трафика.To help protect customer data, firewalls prevent network access to the database server until access is explicitly granted based on IP address or Azure Virtual network traffic origin.

Правила брандмауэра для IP-адресовIP firewall rules

Правила брандмауэра для IP-адресов предоставляют доступ к базам данным на основе исходного IP-адреса каждого запроса.IP firewall rules grant access to databases based on the originating IP address of each request. См. дополнительные сведения о правилах брандмауэра служб "База данных SQL Azure" и "Хранилище данных SQL".For more information, see Overview of Azure SQL Database and SQL Data Warehouse firewall rules.

Правила брандмауэра для виртуальной сетиVirtual network firewall rules

Конечные точки служб для виртуальной сети подключают вашу виртуальную сеть к магистральной сети Azure, позволяя Базе данных SQL Azure идентифицировать подсеть виртуальной сети, из которой к ней направляется трафик.Virtual network service endpoints extend your virtual network connectivity over the Azure backbone and enable Azure SQL Database to identify the virtual network subnet that traffic originates from. Чтобы трафик поступал в базу данных SQL Azure, используйте теги служб SQL, которые разрешают исходящий трафик через механизм групп безопасности сети.To allow traffic to reach Azure SQL Database, use the SQL service tags to allow outbound traffic through Network Security Groups.

Правила виртуальной сети позволяют Базе данных SQL Azure принимать только те подключения, которые отправлены из определенных подсетей в виртуальной сети.Virtual network rules enable Azure SQL Database to only accept communications that are sent from selected subnets inside a virtual network.

Примечание

Управление доступом с помощью правил брандмауэра не применяется к управляемому экземпляру.Controlling access with firewall rules does not apply to a managed instance. Дополнительные сведения о необходимой конфигурации сети см. в руководстве по подключению приложения к управляемому экземпляру.For more information about the networking configuration needed, see connecting to a managed instance

Управление доступомAccess management

Важно!

Управление базами данных и серверами баз данных в Azure осуществляется путем назначения ролей учетной записи пользователя портала.Managing databases and database servers within Azure is controlled by your portal user account's role assignments. Дополнительные сведения об этом см. в разделе Управление доступом на основе ролей на портале Azure.For more information on this article, see Role-based access control in Azure portal.

Проверка подлинностиAuthentication

Аутентификацией называют процесс подтверждения личности пользователя.Authentication is the process of proving the user is who they claim to be. База данных SQL Azure поддерживает два типа аутентификации:Azure SQL Database supports two types of authentication:

  • Аутентификация SQL.SQL authentication:

    Аутентификация базы данных SQL выполняется на основе имени пользователя и пароля при подключении пользователя к Базе данных SQL Azure.SQL database authentication refers to the authentication of a user when connecting to Azure SQL Database using username and password. При создании сервера базы данных для базы данных следует создать учетную запись администратора сервера, указав имя пользователя и пароль.During the database server creation for the database, a "Server admin" login with a username and password must be specified. Используя эти учетные данные, администратор сервера сможет выполнить аутентификацию в любой базе данных на этом сервере и получить права ее владельца.Using these credentials, a “server admin” can authenticate to any database on that database server as the database owner. После этого администратор сервера сможет создать дополнительные имена входа и пользователей SQL, чтобы позволить пользователям подключаться с выделенными для них именами пользователей и паролями.After that, additional SQL logins and users can be created by the server admin, which enable users to connect using username and password.

  • Аутентификация Azure Active Directory.Azure Active Directory authentication:

    Аутентификация Azure Active Directory — это механизм подключения к службам База данных SQL Azure и Хранилище данных SQL с помощью удостоверений в Azure Active Directory (Azure AD).Azure Active Directory authentication is a mechanism of connecting to Azure SQL Database and SQL Data Warehouse by using identities in Azure Active Directory (Azure AD). С помощью аутентификации Azure Active Directory администраторы могут централизованно управлять удостоверениями и разрешениями для пользователей базы данных совместно с другими службами корпорации Майкрософт.Azure AD authentication allows administrators to centrally manage the identities and permissions of database users along with other Microsoft services in one central location. Это снижает количество хранимых паролей, а также позволяет применять централизованные политики их смены.This includes the minimization of password storage and enables centralized password rotation policies.

    Чтобы применить для Базы данных SQL аутентификацию Azure AD, необходимо создать администратора сервера, который в этом контексте называется администратором Active Directory.A server admin called the Active Directory administrator must be created to use Azure AD authentication with SQL Database. См. дополнительные сведения об использовании аутентификации Azure Active Directory для аутентификации с помощью SQL.For more information, see Connecting to SQL Database By Using Azure Active Directory Authentication. Аутентификация Azure AD поддерживает как управляемые, так и федеративные учетные записи.Azure AD authentication supports both managed and federated accounts. Федеративные учетные записи применимы для пользователей и групп Windows в пользовательских доменах, для которых настроена федерация с Azure AD.The federated accounts support Windows users and groups for a customer domain federated with Azure AD.

    Кроме того, для аутентификации Azure Active Directory доступны универсальная аутентификация Active Directory для SQL Server Management Studio, которая поддерживает многофакторную проверку подлинности, и условный доступ.Additional Azure AD authentication options available are Active Directory Universal Authentication for SQL Server Management Studio connections including Multi-Factor Authentication and Conditional Access.

Важно!

Управление базами данных и серверами в Azure осуществляется путем назначения ролей учетной записи пользователя портала.Managing databases and servers within Azure is controlled by your portal user account's role assignments. Дополнительные сведения об этом см. в разделе Управление доступом на основе ролей на портале Azure.For more information on this article, see Role-based access control in Azure portal. Управление доступом с помощью правил брандмауэра не применяется к управляемому экземпляру.Controlling access with firewall rules does not apply to a managed instance. Дополнительные сведения о необходимой конфигурации сети см. в следующей статье, посвященной подключению к управляемому экземпляру.Please see the following article on connecting to a managed instance for more information about the networking configuration needed.

АвторизацияAuthorization

Авторизация — это по сути набор разрешений, которые назначены пользователю в базе данных SQL Azure и которые определяют, какие действия доступны этому пользователю.Authorization refers to the permissions assigned to a user within an Azure SQL Database, and determines what the user is allowed to do. Управление разрешениями осуществляется путем добавления учетных записей пользователей в роли базы данных и назначения им разрешений уровня базы данных для этих ролей или предоставления пользователю определенных разрешений на уровне объектов.Permissions are controlled by adding user accounts to database roles and assigning database-level permissions to those roles or by granting the user certain object-level permissions. См. дополнительные сведения об операциях входа и пользователях.For more information, see Logins and users

Рекомендуется создавать пользовательские роли при необходимости.As a best practice, create custom roles when needed. Добавьте пользователей к роли с минимальными привилегиями, необходимыми для работы их функций.Add users to the role with the least privileges required to do their job function. Не назначайте разрешения пользователям напрямую.Do not assign permissions directly to users. Учетная запись администратора сервера является членом встроенной роли db_owner, которая обладает широкими разрешениями и должна предоставляться только некоторым пользователям с административными обязанностями.The server admin account is a member of the built-in db_owner role, which has extensive permissions and should only be granted to few users with administrative duties. Для приложений базы данных SQL Azure используйте инструкцию EXECUTE AS , чтобы указать контекст выполнения вызванного модуля или использовать роли приложения с ограниченными разрешениями.For Azure SQL Database applications, use the EXECUTE AS to specify the execution context of the called module or use Application Roles with limited permissions. Такой подход гарантирует, что приложение, которое подключается к базе данных, имеет минимальные привилегии, необходимые для приложения.This practice ensures that the application that connects to the database has the least privileges needed by the application. Следующие рекомендации также способствуют разделению обязанностей.Following these best practices also fosters separation of duties.

Безопасность на уровне строкRow-level security

Безопасность на уровне строк позволяет клиентам контролировать доступ к строкам в таблице базы данных в зависимости от характеристик пользователя, выполняющего запрос (например, от членства в группах или контекста выполнения).Row-Level Security enables customers to control access to rows in a database table based on the characteristics of the user executing a query (for example, group membership or execution context). Безопасность на уровне строк также может использоваться для реализации пользовательских концепций безопасности на основе меток.Row-Level Security can also be used to implement custom Label-based security concepts. Дополнительные сведения см. в статье Безопасность на уровне строк.For more information, see Row-Level security.

azure-database-rls.png

Защита от угрозThreat protection

База данных SQL обеспечивает защиту клиентских данных, предоставляя возможности аудита и обнаружения угроз.SQL Database secures customer data by providing auditing and threat detection capabilities.

Аудит SQL в журналах Azure Monitor и концентраторах событийSQL auditing in Azure Monitor logs and Event Hubs

Аудит Базы данных SQL отслеживает действия в базе данных и помогает поддерживать соответствие стандартам безопасности, сохраняя события базы данных в журнал аудита, сохраненный в учетной записи хранения Azure.SQL Database auditing tracks database activities and helps to maintain compliance with security standards by recording database events to an audit log in a customer-owned Azure storage account. Благодаря аудиту пользователи могут в реальном времени отслеживать действия в базе данных, а также анализировать и изучать действия за прошедшие периоды, чтобы выявить потенциальные угрозы, возможные нарушения и риски безопасности.Auditing allows users to monitor ongoing database activities, as well as analyze and investigate historical activity to identify potential threats or suspected abuse and security violations. См. дополнительные сведения об аудите Базы данных SQL.For more information, see Get started with SQL Database Auditing.

Advanced Threat ProtectionAdvanced Threat Protection

Расширенная защита от угроз анализирует журналы SQL Server, чтобы обнаружить необычное поведение и потенциально опасные попытки доступа к базам данных или их использования.Advanced Threat Protection is analyzing your SQL Server logs to detect unusual behavior and potentially harmful attempts to access or exploit databases. Оповещения создаются для подозрительных действий, таких как атака путем внедрения кода SQL, потенциальных несанкционированного доступа данных, атак методом подбора или аномалий в шаблонах доступа для перехвата укрупнений привилегий и использования учетных данных.Alerts are created for suspicious activities such as SQL injection, potential data infiltration, and brute force attacks or for anomalies in access patterns to catch privilege escalations and breached credentials use. Оповещения просматриваются из центра безопасности Azure, где указаны сведения о подозрительных действиях, а также рекомендации по устранению угроз для дальнейшего изучения.Alerts are viewed from the Azure Security Center, where the details of the suspicious activities are provided and recommendations for further investigation given along with actions to mitigate the threat. Расширенную защиту от угроз можно включить для каждого сервера за дополнительную плату.Advanced Threat Protection can be enabled per server for an additional fee. Дополнительные сведения см. в статье Приступая к работе с расширенной защитой угроз базы данных SQL.For more information, see Get started with SQL Database Advanced Threat Protection.

azure-database-td.jpg

Защита и шифрование информацииInformation protection and encryption

Протокол TLS (шифрование при передаче)Transport Layer Security TLS (Encryption-in-transit)

База данных SQL защищает данные клиентов, шифруя передаваемые данные по протоколу TLS.SQL Database secures customer data by encrypting data in motion with Transport Layer Security.

SQL Server в любое время обеспечивает шифрование (SSL/TLS) для всех подключений.Sql Server enforces encryption (SSL/TLS) at all times for all connections. Это гарантирует, что все данные шифруются "при передаче" между клиентом и сервером независимо от значения параметра Encrypt или TrustServerCertificate в строке подключения.This ensures all data is encrypted "in transit" between the client and server irrespective of the setting of Encrypt or TrustServerCertificate in the connection string.

Рекомендуется, чтобы в строке подключения вашего приложения вы указали зашифрованное соединение и не доверяете сертификату сервера.As a best practice, recommend that in your application's connection string you specify an encrypted connection and not trust the server certificate. Это заставляет приложение проверять сертификат сервера и, таким образом, предотвращает возможность уязвимости приложения для атак типа "злоумышленник в середине".This forces your application to verify the server certificate and thus prevents your application from being vulnerable to man in the middle type attacks.

Например, при использовании драйвера ADO.NET это выполняется с помощью функции Encrypt = true и TrustServerCertificate = false.For example when using the ADO.NET driver this is accomplished via Encrypt=True and TrustServerCertificate=False. Строка подключения, полученная с портала Azure, будет содержать правильные параметры.If you obtain your connection string from the Azure portal, it will have the correct settings.

Важно!

Обратите внимание, что некоторые драйверы сторонних производителей могут не использовать TLS по умолчанию или полагаться на более старую версию TLS (< 1.2) для работы.Note that some non-Microsoft drivers may not use TLS by default or rely on an older version of TLS (<1.2) in order to function. В этом случае SQL Server по-прежнему позволяет подключаться к базе данных.In this case SQL Server still allows you to connect to your database. Однако рекомендуется оценить риски безопасности, позволяющие таким драйверам и приложениям подключаться к базе данных SQL, особенно если вы храните конфиденциальные данные.However, we recommend that you evaluate the security risks of allowing such drivers and application to connect to SQL Database, especially if you store sensitive data.

Дополнительные сведения о TLS и подключении см. в статье рекомендации по TLS .For further information about TLS and connectivity, see TLS considerations

Прозрачное шифрование данных (шифрование при хранении)Transparent Data Encryption (Encryption-at-rest)

Прозрачное шифрование данных (TDE) для Базы данных SQL Azure добавляет дополнительный уровень безопасности, помогая защищать неактивные данные от несанкционированного или автономного доступа к необработанным файлам или резервным копиям данных.Transparent Data Encryption (TDE) for Azure SQL Database adds a layer of security to help protect data at rest from unauthorized or offline access to raw files or backups. Это актуально для таких сценариев, как кража оборудования из центра обработки данных или небезопасная утилизация оборудования или носителей, например дисковых накопителей и лент с резервными копиями.Common scenarios include datacenter theft or unsecured disposal of hardware or media such as disk drives and backup tapes. TDE шифрует всю базу данных с помощью алгоритма шифрования AES, который не требует от разработчиков приложений вносить изменения в существующие приложения. TDE encrypts the entire database using an AES encryption algorithm, which doesn’t require application developers to make any changes to existing applications.

Все создаваемые в Azure базы данных SQL по умолчанию шифруются, а ключ шифрования базы данных защищается встроенным сертификатом сервера.In Azure, all newly created SQL databases are encrypted by default and the database encryption key is protected by a built-in server certificate. Обслуживание и смена сертификатов автоматически выполняются службой, не требуя действий пользователя.Certificate maintenance and rotation are managed by the service and requires no input from the user. Если клиент предпочитает самостоятельно контролировать ключи шифрования, он может управлять ими через Azure Key Vault.Customers who prefer to take control of the encryption keys can manage the keys in Azure Key Vault.

Управление ключами с помощью Azure Key VaultKey management with Azure Key Vault

Поддержка технологии BYOK (создание собственных ключей) для  прозрачного шифрования данных (TDE) позволяет пользователям самостоятельно управлять созданием и сменой ключей с помощью облачной системы Azure для управления внешними ключами  Azure Key Vault.Bring Your Own Key (BYOK) support for Transparent Data Encryption (TDE) allows customers to take ownership of key management and rotation using Azure Key Vault, Azure’s cloud-based external key management system. В случае отзыва доступа базы данных к хранилищу ключей расшифровка и считывание такой базы данных станет невозможным.If the database's access to the key vault is revoked, a database cannot be decrypted and read into memory. Azure Key Vault предоставляет централизованную платформу для управления ключами, которая использует тщательно отслеживаемые аппаратные модули безопасности (HSM) и позволяет разделять обязанности по управлению ключами и данными, обеспечивая соответствие требованиям безопасности.Azure Key Vault provides a central key management platform, leverages tightly monitored hardware security modules (HSMs), and enables separation of duties between management of keys and data to help meet security compliance requirements.

Always Encrypted (шифрование при использовании)Always Encrypted (Encryption-in-use)

azure-database-ae.png

Функция Always Encrypted разработана для защиты от доступа к конфиденциальным данным, которые хранятся в определенных столбцах базы данных (например, номера кредитных карт или персональные коды, а также данные, доступ к которым предоставляется строго ограниченному кругу лиц).Always Encrypted is a feature designed to protect sensitive data stored in specific database columns from access (for example, credit card numbers, national identification numbers, or data on a need to know basis). Например, администраторы баз данных или другие привилегированные пользователи имеют доступ к базе данных для выполнения задач управления, но с точки зрения бизнеса им не нужен доступ к конкретным данным в зашифрованных столбцах.This includes database administrators or other privileged users who are authorized to access the database to perform management tasks, but have no business need to access the particular data in the encrypted columns. Данные всегда зашифрованы и расшифровываются только для обработки в клиентских приложениях, которые имеют доступ к ключу шифрования.The data is always encrypted, which means the encrypted data is decrypted only for processing by client applications with access to the encryption key. Ключ шифрования никогда не предоставляется в формате SQL. Его можно хранить в Windows Certificate Store или в Azure Key Vault.The encryption key is never exposed to SQL and can be stored either in the Windows Certificate Store or in Azure Key Vault.

Динамическое маскирование данныхDynamic data masking

azure-database-ddm.png

Динамическое маскирование данных базы данных SQL Azure ограничивает возможность раскрытия конфиденциальных данных, маскируя их для обычных пользователей.SQL Database dynamic data masking limits sensitive data exposure by masking it to non-privileged users. Служба динамического маскирования данных автоматически обнаруживает потенциально конфиденциальные данные в базе данных SQL Azure и предоставляет практические рекомендации по маскированию этих полей с минимальным влиянием на прикладной уровень.Dynamic data masking automatically discovers potentially sensitive data in Azure SQL Database and provides actionable recommendations to mask these fields, with minimal impact on the application layer. Эта функция работает по принципу обсфукации, скрывая конфиденциальные данные в результирующем наборе запроса по заданным полям базы данных, не меняя сами данные в базе данных.It works by obfuscating the sensitive data in the result set of a query over designated database fields, while the data in the database is not changed. Дополнительную информацию см. в статье Начало работы с динамическим маскированием данных в базе данных SQL (портал Azure).For more information, see Get started with SQL Database dynamic data masking.

Управление безопасностьюSecurity management

Оценка уязвимостейVulnerability assessment

Оценка уязвимостей — это легко настраиваемая служба, которая помогает обнаруживать, отслеживать и устранять потенциальные уязвимости, что позволяет предварительно повышать общую защиту базы данных.Vulnerability assessment is an easy to configure service that can discover, track, and help remediate potential database vulnerabilities with the goal to proactively improve overall database security. Оценка уязвимостей входит в состав предложения расширенной защиты данных (ADS), которое представляет собой унифицированный пакет расширенных средств обеспечения безопасности SQL.Vulnerability assessment (VA) is part of the advanced data security (ADS) offering, which is a unified package for advanced SQL security capabilities. Доступ к службе оценки уязвимостей и управление ею можно выполнять через центральный портал SQL ADS.Vulnerability assessment can be accessed and managed via the central SQL ADS portal.

Обнаружение и классификация данныхData discovery & classification

Служба обнаружения и классификации данных (в настоящее время находится на этапе предварительной версии) предоставляет расширенные возможности, встроенные в службу "База данных SQL Azure", для обнаружения, классификации, добавления меток и защиты конфиденциальных данных в базах данных.Data discovery & classification (currently in preview) provides advanced capabilities built into Azure SQL Database for discovering, classifying, labeling, and protecting the sensitive data in your databases. Обнаружение и классификация конфиденциальных данных (деловых или финансовых, медицинских, персональных данных и т. д.) может играть ключевую роль в концепции защиты информации вашей организации.Discovering and classifying your utmost sensitive data (business/financial, healthcare, personal data, etc.) can play a pivotal role in your organizational Information protection stature. На основе этих процессов может формироваться инфраструктура для решения следующих задач:It can serve as infrastructure for:

  • Различные сценарии безопасности, такие как мониторинг (аудит) и оповещение об аномальном доступе к конфиденциальным данным.Various security scenarios, such as monitoring (auditing) and alerting on anomalous access to sensitive data.
  • Управление доступом к базам данных, содержащим конфиденциальные данные, и усиление их защиты.Controlling access to, and hardening the security of, databases containing highly sensitive data.
  • Соблюдение стандартов конфиденциальности данных и нормативных требований.Helping meet data privacy standards and regulatory compliance requirements.

Дополнительные сведения см. в статье Обнаружение и классификация данных в службе "База данных SQL Azure".For more information, see Get started with data discovery & classification.

Соответствие требованиямCompliance

В дополнение к приведенным выше функциям и возможностям, которые помогают выполнять требования к безопасности приложений, в отношении Базы данных SQL Azure регулярно проводится аудит, а сама база данных сертифицирована в соответствии с рядом стандартов.In addition to the above features and functionality that can help your application meet various security requirements, Azure SQL Database also participates in regular audits, and has been certified against a number of compliance standards. Дополнительные сведения см. в центре управления безопасностью Microsoft Azure , где можно найти самый актуальный список сертификатов соответствия базы данных SQL.For more information, see the Microsoft Azure Trust Center where you can find the most current list of SQL Database compliance certifications.

Дальнейшие действияNext steps