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


Руководство. Использование пакета SDK для Python для Microsoft Purview

В этом руководстве описано, как использовать пакет SDK для Python для Microsoft Purview. Пакет SDK можно использовать для выполнения всех наиболее распространенных операций Microsoft Purview программными средствами, а не с помощью портала управления Microsoft Purview.

В этом руководстве вы узнаете, как мы с помощью пакета SDK:

  • Предоставление необходимых прав для программной работы с Microsoft Purview
  • Регистрация контейнера хранилища BLOB-объектов в качестве источника данных в Microsoft Purview
  • Определение и запуск сканирования
  • Поиск в каталоге
  • Удаление источника данных

Предварительные условия

Для работы с этим руководством вам потребуется следующее:

Важно!

Для этих сценариев значение конечной точки будет отличаться в зависимости от используемого портала Microsoft Purview. Конечная точка для классического портала управления Microsoft Purview: purview.azure.com/ конечная точка для нового портала Microsoft Purview: purview.microsoft.com/

Таким образом, если вы используете новый портал, значение конечной точки будет примерно следующим: "https://consotopurview.scan.purview.microsoft.com"

Предоставление Microsoft Purview доступа к учетной записи хранения

Прежде чем проверять содержимое учетной записи хранения, необходимо предоставить Microsoft Purview правильную роль.

  1. Перейдите к учетной записи хранения через портал Azure.

  2. Выберите контроль доступа (IAM).

  3. Нажмите кнопку Добавить и выберите Добавить назначение ролей.

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

  4. В следующем окне найдите роль Читатель BLOB-объектов хранилища и выберите ее:

    Снимок экрана: меню добавления назначения ролей с выбранным средством чтения данных BLOB-объектов хранилища в списке доступных ролей.

  5. Затем перейдите на вкладку Участники и выберите Выбрать участников:

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

  6. Справа появится новая область. Найдите и выберите имя существующего экземпляра Microsoft Purview.

  7. Затем можно выбрать Проверить и назначить.

Microsoft Purview теперь имеет право на чтение, необходимое для сканирования хранилища BLOB-объектов.

Предоставление приложению доступа к учетной записи Microsoft Purview

  1. Во-первых, вам потребуется идентификатор клиента, идентификатор клиента и секрет клиента от субъекта-службы. Чтобы найти эти сведения, выберите Microsoft Entra ID.

  2. Затем выберите Регистрация приложений.

  3. Выберите приложение и найдите необходимые сведения:

    • Имя

    • Идентификатор клиента (или идентификатор приложения)

    • Идентификатор клиента (или идентификатор каталога)

      Снимок экрана: страница субъекта-службы в портал Azure с выделенными идентификатором клиента и идентификатором клиента.

    • Секрет клиента

      Снимок экрана: страница субъекта-службы в портал Azure с выбранной вкладкой Сертификаты & секреты с доступными сертификатами и секретами клиента.

  4. Теперь необходимо предоставить субъекту-службе соответствующие роли Microsoft Purview. Для этого получите доступ к экземпляру Microsoft Purview. Выберите Открыть портал управления Microsoft Purview или откройте портал управления Microsoft Purview напрямую и выберите развернутый экземпляр.

  5. На портале управления Microsoft Purview выберите Карта данных, а затем — Коллекции:

    Снимок экрана: левое меню портала управления Microsoft Purview. Выбрана вкладка

  6. Выберите коллекцию, с которой вы хотите работать, и перейдите на вкладку Назначения ролей . Добавьте субъект-службу в следующие роли:

    • Администраторы коллекции
    • Администраторы источников данных
    • Кураторы данных
    • Средства чтения данных
  7. Для каждой роли нажмите кнопку Изменить назначения ролей и выберите роль, в которую вы хотите добавить субъект-службу. Или нажмите кнопку Добавить рядом с каждой ролью и добавьте субъект-службу, выполнив поиск по его имени или идентификатору клиента, как показано ниже.

    Снимок экрана: меню

