Поделиться через


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

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

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

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

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

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

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

Внимание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Облачный поток использует переменные для подключения к SQL.Облачный поток успешно выполняется.

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

    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 be Granular DLP compliant: " $app.AppName " "  $app.Internal.properties.displayName " " $app.Internal.properties.owner.email
        } 
        Else{ 
            Write-Host "App is already Granular DLP 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 представляются идентификатором организации, таким как 7b97cd5c-ce38-4930-9497-eec2a95bf5f7. Обратите внимание, что только обычный соединитель Dataverse в настоящее время находится в области фильтрации конечной точки. Dataverse Dynamics и текущие соединители Dataverse не входят в объем. Кроме того, локальный экземпляр Dataverse (также известная как текущая среда) никогда не может быть заблокирован для использования в среде. Это означает, что в любой данной среде создатели всегда могут получить доступ к текущей среде Dataverse.

Поэтому правило гласит следующее:

  1. Разрешение 7b97cd5c-ce38-4930-9497-eec2a95bf5f7
  2. Отклонить *

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

  1. Разрешение Dataverse current environment
  2. Разрешение 7b97cd5c-ce38-4930-9497-eec2a95bf5f7
  3. Отклонить *

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

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

Конечные точки хранилища BLOB-объектов Azure представлены именем учетной записи хранения 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. Отклонить *

Поддержка 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 — количество правил для этого соединителя.

Извлечение существующих конфигураций коннекторов для политики DLP

Get-PowerAppDlpPolicyConnectorConfigurations 

Создание конфигураций коннекторов для политики DLP

New-PowerAppDlpPolicyConnectorConfigurations

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

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 DLP, запустив командлет 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