Фильтрация конечных точек соединителя (предварительная версия)

[Данная статья посвящена предварительному выпуску и может быть изменена.]

Фильтрация конечных точек соединителя позволяет администраторам управлять подключением конкретных конечных точек при создании приложений, потоков или чат-ботов. Он настраивается в политике данных и доступен исключительно для следующих соединителей:

  • HTTP
  • HTTP с Microsoft Entra ID (AD)
  • Веб-перехватчик HTTP
  • SQL Server (включает использование соединителя SQL Server для доступа к хранилищу данных Azure Synapse)
  • Хранилище BLOB-объектов Azure
  • SMTP
  • Автоматизация браузера
  • Автоматизация пользовательского интерфейса

Когда производитель подключает свое приложение, поток или чат-бот к заблокированной конечной точке, они видят сообщение об ошибке политики данных.

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

Правила фильтрации конечных точек не применяются к переменным среды, пользовательским входным данным или любой конечной точке, динамически созданной во время выполнения. В конструкторах приложений, потоков или чат-ботов с правилами сравниваются только статические конечные точки. Дополнительные сведения см. в описании известных ограничений.

Внимание

  • Это предварительная версия функции.
  • Предварительные версии функций не предназначены для использования в производственной среде, а их функциональность может быть ограничена. Доступ к ним предоставляется до их официального выпуска, чтобы клиенты могли их оценить и обеспечить обратную связь. На эти функции распространяются дополнительные условия использования.

Добавление правил фильтрации конечных точек в политики данных

Настраиваемая колонка конечная точка на странице готовых соединителей в разделе Политики данных указывает, поддерживает ли соединитель возможность фильтрации конечной точки.

Настраиваемая конечная точка на странице предварительно созданных соединителей.

Если значение Настраиваемая конечная точкаДа, вы можете использовать эту возможность, щелкнув правой кнопкой мыши и выбрав Настроить соединитель>Конечные точки соединителя.

Настроить соединитель > Конечные точки соединителя.

Откроется боковая панель, где вы укажете упорядоченный список шаблонов URL-адресов для разрешения или запрета. Последняя строка в списке — это правило для подстановочного знака (*), которое применяется ко всем конечным точкам в этом соединителе. По умолчанию шаблон настраивается как "Разрешить" в рамках новой политики данных, * но можно также указать его как "Разрешить" или "Запретить".

Укажите упорядоченный список шаблонов разрешенных и запрещенных URL-адресов для настраиваемых соединителей.

Добавление новых правил

Вы можете добавить новые правила, выбрав Добавить конечную точку. Новые правила добавляются в конец списка шаблонов в качестве второго к последнему правилу. Это связано с тем, что * последняя запись в списке. Однако вы также можете обновить порядок шаблонов, используя раскрывающийся список Порядок или выбрав Вверх или Вниз.

Выберите Добавить конечную точку, чтобы добавить новые правила.

После добавления шаблона его можно изменить или удалить, выбрав определенную строку, а затем нажав кнопку "Удалить".

Удаление шаблона.

После сохранения правил фильтрации конечных точек соединителя и политики данных, в которой они определены, они мгновенно применяются в целевых средах. На следующем рисунке показан пример, когда производитель пытается подключить свой облачный поток к конечной точке HTTP, которая не разрешена.

Ошибка политики данных из-за правил фильтрации конечных точек.

