Рекомендации по безопасности Bot FrameworkBot Framework security guidelines

применимо к: Пакет SDK v4APPLIES TO: SDK v4

Использование ботов становится все более распространенным в ключевых сферах бизнеса, таких как финансовые услуги, розничная торговля, туризм и т. д.Bots are more and more prevalent in key business areas like financial services, retail, travel, and so on. Bot может получать конфиденциальные данные, такие как кредитные карты, SSN, банковские счета и другие персональные данные.A bot might collect very sensitive data such as credit cards, SSN, bank accounts, and other personal information. Поэтому важно обеспечить безопасность и защиту программы-роботы от распространенных угроз и уязвимостей.So, it is important that bots are secure and protect against common threats and vulnerabilities.

Для повышения безопасности программы-робота можно использовать стандартные предупредительные меры.You can take some standard preventative measures to improve your bot's security. Некоторые меры безопасности похожи на те, которые используются в других программных системах, в то время как некоторые из них относятся к платформе Bot.Some security measures are similar to the ones used in other software systems, while some are specific to the Bot Framework. Последние сведения см. в статье о производительности системы безопасности Azure.For the latter, refer to the Azure Security Benchmark. В этом тесте содержатся рекомендации по защите облачных решений в Azure.The benchmark provides recommendations on how you can secure your cloud solutions on Azure.

Проблемы безопасности в двух словахSecurity issues in a nutshell

В этой статье вопросы безопасности группируются в две категории:This article groups security issues into 2 categories:

  • Угрозы. тактика, которую кто-то может использовать для нарушения работы программы-робота, например подмена, искажение, неразглашение информации, отказ в обслуживании и т. д.Threats: The tactics someone might use to compromise your bot, such as spoofing, tampering, disclosing information, denial of service, and so on.

  • Уязвимости. способы, с помощью которых робот или управление программой Bot могут быть подвержены такой тактике, как ошибки или слабая безопасность.Vulnerabilities: The ways in which your bot or the management of your bot might be susceptible to such tactics, such as bugs, or lax security.

Сокращение уязвимостей — хороший способ устранить угрозы, а известное средство сокращения уязвимостей — реализовать контрольные точки безопасности в процессе разработки и развертывания.Reducing your vulnerabilities is a good way to mitigate threats, and a known way to reduce vulnerabilities is to implement security check points in the development and deployment process.

Общие рекомендации по безопасностиCommon security guidelines

В следующих областях рассматриваются некоторые стандартные рекомендации по обеспечению безопасности, общие для всех приложений.The following areas are covered by some standard security best practices common to all applications.

Протоколы и шифрованиеProtocols and Encryption

Данные могут быть изменены во время передачи.Data can be tampered with during transmission. Существуют протоколы, которые обеспечивают шифрование для избежания проблем неправильного использования и незаконного изменения.Protocols exist that provide encryption to address problems of misuse and tampering. Поэтому боты должны передавать данные только через зашифрованные каналы.In this regard, bots should communicate only over encrypted channels. Это затрудняет для всех, кроме получателя и отправителя, просмотр какой либо части сообщения или транзакции.This makes it hard for anyone other than the receiver and sender from seeing any part of the message or transaction.

Шифрование является одним из наиболее надежных методов обеспечения безопасности Bot и компаний, которые должны заблаговременно гарантировать ее эффективность, принимая меры для персонализации и шифрования конфиденциальных данных.Encryption is one of the most robust methods of ensuring bot security and companies must proactively guarantee its effectiveness by taking measures to depersonalize and encrypt sensitive data.

Для обмена данными по сети любая защищенная система должна использовать протокол HTTPS , который передает данные по протоколу HTTP в зашифрованных подключениях , защищенных с помощью протокола TLS или SSL (SSL).To exchange data on the wire any secure system must use the HTTPS protocol, which transfers data over HTTP in encrypted connections protected by Transport Layer Security (TLS) or Secure Sockets Layer (SSL). См. также RFC 2818-HTTP через TLS.See also RFC 2818 - HTTP Over TLS.

