Приложения и службыApplications and services

Приложения и данные, связанные с ними, в конечном итоге действуют как основное хранилище ценности бизнеса на облачной платформе.Applications and the data associated with them ultimately act as the primary store of business value on a cloud platform. Несмотря на то что компоненты платформы, такие как идентификация и хранилище, являются критически важными элементами среды безопасности, приложения играют роль в сфере риска для бизнеса, поскольку:While the platform components like identity and storage are critical elements of the security environment, applications play an outsize role in risks to the business because:

  • Бизнес-процессы инкапсулируются и выполняются приложениями и службами, которые должны быть доступны и предоставлены с высокой целостностью.Business Processes are encapsulated and executed by applications and services need to be available and provided with high integrity

  • Бизнес-данные хранятся и обрабатываются рабочими нагрузками приложений, и для них требуются высокие гарантии конфиденциальности, целостности и доступности.Business Data is stored and processed by application workloads and requires high assurances of confidentiality, integrity, and availability.

В этом разделе рассматриваются приложения, написанные вашей организацией или другими лицами от имени вашей организации, а также приложения SaaS или коммерчески доступными приложениями, установленными на виртуальных машинах IaaS.This section focuses on applications written by your organization or by others on behalf of your organization vs. SaaS or commercially available applications installed on IaaS VMs.

Схема моделей приложений

Современные облачные платформы, такие как Azure, могут размещать как устаревшие, так и современные поколения приложений.Modern cloud platforms like Azure can host both legacy and modern generations of applications

  • Устаревшие приложения размещаются на виртуальных машинах "инфраструктура как услуга" (IaaS), которые обычно включают в себя все зависимости, включая ОС, по промежуточного слоя и другие компоненты.Legacy applications are hosted on Infrastructure as a Service (IaaS) virtual machines that typically include all dependencies including OS, middleware, and other components.

  • Современный Приложения PaaS (платформа как услуга) не нуждаются в том, чтобы владелец приложения управлял и не защищает базовые серверные операционные системы (ОС) и иногда является полностью "бессерверным" и построен в основном с помощью функций в качестве службы.Modern Platform as a Service (PaaS) applications don’t require the application owner to manage and secure the underlying server operating systems (OSes) and are sometimes fully “Serverless” and built primarily using functions as a service.

    Примечания. Популярные формы современных приложений — это код приложений, размещенный в службах приложений Azure и контейнерных приложениях (Хотя контейнеры также могут размещаться на виртуальных машинах IaaS или в локальной среде).Notes: Popular forms of modern applications are application code hosted on Azure App Services and containerized applications (though containers can also be hosted on IaaS VMs or on-premises as well).

  • Гибридное приложение. в то время как гибридные приложения могут принимать множество форм, наиболее распространенным является состояние "IaaS Plus", при котором устаревшие приложения переходят на современные архитектуры с современными службами, заменяя устаревшие компоненты или добавляя устаревшие приложения.Hybrid – While hybrid applications can take many forms, the most common is an “IaaS plus” state where legacy applications are transitioning to a modern architecture with modern services replacing legacy components or being added a legacy application.