Установка пакетов Python

  1. Открытие новой командной строки или терминала
  2. Установите пакет удостоверений Azure для проверки подлинности:
    pip install azure-identity
    
  3. Установите пакет клиента проверки Microsoft Purview:
    pip install azure-purview-scanning
    
  4. Установите пакет клиента администрирования Microsoft Purview:
    pip install azure-purview-administration
    
  5. Установите пакет клиента Microsoft Purview:
    pip install azure-purview-catalog
    
  6. Установите пакет учетной записи Microsoft Purview:
    pip install azure-purview-account
    
  7. Установите пакет Azure Core:
    pip install azure-core
    

Создание файла скрипта Python

Создайте текстовый файл и сохраните его как скрипт Python с суффиксом .py. Например, tutorial.py.

Создание экземпляра клиента сканирования, каталога и администрирования

В этом разделе описано, как создать экземпляр:

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

Сначала необходимо пройти проверку подлинности в Microsoft Entra ID. Для этого вы будете использовать созданный секрет клиента.

  1. Начните с обязательных инструкций импорта: трех клиентов, инструкции учетных данных и инструкции исключений Azure.

    from azure.purview.scanning import PurviewScanningClient
    from azure.purview.catalog import PurviewCatalogClient
    from azure.purview.administration.account import PurviewAccountClient
    from azure.identity import ClientSecretCredential 
    from azure.core.exceptions import HttpResponseError
    
  2. Укажите в коде следующие сведения:

    • Идентификатор клиента (или идентификатор приложения)
    • Идентификатор клиента (или идентификатор каталога)
    • Секрет клиента
    client_id = "<your client id>" 
    client_secret = "<your client secret>"
    tenant_id = "<your tenant id>"
    
  3. Укажите конечную точку:

    Важно!

    Значение конечной точки будет отличаться в зависимости от используемого портала Microsoft Purview. Конечная точка для классического портала управления Microsoft Purview: https://{your_purview_account_name}.purview.azure.com/ Конечная точка для нового портала Microsoft Purview: https://api.purview-service.microsoft.com

    Проверка конечной точки для классического портала управления Microsoft Purview: https://{your_purview_account_name}.scan.purview.azure.com/ Конечная точка для нового портала Microsoft Purview: https://api.scan.purview-service.microsoft.com

    purview_endpoint = "<endpoint>"
    
    purview_scan_endpoint = "<scan endpoint>"
    
  4. Теперь можно создать экземпляры трех клиентов:

    def get_credentials():
        credentials = ClientSecretCredential(client_id=client_id, client_secret=client_secret, tenant_id=tenant_id)
        return credentials
    
    def get_purview_client():
        credentials = get_credentials()
        client = PurviewScanningClient(endpoint=purview_scan_endpoint, credential=credentials, logging_enable=True)  
        return client
    
    def get_catalog_client():
        credentials = get_credentials()
        client = PurviewCatalogClient(endpoint=purview_endpoint, credential=credentials, logging_enable=True)
        return client
    
    def get_admin_client():
        credentials = get_credentials()
        client = PurviewAccountClient(endpoint=purview_endpoint, credential=credentials, logging_enable=True)
        return client
    

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

Регистрация источника данных