Самостоятельное деструктурировать сообщенияSelf-destructing messages

Безвозвратно удаляйте конфиденциальные данные, как только они больше не нужны, обычно после завершения обмена сообщениями или через определенное время.Permanently delete any sensitive data as soon as it is no longer needed, usually after the message exchange ends, or after a certain amount of time. Сюда могут входить личные сведения, идентификаторы, ПИН-коды, пароли, контрольные вопросы и ответы и т. д.This can include personally-identifying information, IDs, PINs, passwords, security questions and answers, and so so.

Хранилище данныхData storage

Рекомендации по хранению информации в безопасном состоянии на определенный период времени и их отмене позже после обслуживания.The best practice calls for storing information in a secure state for a certain amount of time and then discarding it later after it served its purpose.

Ниже перечислены некоторые распространенные методы обеспечения безопасности.Some common security techniques are listed below.

Брандмауэры базы данныхDatabase firewalls

  • По умолчанию брандмауэры запрещают доступ к трафику.Firewalls deny access to traffic by default. Допустимый трафик должен исходить из конкретных приложений или веб-серверов, которым требуется доступ к данным.The only traffic allowed should originate from specific applications or web servers that need to access the data.
  • Также следует развернуть брандмауэр веб-приложения.You should also deploy a web application firewall. Это обусловлено тем, что атаки, такие как атаки путем внедрения кода SQL, направленные на веб-приложение, можно использовать для захвату или удаления данных из базы данных.This is because attacks such as SQL injection attacks directed at a web application can be used to exfiltrate or delete data from the database.

Усиление защиты базы данныхDatabase hardening

  • Убедитесь, что база данных по-прежнему поддерживается поставщиком, и вы используете последнюю версию базы данных со всеми установленными исправлениями безопасности для удаления известных уязвимостей.Make sure that the database is still supported by the vendor, and you are running the latest version of the database with all the security patches installed to remove known vulnerabilities.
  • Удалите или отключите все ненужные функции или службы и убедитесь, что пароли всех учетных записей по умолчанию изменены. или более того, удалите все ненужные учетные записи по умолчанию.Uninstall or disable any features or services that you don't need and make sure you change the passwords of any default accounts from their default values; or better, delete any default accounts that you don't need.
  • Убедитесь, что включены все элементы управления безопасностью базы данных, предоставляемые базой данных, если нет конкретной причины для отключения.Make sure that all the database security controls provided by the database are enabled, unless there is a specific reason for any to be disabled.

Сократите ценную информациюMinimize valuable information

  • Убедитесь, что не хранятся конфиденциальные сведения, которые не должны находиться в базе данных.Make sure that you are not storing any confidential information that doesn't need to be in the database.
  • Данные, сохраняемые для соответствия или другие цели, можно переместить в более безопасное хранилище (возможно, вне сети), что менее уязвимо для угроз безопасности базы данных.Data retained for compliance or other purposes can be moved to more secure storage, perhaps offline, which is less susceptible to database security threats.
  • Не забудьте удалить все файлы журнала, записанные сервером во время исходной процедуры установки.Make sure to delete any history files that are written by a server during the original installation procedure. Если установка прошла успешно, эти файлы не имеют значения, но могут содержать сведения, которые потенциально могут быть использованы.If the installation is successful these files have no value but can contain information that can potentially be exploited.

ОбразованиеEducation

Программы-роботы предоставляет инновационное средство взаимодействия между компанией и ее клиентами.Bots provide an innovative interaction tool between a company and its customers. Но они потенциально могут предоставить программы трояны для изменения веб-сайта компании.But they could potentially provide a backdoor for tampering with a company's website. Таким образом, компания должна гарантировать, что ее разработчики понимают важность программы Bot-безопасности в рамках обеспечения безопасности сайта.Therefore, a company must assure that its developers understand the importance of bot security as part of the website security. Более того, ошибки пользователей могут быть проблемой.Moreover, users' errors can be a problem, too. Для этого потребуется некоторое образование, как можно безопасно использовать программы-роботы, например:This will require some education on how bots can be used securely, for example:

  • Для разработчиков стратегия должна включать в себя внутреннее обучение использованию программы Bot в безопасном режиме.For the developers, a strategy should include internal training on how to use the bot securely.
  • Клиентам могут быть предоставлены рекомендации о безопасном взаимодействии с Bot.Customers can be given guidelines detailing how to interact with the bot safely.