Для защиты приложения требуются гарантии безопасности для трех различных типов компонентов:Securing an application requires security assurances for three different component types:

  • Код приложения — это логика, определяющая пользовательское приложение, которое вы пишете.Application Code – This is the logic that defines the custom application that you write. Безопасность этого кода является обязанностью владельцев приложений во всех поколениях архитектуры приложений, включая любые фрагменты с открытым кодом или компоненты, включенные в код.The security of this code is the application owners’ responsibility in all generations of application architecture including any open-source snippets or components included in the code. Для обеспечения безопасности кода необходимо определить и устранить риски, связанные с проектированием и реализацией приложения, а также оценить риск цепочки поставок входящих компонентов.Securing the code requires identifying and mitigating risks from the design and implementation of the application as well as assessing supply chain risk of included components. Обратите внимание, что развитие приложений в архитектурах микрослужб приведет к нарушению различных аспектов кода приложения в более мелких службах и одной монолитной базе кода.Note that the evolution of applications into microservices architectures will break various aspects of application code into smaller services vs. a single monolithic codebase.

  • Службы приложений — это различные стандартизированные компоненты, используемые приложением, такие как базы данных, поставщики удостоверений, концентраторы событий, Управление устройствами IOT и т. д.Application Services – These are the various standardized components that the application uses such as databases, identity providers, event hubs, IoT device management, and so on. Для облачных служб это является общей обязанностью:For cloud services this is a shared responsibility:

    • Поставщик облачных служб — Ответственность за безопасность базовой службы лежит на поставщике облачных служб.Cloud Provider - The security of the underlying service is the responsibility of the cloud provider

    • Владелец приложения . Владелец приложения несет ответственность за влияние конфигурации и работы экземпляров служб, используемых приложением, включая все данные, хранимые и обрабатываемые в службе.Application Owner - The application owner is responsible for security implications of the configuration and operation of the service instance(s) used by the application including any data stored and processed on the service.

  • Платформа размещения приложений — это вычислительная среда, в которой приложение фактически выполняется и выполняется.Application Hosting Platform – This is the computing environment where the application actually executes and runs. На предприятии с приложениями, размещенными в локальной среде, в Azure и в сторонних облаках, таких как Amazon Web Services (AWS), это может занять много форм с значительными вариациями, которые отвечают за безопасность:In an enterprise with applications hosted on premises, in Azure and in third-party clouds like Amazon Web Services (AWS), this could take many forms with significant variations on who is responsible for security:

    • Для устаревших приложений обычно требуется полная операционная система (и любое по промежуточного слоя), размещенная на физическом или виртуальном оборудовании.Legacy Applications typically require a full operating system (and any middleware) hosted on physical or virtualized hardware. Виртуальное оборудование можно размещать в локальной среде или на виртуальных машинах инфраструктуры как услуги (IaaS).The virtual hardware can be hosted on premises or on Infrastructure as a Service (IaaS) VMs. Эта операционная система и установленное по промежуточного слоя и другие компоненты обслуживаются и защищаются владельцем приложения или командами инфраструктуры.This operating system and installed middleware/other components are operated and secured by the application owner or their infrastructure team(s).
      Ответственность за физическое оборудование и компоненты виртуализации ОС (узлы виртуализации, операционные системы и службы управления) зависят от следующих компонентов:The responsibility for the physical hardware and OS virtualization components (virtualization hosts, operating systems, and management services) varies:

      • Локальный . Владелец приложения или его организация отвечают за обслуживание и безопасность.On premises - The application owner or their organization is responsible for maintenance and security.

      • IaaS — поставщик облачных служб отвечает за обслуживание и безопасность базовой инфраструктуры, а Организация владельца приложения несет ответственность за конфигурацию виртуальной машины, операционную систему и установленные на ней компоненты.IaaS – The cloud provider is responsible for maintenance and security of the underlying infrastructure and the application owner’s organization is responsible for the VM configuration, operating system, and any components installed on it.

    • Современные приложения размещаются в средах "платформа как услуга" (PaaS), например в службе приложений Azure.Modern Applications are hosted on Platform as a Service (PaaS) environments such as an Azure application service. В большинстве типов служб приложений базовая операционная система является абстрактной от владельца приложения и защищена поставщиком облачных услуг.In most application service types, the underlying operating system is abstracted from the application owner and secured by the cloud provider. Владельцы приложений отвечают за безопасность предоставляемых им конфигураций службы приложений.Application owners are responsible for the security of the application service configurations that are provided to them.

    • Контейнеры — это механизм упаковки приложений, в котором приложения являются абстрактными от среды, в которой они выполняются.Containers are an application packaging mechanism in which applications are abstracted from the environment in which they run. Эти контейнерные приложения помещаются в устаревшие или современные модели в зависимости от того, выполняются ли они в службе контейнеров поставщиком облачных служб (современные приложения) или на сервере, управляемом организацией (локально или в IaaS).These containerized applications fit into either the legacy or modern models above depending on whether they are run on a container service by the cloud provider (Modern Applications) or on a server managed by the organization (on premises or in IaaS). Дополнительные сведения см. в разделе безопасность контейнеров ниже.See the container security section below for more details.

Выявление и классификация критически важных для бизнеса приложенийIdentify and classify business critical applications

Убедитесь, что в портфеле определены и классифицированы приложения, важные для бизнес-функций.Ensure you have identified and classified the applications in your portfolio that are critical to business functions.

В корпоративных организациях обычно имеется большой портфель приложений, поэтому важно учитывать, где следует вкладывать время и усилия в ручные и ресурсоемкие задачи, такие как моделирование угроз, может повысить эффективность программы безопасности.Enterprise organizations typically have a large application portfolio, so prioritizing where to invest time and effort into manual and resource-intensive tasks like threat modeling can increase the effectiveness of your security program.

