Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Продукт или служба | Статья |
---|---|
Концентратор событий Azure | |
Dynamics CRM | |
Фабрика данных Azure | |
Сервер удостоверений | |
Веб-приложение |
|
База данных | |
Служба хранилища Azure | |
Мобильный клиент | |
WCF | |
Веб-API | |
Кэш Azure для Redis | |
Полевой шлюз Интернета вещей | |
Облачный шлюз Интернета вещей |
Безопасное взаимодействие с Концентратором событий с помощью SSL/TLS
Название | Сведения |
---|---|
Компонент | Центр событий Azure |
Этап SDL | Строить |
Применимые технологии | Общий |
Атрибуты | Не применимо |
Ссылки | Обзор проверки подлинности и модели безопасности в Центрах событий |
Шаги | Защита подключений AMQP или HTTP к Концентратору событий с помощью SSL/TLS |
Проверьте привилегии учетной записи службы и убедитесь, что пользовательские службы или ASP.NET Pages соблюдают безопасность системы CRM.
Название | Сведения |
---|---|
Компонент | Dynamics CRM |
Этап SDL | Строить |
Применимые технологии | Общий |
Атрибуты | Не применимо |
Ссылки | Не применимо |
Шаги | Проверьте привилегии учетной записи службы и убедитесь, что пользовательские службы или ASP.NET Pages соблюдают безопасность системы CRM. |
Использование шлюза управления данными при подключении локального SQL Server к фабрике данных Azure
Название | Сведения |
---|---|
Компонент | Фабрика данных Azure |
Этап SDL | Развертывание |
Применимые технологии | Общий |
Атрибуты | Типы связанных служб — Azure и локальная среда |
Ссылки | Перемещение данных между локальной средой и фабрикой данных Azure |
Шаги | Средство шлюза управления данными (DMG) требуется для подключения к источникам данных, защищенным за корпоративной сетью или брандмауэром.
|
Убедитесь, что весь трафик на сервер удостоверений осуществляется исключительно через HTTPS-соединение.
Название | Сведения |
---|---|
Компонент | Сервер удостоверений |
Этап SDL | Развертывание |
Применимые технологии | Общий |
Атрибуты | Не применимо |
Ссылки | Не применимо |
Шаги | По умолчанию IdentityServer требует, чтобы все входящие подключения поступили по протоколу HTTPS. Взаимодействие с IdentityServer строго обязательно выполняется только через защищенные каналы связи. Существуют определенные сценарии развертывания, такие как разгрузка TLS, где это требование может быть расслаблено. Дополнительные сведения см. на странице развертывания сервера удостоверений в разделе ссылок. |
Проверка сертификатов X.509, используемых для проверки подлинности подключений SSL, TLS и DTLS
Название | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Строить |
Применимые технологии | Общий |
Атрибуты | Не применимо |
Ссылки | Не применимо |
Шаги | Приложения, использующие ПРОТОКОЛ SSL, TLS или DTLS, должны полностью проверить сертификаты X.509 сущностей, к которым они подключаются. Это включает проверку сертификатов для следующих компонентов:
|
Настройка TLS/SSL-сертификата для личного домена в службе приложений Azure
Название | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Строить |
Применимые технологии | Общий |
Атрибуты | EnvironmentType — Azure |
Ссылки | Включение HTTPS для приложения в Службе приложений Azure |
Шаги | По умолчанию Azure уже включает HTTPS для каждого приложения с подстановочным сертификатом для домена *.azurewebsites.net. Однако, как и все подстановочные домены, это не так безопасно, как использование личного домена с собственным сертификатом См. Рекомендуется включить TLS для личного домена, к которому будет обращаться развернутое приложение. |
Принудительное перенаправление всего трафика в Службу приложений Azure через протокол HTTPS
Название | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Строить |
Применимые технологии | Общий |
Атрибуты | EnvironmentType — Azure |
Ссылки | Принудительное применение HTTPS в службе приложений Azure |
Шаги | Хотя Azure уже включает HTTPS для служб приложений Azure с подстановочным сертификатом для домена *.azurewebsites.net, он не применяет протокол HTTPS. Посетители по-прежнему могут получить доступ к приложению с помощью HTTP, что может скомпрометировать безопасность приложения, поэтому ПРОТОКОЛ HTTPS должен быть применен явным образом. ASP.NET приложения MVC должны использовать фильтр RequireHttps , который заставляет незащищенный HTTP-запрос повторно отправляться по протоколу HTTPS. Кроме того, модуль перезаписи URL-адресов, который входит в службу приложений Azure, можно использовать для принудительного применения HTTPS. Модуль переопределения URL-адресов позволяет разработчикам определять правила, применяемые к входящим запросам, прежде чем запросы передаются приложению. Правила переопределения URL-адресов определяются в файле web.config, хранящейся в корневом каталоге приложения. |
Пример
В следующем примере содержится базовое правило переопределения URL-адресов, которое заставляет весь входящий трафик использовать ПРОТОКОЛ HTTPS.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Force HTTPS" enabled="true">
<match url="(.*)" ignoreCase="false" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Это правило работает, возвращая код состояния HTTP 301 (постоянное перенаправление), когда пользователь запрашивает страницу с помощью HTTP. 301 перенаправляет запрос на тот же URL-адрес, запрашиваемый посетителем, но заменяет часть HTTP запроса на HTTPS. Например, HTTP://contoso.com
будет перенаправлено в HTTPS://contoso.com
.
Включение строгой транспортной безопасности HTTP (HSTS)
Название | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Строить |
Применимые технологии | Общий |
Атрибуты | Не применимо |
Ссылки | Шпаргалка OWASP по политике строгой транспортной безопасности HTTP |
Шаги | HTTP Strict Transport Security (HSTS) — это добровольное улучшение безопасности, которое указывается веб-приложением с помощью специального заголовка ответа. Когда поддерживаемый браузер получает этот заголовок, браузер не позволит отправлять какие-либо сообщения по протоколу HTTP в указанный домен и будет отправлять все сообщения по протоколу HTTPS. Кроме того, он предотвращает появление запросов на переход по HTTPS в браузерах. Для реализации HSTS необходимо настроить следующий заголовок ответа для веб-сайта глобально либо в коде, либо в конфигурации. Strict-Transport-Security: max-age=300; includeSubDomains HSTS устраняет следующие угрозы:
|
Проверка шифрования подключений SQL Server и проверки сертификатов
Название | Сведения |
---|---|
Компонент | База данных |
Этап SDL | Строить |
Применимые технологии | SQL Azure |
Атрибуты | Версия SQL: 12 |
Ссылки | Рекомендации по написанию строк безопасного подключения для базы данных SQL |
Шаги | Все коммуникации между базой данных SQL и клиентским приложением шифруются с помощью TLS, ранее известного как протокол SSL. База данных SQL не поддерживает незашифрованные подключения. Чтобы проверить сертификаты с помощью кода приложения или средств, явно запрашивайте зашифрованное подключение и не доверяйте сертификатам сервера. Если код вашего приложения или инструменты не запрашивают зашифрованное подключение, они всё равно получат зашифрованные подключения. Однако они могут не проверять сертификаты сервера и, следовательно, подвержены атакам типа "человек посередине". Чтобы проверить сертификаты с помощью кода приложения ADO.NET, задайте |
Принудительное шифрование связи с SQL Server
Название | Сведения |
---|---|
Компонент | База данных |
Этап SDL | Строить |
Применимые технологии | Локальные |
Атрибуты | Версия SQL — MsSQL2016, версия SQL — MsSQL2012, версия SQL — MsSQL2014 |
Ссылки | Включение зашифрованных подключений к ядру СУБД |
Шаги | Шифрование TLS позволяет повысить безопасность данных, передаваемых между экземплярами SQL Server и приложениями, расположенными в разных сетях. |
Убедитесь, что подключение к службе хранилища Azure выполняется по протоколу HTTPS
Название | Сведения |
---|---|
Компонент | Служба хранилища Azure |
Этап SDL | Развертывание |
Применимые технологии | Общий |
Атрибуты | Не применимо |
Ссылки | Шифрование Transport-Level службы хранилища Azure — использование HTTPS |
Шаги | Чтобы обеспечить безопасность передаваемых данных службы хранилища Azure, всегда используйте протокол HTTPS при вызове REST API или доступе к объектам в хранилище. Кроме того, подписанные URL-адреса, которые можно использовать для делегирования доступа к объектам службы хранилища Azure, включают возможность указать, что при использовании подписанных URL-адресов можно использовать только протокол HTTPS, гарантируя, что любой пользователь, отправляющий ссылки с маркерами SAS, будет использовать правильный протокол. |
Проверка хэша MD5 после скачивания объекта, если не удается включить HTTPS.
Название | Сведения |
---|---|
Компонент | Служба хранилища Azure |
Этап SDL | Строить |
Применимые технологии | Общий |
Атрибуты | Тип хранилища — Blob |
Ссылки | Обзор Windows Azure BLOB MD5 |
Шаги | Служба BLOB-объектов Windows Azure предоставляет механизмы обеспечения целостности данных как в приложениях, так и на транспортных уровнях. Если по какой-либо причине необходимо использовать HTTP вместо HTTPS и вы работаете с блочных BLOB-объектов, можно использовать проверку MD5 для проверки целостности передаваемых BLOB-объектов. Это поможет защитить от ошибок сетевого или транспортного слоя, но не обязательно с промежуточными атаками. Если вы можете использовать протокол HTTPS, обеспечивающий безопасность на уровне транспорта, то использование проверки MD5 будет излишней и ненужной. |
Используйте клиентское приложение, совместимое с SMB 3.x, чтобы обеспечить шифрование данных, передаваемых в общие папки Azure.
Название | Сведения |
---|---|
Компонент | Мобильный клиент |
Этап SDL | Строить |
Применимые технологии | Общий |
Атрибуты | StorageType: файл |
Ссылки | Файлы Azure, поддержка SMB файлов Azure для клиентов Windows |
Шаги | Файлы Azure поддерживают ПРОТОКОЛ HTTPS при использовании REST API, но чаще используются в качестве общей папки SMB, подключенной к виртуальной машине. SMB 2.1 не поддерживает шифрование, поэтому подключения разрешены только в одном регионе в Azure. Однако SMB 3.x поддерживает шифрование и может использоваться с Windows Server 2012 R2, Windows 8, Windows 8.1 и Windows 10, разрешая доступ между регионами и даже доступ на рабочем столе. |
Внедрение пиннинга сертификатов
Название | Сведения |
---|---|
Компонент | Служба хранилища Azure |
Этап SDL | Строить |
Применимые технологии | Обычный, Windows Phone |
Атрибуты | Не применимо |
Ссылки | Закрепление сертификата и открытого ключа |
Шаги | Закрепление сертификатов защищает от атакThe-Middle (MITM). Закрепление — это процесс связывания хоста с ожидаемым сертификатом Х509 или открытым ключом. После того как сертификат или открытый ключ известен или виден для узла, сертификат или открытый ключ связан или закреплен на узле. Таким образом, когда злоумышленник пытается выполнить атаку TLS MITM, во время установления соединения TLS ключ с сервера злоумышленника будет отличаться от ключа закрепленного сертификата, и запрос будет отклонен, что предотвратит атаку типа MITM. Закрепление сертификатов может быть реализовано с помощью делегата ServicePointManager |
Пример
using System;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography;
namespace CertificatePinningExample
{
class CertificatePinningExample
{
/* Note: In this example, we're hardcoding the certificate's public key and algorithm for
demonstration purposes. In a real-world application, this should be stored in a secure
configuration area that can be updated as needed. */
private static readonly string PINNED_ALGORITHM = "RSA";
private static readonly string PINNED_PUBLIC_KEY = "3082010A0282010100B0E75B7CBE56D31658EF79B3A1" +
"294D506A88DFCDD603F6EF15E7F5BCBDF32291EC50B2B82BA158E905FE6A83EE044A48258B07FAC3D6356AF09B2" +
"3EDAB15D00507B70DB08DB9A20C7D1201417B3071A346D663A241061C151B6EC5B5B4ECCCDCDBEA24F051962809" +
"FEC499BF2D093C06E3BDA7D0BB83CDC1C2C6660B8ECB2EA30A685ADE2DC83C88314010FFC7F4F0F895EDDBE5C02" +
"ABF78E50B708E0A0EB984A9AA536BCE61A0C31DB95425C6FEE5A564B158EE7C4F0693C439AE010EF83CA8155750" +
"09B17537C29F86071E5DD8CA50EBD8A409494F479B07574D83EDCE6F68A8F7D40447471D05BC3F5EAD7862FA748" +
"EA3C92A60A128344B1CEF7A0B0D94E50203010001";
public static void Main(string[] args)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://azure.microsoft.com");
request.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) =>
{
if (certificate == null || sslPolicyErrors != SslPolicyErrors.None)
{
// Error getting certificate or the certificate failed basic validation
return false;
}
var targetKeyAlgorithm = new Oid(certificate.GetKeyAlgorithm()).FriendlyName;
var targetPublicKey = certificate.GetPublicKeyString();
if (targetKeyAlgorithm == PINNED_ALGORITHM &&
targetPublicKey == PINNED_PUBLIC_KEY)
{
// Success, the certificate matches the pinned value.
return true;
}
// Reject, either the key or the algorithm does not match the expected value.
return false;
};
try
{
var response = (HttpWebResponse)request.GetResponse();
Console.WriteLine($"Success, HTTP status code: {response.StatusCode}");
}
catch(Exception ex)
{
Console.WriteLine($"Failure, {ex.Message}");
}
Console.WriteLine("Press any key to end.");
Console.ReadKey();
}
}
}
Включение HTTPS — безопасный транспортный канал
Название | Сведения |
---|---|
Компонент | WCF (Windows Communication Foundation) |
Этап SDL | Строить |
Применимые технологии | NET Framework 3 |
Атрибуты | Не применимо |
Ссылки | MSDN, Фортифицировать Королевство |
Шаги | Конфигурация приложения должна гарантировать, что HTTPS используется для всех доступа к конфиденциальной информации.
С практической точки зрения, люди, ответственные за защиту сети, не всегда отслеживают требования безопасности приложения по мере их развития. |
WCF: задайте уровень защиты безопасности сообщений для EncryptAndSign
Название | Сведения |
---|---|
Компонент | WCF (Windows Communication Foundation) |
Этап SDL | Строить |
Применимые технологии | .NET Framework 3 |
Атрибуты | Не применимо |
Ссылки | MSDN |
Шаги |
Рассмотрите возможность отключения шифрования и подписывания сообщения, если необходимо проверить целостность информации без проблем конфиденциальности. Это может быть полезно для операций или контрактов служб, в которых необходимо проверить исходного отправителя, но конфиденциальные данные не передаются. При снижении уровня защиты будьте внимательны, чтобы сообщение не содержало персональных данных. |
Пример
Настройка службы и операции только для подписывания сообщения показана в следующих примерах. Пример контракта службы: ниже приведен пример ProtectionLevel.Sign
использования ProtectionLevel.Sign на уровне контракта службы:
[ServiceContract(Protection Level=ProtectionLevel.Sign]
public interface IService
{
string GetData(int value);
}
Пример
Пример ProtectionLevel.Sign
операционного контракта (для детализированного управления): ниже приведен пример использования ProtectionLevel.Sign
на уровне "OperationContract":
[OperationContract(ProtectionLevel=ProtectionLevel.Sign]
string GetData(int value);
WCF: использование учетной записи с минимальными привилегиями для запуска службы WCF
Название | Сведения |
---|---|
Компонент | WCF (Windows Communication Foundation) |
Этап SDL | Строить |
Применимые технологии | .NET Framework 3 |
Атрибуты | Не применимо |
Ссылки | MSDN |
Шаги |
Если вашей службе нужно получить доступ к определённым ресурсам от имени оригинального вызывающего, используйте олицетворение и делегирование для передачи удостоверения вызывающего для последующей авторизационной проверки. В сценарии разработки используйте учетную запись локальной сетевой службы, которая является специальной встроенной учетной записью с ограниченными привилегиями. В рабочем сценарии создайте учетную запись службы личного домена с минимальными привилегиями. |
Обеспечить передачу всего трафика к веб-API через соединение HTTPS.
Название | Сведения |
---|---|
Компонент | Веб-API |
Этап SDL | Строить |
Применимые технологии | MVC 5, MVC 6 |
Атрибуты | Не применимо |
Ссылки | Применение SSL в контроллере веб-API |
Шаги | Если приложение имеет как HTTPS, так и привязку HTTP, клиенты по-прежнему могут использовать HTTP для доступа к сайту. Чтобы предотвратить это, используйте фильтр действий, чтобы убедиться, что запросы к защищенным API всегда находятся по протоколу HTTPS. |
Пример
В следующем коде показан фильтр аутентификации Web API, который проверяет наличие TLS.
public class RequireHttpsAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
{
ReasonPhrase = "HTTPS Required"
};
}
else
{
base.OnAuthorization(actionContext);
}
}
}
Добавьте этот фильтр в любые действия веб-API, требующие TLS:
public class ValuesController : ApiController
{
[RequireHttps]
public HttpResponseMessage Get() { ... }
}
Убедитесь, что обмен данными с кэшем Azure для Redis выполняется через TLS
Название | Сведения |
---|---|
Компонент | Кэш Azure для Redis |
Этап SDL | Строить |
Применимые технологии | Общий |
Атрибуты | Не применимо |
Ссылки | Поддержка TLS Redis в Azure |
Шаги | Сервер Redis не поддерживает TLS по умолчанию, но в кэше Azure для Redis это поддерживается. Если вы подключаетесь к кэшу Azure для Redis, а клиент поддерживает TLS, например StackExchange.Redis, то следует использовать TLS. По умолчанию порт, отличный от TLS, отключен для новых экземпляров кэша Azure для Redis. Убедитесь, что безопасные значения по умолчанию не изменяются, если только не существует зависимости от поддержки TLS для клиентов redis. |
Обратите внимание, что Redis предназначен для доступа к доверенным клиентам в доверенных средах. Это означает, что обычно не рекомендуется предоставлять экземпляр Redis непосредственно в Интернете или в среде, где ненадежные клиенты могут напрямую обращаться к TCP-порту Redis или сокету UNIX.
Безопасное взаимодействие устройства с полевым шлюзом
Название | Сведения |
---|---|
Компонент | Полевой шлюз Интернета вещей |
Этап SDL | Строить |
Применимые технологии | Общий |
Атрибуты | Не применимо |
Ссылки | Не применимо |
Шаги | Для IP-устройств протокол связи обычно может быть инкапсулирован в канале SSL/TLS для защиты передаваемых данных. Для других протоколов, которые не поддерживают SSL/TLS, исследуйте, существуют ли безопасные версии протокола, обеспечивающие безопасность на уровне транспорта или сообщений. |
Безопасное подключение устройства к облачному шлюзу с помощью SSL/TLS
Название | Сведения |
---|---|
Компонент | Облачный шлюз Интернета вещей |
Этап SDL | Строить |
Применимые технологии | Общий |
Атрибуты | Не применимо |
Ссылки | Выбор протокола связи |
Шаги | Защита протоколов HTTP/AMQP или MQTT с помощью SSL/TLS. |