在 Microsoft Purview 中連接並管理 Snowflake

本文說明如何註冊 Snowflake,以及如何在 Microsoft Purview 中驗證與互動 Snowflake。 欲了解更多關於 Microsoft Purview 的資訊,請閱讀 Microsoft Purview 概述。

重要事項

Snowflake 宣布淘汰基本驗證 ,並計劃於 2026 年 8 月前停用。 為配合變更並避免服務中斷,Microsoft Purview 客戶使用 Snowflake Data Map 連接器時,應轉用 SHIR) 驗證 (金鑰對。

建議行動 (於 2026 年 7 月完成) :為給客戶更多時間,Snowflake 允許類型為 LEGACY_SERVICE 的服務使用者持續使用基本認證至 2026 年 7 月。 此政策有助於確保您在轉換到新身份驗證方式期間,服務不會受到干擾。 你可以在有限時間內繼續使用基本認證,同時設定並驗證新的認證機制 Key Pair。

我們建議Microsoft Purview 客戶將使用者更新為 LEGACY_SERVICE 類型。 此變更確保持續通行,並提供更多時間完成交接。 此更新必須在 2026 年 7 月底前完成,透過在 Snowflake 執行以下指令:

*ALTER USER <purview_user_name> SET TYPE = LEGACY_SERVICE;

自 2026 年 8 月起,禁止以 LEGACY_SERVICE 類型創建新用戶。

支援功能

以下章節說明在 Microsoft Purview 掃描 Snowflake 時可用的功能。

掃描能力

下表總結了 Microsoft Purview 中 Snowflake 所支援的掃描功能。

元資料擷取 全掃描 增量掃描 瞄準鏡掃描
是 是 否 是

掃描 Snowflake 來源時,Microsoft Purview 支援:

  • 擷取技術元資料,包括:

    • 伺服器
    • 資料庫
    • Schemas
    • 包含欄位、外鍵與唯一限制的表格
    • 包含柱子的景觀
    • 儲存程序,包括參數資料集與結果集
    • 函數,包括參數資料集
    • 管線
    • 階段
    • 包括柱子在內的溪流
    • 工作
    • Sequences
  • 擷取資料表、檢視、串流與儲存程序間資產關係的靜態血統。

對於儲存程序,你可以在 「建立並執行掃描 」區塊中選擇要提取的細節層級。 儲存程序沿承支援 Snowflake 腳本 (SQL) 與 JavaScript 語言,並根據程序定義產生。

在設定掃描時,你可以選擇完全根據名字或名稱模式掃描一個或多個 Snowflake 資料庫,或進一步將掃描範圍擴大到與名字或名稱模式相符的子集結構。

其他功能

關於 分類、 敏感性標籤、 政策、 資料血統及 即時檢視,請參閱 支援功能清單。

已知限制

在 Microsoft Purview 掃描 Snowflake 時請注意以下限制。

  • 當你從資料來源刪除物件時,後續掃描不會自動移除 Microsoft Purview 中對應的資產。
  • 以下模式不支援儲存程序沿革:
    • 以 Java、Python 和 Scala 語言定義的儲存程序。
    • 使用 SQL 執行 即時執行的儲存程序,並以靜態 SQL 查詢作為變數。

必要條件

掃描所需的權限

Microsoft Purview 支援基本的驗證, (使用者名稱和密碼) 來掃描 Snowflake。 執行掃描時會使用指定的使用者預設角色。 Snowflake 使用者必須擁有倉庫及待掃描資料庫的使用權限,並能讀取系統資料表以存取進階元資料。

這裡有一個範例攻略,教你建立專門用於 Microsoft Purview 的使用者掃描並設定權限。 如果你選擇使用現有使用者,請確保它對倉庫和資料庫物件擁有足夠的權限。

  1. 建立一個 purview_reader 角色。 你需要 ACCOUNTADMIN 權限才能做到這點。

    USE ROLE ACCOUNTADMIN;
    
    --create role to allow read only access - this will later be assigned to the Microsoft Purview user
    CREATE OR REPLACE ROLE purview_reader;
    
    --make sysadmin the parent role
    GRANT ROLE purview_reader TO ROLE sysadmin;
    
  2. 建立一個倉庫供 Microsoft Purview 使用並授予權限。

    --create warehouse - account admin required
    CREATE OR REPLACE WAREHOUSE purview_wh WITH 
        WAREHOUSE_SIZE = 'XSMALL' 
        WAREHOUSE_TYPE = 'STANDARD' 
        AUTO_SUSPEND = 300 
        AUTO_RESUME = TRUE 
        MIN_CLUSTER_COUNT = 1 
        MAX_CLUSTER_COUNT = 2 
        SCALING_POLICY = 'STANDARD';
    
    --grant rights to the warehouse
    GRANT USAGE ON WAREHOUSE purview_wh TO ROLE purview_reader;
    
  3. 建立一個 Microsoft Purview 掃描的使用者 purview 。

    CREATE OR REPLACE USER purview 
        PASSWORD = '<password>'; 
    
    --note the default role will be used during scan
    ALTER USER purview SET DEFAULT_ROLE = purview_reader;
    
    --add user to purview_reader role
    GRANT ROLE purview_reader TO USER purview;
    
  4. 授予讀者資料庫物件的權利。

    GRANT DATABASE ROLE SNOWFLAKE.OBJECT_VIEWER TO USER purview_reader;
    GRANT USAGE ON DATABASE <your_database_name> TO purview_reader;
    
    --grant reader access to all the database structures that purview can currently scan
    GRANT USAGE ON ALL SCHEMAS IN DATABASE <your_database_name> TO role purview_reader;
    GRANT USAGE ON ALL FUNCTIONS IN DATABASE <your_database_name> TO role purview_reader;
    GRANT USAGE ON ALL PROCEDURES IN DATABASE <your_database_name> TO role purview_reader;
    GRANT SELECT ON ALL TABLES IN DATABASE <your_database_name> TO role purview_reader;
    GRANT SELECT ON ALL VIEWS IN DATABASE <your_database_name> TO role purview_reader;
    GRANT USAGE, READ on ALL STAGES IN DATABASE <your_database_name> TO role purview_reader;
    
    --grant reader access to any future objects that could be created
    GRANT USAGE ON FUTURE SCHEMAS IN DATABASE <your_database_name> TO role purview_reader;
    GRANT USAGE ON FUTURE FUNCTIONS IN DATABASE <your_database_name> TO role purview_reader;
    GRANT USAGE ON FUTURE PROCEDURES IN DATABASE <your_database_name> TO role purview_reader;
    GRANT SELECT ON FUTURE TABLES IN DATABASE <your_database_name> TO role purview_reader;
    GRANT SELECT ON FUTURE VIEWS IN DATABASE <your_database_name> TO role purview_reader;
    GRANT USAGE, READ ON FUTURE STAGES IN DATABASE <your_database_name> TO role purview_reader;
    

登錄

本節說明如何利用經典 的 Microsoft Purview 治理入口網站在 Microsoft Purview 註冊 Snowflake。

註冊步驟

要在 Microsoft Purview 整合式目錄中註冊新的 Snowflake 來源,請遵循以下步驟:

  1. 在經典的 Microsoft Purview 治理入口網站中,進入您的 Microsoft Purview 帳戶。
  2. 在左側導覽中選擇 「資料地圖 」。
  3. 選擇 登記。
  4. 在「註冊來源」中,選擇 Snowflake。 選取 [繼續]。

在 Snowflake) (Register 來源 畫面中,請依照以下步驟操作:

  1. 輸入一個 名稱,該 資料來源會在目錄中列出。

  2. 輸入伺服器網址<account_identifier>.snowflakecomputing.comorgname-accountname.snowflakecomputing.com,例如 。 了解更多關於 Snowflake 帳號識別碼的資訊。 請注意,此 URL 是 Snowflake 資產完全限定名稱的一部分,並且是 Microsoft Purview 在掃描時連接 Snowflake 的預設端點。

  3. 如果適用,請增加 額外的宿主 。 當你想讓掃描操作連接到 Snowflake 端點(除了伺服器 URL)時,再指定它。 你可以在掃描設定時選擇連線主機。

    提示

    如果你已經掃描過 Snowflake,但想切換到其他端點,例如從公用端點切換到私有端點,你可以在資料來源中新增另一台主機,並在掃描中選擇該主機作為連線對象,以確保 Microsoft Purview 產生的資產名稱與之前相同。

    註冊資料來源時,Microsoft Purview 會進行唯一性檢查,確保伺服器網址及其他主機與現有來源不重疊。

  4. 從列表中選擇一個收藏。

  5. 完成註冊資料來源。

    Microsoft Purview 中 Snowflake 註冊來源頁面的截圖,包含名稱、伺服器 URL 及集合欄位。

掃描

請依照以下步驟掃描 Snowflake,自動識別資產。 關於掃描的更多資訊,請參閱我們 對掃描與攝取的介紹。

掃描驗證

Snowflake 來源所支援的認證類型為 基本認證 與 金鑰配對。

請依此流程設定金鑰對憑證。

金鑰對驗證的前提條件

開始前,請確保你具備:

  1. 雪花通道

    1. 擁有管理員權限的 Snowflake 帳號

    2. 例如,Microsoft Purview 掃描 (的使用者帳號,purview_scanner)

    3. 執行 ALTER USER 指令的存取權

  2. 工具 & 軟體

    1. OpenSSL 安裝了 (用於金鑰產生)

    2. Azure CLI 或 PowerShell (用於金鑰保存庫操作)

    3. 存取 Microsoft Purview 入口網站

    4. 請確保你有 Microsoft Open JDK 11。 下載 Microsoft Open JDK 11。 其他 JDK 變體可能在進階加密演算法上遇到問題。

逐步配置

第一部分:雪花配置

此步驟包括建立公鑰與私鑰,並將公鑰指派給下方範例 () 中標示的「purview_scanner」,該使用者連接至 Snowflake 執行掃描。

步驟 1.1:產生 RSA 金鑰對

  • 產生私鑰

打開終端機並產生私鑰:

--For Encrypted Private Key (Recommended):  

openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA512 - inform PEM -out rsa_key.p8  

--Note: You'll be prompted to enter a passphrase. Remember this passphrase! 

OR

--For Unencrypted Private Key:  

openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 aes-256-cbc -v2prf hmacWithSHA512 - inform PEM -out rsa_key.p8 -nocrypt 

注意:請使用上述指令來產生金鑰

  • 產生公鑰
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub 
  • 擷取公鑰內容

查看並複製公鑰內容 (排除標頭) :

cat rsa_key.pub 
-----BEGIN PUBLIC KEY----- 
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA... 
... -----END PUBLIC KEY----- 

複製 BEGIN 和 END 行之間的所有內容 (不包含分隔線) 。

步驟 1.2:將公鑰指派給 Snowflake 使用者

連接 Snowflake 並執行:

-- Create user if it doesn't exist 
CREATE USER IF NOT EXISTS purview_scanner 
  DEFAULT_ROLE = 'PUVRIEW_READER' 
  TYPE = 'SERVICE'  ; 
 -- Assign the public key (paste your key without the BEGIN/END lines) 
ALTER USER purview_scanner  
SET RSA_PUBLIC_KEY='MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...'; 
 -- Grant necessary privileges 
GRANT ROLE purview_reader TO USER purview_scanner; 
 -- Verify the fingerprint 
DESC USER purview_scanner; 

步驟 1.3:驗證金鑰設定【驗證步驟選用】

驗證公鑰指紋匹配:

在《Snowflake》中:

DESC USER purview_scanner ->> SELECT SUBSTR( 
(SELECT "value" FROM $1 
WHERE "property" = 'RSA_PUBLIC_KEY_FP'), 
LEN('SHA256:') + 1) AS key; 

在指令列中:

openssl rsa -pubin -in rsa_key.pub -outform DER | openssl dgst -sha256 -binary | openssl 
enc -base64 

請注意,兩者應該產生相同的指紋雜湊值。

第二部分:Azure 金鑰保存庫 設定

步驟 2.1:準備私鑰內容

查看您的私鑰:

cat rsa_key.p8 

複製整個內容,包括-----開始加密私鑰----------結束加密私鑰-----行。

步驟 2.2:將秘密儲存在Azure 金鑰保存庫

你需要在Azure 金鑰保存庫中儲存兩個秘密:

秘密一:私鑰

關鍵要求:私鑰必須使用 CLI 或 Azure Cloud Shell 儲存Azure。

千萬不要使用 Azure 入口網站 介面來建立私鑰秘密,因為:

  • Azure 入口網站 的文字輸入不保留多行格式

  • 它會將換行符號轉換成空格,導致 PEM 格式受損

  • Snowflake 連線會因 金鑰錯誤而失敗

密碼/密碼秘訣可以透過 Portal 建立 (單行值) 。

方法一:Azure CLI (推薦)

# Replace with your values 
KEY_VAULT_NAME="your-keyvault-name"
CREDENTIAL_NAME="snowflake-purview-cred" 

# Store the private key from file (preserves multi-line format) 
az keyvault secret set \
 --vault-name $KEY_VAULT_NAME \
 --name "${CREDENTIAL_NAME}-privateKey" \
 --file rsa_key.p8 

OR

方法二:Azure Cloud Shell

  1. Azure Cloud Shell (https://shell.azure.com)

  2. 請使用資料夾圖示 (上傳按鈕上傳你的 rsa_key.p8 檔案)

  3. 執行命令:

az keyvault secret set \ 
  --vault-name your-keyvault-name \ 
  --name "snowflake-purview-cred-privateKey" \ 
  --file rsa_key.p8 

OR

Method 3: PowerShell with Azure CLI

# Read the private key preserving line breaks 
$privateKeyContent = Get-Content -Path "rsa_key.p8" -Raw 
 
# Store in Key Vault using Azure CLI 
az keyvault secret set ` 
  --vault-name "your-keyvault-name" ` 
  --name "snowflake-purview-cred-privateKey" ` 
  --value $privateKeyContent 

OR

上傳後驗證私鑰格式:[可選步驟]

# Retrieve and check the secret maintains proper formatting 
az keyvault secret show \ 
  --vault-name $KEY_VAULT_NAME \ 
  --name "${CREDENTIAL_NAME}-privateKey" \ 
  --query value -o tsv 
 
# Expected output: Multiple lines like this 
# -----BEGIN ENCRYPTED PRIVATE KEY----- 
# MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w0BBQwwHAQI... 
# (multiple lines of base64 encoded content) 
# ... 
# -----END ENCRYPTED PRIVATE KEY-----

正確:多行且保留換行

錯誤:單行或文字中空格取代換行

秘密二:私鑰密碼

密碼短語可以用 Azure 入口網站 或 Azure CLI 建立, (它是單行值) 。

# Store the passphrase (if your key is encrypted) 
az keyvault secret set \
 --vault-name $KEY_VAULT_NAME \
 --name "${CREDENTIAL_NAME}-password" \
 --value "your_passphrase_here" 

重要: 如果你使用 了未加密 的私鑰,仍然需要建立 .password 秘密,但要設成空字串或佔位值。

使用 Azure 入口網站:

  1. 前往 秘密→產生/匯入

  2. 名稱:snowflake-purview-cred.password(雪花-主觀-cred.password)

  3. 價值:你的密碼短語 (或空字串用於未加密金鑰)

  4. 選取 [建立]

建立並執行掃描

要建立並執行新的掃描,請依照以下步驟操作:

  1. 在經典的 Microsoft Purview 治理入口網站中,請前往來源。

  2. 選擇註冊的 Snowflake 來源。

  3. 選擇 + 新掃描。

  4. 提供下列詳細資料:

    1. 名稱:掃描的名稱

    2. 透過整合執行時連接:根據你的情境選擇 Azure 自動解析整合執行時、管理型虛擬網路 IR 或 SHIR。 了解更多請參閱「 選擇適合您情境的整合執行時配置」。 若要使用 Managed 虛擬網路 IR 透過私有連結連接 Snowflake,請先依照「透過受管理私有端點連接 Snowflake」中的步驟設定私有端點。

    3. 連線主機:選擇掃描時用來建立 Snowflake 連線的端點。 你可以選擇伺服器網址或在 註冊中設定的其他主機。

    4. 憑證:選擇要連接到資料來源的憑證。

      如果在建立憑證時使用 基本認證 。

      • 請在使用者名稱輸入欄位提供連接 Snowflake 的使用者名稱。
      • 將用來連接 Snowflake 的使用者密碼存入秘密金鑰中。

      如果在建立憑證時使用 Key Pair

      • 提供使用者名稱:purview_scanner (你的 Snowflake 用戶)

      • 密碼金鑰保存庫參考:

      • 金鑰保存庫連接:選擇您的金鑰保存庫

      • 秘密名稱:snowflake-purview-cred.password

      • 私金鑰保存庫參考:
      • 金鑰保存庫連接:選擇您的金鑰保存庫

      • 秘密名稱:snowflake-purview-cred.privateKey

    5. 倉庫:請指定用於大寫掃描的倉庫實例名稱。 憑證中指定的使用者預設角色必須在此倉庫擁有使用權限。

    6. 資料庫:指定一個或多個資料庫實例名稱以大寫匯入。 請用分號分 (;) 分隔列表中的姓名。 例如,DB1;DB2。 憑證中指定的使用者預設角色必須對資料庫物件擁有足夠的權限。

      注意事項

      當指定多個資料庫實例名稱時,不會對資料表進行分類。

      可接受的資料庫名稱模式可以是靜態名稱,也可以包含萬用字元百分比。 例如: A%;%B;%C%;D

      • 以 A 或
      • 以 B 或 結尾
      • 包含 C 或
      • 等於D
    7. Schema:以分號分隔列表的方式匯入結構子集。 例如,schema1;schema2。 如果該清單是空的,所有使用者結構都會被匯入。 所有系統架構與物件預設都會被忽略。

      可接受的結構名稱模式可以是靜態名稱或包含百用字百分比。 例如: A%;%B;%C%;D

      • 以 A 或
      • 以 B 或 結尾
      • 包含 C 或
      • 等於D

      使用NOT和特殊字元是不可接受的。

    8. 儲存程序細節:控制從儲存程序匯入的細節數量:

      • 簽章 (預設) :儲存程序的名稱與參數。
      • 程式碼、簽名:儲存程序的名稱、參數與程式碼。
      • 脈絡、程式碼、簽名:儲存程序的名稱、參數與程式碼,以及從程式碼衍生出的資料沿革。
      • 無:儲存程序細節未包含。

      注意事項

      如果你使用 Self-hosted Integration Runtime 來掃描,自版本 5.30.8541.1 起,支援除預設簽章外的自訂設定。 早期版本總是擷取儲存程序的名稱與參數。

    9. 使用自架整合執行時 (適用最大記憶體) :最大記憶體 (GB,) 客戶虛擬機上可供掃描程序使用。 這取決於要掃描的 Snowflake 來源的大小。

      注意事項

      一般來說,每 1000 個資料表提供 1GB 記憶體。

  5. 選擇測試連線以驗證使用Azure Integration Runtime) 時 (可用的設定。

  6. 選取 [繼續]。

  7. 選擇掃描 規則集 進行分類。 你可以選擇系統預設、現有自訂規則集,或是內嵌 建立新的規則集 。 欲了解更多資訊,請參閱 Microsoft Purview 中的「自動套用分類」。

    注意事項

    當資料表名稱、檢視名稱、結構名稱或資料庫名稱包含特殊字元時,分類不會套用到資料表或檢視表。

    注意事項

    如果你使用自架運行時,需要升級到 5.26.404.1 或更高版本才能使用 Snowflake 分類。 下載最新的 Microsoft Integration Runtime。

  8. 選擇你的 掃描觸發器。 你可以設定排程或只跑一次掃描。

  9. 檢視你的掃描結果,選擇 儲存並執行。

查看您的掃描與掃描跑數

查看現有掃描檔:

  1. 前往 Microsoft Purview 入口網站。 在左側窗格選擇 「資料地圖」。
  2. 選擇資料來源。 你可以在 「最近掃描」頁面查看該資料來源上現有的掃描清單,或在 「掃描」 標籤中查看所有掃描。
  3. 選擇你想查看的掃描結果。 面板會顯示所有之前的掃描紀錄,以及每次掃描的狀態和指標。
  4. 選擇跑道 ID 來檢查 掃描跑的細節。

管理你的掃描

要編輯、取消或刪除掃描件:

  1. 前往 Microsoft Purview 入口網站。 在左側窗格,選擇 資料映射。

  2. 選擇資料來源。 你可以在 「最近掃描」頁面查看該資料來源上現有的掃描清單,或在 「掃描」 標籤中查看所有掃描。

  3. 選擇你想管理的掃描。 然後您可以:

    • 請選擇 「編輯掃描」來編輯掃描。
    • 選擇 取消掃描執行,請取消進行中的掃描。
    • 選擇 刪除掃描後刪除掃描。

注意事項

  • 刪除掃描檔不會刪除之前掃描產生的目錄資產。

譜系

掃描完您的 Snowflake 來源後,您可以瀏覽整合式目錄或搜尋整合式目錄以查看資產詳情。

到資產-> 血統分頁,你可以在適用時看到資產關係。 請參閱 支援能力 部分,了解支援的 Snowflake 血統情境。 欲了解更多關於血統的一般資訊,請參閱 資料血統 及 血統使用者指南。

雪花血統視角

注意事項

如果一個視圖是由不同資料庫或不同結構的資料表建立,請同時使用分號 (;) 清單中的名稱掃描所有資料庫與結構。

透過管理私人端點連接 Snowflake

本節說明從 Purview Microsoft 到 Snowflake on Azure 建立受管理私有端點 (PE) 的必要步驟。 了解更多關於 Azure Private Link 和 Snowflake 的資訊。

  1. 在你的 Snowflake 帳號中,取得目標端點和資源 ID。 執行系統函式 SYSTEM$GET_PRIVATELINK_CONFIG () ,並管理員 角色,並記錄以下屬性的值:

    • 私人連結-PLS-ID
    • 私人連結帳戶網址
    • Regionless-PrivateLink-Account-URL
    • privatelink_ocsp網址
    use role accountadmin; 
    select key, value::varchar from table(flatten(input=>parse_json(SYSTEM$GET_PRIVATELINK_CONFIG())));
    
  2. 在 Microsoft Purview 中,建立一個受管理的私有端點到 Snowflake。

    1. 請依照步驟建立管理虛擬網路 Integration Runtime。 如果你已經有 Snowflake PE,請確定它是在支援 Snowflake PE 的版本 2。
    2. 為 Snowflake 建立一個受管理的私人端點。 請導航到 受管理的私有端點 ->+ 新 ->Snowflake,並填寫以下資訊。
      • 資源 ID 或別名:填寫你取得的 privatelink-pls-id 值。
      • 完全合格的網域名稱:新增 privatelink_ocsp-URL、 regionless-privatelink-account-url 和 privatelink-account-url。

    Microsoft Purview 中 Snowflake 管理私有端點建立頁面的截圖。

  3. 建立 PE 後,你可以看到它的配置狀態為 「成功」 ,批准狀態為 「待處理」。 打開 PE,並在詳細頁面找到 受管理私有端點資源 ID 。

  4. 請聯絡 Snowflake 技術支援 並提供資源 ID,讓 Snowflake 核准此 PE。

  5. 一旦 Snowflake 支援確認 PE 已核准,你應該會在 Microsoft Purview 中看到你的託管私有端點核准狀態為 核准 。

  6. 註冊資料來源 並 設定掃描。 設定掃描時,選擇與 Snowflake PE 相關的管理型虛擬網路 IR。

疑難排解提示

如果您在註冊或掃描 Snowflake 時遇到問題,請參考以下建議。

  • 請在來源註冊步驟檢查你的帳號識別碼。 一開始不要包含 https:// 。
  • 確保掃描設定頁面的倉庫名稱和資料庫名稱都用大寫字母。
  • 檢查你的鑰匙庫。 請確保密碼中沒有錯字。
  • 檢查你在 Microsoft Purview 設定的憑證。 你指定的使用者必須有預設角色,並且擁有對倉庫和你想掃描的資料庫所需的存取權限。 請參閱 掃描所需權限。 USE DESCRIBE USER; 來驗證你為 Microsoft Purview 指定的使用者預設角色。
  • 使用 Snowflake 的查詢歷史,看看是否有任何活動出現。
    • 如果帳號識別碼或密碼有問題,你不會看到任何活動。
    • 如果預設角色有問題,至少應該看到一個 USE WAREHOUSE . . . 聲明。
    • 你可以用 QUERY_HISTORY_BY_USER表函式 來辨識連線正在使用的角色。 建立專屬的 Microsoft Purview 使用者會讓故障排除更容易。

金鑰對驗證的故障排除

本節介紹在 Microsoft Purview 中使用 Snowflake 金鑰對認證時常見的連線問題。

問題一:「測試連線失敗」

症狀:Purview 連線測試失敗

可能的原因與解決方法:

  1. 公鑰未分配

    1. 在 Snowflake 驗證:DESC 用戶 purview_scanner;

    2. 檢查RSA_PUBLIC_KEY_FP是否已填滿

  2. 金鑰保存庫存取問題

    1. 驗證管理身份具備取得權限與清單權限

    2. 檢查金鑰保存庫防火牆設定

  3. 錯誤的秘密名字

    1. 驗證:{credentialName}.password 存在

    2. 驗證:{credentialName}.privateKey 存在

問題 2:「私鑰格式無效」或「連線失敗並出現金鑰錯誤」

症狀:

  • 認證失敗,出現「無效私鑰格式」錯誤

  • 連線測試立即失敗

  • 關於 PEM 格式錯誤或金鑰解析錯誤的錯誤訊息

共同原因:私鑰透過 Azure 入口網站 儲存 (多行格式損壞)

解決方案:

  1. 確認金鑰格式是否損壞:

    # Retrieve the secret and check format 
    az keyvault secret show \
     --vault-name your-keyvault \
     --name "snowflake-purview-cred-privateKey" \
     --query value -o tsv | head -5 
    
    # Should show multiple lines starting with: 
    # -----BEGIN ENCRYPTED PRIVATE KEY----- 
    # MIIFHDBOBgkqhkiG9w0BBQ0wQTApBgkqhkiG9w... 
    # (NOT a single long line)
    
    
  2. 若損壞,請刪除並使用 CLI 重新建立:

    # Delete the corrupted secret az keyvault secret delete \
     --vault-name your-keyvault \
     --name "snowflake-purview-cred-privateKey" 
    
    # Wait for soft-delete purge (or purge immediately if needed) 
    az keyvault secret purge \
     --vault-name your-keyvault \
     --name "snowflake-purview-cred-privateKey" 
    
    # Recreate using CLI with
     --file parameter az keyvault secret set \
     --vault-name your-keyvault \
     --name "snowflake-purview-cred-privateKey" \
     --file rsa_key.p8
    
  3. 額外檢查:

    1. 確保私鑰為 PKCS#8 PEM 格式

    2. 包含-----開始加密私鑰----------結束加密私鑰-----行

    3. 先在本地驗證金鑰:

    openssl rsa -in rsa_key.p8 -check
    

記住:私鑰秘密一定要用 Azure CLI 或 Cloud Shell,千萬不要用 Azure 入口網站 介面。

第3期:「公鑰指紋不匹配」

症狀:認證成功但使用錯誤的金鑰

解決方案:

# Regenerate public key from private key 
openssl rsa -in rsa_key.p8 -pubout -out rsa_key_new.pub 

# Verify fingerprint 
openssl rsa -pubin -in rsa_key_new.pub -outform DER | openssl dgst sha256 -binary | openssl enc -base64 

# Update in Snowflake 
ALTER USER purview_scanner SET RSA_PUBLIC_KEY='';

問題四:「密碼短語錯誤」

症狀: 金鑰解密失敗

解決方案:

  1. 驗證金鑰保存庫中的密碼短語是否與金鑰產生時使用的密碼相符

  2. 本地測試密碼短語:

openssl rsa -in rsa_key.p8 -check 
# Enter passphrase when prompted

問題 5:「缺少 Snowflake 權限」

症狀:連線成功但掃描失敗

解決方案:

授予 Snowflake 使用者所需的權限:

-- Create role for Purview 
CREATE ROLE IF NOT EXISTS purview_reader; 

-- Grant usage on warehouse 
GRANT USAGE ON WAREHOUSE COMPUTE_WH TO ROLE purview_reader; 

-- Grant usage on database  
GRANT USAGE ON DATABASE my_database TO ROLE purview_reader; 

-- Grant usage on all schemas  
GRANT USAGE ON ALL SCHEMAS IN DATABASE my_database TO ROLE  purview_reader; 

-- Grant select on all tables  
GRANT SELECT ON ALL TABLES IN DATABASE my_database TO ROLE  purview_reader;  
GRANT SELECT ON FUTURE TABLES IN DATABASE my_database TO ROLE  purview_reader; 

-- Grant select on all views  
GRANT SELECT ON ALL VIEWS IN DATABASE my_database TO ROLE  purview_reader;  
GRANT SELECT ON FUTURE VIEWS IN DATABASE my_database TO ROLE  purview_reader; 

-- Assign role to user  
GRANT ROLE purview_reader TO USER purview_scanner; 

-- Set as default role  
ALTER USER purview_scanner SET DEFAULT_ROLE = purview_reader;

現在你已經註冊了來源,請利用以下資源進一步了解 Microsoft Purview 及你的資料。