Выявление приложений с высоким потенциальным влиянием и/или высокой вероятностью риска.Identify applications that have a high potential impact and/or a high potential exposure to risk.

  • Большое потенциальное воздействие — выявление приложения, которое существенно скажется на бизнесе в случае компрометации.High potential impact – Identify application that would a significant impact on the business if compromised. Это может быть одно или несколько из следующих:This could take the form of one or more of:

    • Критически важные для бизнеса данные — приложения, которые обрабатывают или хранят информацию, что может привести к значительному негативному влиянию на бизнес или на деятельность при потере конфиденциальности, целостности или доступности.Business critical data – Applications that process or store information, which would cause significant negative business or mission impact if an assurance of confidentiality, integrity, or availability is lost.

    • Регулируемые данные — приложения, которые обрабатывали денежные средства и конфиденциальные персональные данные, регулируются стандартами.Regulated data – Applications that handle monetary instruments and sensitive personal information regulated by standards. Например, «платежная карта» (PCI) и «акт переноса и учета данных о работоспособности» (HIPAA).For example, payment card industry (PCI) and Health Information Portability and Accountability Act (HIPAA).

    • Доступность для бизнеса — приложения, функциональность которых важна для организаций, таких как производственные линии, создающие доходы, устройства или службы, которые важны для жизненного цикла и безопасности, а также другие критические функции.Business critical availability – Applications whose functionality is critical to organizations business mission such as production lines generating revenue, devices, or services critical to life and safety, and other critical functions.

    • Значительный доступ — приложения, которые имеют доступ к системам с высоким потенциальным влиянием на технические средства, такие какSignificant Access – Applications which have access to systems with a high potential impact through technical means such as

      • Сохраненные учетные данные или ключи и сертификаты, предоставляющие доступ к данным и службамStored Credentials or keys/certificates that grant access to the data/service

      • Разрешения , предоставленные с помощью списков управления доступом или других средствPermissions granted via access control lists or other means

  • Высокая доступность для атак — приложения, которые легко доступны злоумышленникам, таким как веб-приложения в открытом Интернете.High exposure to attacks – Applications that are easily accessible to attackers such as web applications on the open internet. Устаревшие приложения также могут быть более подвержены, как злоумышленники и тестировщики уязвимости часто нацелены на них, так как они узнают, что эти устаревшие приложения часто имеют уязвимости, которые трудно исправить.Legacy applications can also be higher exposure as attackers and penetration testers frequently target them because they know these legacy applications often have vulnerabilities that are difficult to fix.

Внедрение подхода DevOpsAdopt the DevOps approach

Организации должны переходить с "каскадного" цикла разработки к DevOps жизненным циклом непрерывной интеграции, непрерывной поставки (CI/CD) для приложений так же быстро, как и практично.Organizations should shift from a ‘Waterfall’ development cycle to DevOps lifecycle of continuous integration, continuous delivery (CI/CD) for applications as fast as is practical. DevOps — это объединение людей, процессов и средств, которые позволяют непрерывно доставлять ценность конечным пользователям.DevOps is the union of people, processes, and tools that enable continuous delivery of value to end users. Соглашение о разработке и операциях относится к объединению дисциплин разработки и эксплуатации в могут коллективов, работающих совместно с общими и эффективными методиками и инструментами.The contraction of Dev and Ops refers to combining the development and operations disciplines into multi-disciplinary teams that work together with shared and efficient practices and tools.

Модель DevOps повышает способность Организации быстро решать проблемы безопасности, не дожидаясь более длительного цикла планирования и тестирования каскадной модели.The DevOps model increases the organization’s ability to rapidly address security concerns without waiting for a longer planning and testing cycle of a waterfall model.

Следуйте рекомендациям по обеспечению безопасности DevOpsFollow DevOps security guidance

Организациям следует использовать рекомендации и автоматизацию для защиты приложений в облаке, а не начинать с нуля.Organizations should leverage guidance and automation for securing applications on the cloud rather than starting from zero.

Использование ресурсов и уроков, полученных внешними организациями, которые являются ранними внедрениями этих моделей, может ускорить повышение безопасности Организации за счет меньшего расхода усилий и ресурсов.Using resources and lessons learned by external organizations that are early adopters of these models can accelerate the improvement of an organization’s security posture with less expenditure of effort and resources.

  • Корпорация Майкрософт выпустила набор средств для защиты DevOps в Azure —Microsoft has released a toolkit for Secure DevOps on Azure –
    https://azsk.azurewebsites.net/

  • В организации проекта безопасности веб-приложений (OWASP) опубликованы рекомендации по обеспечению безопасности конвейера DevOpsOrganization for Web App Security Project (OWASP) has published guidance DevOps Pipeline security
    https://www.owasp.org/index.php/OWASP_AppSec_Pipeline#tab=Main

Использование облачных служб вместо пользовательских реализацийUse Cloud services instead of custom implementations

Разработчики должны использовать службы, доступные у поставщика облачных служб, для создания хорошо установленных функций, таких как базы данных, шифрование, каталог удостоверений и проверка подлинности, вместо написания пользовательских версий.Developers should use services available from your cloud provider for well-established functions like databases, encryption, identity directory, and authentication instead of writing custom versions of them.

Эти службы обеспечивают более высокий уровень безопасности, надежности и эффективности, так как поставщики облачных услуг работают и защищают их с помощью выделенных групп и глубокого опыта в этих областях.These services provide better security, reliability, and efficiency because cloud providers operate and secure them with dedicated teams with deep expertise in those areas. Использование этих служб также освобождает ресурсы разработчика от пересчета пресловутыйного колеса, чтобы они могли сосредоточиться на времени разработки в соответствии с вашими уникальными требованиями для вашего бизнеса.Using these services also frees your developer resources from reinventing the proverbial wheel so that they can focus development time on your unique requirements for your business. Следует соблюдать эту методику, чтобы избежать риска во время разработки новых приложений, а также снизить риски в существующих приложениях во время планового цикла обновления или с помощью обновления приложения, ориентированного на безопасность.This practice should be followed to avoid risk during new application development as well as to reduce risk in existing applications either during planned update cycle or with a security-focused application update.