В этом разделе описано, как зарегистрировать хранилище BLOB-объектов.

  1. Как мы уже говорили в предыдущем разделе, сначала вы импортируете клиенты, необходимые для доступа к учетной записи Microsoft Purview. Кроме того, импортируйте пакет ответа на ошибки Azure, чтобы можно было устранить неполадки, и ClientSecretCredential, чтобы создать учетные данные Azure.

    from azure.purview.administration.account import PurviewAccountClient
    from azure.purview.scanning import PurviewScanningClient
    from azure.core.exceptions import HttpResponseError
    from azure.identity import ClientSecretCredential
    
  2. Соберите идентификатор ресурса для учетной записи хранения, следуя следующему руководству: получите идентификатор ресурса для учетной записи хранения.

  3. Затем в файле Python определите следующие сведения, чтобы иметь возможность программно зарегистрировать хранилище BLOB-объектов:

    storage_name = "<name of your Storage Account>"
    storage_id = "<id of your Storage Account>"
    rg_name = "<name of your resource group>"
    rg_location = "<location of your resource group>"
    reference_name_purview = "<name of your Microsoft Purview account>"
    
  4. Укажите имя коллекции, в которой вы хотите зарегистрировать хранилище BLOB-объектов. (Это должна быть та же коллекция, в которой вы применили разрешения ранее. Если это не так, сначала примените разрешения к этой коллекции.) Если это корневая коллекция, используйте то же имя, что и экземпляр Microsoft Purview.

    collection_name = "<name of your collection>"
    
  5. Создайте функцию для создания учетных данных для доступа к учетной записи Microsoft Purview:

    client_id = "<your client id>" 
    client_secret = "<your client secret>"
    tenant_id = "<your tenant id>"
    
    
    def get_credentials():
         credentials = ClientSecretCredential(client_id=client_id, client_secret=client_secret, tenant_id=tenant_id)
         return credentials
    
  6. Все коллекции в Схема данных Microsoft Purview имеют понятное имя и имя.

    • Понятное имя — это имя, отображаемое в коллекции. Например: Продажи.
    • Имя всех коллекций (кроме корневой) — это имя из шести символов, присвоенное картой данных.

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

    Важно!

    Значение конечной точки будет отличаться в зависимости от используемого портала Microsoft Purview. Конечная точка для классического портала управления Microsoft Purview: purview.azure.com/ конечная точка для нового портала Microsoft Purview: purview.microsoft.com/

    Таким образом, если вы используете новый портал, значение конечной точки будет примерно следующим: "https://consotopurview.scan.purview.microsoft.com"

    def get_admin_client():
         credentials = get_credentials()
         client = PurviewAccountClient(endpoint=purview_endpoint, credential=credentials, logging_enable=True)
         return client
    
    try:
      admin_client = get_admin_client()
    except ValueError as e:
        print(e)
    
    collection_list = client.collections.list_collections()
     for collection in collection_list:
      if collection["friendlyName"].lower() == collection_name.lower():
          collection_name = collection["name"]
    
  7. Для обоих клиентов и в зависимости от операций также необходимо предоставить текст ввода. Чтобы зарегистрировать источник, необходимо указать текст входных данных для регистрации источника данных:

    ds_name = "<friendly name for your data source>"
    
    body_input = {
            "kind": "AzureStorage",
            "properties": {
                "endpoint": f"https://{storage_name}.blob.core.windows.net/",
                "resourceGroup": rg_name,
                "location": rg_location,
                "resourceName": storage_name,
                "resourceId": storage_id,
                "collection": {
                    "type": "CollectionReference",
                    "referenceName": collection_name
                },
                "dataUseGovernance": "Disabled"
            }
    }    
    
  8. Теперь вы можете вызвать клиенты Microsoft Purview и зарегистрировать источник данных.

    Важно!

    Значение конечной точки будет отличаться в зависимости от используемого портала Microsoft Purview. Конечная точка для классического портала управления Microsoft Purview: https://{your_purview_account_name}.purview.azure.com/ Конечная точка для нового портала Microsoft Purview: https://api.purview-service.microsoft.com

    Если вы используете классический портал, значение конечной точки будет следующим: https://{your_purview_account_name}.scan.purview.azure.com Если вы используете новый портал, значение конечной точки будет следующим: https://scan.api.purview-service.microsoft.com

    def get_purview_client():
         credentials = get_credentials()
         client = PurviewScanningClient(endpoint={{ENDPOINT}}, credential=credentials, logging_enable=True)  
         return client
    
    try:
        client = get_purview_client()
    except ValueError as e:
        print(e)
    
    try:
        response = client.data_sources.create_or_update(ds_name, body=body_input)
        print(response)
        print(f"Data source {ds_name} successfully created or updated")
    except HttpResponseError as e:
        print(e)
    

При успешном выполнении процесса регистрации вы увидите расширенный ответ от клиента.

В следующих разделах вы просканируете зарегистрированный источник данных и выполните поиск в каталоге. Каждый из этих скриптов будет иметь аналогичную структуру этому скрипту регистрации.

Полный код

from azure.purview.scanning import PurviewScanningClient
from azure.identity import ClientSecretCredential 
from azure.core.exceptions import HttpResponseError
from azure.purview.administration.account import PurviewAccountClient