Известные ограничения

  • Правила фильтрации конечных точек не применяются к переменным среды, пользовательским входным данным и динамически привязанным конечным точкам во время выполнения. Применяются только статические конечные точки, известные и выбранные при создании приложения, потока или чат-бота во время разработки. Это означает, что правила фильтрации конечных точек соединителя для SQL Server и хранилища BLOB-объектов Azure не применяются, если подключения проходят проверку подлинности с помощью идентификатора Microsoft Entra. На следующих двух снимках экрана производитель создает облачный поток, определяющий SQL Server и базу данных внутри переменных, а затем использует эти переменные в качестве входных данных для определения подключения. В результате правила фильтрации конечных точек не оцениваются, и поток облака успешно выполняется.

    Снимок экрана: облачный поток, использующий переменные для подключения к SQL.

    Снимок экрана: успешное выполнение облачного потока.

  • Power Apps, опубликованные до 1 октября 2020 года, необходимо повторно опубликовать, чтобы обеспечить соблюдение правил действий коннектора политики данных и правил конечной точки. Следующий скрипт позволяет администраторам и разработчикам определять приложения, которые должны быть повторно опубликованы для соблюдения этих новых правил управления политикой данных:

    Add-PowerAppsAccount
    
    $GranularDLPDate = Get-Date -Date "2020-10-01 00:00:00Z"
    
    ForEach ($app in Get-AdminPowerApp){
    
        $versionAsDate = [datetime]::Parse($app.LastModifiedTime)
    
        $olderApp = $versionAsDate -lt $GranularDLPDate
    
        $wasBackfilled = $app.Internal.properties.executionRestrictions -ne $null -and $app.Internal.properties.executionRestrictions.dataLossPreventionEvaluationResult -ne $null -and ![string]::IsNullOrEmpty($app.Internal.properties.executionRestrictions.dataLossPreventionEvaluationResult.lastAdvancedBackfillDate) 
    
        If($($olderApp -and !$wasBackfilled)){
            Write-Host "App must be republished to comply with granular data policy: " $app.AppName " "  $app.Internal.properties.displayName " " $app.Internal.properties.owner.email
        } 
        Else{ 
            Write-Host "App is already Granular data policy compliant: " $app.AppName 
        }
    }
    

Форматы ввода конечной точки и примеры

Каждый соединитель определяет конечную точку по-разному, а некоторые конечные точки могут находиться в нескольких форматах. Таким образом, необходимо указать конечные точки во всех возможных форматах, чтобы предотвратить их использование разработчиками при создании приложений и потоков. Администраторы могут ввести полное имя конечной точки или использовать шаблон, соответствующий подстановочным знаком (*) для создания правила фильтрации конечных точек. Эти правила вводятся и представлены в упорядоченном списке шаблонов конечных точек, что означает, что они оцениваются в порядке возрастания по числу. Последнее правило для любого соединителя всегда * Разрешить или * Запретить. «Разрешить» — это значение по умолчанию, которое можно изменить на «Запретить».

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

SQL Server

Вывод списка конечных точек подключения SQL Server в <Server_name, database_name> формате. Несколько вещей, которые следует учитывать:

  • Создатели могут вводить имя сервера в различных форматах. Чтобы подключиться к конечной точке, введите ее во всех возможных форматах. Например, локальные экземпляры могут быть в формате <machine_name\named_instance, database_name> или <IP address, custom port, database_name>. В этом случае вам придется применить правила разрешения или блокировки в обоих форматах для конечной точки. Например:

    • Блокировка WS12875676\Servername1,MktingDB
    • Блокировка 11.22.33.444,1401,MktingDB
  • Специальная логика не обрабатывает относительные адреса, такие как localhost. Таким образом, если вы заблокируете *localhost*, это запретит создателям использовать любые конечные точки, используя localhost как часть конечной точки SQL Server. Однако это не мешает им получать доступ к конечной точке, используя абсолютный адрес, если только абсолютный адрес также не был заблокирован администратором.

Ниже приведены некоторые примеры.

  • Разрешить только экземпляры Azure SQL Server:

    1. Разрешение *.database.windows.net*
    2. Отклонить *
  • Разрешить только определенный диапазон IP-адресов: (IP-адреса, которые не разрешены, по-прежнему могут быть введены создателем в <machine_name\named_instance> формате.)

    1. Разрешение 11.22.33*
    2. Отклонить *

Dataverse

Конечные точки Dataverse представлены идентификатором организации, например 00aa00aa-bb11-cc22-dd33-44ee44ee44ee. Обратите внимание, что в настоящее время для фильтрации конечных точек доступен только обычный Dataverse соединитель. Dataverse Динамика и Dataverse токовые соединители не рассматриваются. Кроме того, локальный экземпляр Dataverse (также известная как текущая среда) никогда не может быть заблокирован для использования в среде. Это означает, что создатели всегда могут получать доступ к текущей среде Dataverse в любой конкретной среде.