Некоторые возможности, которые должны быть приоритетны первыми из-за потенциального влияния на безопасность:Several capabilities that should be prioritized first because of potential security impact:

  • Identity — пользовательские каталоги и другие функции проверки подлинности сложны в разработке и критически важны для обеспечения безопасности.Identity – User directories and other authentication functions are complex to develop and critically important to security assurances. Старайтесь не использовать решения проверки подлинности доморощенные и получать более современные возможности, такие как Azure Active Directory (Azure AD), Azure ad B2B, Azure AD B2Cили сторонние решения для проверки подлинности и предоставления разрешений пользователям, партнерам, клиентам, приложениям, службам и другим сущностям.Avoid using homegrown authentication solutions and favor mature capabilities like Azure Active Directory (Azure AD), Azure AD B2B, Azure AD B2C, or third-party solutions to authenticate and grant permission to users, partners, customers, applications, services, and other entities.

  • Защита данных . для шифрования и защиты данных разработчики должны использовать установленные возможности от поставщиков облачных служб, таких как встроенное шифрование в облачной службе.Data Protection – Developers should use established capabilities from cloud providers such as native encryption in cloud services to encrypt and protect data. В мире безопасности засоренся примеры неудачных попыток защиты данных или паролей, которые не были защищены от реальных атак.The security world is littered with examples of failed attempts to protect data or passwords that didn’t stand up to real world attacks. Если требуется прямое использование шифрования, разработчики должны вызывать хорошо установленные алгоритмы шифрования и не пытаться самостоятельно создавать собственные.If direct use of cryptography is required, developers should call well-established cryptographic algorithms and not attempt to invent their own.

  • Управление ключами . в идеале для проверки подлинности рекомендуется использовать удостоверение, а не напрямую управлять ключами (см. раздел предпочтение проверки подлинностиKey management – Ideally use identity for authentication rather than directly handling keys (see Prefer Identity Authentication over Keys). В ситуациях, когда доступ к службам, требующим доступа к ключам, использует службу управления ключами, такую как Azure Key Vault или AWS Key Management Service , чтобы управлять этими ключами и защищать их, а не пытаться безопасно обрабатывать ключи в коде приложения.For situations where accessing services that require access to keys, leverage a key management service like Azure Key Vault or AWS Key Management Service to manage and secure these keys rather than attempting to safely handle keys in application code. Кредскан можно использовать для обнаружения потенциально предоставляемых ключей в коде приложения.You can use CredScan to discover potentially exposed keys in your application code.

  • Конфигурации приложений — непоследовательные конфигурации приложений могут создавать риски безопасности.Application Configurations – Inconsistent configurations for applications can create security Risks. Настройка приложений Azure предоставляет службу для централизованного управления параметрами приложения и флагами функций, что помогает снизить риск.Azure App Configuration provides a service to centrally manage application settings and feature flags, which helps mitigate this risk.

Использование собственных возможностей безопасности в службах приложенийUse Native Security capabilities in application services

Используйте встроенные в облачные службы собственные возможности безопасности вместо добавления внешних компонентов безопасности (для шифрования данных, фильтрации сетевого трафика, обнаружения угроз и других функций).Use native security capabilities built into cloud services instead of adding external security components (for data encryption, network traffic filtering, threat detection, and other functions).

Собственные элементы управления безопасностью поддерживаются и обслуживаются поставщиком услуг, устраняя или сокращая усилия, необходимые для интеграции внешних средств безопасности и обновления этих интеграций с течением времени.Native security controls are maintained and supported by the service provider, eliminating or reducing effort required to integrate external security tooling and update those integrations over time. Облачные службы быстро развиваются, что значительно увеличивает нагрузку на поддержание внешнего средства и повышает риск потери безопасности и защиты от этих средств, если это средство не работает с облачной службой.Cloud services evolve rapidly, which greatly increases the burden of maintaining an external tool and increases risk of losing security visibility and protections from these tools if the tool doesn’t keep up with the cloud service.

Предпочитать проверку подлинности с помощью ключейPrefer Identity Authentication over Keys

Всегда проверять подлинность с помощью служб удостоверений, а не криптографических ключей, если они доступны.Always authenticate with identity services rather than cryptographic keys when available.

Безопасное управление ключами с помощью кода приложения очень сложно и регулярно приводит к ошибкам, таким как случайная публикация конфиденциальных ключей доступа в репозитории кода, например GitHub.Managing keys securely with application code is difficult and regularly leads to mistakes like accidentally publishing sensitive access keys to code repositories like GitHub. Системы идентификации обеспечивают безопасный и пригодный к использованию интерфейс для управления доступом с помощью встроенных сложных механизмов смены ключей, мониторинга аномалий и многого другого.Identity systems offer secure and usable experience for access control with built-in sophisticated mechanisms for key rotation, monitoring for anomalies, and more. Большинство организаций также имеют опытные группы, выделенные для управления системами идентификации, и многие пользователи, активно управляющие системами защиты ключей.Most organizations also have skilled teams dedicated to managing identity systems and few (if any) people actively managing key security systems.

Для служб, предлагающих проверку подлинности Azure AD, например службу хранилища Azure, служба приложений Azure Azure Backup, используйте ее для проверки подлинности и авторизации.For services that offer the Azure AD authentication like Azure Storage, Azure App Service, Azure Backup, use it for authentication and authorization. Чтобы упростить использование удостоверений для разработчиков, можно также воспользоваться преимуществами управляемых удостоверений , чтобы назначать удостоверения ресурсам, таким как виртуальные машины и службы приложений, чтобы разработчикам не нужно было управлять удостоверениями в приложении.To further simplify using identities for developers, you can also take advantage of managed identities to assign identities to resources like VMs and App Services so that developers don’t have to manage identities within the application.

Подход снизу вверх для уменьшения объема и влияния ошибок безопасностиBottom-up approach to reduce security bug volume and impact

изображение, показывающее подход снизу вверх для уменьшения объема и влияния ошибок безопасности

Сократите число и потенциальную серьезность ошибок безопасности в приложении, реализовав методики и средства обеспечения безопасности во время жизненного цикла разработки.Reduce the count and potential severity of security bugs in your application by implementing security practices and tools during the development lifecycle.

Ошибки безопасности могут привести к закрытию конфиденциальных данных приложением, позволяющим злоумышленникам изменять данные и записи, а данные или приложения становятся недоступными для использования клиентами и сотрудниками.Security bugs can result in an application disclosing confidential data, allowing criminals to alter data/records, or the data/application becoming unavailable for use by customers and employees. В приложениях всегда будут возникать логические ошибки, которые могут привести к угрозе безопасности, поэтому важно обнаружить, оценить и исправить их, чтобы избежать ущерба для репутации, дохода или маржи Организации.Applications will always have some logic errors that can result in security risk, so it is important to discover, evaluate, and correct them to avoid damage to the organization’s reputation, revenue, or margins. Проще и дешевле устранять эти ошибки в жизненном цикле разработки, чем исправить их после завершения тестирования приложением, в рабочей среде или с момента его нарушения, часто именуемого принципом «сдвиг влево» или «отправка влево».It is easier and cheaper to resolve these earlier in the development lifecycle than it is to correct them after application has completed testing, is in production use, or has been breached frequently called “shift left” or “push left” principle.

Устранение рисков приложений достигается за счет интеграции методик и средств безопасности в жизненный цикл разработки, который часто называется безопасным жизненным циклом разработки (SDL или SDLC).Mitigating application risk is achieved by integrating security practices and tools into the development lifecycle, often called a secure development lifecycle (SDL or SDLC). Корпорация Майкрософт опубликовала ряд рекомендаций в техническом документе с разработкой безопасных приложений в Azure , основанных на жизненном цикле разработки системы безопасности Майкрософт, чтобы устранить распространенные риски, касающиеся проверки ввода и вывода, выполнения тестирования методом Монте-Карло, просмотра уязвимой зоны и т. д.Microsoft has published a number of recommendations in a whitepaper entitled Develop Secure Apps on Azure based on Microsoft’s Security Development Lifecycle to mitigate common risks with input and output validation, perform fuzz testing, attack surface reviews, and more.

Нисходящий подход через моделирование угрозTop-down approach through threat modeling

изображение, показывающее подход с нисходящей вниз через моделирование угроз

Моделирование угроз в критически важных для бизнеса приложениях позволяет обнаруживать и устранять потенциальные риски в Организации.Perform threat modeling on your business-critical applications to discover and mitigate potential risks to your organization.

Моделирование угроз определяет риски для самого приложения, а также риски, которые может представлять приложение для вашего предприятия, особенно при оценке отдельных приложений в более крупной системе.Threat modeling identifies risks to the application itself as well as risks that application may pose to your enterprise particularly when evaluating individual applications in a larger system.

Моделирование угроз можно использовать на любом этапе разработки приложения или в рабочей среде, но оно уникально эффективно для этапов разработки новых функций, поскольку для этого приложения еще не существует реальных данных.Threat modeling can be used at any stage of application development or production, but it is uniquely effective for the design stages of new functionality because no real-world data yet exists for that application.

Так как моделирование угроз — это опыт, требующий опыта, мы рекомендуем использовать меры для снижения затрат времени и максимизации значений безопасности:Because threat modeling is a skill intensive exercise, we recommend taking measures to minimize time investment while maximizing security value:

  1. Определение приоритетов в зависимости от рисков . Применяйте моделирование угроз в первую очередь к критически важным бизнес-приложениям, которые могут оказать влияние на бизнес при компрометацииPrioritize by risk - Apply threat modeling first to business-critical applications that would have an outsize impact on the business if compromised

  2. Ограничение области — Выполните моделирование угроз в прогрессивных стадиях, чтобы быстро выявить быстрые WINS и меры по предотвращению действий, прежде чем тратить усилия на выполнение множества ручных действий.Limit Scope - Perform threat modeling in progressive stages of detail to quickly identify quick wins and actionable mitigations before spending a lot of manual effort:

    1. Начните с простого метода вопросов (см. раздел о методе простых вопросов), приведенном ниже, чтобы быстро получить сведения о рисках и о том, установлены ли основные средства защиты.Start with simple questions method (See Simple questions method) documented below to quickly get insight into risks and whether basic protections are in place

    2. Пошаговая Оценка разработки приложений — доступность ресурсов и знаний, переход к более расширенному анализу с помощью методов STRIDE с расширенным моделированием угроз или другого аналогичного решения, уже используемого вашей командой.Progressively evaluate Application Design – as resource and expertise are available, move to a more advanced analysis using the STRIDE method Advanced threat modeling techniques or another similar one already used by your team. Начните с проектирования уровня архитектуры и повысьте детализацию данных, а также предоставьте подробные сведения о времени и ресурсах:Start with the architecture level design and progressively increase detail as time and resources allow:

      1. Проектирование на уровне системы — включает приложения и взаимодействие друг с другомSystem level design – includes applications and how they interact with each other

      2. Уровень приложения — включает компоненты приложения и взаимодействие между ними.Application level – includes components of the application and how they interact with each other

      3. Уровень компонента — включает сведения о том, как состоит отдельный компонент и как каждый его элемент взаимодействует друг с другом.Component level – includes how the individual component is composed and how each element of it interacts with each other

  3. Выровняйте по жизненному циклу разработки — Оптимизируйте усилия, выполнив согласование действий моделирования угроз с жизненным циклом разработки приложений.Align with Development lifecycle – Optimize your efforts by aligning threat modeling activities with your application development lifecycles.

    1. Каскад — Обеспечьте, чтобы основные проекты включали моделирование угроз в процессе разработки и во время значительных обновлений приложения.Waterfall – ensure major projects should include threat modeling during the design process and during significant updates to the application.

    2. DevOps — активация действий моделирования угроз с частотой, которая добавляет значение безопасности без чрезмерной нагрузки на группы разработчиков.DevOps –Trigger threat modeling activities at a frequency that adds security value without over-burdening the development teams. Хорошей точкой интеграции является введение значительных функций или изменений в приложение и регулярное расписание повторяющегося календаря, например, каждый квартал для критически важных для бизнеса приложений.Good integration points are during the introduction of significant features or changes to the application and a regular recurring calendar schedule for example, every quarter for business-critical applications.

    3. Устаревшие приложения — В этих приложениях обычно отсутствует поддержка, доступ к исходному коду и (или) опыт в Организации, поэтому моделирование угроз выполняется с учетом имеющихся знаний и опыта работы приложения.Legacy applications – These applications typically lack support, source code access, and/or expertise in the organization, so perform threat modeling on a best effort basis with what application knowledge/expertise you have available.

Метод "простые вопросы"Simple questions method

Этот простой метод вопросов предназначен для того, чтобы специалисты по безопасности и разработчики начали работу с моделированием угроз, прежде чем переходить к более продвинутому методу, такому как метод STRIDE или OWASP (см. раздел нисходящей подход с помощью моделирования угроз).This simple questioning method is designed to get security professionals and developers started on threat modelling before moving on to a more advanced method like STRIDE or OWASP’s method (see, Top-down approach through threat modeling).

Задавайте и ответьте на эти вопросы для каждого приложения или компонента.For each application or component, ask and answer these questions

  • Проверяются ли подключения с помощью Azure AD, TLS (с взаимной проверкой подлинности) или другого современного протокола безопасности, одобренного Группой безопасности?Are you authenticating connections using Azure AD, TLS (with mutual authentication), or another modern security protocol approved by your security team? Это защищает от несанкционированного доступа к приложению и даннымThis protects against unauthorized access to the application and data

    • Между пользователями и приложением (если применимо)Between users and the application (if applicable)

    • Между различными компонентами и службами приложений (если применимо)Between different application components and services (if applicable)

  • Вы ограничиваете учетные записи, которые имеют доступ для записи или изменения данных в приложении, только теми, которые необходимы для этого?Do you limit which accounts have access to write or modify data in the application to only those required to do so? Это снижает риск несанкционированного изменения или изменения данных.This reduces risk of unauthorized data tampering/alteration

  • Регистрируется ли действие приложения в журнале и помещается в сведения о безопасности и управлении событиями (SIEM) через Azure Monitor или аналогичное решение?Is the application activity logged and fed into a Security Information and Event Management (SIEM) via Azure Monitor or a similar solution? Это помогает группе безопасности обнаруживать атаки и быстро исследовать их.This helps the security team detect attacks and quickly investigate them.

  • Защищены ли важные бизнес-данные с помощью шифрования, одобренного Группой безопасности?Is business-critical data protected with encryption that has been approved by the security team? Это помогает защититься от несанкционированного копирования неавторизованных данных.This helps protect against unauthorized copying of data while at rest.

  • Зашифрован ли входящий и исходящий сетевой трафик с помощью TLS?Is inbound and outbound network traffic encrypted using TLS? Это помогает защититься от несанкционированного копирования данных в процессе передачи.This helps protect against unauthorized copying of data while in transit.

  • Защищено ли приложение от распределенных атак типа "отказ в обслуживании" (от атак DDoS) с помощью таких служб, как Azure от атак DDoS Protection, Akamai или похоже?Is the application protected against Distributed Denial of Service (DDoS) attacks using services like Azure DDoS protection, Akamai, or similar? Это защищает от атак, предназначенных для перегрузки приложения, поэтому его нельзя использоватьThis protects against attacks designed to overload the application so it can’t be used

  • Хранятся ли в приложении любые учетные данные для входа или ключи для доступа к другим приложениям, базам данных или службам?Does the application store any sign in credentials or keys to access other applications, databases, or services? Это помогает определить, может ли атака использовать приложение для атаки на другие системы.This helps identify whether an attack can use your application to attack other systems.

  • Элементы управления приложениями позволяют выполнять требования к безопасности и конфиденциальности для локальных мест, с которыми вы работали?Do the application controls allow you to fulfill security and privacy requirements for the localities you operate in? (Это помогает защитить частные данные пользователя и избежать соответствия требованиям).(This helps protect user’s private data and avoid compliance fines)

Важно. Безопасность — это сложная тема, и потенциальные риски ограничиваются только воображением с помощью смарт-мотивации злоумышленников.Important: Security is a complex topic and the potential risks are limited only by the imagination of smart motivated attackers. Эти вопросы предназначены для выявления легко обнаруживаемых пропусков, которые легко использовать злоумышленниками.These questions are designed to help identify readily discoverable gaps that are easily exploited by attackers. По мере того как вы разрабатываете комфорт и компетенции с помощью этого метода, вы можете расширить возможности модели угроз, выполнив сложные приемы моделирования угроз.As you develop comfort and competencies with this method, you can look to grow your ability to threat model by progressing to advanced threat modelling techniques.

Усовершенствованные методы моделирования угрозAdvanced threat modeling techniques

Более обширная модель угроз может выявление более сложных рисков, две популярные методики — STRIDE и OWASPA more comprehensive threat model can identify more potential risks, two popular techniques are STRIDE and OWASP

  • Microsoft Жизненный цикл разработки безопасности задокументирован процесс моделирования угроз в и выпустил бесплатное средство для помощи с этим процессомMicrosoft Security Development Lifecycle has documented a process of threat modeling in and released a free tool to assist with this process

    • Этот метод оценивает компоненты приложения и соединения и связи с потенциальными рисками, которые сопоставляются с назначенной клавишей STRIDE:This method evaluates application components and connections/relationships against potential risks, which map to the STRIDE mnemonic:

      • спуфинг;Spoofing

      • незаконное изменение;Tampering

      • отказ;Repudiation

      • Раскрытие информацииInformation Disclosure

      • Отказ в обслуживанииDenial of Service

      • Повышение привилегийPrivilege Elevation

    • Этот метод можно применить к любому уровню проектирования из компонентов приложения высокого уровня, разносящихся к архитектуре.This method can be applied to any level of the design from the high level architectural specific application components.

  • OWASP — Открытый проект безопасности веб-приложений (OWASP) задокументирован подход к моделированию угроз для приложений, который ссылается на метод STRIDE и другие методы.https://www.owasp.org/index.php/Application_Threat_ModelingOWASP – The Open Web Application Security Project (OWASP) has documented a threat modeling approach for applications, which refers to STRIDE and other methods https://www.owasp.org/index.php/Application_Threat_Modeling

Использование брандмауэров веб-приложенийUse Web Application Firewalls

Брандмауэры веб-приложений (WAF) снижают риск того, что злоумышленник может воспользоваться уязвимыми местами безопасности для приложений.Web application firewalls (WAFs) mitigate the risk of an attacker being able to exploit commonly seen security vulnerabilities for applications. Хотя это не идеальный вариант, WAF предоставляет базовый минимальный уровень безопасности для веб-приложений.While not perfect, WAFs provide a basic minimum level of security for web applications.

WAF — это важное решение, которое позволяет злоумышленникам задействовать веб-приложения для входящей точки в Организации, похожей на конечную точку клиента.WAFs are an important mitigation as attackers target web applications for an ingress point into an organization similar to a client endpoint. WAF подходят для обоихWAFs are appropriate for both

  • Организации, не имеющие надежной программы безопасности приложений, так как это критическая мера безопасности (во многом подобно парачуте на плоскости).Organizations without a strong application security program as it’s a critical safety measure(much like a parachute in a plane. Обратите внимание, что это не должен быть единственный плановый механизм безопасности для уменьшения объема и серьезности ошибок безопасности в приложениях.Note that this shouldn’t be the only planned safety mechanism to reduce the volume and severity of security bugs in your applications. Дополнительные сведения см. в разделе сокращение объема и влияния ошибок безопасности.For details, see Reduce security bug volume and impact.

  • Организации, которые вкладывают в систему безопасность приложений как WAF, предоставляют ценную дополнительную защиту.Organizations who have invested in application security as WAFs provide a valuable additional defense in-depth mitigation. WAF в этом случае выступает в качестве финального механизма безопасности в случае, если в жизненном цикле разработки была пропущена ошибка безопасности.WAFs in this case act as a final safety mechanism in case a security bug was missed by security practices in the development lifecycle.

Корпорация Майкрософт предоставляет возможности WAF в шлюзе приложений Azure , и многие поставщики предлагают эти возможности в качестве изолированных устройств безопасности или в составе брандмауэров следующего поколения.Microsoft includes WAF capabilities in Azure Application Gateway and many vendors offer these capabilities as standalone security appliances or as part of next generation firewalls.

Следуйте рекомендациям по безопасности контейнеровFollow best practices for container security

Приложения, размещенные в контейнерах, должны следовать общим рекомендациям по приложениям, а также некоторые конкретные рекомендации по управлению этим новым типом архитектуры приложения.Applications hosted in containers should follow general application best practices as well as some specific guidelines to manage this new application architecture type

Контейнерные приложения сталкиваются с теми же рисками, что и любое приложение, а также добавляют новые требования для безопасного размещения и управления контейнерными приложениями.Containerized applications face the same risks as any application and also adds new requirements to securely the hosting and management of the containerized applications.

В архитектурах контейнеров приложений появился новый уровень абстракции и средств управления (обычно Kubernetes), которые увеличивают производительность труда разработчиков и внедрение принципов DevOps.Application containers architectures introduced a new layer of abstraction and management tooling (typically Kubernetes) that have increased developer productivity and adoption of DevOps principles.

Хотя это развивающееся пространство, которое быстро развивается, некоторые основные уроки и рекомендации стали очевидны:While this is an emerging space that is evolving rapidly, several key lessons learned and best practices have become clear:

  • Использование управляемой службы Kubernetes вместо установки и управления KubernetesUse a Kubernetes managed service instead of installing and managing Kubernetes
    Kubernetes — это очень сложная система, которая по-прежнему имеет ряд параметров по умолчанию, которые не являются безопасными и небольшими Kubernetes экспертами по безопасности в Marketplace.Kubernetes is a very complex system and still has a number of default settings that are not secure and few Kubernetes security experts in the marketplace. Хотя это усовершенствовано в последние годы в каждом выпуске, существует множество рисков, которые необходимо устранить.While this has been improving in recent years with each release, there are still a lot of risks that have to be mitigated.

  • Проверка контейнера и цепочки поставок контейнеровValidate container + container supply chain
    Точно так же, как следует проверять безопасность любого кода с открытым кодом, добавленного в приложения, следует также проверить контейнеры, добавляемые в приложения.Just as you should validate the security of any open-source code added to your applications, you should also validate containers you add to your applications.

    • Убедитесь, что методики, применяемые к построению контейнера, проверены по стандартам безопасности, таким как применение обновлений безопасности, Поиск нежелательного кода, например, с помощью задвижных дверей и незаконное шифрование монет занимающихся анализом, Поиск уязвимостей безопасности и применение методов безопасной разработки.Ensure that the practices applied to building the container are validated against your security standards like application of security updates, scanning for unwanted code like backdoors and illicit crypto coin miners, scanning for security vulnerabilities, and application of secure development practices.

    • Регулярно проверяйте контейнеры на предмет известных рисков в реестре контейнеров, перед использованием или во время использования.Regularly scan containers for known risks in the container registry, before use, or during use.

  • Настройка реестра известных хороших контейнеровSet up registry of known good containers
    Это позволяет разработчикам в вашей организации быстро использовать контейнеры, проверенные системой безопасности, с низким трением.This allows developers in your organization to use containers validated by security rapidly with low friction. Кроме того, создайте процесс для разработчиков, чтобы запросить и быстро получить проверку безопасности для новых контейнеров, чтобы рекомендовать разработчикам использовать этот процесс и обойти его.Additionally, build a process for developer to request and rapidly get security validation of new containers to encourage developers to use this process vs. working around it.

  • Не запускайте контейнеры в качестве привилегированных или администраторов, если не требуется явноDon’t run containers as root or administrator unless explicitly required
    Ранние версии контейнеров требовали привилегий root (что упрощает атаки), но больше не требуется для текущих версий.Early versions of containers required root privileges (which makes attacks easier), but this is no longer required with current versions.

  • Мониторинг контейнеровMonitor containers
    Убедитесь, что вы развертываете средства мониторинга безопасности, которые подписываются для отслеживания аномального поведения и позволяют исследовать инциденты.Ensure you deploy security monitoring tools that are container aware to monitor for anomalous behavior and enable investigation of incidents.

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

Дополнительные рекомендации по безопасности от корпорации Майкрософт см. в документации по безопасности Майкрософт.For additional security guidance from Microsoft, see Microsoft security documentation.