client_id = "<your client id>" 
client_secret = "<your client secret>"
tenant_id = "<your tenant id>"
purview_endpoint = "<endpoint>"
purview_scan_endpoint = "<scan endpoint>"
storage_name = "<name of your Storage Account>"
storage_id = "<id of your Storage Account>"
rg_name = "<name of your resource group>"
rg_location = "<location of your resource group>"
collection_name = "<name of your collection>"
ds_name = "<friendly data source name>"

def get_credentials():
	credentials = ClientSecretCredential(client_id=client_id, client_secret=client_secret, tenant_id=tenant_id)
	return credentials

def get_purview_client():
	credentials = get_credentials()
	client = PurviewScanningClient(endpoint=purview_scan_endpoint, credential=credentials, logging_enable=True)  
	return client

def get_admin_client():
	credentials = get_credentials()
	client = PurviewAccountClient(endpoint=purview_endpoint, credential=credentials, logging_enable=True)
	return client

try:
	admin_client = get_admin_client()
except ValueError as e:
        print(e)

collection_list = admin_client.collections.list_collections()
for collection in collection_list:
	if collection["friendlyName"].lower() == collection_name.lower():
		collection_name = collection["name"]


body_input = {
	"kind": "AzureStorage",
	"properties": {
		"endpoint": f"https://{storage_name}.blob.core.windows.net/",
		"resourceGroup": rg_name,
		"location": rg_location,
		"resourceName": storage_name,
 		"resourceId": storage_id,
		"collection": {
			"type": "CollectionReference",
			"referenceName": collection_name
		},
		"dataUseGovernance": "Disabled"
	}
}

try:
	client = get_purview_client()
except ValueError as e:
        print(e)

try:
	response = client.data_sources.create_or_update(ds_name, body=body_input)
	print(response)
	print(f"Data source {ds_name} successfully created or updated")
except HttpResponseError as e:
    print(e)

Сканирование источника данных

Сканирование источника данных можно выполнить в два этапа:

  1. Создание определения сканирования
  2. Активация запуска сканирования

В этом руководстве вы будете использовать правила проверки по умолчанию для контейнеров хранилища BLOB-объектов. Однако вы также можете создавать настраиваемые правила проверки программными средствами с помощью клиента проверки Microsoft Purview.