Поэтому правило, которое говорит:

  1. Разрешение 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
  2. Отклонить *

Фактически означает:

  1. Разрешение Dataverse current environment
  2. Разрешение 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
  3. Отклонить *

Разрешать Dataverse current environment всегда неявно является первым правилом в списке фильтрации конечной точки Dataverse для любой среды.

Хранилище BLOB-объектов Azure

Конечные точки Azure Blob Storage используют имя учетной записи хранения Azure.

SMTP

Конечные точки SMTP представлены в формате <SMTP server address, port number>.

Рассмотрим пример сценария:

  1. Отклонить smtp.gmail.com,587
  2. Разрешение *

HTTP с Microsoft Entra ID, веб-перехватчик HTTP и соединители HTTP

Конечные точки соединителя HTTP используют шаблон URL-адреса. Действие Получить веб-ресурс HTTP с соединителем Microsoft Entra находится вне области.

Вот пример сценария:

Разрешить доступ только к странице подписок Azure в https://management.azure.com/.

  1. Разрешение https://management.azure.com/subscriptions*
  2. Отклонить https://management.azure.com/*
  3. Отклонить *

Автоматизация браузера

Эта функция позволяет управлять доступом потоков рабочего стола к веб-страницам в Power Automate для рабочего стола. Конечные точки представлены либо в формате URL-адреса, либо в формате имени веб-страницы, и вы можете использовать подстановочные знаки для динамического сопоставления URL-адресов или имен страниц. Проверка выполняется во время действий "Запустить веб-браузер" или "Перейти на веб-страницу", прежде чем поток рабочего стола переходит к взаимодействию с браузером.

Примечание.

Фильтрация конечных точек не проверяется, если действия «Запустить веб-браузер» настроены на присоединение к окну переднего плана. В таких случаях действие не блокируется, если только не запрещен доступ ко всем веб-страницам.

Рассмотрим пример сценария:

Разрешить доступ ко всем веб-страницам, за исключением URL-адреса https://www.microsoft.com/ и любого URL-адреса или веб-страницы, содержащих строку powerplatform.

  1. Отклонить https://www.microsoft.com/
  2. Отклонить *powerplatform*
  3. Разрешение *

Автоматизация пользовательского интерфейса

Эта функция позволяет определить, какие приложения и экраны рабочего потока могут взаимодействовать с Power Automate для настольных компьютеров. Конечные точки задаются с помощью имени процесса приложения. Если имя процесса — это ApplicationFrameHost, Java или Javaw, что указывает на приложение универсальной платформы Windows (UWP) или Java, где несколько экземпляров могут использовать одно и то же имя, Power Automate для настольных компьютеров использует как имя процесса, так и отображаемое имя окна для точного определения целевого объекта. Подстановочные знаки поддерживаются для гибкого сопоставления.

Проверка выполняется при любом действии в группе автоматизации пользовательского интерфейса. Он проверяет атрибут Process (указанный номер 1 на изображении) или атрибут Name (указанный номер 2 на изображении) в селекторе целевого экрана (как показано стрелкой на изображении). Обычно родительский элемент связанного пользовательского интерфейса используется для определения того, разрешено ли взаимодействие.

Селектор экрана

Правила фильтрации конечных точек не применяются к переменным или динамически привязанным конечным точкам. Если выражение содержит что-либо другое, кроме литеральной строки, фильтрация обходится, потенциально позволяя доступ к ограниченным аргументам соединителя. Поведение политики по умолчанию — все политики фильтрации конечных точек включают основное правило (разрешить * или запретить *), по умолчанию — разрешить * (разрешить все).

  • Если параметр Allow * используется: динамические значения не фильтруются. Любое динамическое выражение обходит фильтрацию конечных точек, даже если определённые приложения ограничены.
  • Если параметр Deny * используется: все динамические значения блокируются по умолчанию, обеспечивая более строгое применение.

