Механизм безопасности. Проверка подлинности | Устранение рисков
Рассмотрите возможность использования стандартного механизма проверки подлинности в веб-приложениях
Заголовок | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Н/П |
Сведения | Проверка подлинности — это процесс, во время которого сущность подтверждает свою подлинность с помощью учетных данных, таких как имя пользователя и пароль. Существует несколько протоколов проверки подлинности, которые могут быть рассмотрены. включая следующие:
Рассмотрите возможность использования стандартного механизма проверки подлинности для идентификации исходного процесса. |
Приложения должны надежно обрабатывать сценарии неудачной проверки подлинности
Заголовок | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Н/П |
Сведения | Приложения, которые явно проходят проверку подлинности пользователей, должны безопасно обрабатывать сценарии проверки подлинности сбоем. Механизм проверки подлинности должен:
Проверьте, обеспечивает ли механизм проверки подлинности следующее:
|
Включите проверку подлинности повышенного уровня или адаптивную проверку подлинности
Заголовок | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Н/П |
Сведения | Убедитесь, что приложение имеет дополнительную авторизацию (например, шаг вверх или адаптивную проверку подлинности, через многофакторную проверку подлинности, например отправку OTP в SMS, электронную почту и т. д. или запрос на повторную проверку подлинности), чтобы пользователь был оспорен перед предоставлением доступа к конфиденциальной информации. Это правило также применяется для внесения критически важных изменений в учетную запись или в действие. Это означает, что адаптация проверки подлинности должна быть реализована таким образом, чтобы приложение правильно применяло контекстно-зависимую авторизацию и не допускало несанкционированные манипуляции, например путем изменения параметров. |
Интерфейсы администрирования должны быть заблокированы соответствующим образом
Заголовок | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Н/П |
Сведения | Для начала предоставьте доступ к интерфейсу администрирования только для исходного диапазона IP-адресов. Если это решение не возможно, то всегда рекомендуется применять поэтапное или адаптивное аутентификацию для входа в административный интерфейс. |
Реализуйте безопасный механизм восстановления пароля
Заголовок | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Н/П |
Сведения | Прежде всего убедитесь, что в случае потери паролей и для восстановления по другим причинам отправляется ссылка, содержащая маркер активации с ограниченным временем действия, а не сам пароль. Также перед отправкой ссылки может потребоваться дополнительная проверка подлинности на основе программных маркеров (SMS-маркер, собственное мобильное приложение и т. д.). Во-вторых, вы не должны блокировать учетную запись пользователей, пока выполняется процесс получения нового пароля. Это может привести к атаке типа "отказ в обслуживании" всякий раз, когда злоумышленник решит намеренно блокировать пользователей с помощью автоматизированных атак. В-третьих, сообщение, которое отображается во время выполнения запроса нового пароля, должно быть обобщенным во избежание перечисления имен пользователей. В-четвертых, всегда запрещайте использовать старые пароли и реализуйте политику надежных паролей. |
Настройте применение политик учетных записей и паролей
Заголовок | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Н/П |
Сведения | Политика паролей и учетных записей должна быть реализована в соответствии с политикой организации и рекомендациями. Для защиты от атак методом прямого подбора и подбора на основе словаря необходимо реализовать политику надежных паролей, чтобы пользователи создавали сложные пароли (например, длиной не менее 12 символов, а также содержащие алфавитно-цифровые или специальные символы). Политики блокировки учетных записей могут быть реализованы следующим образом:
Для защиты от атак на прогнозируемые учетные записи и учетные записи по умолчанию все ключи и пароли должны быть заменяемыми, а также быть созданы или заменены с момента их создания. Если приложение автоматически создает пароли, они должны создаваться случайным образом и иметь высокий уровень энтропии. |
Реализуйте элементы управления для предотвращения перечисления имен пользователей
Заголовок | Сведения |
---|---|
Компонент | Веб-приложение |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Н/П |
Шаги | Во избежание перечисления имен пользователей все сообщения об ошибках должны быть обобщенными. Кроме того, иногда не удается избежать утечки информации в функциональных возможностях, таких как страница регистрации. В таких случаях, чтобы предотвратить автоматизированные атаки, необходимо использовать методы ограничения скорости обращений к странице, например CAPTCHA. |
По возможности используйте проверку подлинности Windows для подключения к SQL Server
Заголовок | Сведения |
---|---|
Компонент | База данных |
Этап SDL | Сборка |
Применимые технологии | Локально |
Атрибуты | Версия SQL: все |
Ссылки | Выбор режима проверки подлинности |
Шаги | Режим проверки подлинности Windows использует протокол безопасности Kerberos, реализует политику паролей в отношении проверки сложности надежных паролей, поддерживает блокировку учетных записей и истечение срока пароля. |
По возможности используйте проверку подлинности Microsoft Entra для подключения к База данных SQL
Заголовок | Сведения |
---|---|
Компонент | База данных |
Этап SDL | Сборка |
Применимые технологии | SQL Azure |
Атрибуты | Версия SQL: 12 |
Ссылки | Подключение к База данных SQL с помощью проверки подлинности Microsoft Entra |
Шаги | Минимальная версия: База данных SQL Azure версии 12, необходимой для разрешения База данных SQL Azure использовать проверку подлинности Microsoft Entra в Microsoft Directory |
Если используется режим проверки подлинности SQL, обеспечьте применение политики учетных записей и паролей на сервере SQL Server
Заголовок | Сведения |
---|---|
Компонент | База данных |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Политика паролей |
Шаги | При использовании проверки подлинности SQL Server имена входа создаются в SQL Server, которые не основаны на учетных записях пользователей Windows. Имя пользователя и пароль создаются и хранятся в SQL Server. SQL Server может использовать механизмы политики паролей Windows. К паролям, используемым в SQL Server, можно применить те же политики ограничения срока действия и сложности, которые применяются в Windows. |
Не используйте проверку подлинности SQL в автономных базах данных
Заголовок | Сведения |
---|---|
Компонент | База данных |
Этап SDL | Сборка |
Применимые технологии | Локальная среда SQL Azure |
Атрибуты | Версия SQL: MSSQL2012, версия SQL: 12 |
Ссылки | Рекомендации по защите автономных баз данных |
Шаги | Отсутствие принудительной политики паролей может повысить вероятность установления слабых учетных данных в автономной базе данных. Используйте проверку подлинности Windows. |
Используйте учетные данные проверки подлинности на уровне отдельного устройства с помощью маркеров SaS
Заголовок | Сведения |
---|---|
Компонент | Центры событий Azure |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Общие сведения о проверке подлинности в Центрах событий Azure и модели безопасности |
Шаги | В основе модели безопасности Центров событий лежит сочетание издателей событий и маркеров подписанных URL-адресов (SAS). Имя издателя представляет идентификатор устройства, которое получает маркер. Это поможет связать маркеры, созданные с помощью соответствующих устройств. Все сообщения помечаются отправителем на стороне службы, что дает возможность обнаруживать попытки подделки происхождения в полезных данных. При проверке подлинности устройств создавайте маркер SaS для каждого устройства с использованием уникального издателя. |
Включение многофакторной проверки подлинности Microsoft Entra для администраторов Azure
Заголовок | Сведения |
---|---|
Компонент | Граница доверия Azure |
Этап SDL | Развертывание |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Что такое многофакторная проверка подлинности Microsoft Entra? |
Шаги | Многофакторная проверка подлинности (MFA) — это метод проверки подлинности, который требует более одного метода проверки и добавляет критически важный второй уровень безопасности для входа пользователей и транзакций. Во время работы он требует использования двух и более методов проверки следующего характера:
|
Запретите анонимный доступ к кластеру Service Fabric
Заголовок | Сведения |
---|---|
Компонент | Граница доверия Service Fabric |
Этап SDL | Развертывание |
Применимые технологии | Универсальный |
Атрибуты | Среда: Azure |
Ссылки | Сценарии защиты кластера Service Fabric |
Шаги | Кластеры всегда должны быть защищены для предотвращения подключения к ним неавторизованных пользователей, особенно в тех случаях, когда на кластере выполняются рабочие нагрузки в рабочей среде. При создании кластера Service Fabric убедитесь, что для режима безопасности задано значение "seсure", и настройте требуемый сертификат сервера X.509. Создание незащищенного кластера позволит любому анонимному пользователю подключаться к нему, если конечные точки управления кластером общедоступны через Интернет. |
Сертификат Service Fabric для обмена данными между клиентом и узлом должен отличаться от простого сертификата для обмена данными между узлами
Заголовок | Сведения |
---|---|
Компонент | Граница доверия Service Fabric |
Этап SDL | Развертывание |
Применимые технологии | Универсальный |
Атрибуты | Среда: Azure, автономная |
Ссылки | Сценарии защиты кластера Service Fabric, Безопасное подключение к кластеру |
Шаги | Безопасность обмена данными между клиентами и узлами на основе сертификатов настраивается при создании кластера (на портале Azure, с помощью шаблонов Resource Manager или автономного шаблона JSON). Для этого указывается сертификат клиента администрирования и (или) пользовательский сертификат клиента. Эти сертификаты должны отличаться от основного и дополнительного сертификатов, указанных для защиты обмена данными между узлами. |
Использование идентификатора Microsoft Entra для проверки подлинности клиентов в кластерах Service Fabric
Заголовок | Сведения |
---|---|
Компонент | Граница доверия Service Fabric |
Этап SDL | Развертывание |
Применимые технологии | Универсальный |
Атрибуты | Среда: Azure |
Ссылки | Рекомендации по обеспечению безопасности |
Шаги | Кластеры, работающие в Azure, также могут защитить доступ к конечным точкам управления с помощью идентификатора Microsoft Entra, кроме сертификатов клиента. Для кластеров Azure рекомендуется использовать безопасность Microsoft Entra для проверки подлинности клиентов и сертификатов для безопасности узлов и узлов. |
Нужно использовать сертификаты Service Fabric, полученные из утвержденного Центра сертификации
Заголовок | Сведения |
---|---|
Компонент | Граница доверия Service Fabric |
Этап SDL | Развертывание |
Применимые технологии | Универсальный |
Атрибуты | Среда: Azure |
Ссылки | Сертификаты X.509 и Service Fabric |
Шаги | Для проверки подлинности узлов и клиентов Service Fabric использует сертификаты сервера X.509. При использовании сертификатов в Service Fabric следует учитывать некоторые важные моменты:
|
Используйте стандартные сценарии проверки подлинности, поддерживаемые сервером удостоверений
Заголовок | Сведения |
---|---|
Компонент | Сервер удостоверений |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | IdentityServer3. Общая картина |
Шаги | Ниже приведены типичные взаимодействия, поддерживаемые сервером удостоверений.
|
Переопределите кэш маркеров сервера удостоверений по умолчанию масштабируемым альтернативным кэшем
Заголовок | Сведения |
---|---|
Компонент | Сервер удостоверений |
Этап SDL | Развертывание |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Развертывание сервера удостоверений. Кэширование |
Шаги | Сервер удостоверений имеет простой встроенный кэш, работающий в памяти. Хотя он хорошо подходит для небольших собственных приложений, он не масштабируется для приложений среднего уровня и приложений уровня сервера по следующим причинам.
|
Двоичные файлы развернутого приложения должны иметь цифровую подпись
Заголовок | Сведения |
---|---|
Компонент | Граница доверия между компьютерами |
Этап SDL | Развертывание |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Н/П |
Шаги | Убедитесь, что все двоичные файлы развернутого приложения имеют цифровую подпись, что дает возможность проверить их целостность. |
Включите проверку подлинности при подключении к очередям MSMQ в WCF
Заголовок | Сведения |
---|---|
Компонент | WCF |
Этап SDL | Сборка |
Применимые технологии | Универсальные, .NET Framework 3 |
Атрибуты | Н/П |
Ссылки | MSDN |
Шаги | Если при подключении к очередям MSMQ программе не удается включить проверку подлинности, злоумышленник может анонимно отправить сообщения в очередь для обработки. Если для подключения к очереди MSMQ, которая используется для доставки сообщения в другую программу, проверка подлинности отсутствует, злоумышленник может анонимно отправить вредоносное сообщение. |
Пример
Элемент <netMsmqBinding/>
расположенного ниже файла конфигурации WCF указывает WCF отключить проверку подлинности при подключении к очереди MSMQ для доставки сообщений.
<bindings>
<netMsmqBinding>
<binding>
<security>
<transport msmqAuthenticationMode=""None"" />
</security>
</binding>
</netMsmqBinding>
</bindings>
Настройте в MSMQ обязательную проверку подлинности сертификата или домена Windows для всех входящих или исходящих сообщений.
Пример
Элемент <netMsmqBinding/>
расположенного ниже файла конфигурации WCF указывает WCF включить проверку подлинности сертификата при подключении к очереди MSMQ. Клиент проходит проверку подлинности с использованием сертификатов X.509. Сертификат клиента должен присутствовать в хранилище сертификатов сервера.
<bindings>
<netMsmqBinding>
<binding>
<security>
<transport msmqAuthenticationMode=""Certificate"" />
</security>
</binding>
</netMsmqBinding>
</bindings>
WCF: не присваивайте атрибуту message clientCredentialType значение None
Заголовок | Сведения |
---|---|
Компонент | WCF |
Этап SDL | Сборка |
Применимые технологии | .NET Framework 3 |
Атрибуты | Тип учетных данных клиента: None |
Ссылки | MSDN, Fortify |
Шаги | Отсутствие проверки подлинности означает, что каждый может получить доступ к этой службе. Служба, которая не выполняет проверку подлинности своих клиентов, предоставляет доступ всем пользователям. Настройте в приложении проверку подлинности учетных данных клиента. Это можно сделать, задав для атрибута message clientCredentialType значение Windows или Certificate. |
Пример
<message clientCredentialType=""Certificate""/>
WCF: не присваивайте атрибуту transport clientCredentialType значение None
Заголовок | Сведения |
---|---|
Компонент | WCF |
Этап SDL | Сборка |
Применимые технологии | Универсальные, .NET Framework 3 |
Атрибуты | Тип учетных данных клиента: None |
Ссылки | MSDN, Fortify |
Шаги | Отсутствие проверки подлинности означает, что каждый может получить доступ к этой службе. Служба, которая не выполняет проверку подлинности своих клиентов, предоставляет доступ к своим функциям всем пользователям. Настройте в приложении проверку подлинности учетных данных клиента. Это можно сделать, задав для атрибута transport clientCredentialType значение Windows или Certificate. |
Пример
<transport clientCredentialType=""Certificate""/>
Для защиты веб-API нужно использовать стандартные методы проверки подлинности
Заголовок | Сведения |
---|---|
Компонент | Веб-интерфейс API |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Проверка подлинности и авторизация в веб-API ASP.NET, сведения о внешних службах проверки подлинности с веб-API ASP.NET (C#) |
Шаги | Проверка подлинности — это процесс, во время которого сущность подтверждает свою подлинность с помощью учетных данных, таких как имя пользователя и пароль. Существует несколько протоколов проверки подлинности, которые могут быть рассмотрены. включая следующие:
Ссылки в разделе справочных сведений предоставляют низкоуровневые сведения о том, как можно реализовать каждую схему проверки подлинности для защиты веб-API. |
Использование стандартных сценариев проверки подлинности, поддерживаемых идентификатором Microsoft Entra
Заголовок | Сведения |
---|---|
Компонент | Microsoft Entra ID |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Сценарии проверки подлинности для идентификатора Microsoft Entra, примеры кода Microsoft Entra, руководство разработчика Microsoft Entra |
Шаги | Идентификатор Microsoft Entra упрощает проверку подлинности для разработчиков, предоставляя удостоверение как услугу, с поддержкой стандартных отраслевых протоколов, таких как OAuth 2.0 и OpenID Connect. Ниже приведены пять сценариев основных приложений, поддерживаемых идентификатором Microsoft Entra:
Используйте ссылки в разделе справочных сведений, чтобы получить низкоуровневые сведения о реализации. |
Переопределите кэш маркеров MSAL по умолчанию с распределенным кэшем
Заголовок | Сведения |
---|---|
Компонент | Microsoft Entra ID |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Сериализация кэша маркеров в MSAL.NET |
Шаги | По умолчанию используется кэш MSAL (библиотека проверки подлинности Майкрософт) — это кэш в памяти и масштабируемый. Однако существуют различные варианты, которые можно использовать в качестве альтернативы, например кэш распределенных маркеров. Они имеют механизмы L1/L2, где L1 находится в памяти, а L2 — реализация распределенного кэша. Их можно настроить соответствующим образом, чтобы ограничить память L1, зашифровать или задать политики вытеснения. Другие варианты включают Redis, SQL Server или кэши Azure Cosmos DB. Реализация распределенного кэша маркеров можно найти в следующем руководстве. Начало работы с ASP.NET Core MVC. |
Убедитесь, что TokenReplayCache используется для предотвращения воспроизведения маркеров проверки подлинности MSAL
Заголовок | Сведения |
---|---|
Компонент | Microsoft Entra ID |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Современная проверка подлинности с помощью идентификатора Microsoft Entra для веб-приложений |
Шаги | Свойство TokenReplayCache позволяет разработчикам определять кэш воспроизведения маркеров, хранилище, которое можно использовать для сохранения маркеров, чтобы предотвратить использование повторяющихся маркеров. Эта мера защиты от распространенных атак с использованием воспроизведения маркеров. Злоумышленник, который перехватывает маркер, отправленный при входе в систему, может попытаться снова отправить его в приложение ("воспроизвести" его), чтобы создать новый сеанс. Например, в потоке предоставления кода OIDC после успешной проверки подлинности пользователя запрос к конечной точке "/signin-oidc" проверяющей стороны выполняется с параметрами "id_token", "code" и "state". Проверяющая сторона проверяет запрос и создает новый сеанс. Если злоумышленник перехватил и воспроизвел этот запрос, он может успешно создать сеанс, выдав себя за пользователя. Наличие специального утверждения в OpenID Connect может ограничить, но не полностью исключить подобные атаки. Чтобы защитить свои приложения, разработчики могут реализовать интерфейс ITokenReplayCache и присвоить экземпляр свойству TokenReplayCache. |
Пример
// ITokenReplayCache defined in MSAL
public interface ITokenReplayCache
{
bool TryAdd(string securityToken, DateTime expiresOn);
bool TryFind(string securityToken);
}
Пример
Ниже приведен пример реализации интерфейса ITokenReplayCache. (Выполните соответствующие настройки и реализуйте платформу кэширования конкретного проекта.)
public class TokenReplayCache : ITokenReplayCache
{
private readonly ICacheProvider cache; // Your project-specific cache provider
public TokenReplayCache(ICacheProvider cache)
{
this.cache = cache;
}
public bool TryAdd(string securityToken, DateTime expiresOn)
{
if (this.cache.Get<string>(securityToken) == null)
{
this.cache.Set(securityToken, securityToken);
return true;
}
return false;
}
public bool TryFind(string securityToken)
{
return this.cache.Get<string>(securityToken) != null;
}
}
Ссылку на реализованный кэш нужно добавить в параметрах OIDC с помощью свойства TokenValidationParameters следующим образом.
OpenIdConnectOptions openIdConnectOptions = new OpenIdConnectOptions
{
AutomaticAuthenticate = true,
... // other configuration properties follow..
TokenValidationParameters = new TokenValidationParameters
{
TokenReplayCache = new TokenReplayCache(/*Inject your cache provider*/);
}
}
Обратите внимание, что для проверки эффективности этой конфигурации войдите в локальное приложение с защитой OIDC и запишите запрос к "/signin-oidc"
конечной точке в fiddler. Если защита не включена, воспроизведение этого запроса в Fiddler приведет к созданию нового файла cookie сеанса. При воспроизведении запроса после добавления защиты с помощью свойства TokenReplayCache приложение выдаст исключение следующего типа: SecurityTokenReplayDetectedException: IDX10228: The securityToken has previously been validated, securityToken: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNBVGZNNXBPWWlKSE1iYTlnb0VLWSIsImtpZCI6Ik1uQ1......
Использование библиотек MSAL для управления запросами маркеров от клиентов OAuth2 к идентификатору Microsoft Entra (или локальному AD)
Заголовок | Сведения |
---|---|
Компонент | Microsoft Entra ID |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | MSAL |
Шаги | Библиотека проверки подлинности Майкрософт (MSAL) позволяет разработчикам получать маркеры безопасности из платформа удостоверений Майкрософт для проверки подлинности пользователей и доступа к защищенным веб-API. Она может использоваться для обеспечения безопасного доступа к Microsoft Graph, другим API-интерфейсам Майкрософт, веб-API сторонних производителей или к собственному веб-API. MSAL поддерживает множество различных архитектур приложений и платформ, в том числе .NET, JavaScript, Java, Python, Android и iOS. |
MSAL предоставляет множество способов получения маркеров с согласованным API для многих платформ. Нет необходимости напрямую использовать библиотеки OAuth или код для протокола в приложении и получать маркеры от имени пользователя или приложения (если применимо к платформе).
MSAL также поддерживает кэш маркеров и обновляет маркеры, когда они близки к истечению срока действия. MSAL также поможет указать аудиторию, в которую вы хотите войти приложение, и помочь вам настроить приложение из файлов конфигурации и устранить неполадки с приложением.
Проверяйте подлинность устройств, подключаемых к полевому шлюзу
Заголовок | Сведения |
---|---|
Компонент | Полевой шлюз Интернета вещей |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Н/П |
Шаги | Настройте полевой шлюз таким образом, чтобы он выполнял проверку подлинности каждого устройства, прежде чем получать от них данные и упрощать взаимодействие вышестоящих объектов с облачным шлюзом. Кроме того, настройте подключение устройств с помощью учетных данных на уровне отдельного устройства, чтобы уникально идентифицировать отдельные устройства. |
Устройства, подключаемые к облачному шлюзу, должны проходить проверку подлинности
Заголовок | Сведения |
---|---|
Компонент | Облачный шлюз Интернета вещей |
Этап SDL | Сборка |
Применимые технологии | Generic, C#, Node.js, |
Атрибуты | Н/д, выбор шлюза: Центр Интернета вещей Azure |
Ссылки | Н/Д, Приступая к работе с Центром Интернета вещей Azure (.NET), Приступая к работе с Центром Интернета вещей Azure (Node), Использование SAS и сертификатов для защиты Интернета вещей, Репозиторий Git |
Шаги |
|
Пример
static DeviceClient deviceClient;
static string deviceKey = "{device key}";
static string iotHubUri = "{iot hub hostname}";
var messageString = "{message in string format}";
var message = new Message(Encoding.ASCII.GetBytes(messageString));
deviceClient = DeviceClient.Create(iotHubUri, new DeviceAuthenticationWithRegistrySymmetricKey("myFirstDevice", deviceKey));
await deviceClient.SendEventAsync(message);
Пример
Node.js: проверка подлинности
Симметричный ключ
- Создайте Центр Интернета вещей в Azure
- Создание записи в реестре удостоверений устройства
var device = new iothub.Device(null); device.deviceId = <DeviceId > registry.create(device, function(err, deviceInfo, res) {})
- Создание имитированного устройства
var clientFromConnectionString = require('azure-iot-device-amqp').clientFromConnectionString; var Message = require('azure-iot-device').Message; var connectionString = 'HostName=<HostName>DeviceId=<DeviceId>SharedAccessKey=<SharedAccessKey>'; var client = clientFromConnectionString(connectionString);
Маркер SAS
- Создается в системе при использовании симметричного ключа, но его также можно создать и использовать явным образом.
- Определите протокол:
var Http = require('azure-iot-device-http').Http;
- Создание маркера sas:
resourceUri = encodeURIComponent(resourceUri.toLowerCase()).toLowerCase(); var deviceName = "<deviceName >"; var expires = (Date.now() / 1000) + expiresInMins * 60; var toSign = resourceUri + '\n' + expires; // using crypto var decodedPassword = new Buffer(signingKey, 'base64').toString('binary'); const hmac = crypto.createHmac('sha256', decodedPassword); hmac.update(toSign); var base64signature = hmac.digest('base64'); var base64UriEncoded = encodeURIComponent(base64signature); // construct authorization string var token = "SharedAccessSignature sr=" + resourceUri + "%2fdevices%2f"+deviceName+"&sig=" + base64UriEncoded + "&se=" + expires; if (policyName) token += "&skn="+policyName; return token;
- Подключение с помощью маркера sas:
Client.fromSharedAccessSignature(sas, Http);
Сертификаты
- Создайте самозаверяющий сертификат X509 с помощью любого средства, такого как OpenSSL, чтобы создать файлы CERT и KEY для хранения сертификата и ключа соответственно.
- Подготовьте устройство, которое принимает безопасное подключение с использованием сертификатов.
var connectionString = '<connectionString>'; var registry = iothub.Registry.fromConnectionString(connectionString); var deviceJSON = {deviceId:"<deviceId>", authentication: { x509Thumbprint: { primaryThumbprint: "<PrimaryThumbprint>", secondaryThumbprint: "<SecondaryThumbprint>" } }} var device = deviceJSON; registry.create(device, function (err) {});
- Подключение устройства с помощью сертификата
var Protocol = require('azure-iot-device-http').Http; var Client = require('azure-iot-device').Client; var connectionString = 'HostName=<HostName>DeviceId=<DeviceId>x509=true'; var client = Client.fromConnectionString(connectionString, Protocol); var options = { key: fs.readFileSync('./key.pem', 'utf8'), cert: fs.readFileSync('./server.crt', 'utf8') }; // Calling setOptions with the x509 certificate and key (and optionally, passphrase) will configure the client //transport to use x509 when connecting to IoT Hub client.setOptions(options); //call fn to execute after the connection is set up client.open(fn);
Используйте учетные данные проверки подлинности на уровне отдельного устройства
Заголовок | Сведения |
---|---|
Компонент | Облачный шлюз Интернета вещей |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Выбор шлюза: Центр Интернета вещей Azure |
Ссылки | Маркеры безопасности Центра Интернета вещей Azure |
Шаги | Используйте учетные данные проверки подлинности с помощью маркеров SAS на основе ключа устройства или сертификата клиента для каждого отдельного устройства вместо политик общего доступа на уровне Центра Интернета вещей. Это предотвратит повторное использование маркеров проверки подлинности одного устройства или полевого шлюза другим устройством. |
Анонимный доступ на чтение должен быть предоставлен только к необходимым контейнерам и большим двоичным объектам
Заголовок | Сведения |
---|---|
Компонент | Хранилище Azure |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Тип хранилища: большой двоичный объект |
Ссылки | Управление анонимным доступом на чтение к контейнерам и большим двоичным объектам, Использование подписанных URL-адресов (SAS): общие сведения о модели SAS |
Шаги | По умолчанию к контейнеру и любым большим двоичным объектам в нем может обращаться только владелец учетной записи хранения. Чтобы предоставить анонимным пользователями доступ на их чтение, следует разрешить общий доступ к контейнеру. Анонимные пользователи могут считывать данные большого двоичного объекта из общедоступного контейнера, при этом их запросы не будут проходить аутентификацию. Доступны следующие возможности управления доступом к контейнеру.
Анонимный доступ лучше всего подходит для сценариев, когда определенные большие двоичные объекты нужно сделать всегда доступными для анонимного доступа на чтение. Для осуществления детального контроля можно создать подписанный URL-адрес, который позволит делегировать ограниченный доступ на определенный временной интервал, используя разные разрешения. Убедитесь, что контейнеры и большие двоичные объекты, которые потенциально могут содержать конфиденциальные данные, не получают анонимный доступ случайно |
Предоставьте ограниченный доступ к объектам в службе хранилища Azure с помощью SAS или SAP
Заголовок | Сведения |
---|---|
Компонент | Хранилище Azure |
Этап SDL | Сборка |
Применимые технологии | Универсальный |
Атрибуты | Н/П |
Ссылки | Использование подписанных URL-адресов (SAS): общие сведения о модели SAS, Подписанные URL-адреса. Часть 2: создание и использование подписанного URL-адреса в службе BLOB-объектов, сведения о делегировании доступа к объектам в учетной записи с помощью подписанных URL-адресов и хранимых политик доступа |
Шаги | Подписанный URL-адрес (SAS) — это эффективное средство для предоставления другим клиентам ограниченного доступа к объектам в вашей учетной записи хранения без предоставления ключа доступа к вашей учетной записи. Подпись общего доступа — это URI, который в своих параметрах запроса содержит все сведения, необходимые доступа к ресурсу хранилища с прохождением проверки подлинности. Для доступа к ресурсам хранилища с помощью SAS клиенту достаточно передать SAS в соответствующий конструктор или метод. Подпись общего доступа можно использовать, когда доступ к ресурсам в вашей учетной записи хранения требуется предоставить клиенту, которому нельзя доверить ключ учетной записи. Ключи вашей учетной записи хранения включают в себя как первичный, так и вторичный ключ, и оба этих ключа предоставляют административный доступ к вашей учетной записи и всем ее ресурсам. Предоставление любого из ключей учетной записи делает ее уязвимой вредоносного или небрежного использования. Подписи общего доступа обеспечивают безопасную альтернативу, позволяющую другим клиентам считывать, записывать и удалять данные в вашей учетной записи хранения в соответствии с выданными вами разрешениями и без потребности в ключе учетной записи. Если у вас есть логически связанный и относительно постоянный набор параметров, лучше использовать хранимую политику доступа. Та как подписанный URL-адрес, полученный на основе хранимой политики доступа, можно отозвать немедленно, рекомендуется использовать хранимые политики доступа всегда, когда это возможно. |