Теперь давайте просмотрим источник данных, зарегистрированный ранее.

  1. Добавьте инструкцию import для создания уникального идентификатора, вызовите клиент проверки Microsoft Purview, клиент администрирования Microsoft Purview, пакет ответа на ошибки Azure для устранения неполадок и секретные учетные данные клиента для сбора учетных данных Azure.

    import uuid
    from azure.purview.scanning import PurviewScanningClient
    from azure.purview.administration.account import PurviewAccountClient
    from azure.core.exceptions import HttpResponseError
    from azure.identity import ClientSecretCredential 
    
  2. Создайте клиент проверки, используя свои учетные данные:

    client_id = "<your client id>" 
    client_secret = "<your client secret>"
    tenant_id = "<your tenant id>"
    
    def get_credentials():
         credentials = ClientSecretCredential(client_id=client_id, client_secret=client_secret, tenant_id=tenant_id)
         return credentials
    
    def get_purview_client():
         credentials = get_credentials()
         client = PurviewScanningClient(endpoint=f"https://{reference_name_purview}.scan.purview.azure.com", credential=credentials, logging_enable=True)  
         return client
    
    try:
         client = get_purview_client()
    except ValueError as e:
         print(e)
    
  3. Добавьте код для сбора внутреннего имени коллекции. (Дополнительные сведения см. в предыдущем разделе.

    collection_name = "<name of the collection where you will be creating the scan>"
    
    def get_admin_client():
         credentials = get_credentials()
         client = PurviewAccountClient(endpoint=purview_endpoint, credential=credentials, logging_enable=True)
         return client
    
    try:
        admin_client = get_admin_client()
    except ValueError as e:
        print(e)
    
    collection_list = client.collections.list_collections()
     for collection in collection_list:
      if collection["friendlyName"].lower() == collection_name.lower():
          collection_name = collection["name"]
    
  4. Затем создайте определение сканирования:

    ds_name = "<name of your registered data source>"
    scan_name = "<name of the scan you want to define>"
    reference_name_purview = "<name of your Microsoft Purview account>"
    
    body_input = {
            "kind":"AzureStorageMsi",
            "properties": { 
                "scanRulesetName": "AzureStorage", 
                "scanRulesetType": "System", #We use the default scan rule set 
                "collection": 
                    {
                        "referenceName": collection_name,
                        "type": "CollectionReference"
                    }
            }
    }
    
    try:
        response = client.scans.create_or_update(data_source_name=ds_name, scan_name=scan_name, body=body_input)
        print(response)
        print(f"Scan {scan_name} successfully created or updated")
    except HttpResponseError as e:
        print(e)
    
  5. Теперь, когда проверка определена, можно запустить запуск сканирования с уникальным идентификатором:

    run_id = uuid.uuid4() #unique id of the new scan
    
    try:
        response = client.scan_result.run_scan(data_source_name=ds_name, scan_name=scan_name, run_id=run_id)
        print(response)
        print(f"Scan {scan_name} successfully started")
    except HttpResponseError as e:
        print(e)
    

Полный код

import uuid
from azure.purview.scanning import PurviewScanningClient
from azure.purview.administration.account import PurviewAccountClient
from azure.identity import ClientSecretCredential

ds_name = "<name of your registered data source>"
scan_name = "<name of the scan you want to define>"
reference_name_purview = "<name of your Microsoft Purview account>"
client_id = "<your client id>" 
client_secret = "<your client secret>"
tenant_id = "<your tenant id>"
collection_name = "<name of the collection where you will be creating the scan>"

def get_credentials():
	credentials = ClientSecretCredential(client_id=client_id, client_secret=client_secret, tenant_id=tenant_id)
	return credentials

def get_purview_client():
	credentials = get_credentials()
	client = PurviewScanningClient(endpoint=purview_scan_endpoint, credential=credentials, logging_enable=True)  
	return client

def get_admin_client():
	credentials = get_credentials()
	client = PurviewAccountClient(endpoint=purview_endpoint, credential=credentials, logging_enable=True)
	return client

try:
	admin_client = get_admin_client()
except ValueError as e:
        print(e)

collection_list = admin_client.collections.list_collections()
for collection in collection_list:
	if collection["friendlyName"].lower() == collection_name.lower():
		collection_name = collection["name"]


try:
	client = get_purview_client()
except AzureError as e:
	print(e)

body_input = {
	"kind":"AzureStorageMsi",
	"properties": { 
		"scanRulesetName": "AzureStorage", 
		"scanRulesetType": "System",
		"collection": {
			"type": "CollectionReference",
			"referenceName": collection_name
		}
	}
}

try:
	response = client.scans.create_or_update(data_source_name=ds_name, scan_name=scan_name, body=body_input)
	print(response)
	print(f"Scan {scan_name} successfully created or updated")
except HttpResponseError as e:
	print(e)

run_id = uuid.uuid4() #unique id of the new scan

try:
	response = client.scan_result.run_scan(data_source_name=ds_name, scan_name=scan_name, run_id=run_id)
	print(response)
	print(f"Scan {scan_name} successfully started")
except HttpResponseError as e:
	print(e)

Каталог поиска

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

Когда ресурсы будут готовы, вы можете использовать клиент каталога Microsoft Purview для поиска по всему каталогу.

  1. На этот раз необходимо импортировать клиент каталога вместо сканирующего клиента. Также укажите ошибку HTTPResponse и ClientSecretCredential.

    from azure.purview.catalog import PurviewCatalogClient
    from azure.identity import ClientSecretCredential 
    from azure.core.exceptions import HttpResponseError
    
  2. Создайте функцию, чтобы получить учетные данные для доступа к учетной записи Microsoft Purview и создать экземпляр клиента каталога.

    client_id = "<your client id>" 
    client_secret = "<your client secret>"
    tenant_id = "<your tenant id>"
    reference_name_purview = "<name of your Microsoft Purview account>"
    
    def get_credentials():
         credentials = ClientSecretCredential(client_id=client_id, client_secret=client_secret, tenant_id=tenant_id)
         return credentials
    
    def get_catalog_client():
        credentials = get_credentials()
        client = PurviewCatalogClient(endpoint=f"https://{reference_name_purview}.scan.purview.azure.com", credential=credentials, logging_enable=True)
        return client
    
    try:
        client_catalog = get_catalog_client()
    except ValueError as e:
        print(e)  
    
  3. Настройте критерии поиска и ключевые слова во входном тексте:

    keywords = "keywords you want to search"
    
    body_input={
        "keywords": keywords
    }
    

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

  4. Поиск в каталоге:

    try:
        response = client_catalog.discovery.query(search_request=body_input)
        print(response)
    except HttpResponseError as e:
        print(e)
    

Полный код

from azure.purview.catalog import PurviewCatalogClient
from azure.identity import ClientSecretCredential 
from azure.core.exceptions import HttpResponseError

client_id = "<your client id>" 
client_secret = "<your client secret>"
tenant_id = "<your tenant id>"
reference_name_purview = "<name of your Microsoft Purview account>"
keywords = "<keywords you want to search for>"

def get_credentials():
	credentials = ClientSecretCredential(client_id=client_id, client_secret=client_secret, tenant_id=tenant_id)
	return credentials

def get_catalog_client():
	credentials = get_credentials()
	client = PurviewCatalogClient(endpoint=purview_endpoint, credential=credentials, logging_enable=True)
	return client

body_input={
	"keywords": keywords
}

try:
	catalog_client = get_catalog_client()
except ValueError as e:
	print(e)

try:
	response = catalog_client.discovery.query(search_request=body_input)
	print(response)
except HttpResponseError as e:
	print(e)

Удаление источника данных

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

  1. Импортируйте проверяющий клиент. Также укажите ошибку HTTPResponse и ClientSecretCredential.

    from azure.purview.scanning import PurviewScanningClient
    from azure.identity import ClientSecretCredential 
    from azure.core.exceptions import HttpResponseError
    
  2. Создайте функцию, чтобы получить учетные данные для доступа к учетной записи Microsoft Purview и создать экземпляр клиента сканирования.

    client_id = "<your client id>" 
    client_secret = "<your client secret>"
    tenant_id = "<your tenant id>"
    reference_name_purview = "<name of your Microsoft Purview account>"
    
    def get_credentials():
         credentials = ClientSecretCredential(client_id=client_id, client_secret=client_secret, tenant_id=tenant_id)
         return credentials
    
    def get_scanning_client():
        credentials = get_credentials()
        PurviewScanningClient(endpoint=f"https://{reference_name_purview}.scan.purview.azure.com", credential=credentials, logging_enable=True) 
        return client
    
    try:
        client_scanning = get_scanning_client()
    except ValueError as e:
        print(e)  
    
  3. Удалите источник данных:

        ds_name = "<name of the registered data source you want to delete>"
        try:
            response = client_scanning.data_sources.delete(ds_name)
            print(response)
            print(f"Data source {ds_name} successfully deleted")
        except HttpResponseError as e:
            print(e)
    

Полный код

from azure.purview.scanning import PurviewScanningClient
from azure.identity import ClientSecretCredential 
from azure.core.exceptions import HttpResponseError


client_id = "<your client id>" 
client_secret = "<your client secret>"
tenant_id = "<your tenant id>"
reference_name_purview = "<name of your Microsoft Purview account>"
ds_name = "<name of the registered data source you want to delete>"

def get_credentials():
	credentials = ClientSecretCredential(client_id=client_id, client_secret=client_secret, tenant_id=tenant_id)
	return credentials

def get_scanning_client():
	credentials = get_credentials()
	client = PurviewScanningClient(endpoint=f"https://{reference_name_purview}.scan.purview.azure.com", credential=credentials, logging_enable=True) 
	return client

try:
	client_scanning = get_scanning_client()
except ValueError as e:
	print(e)  

try:
	response = client_scanning.data_sources.delete(ds_name)
	print(response)
	print(f"Data source {ds_name} successfully deleted")
except HttpResponseError as e:
	print(e)