Примечание.

  • Фильтрация конечных точек не применяется, если соответствующие атрибуты (процесс или имя) не являются частью селектора.
  • Фильтрация конечных точек не поддерживается для определенных элементов пользовательского интерфейса операционной системы Windows, включая значки рабочего стола, кнопки панели задач и компоненты в меню "Пуск ".

Ниже приведен пример сценария. Чтобы разрешить доступ ко всем приложениям и экранам, за исключением тех, где атрибут Process или Name является точно калькулятором или содержит строку Java, можно настроить следующие правила:

  1. Отклонить Calculator
  2. Отклонить *Java*
  3. Разрешение *

Поддержка PowerShell для фильтрации конечных точек

Настройка правил фильтрации конечных точек для политики

Объект, содержащий правила фильтрации конечных точек для политики, называется конфигурациями соединителя.

Объект конфигурации соединителя имеет следующую структуру:

$ConnectorConfigurations = @{ 
  connectorActionConfigurations = @() # used for connector action rules
  endpointConfigurations = @( # array – one entry per 
    @{  
      connectorId # string
      endpointRules = @( # array – one entry per rule 
        @{ 
          order # number 
          endpoint # string
          behavior # supported values: Allow/Deny
        }
      ) 
    }
  ) 
}

Примечания

  • Последнее правило для каждого соединителя всегда должно применяться к URL-адресу * , чтобы гарантировать, что все URL-адреса охватываются правилами.
  • Свойство порядка правил для каждого соединителя должно использовать номера 1–N, где N — это число правил для этого соединителя.

Получение существующих настроек соединителя для политики данных

Get-PowerAppDlpPolicyConnectorConfigurations 

Создание конфигураций соединителя для политики данных

New-PowerAppDlpPolicyConnectorConfigurations

Обновление конфигураций соединителя для политики данных

Set-PowerAppDlpPolicyConnectorConfigurations

Пример

Цель:

Для соединителя SQL Server:

  • Запретить базу данных "testdatabase" сервера "myservername.database.windows.net"
  • Разрешить все другие базы данных сервера "myservername.database.windows.net"
  • Запретить все остальные серверы

Для соединителя SMTP:

  • Разрешить Gmail (адрес сервера: smtp.gmail.com, порт: 587)
  • Запретить все остальные адреса

Для соединителя HTTP:

  • Разрешить конечные точки https://mywebsite.com/allowedPath1 и https://mywebsite.com/allowedPath2
  • Запретить все другие URL-адреса

Примечание.

В следующем командлете PolicyName относится к уникальному GUID. Получите GUID политики данных, выполнив командлет Get-DlpPolicy .

$ConnectorConfigurations = @{ 
  endpointConfigurations = @(
    @{  
      connectorId = "/providers/Microsoft.PowerApps/apis/shared_sql" 
      endpointRules = @(
        @{ 
          order = 1 
          endpoint = "myservername.database.windows.net,testdatabase" 
          behavior = "Deny"
        }, 
        @{ 
          order = 2 
          endpoint = "myservername.database.windows.net,*" 
          behavior = "Allow"
        }, 
        @{ 
          order = 3
          endpoint = "*" 
          behavior = "Deny"
        } 
      ) 
    }, 
    @{  
      connectorId = "/providers/Microsoft.PowerApps/apis/shared_smtp" 
      endpointRules = @(
        @{ 
          order = 1 
          endpoint = "smtp.gmail.com,587" 
          behavior = "Allow"
        }, 
        @{ 
          order = 2 
          endpoint = "*" 
          behavior = "Deny"
        } 
      ) 
    },
    @{  
      connectorId = "http" 
      endpointRules = @(
        @{ 
          order = 1 
          endpoint = "https://mywebsite.com/allowedPath1" 
          behavior = "Allow"
        }, 
        @{ 
          order = 2
          endpoint = "https://mywebsite.com/allowedPath2" 
          behavior = "Allow"
        }, 
        @{ 
          order = 3
          endpoint = "*" 
          behavior = "Deny"
        } 
      ) 
    } 
  ) 
}
New-PowerAppDlpPolicyConnectorConfigurations -TenantId $TenantId -PolicyName $PolicyName -NewDlpPolicyConnectorConfigurations $ConnectorConfigurations