Специальные рекомендации по безопасности для BotBot-specific security guidelines

В следующих областях рассматриваются некоторые стандартные рекомендации по обеспечению безопасности для приложений-Bot Framework.The following areas are covered by some standard security best practices for Bot Framework applications. Следующие рекомендации описывают Рекомендуемые меры безопасности для платформы Bot.The following guidelines describe the Bot Framework best practice security measures. Дополнительные сведения см. в разделе вопросы и ответы по безопасности и конфиденциальности.For more information, see the Security and Privacy FAQ.

Проверка подлинности соединителя BotBot Connector authentication

Служба соединителя Bot изначально использует протокол HTTPS для обмена сообщениями между Bot и каналами (пользователями).The Bot Connector service natively uses HTTPS to exchange messages between a bot and channels (users). пакет SDK для Bot Framework автоматизирует простую проверку подлинности на основе ленты в канале.the Bot Framework SDK automates basic bot-to-channel authentication for you.

Предупреждение

Очень важно сделать это правильно.If you are writing your own authentication code, it is critical that you implement all security procedures correctly. Реализуя все шаги, описанные в статье о проверке подлинности , можно снизить риск того, что злоумышленник сможет читать сообщения, отправленные на ваш робот, отправлять сообщения, имитирующие программы-роботы, и украсть секретные ключи.By implementing all steps described in the Authentication article, you can mitigate the risk of an attacker being able to read messages that are sent to your bot, send messages that impersonate your bot, and steal secret keys.

Аутентификация пользователейUser authentication

Функция проверки подлинности службы Azure Bot позволяет проверять подлинность пользователей и получать маркеры доступа от различных поставщиков удостоверений, например Azure Active Directory, GitHub, Uber и т. д.Azure Bot Service authentication enables you to authenticate users to and get access tokens from a variety of identity providers such as Azure Active Directory, GitHub, Uber and so on. Кроме того, настроить проверку подлинности можно для пользовательского поставщика удостоверений OAuth2.You can also configure authentication for a custom OAuth2 identity provider. Все это позволяет использовать только один фрагмент кода проверки подлинности, который будет работать для всех поддерживаемых поставщиков удостоверений и всех каналов.All this enables you to write one piece of authentication code that works across all supported identity providers and channels. Чтобы использовать эти возможности, выполните следующие действия:To utilize these capabilities you need to perform the following steps:

  1. Статически настройте settings в боте, который содержит сведения о регистрации приложения у поставщика удостоверений.Statically configure settings on your bot that contains the details of your application registration with an identity provider.
  2. Используйте OAuthCard, указав сведения о приложении, которые используются для входа пользователя и были указаны на предыдущем шаге.Use an OAuthCard, backed by the application information you supplied in the previous step, to sign-in a user.
  3. Получите маркеры доступа с помощью API службы Azure Bot.Retrieve access tokens through Azure Bot Service API. Рекомендуется ограничить время, в течение которого прошедший проверку подлинности пользователь может оставаться в системе.A good practice is to place a time limit on how long an authenticated user can stay logged in.

Дополнительные сведения см. в статье Проверка подлинности пользователя .For more information, see the User authentication article.

Веб-чат.Web Chat

При использовании элемента управления " веб-чат " необходимо помнить о некоторых важных вопросах, касающихся олицетворения и подмены удостоверений.When you use the Web Chat control you must keep in mind some important security considerations about impersonation and identity spoofing. Дополнительные сведения см. в разделе Прямая строка Расширенная проверка подлинности.For more information, see Direct Line enhanced authentication.

Дополнительные сведенияAdditional information