保護精靈應用程式
本文說明如何在 Microsoft Azure 地圖服務的受信任且安全的環境中裝載精靈應用程式。
以下是精靈應用程式的範例:
- Azure Web 作業
- Azure 函數應用程式
- Windows 服務
- 執行中且可靠的背景服務
檢視 Azure 地圖服務驗證詳細資料
若要在 Azure 入口網站中檢視 Azure 地圖服務的帳戶驗證詳細資料:
登入 Azure 入口網站。
瀏覽至 Azure 入口網站功能表。 選取 [所有資源],然後選取您的 Azure 地圖服務帳戶。
在左窗格中的 [設定] 下選取 [驗證]。
建立 Azure 地圖服務帳戶時,系統會建立三個值。 其會用來支援 Azure 地圖服務中兩種類型的驗證:
- Microsoft Entra 驗證:
Client ID
代表要用於 REST API 要求的帳戶。Client ID
的值應儲存在應用程式設定中,且應先擷取該值,再提出使用 Microsoft Entra 驗證的 Azure 地圖服務 HTTP 要求。 - 共用金鑰驗證:
Primary Key
和Secondary Key
會用作共用金鑰驗證的訂用帳戶金鑰。 共用金鑰驗證需依靠由 Azure 地圖服務帳戶所產生的金鑰連同每個要求,傳遞至 Azure 地圖服務。 建議您定期重新產生金鑰。 為了在重新產生作業期間維護目前的連線,系統會提供兩個金鑰。 您可以在重新產生作業期間,使用已重新產生的金鑰。 當您重新產生金鑰時,必須更新任何存取此帳戶的應用程式,以使用新的金鑰。 如需詳細資訊,請參閱驗證 Azure 地圖服務
重要
針對生產應用程式,我們建議實作 Microsoft Entra ID 和 Azure 角色型存取控制 (Azure RBAC)。 如需 Microsoft Entra 概念的概觀,請參閱使用 Azure 地圖服務進行驗證。
案例:與 Azure Key Vault 共用金鑰驗證
使用共用金鑰驗證的應用程式應該將金鑰儲存在安全存放區中。 此案例描述如何在 Azure Key Vault 中安全地將應用程式金鑰儲存為祕密。 應用程式可以擷取共用金鑰作為 Azure Key Vault 祕密,而不是將共用金鑰儲存在應用程式組態中。 為了簡化金鑰重新產生,我們建議應用程式一次使用一個金鑰。 應用程式接著可以重新產生未使用的金鑰,並將重新產生金鑰部署至 Azure Key Vault,同時仍使用一個金鑰維持目前的連線。 若要了解如何設定 Azure Key Vault,請參閱 Azure Key Vault 開發人員指南。
重要
此案例會透過 Azure Key Vault 間接存取 Microsoft Entra ID。 不過,我們建議您直接使用 Microsoft Entra 驗證。 直接使用 Microsoft Entra ID 可避免使用共用金鑰驗證和設定 Key Vault 的額外複雜度和作業需求。
下列步驟概述此程序:
- 建立 Azure Key Vault。
- 藉由建立應用程式註冊或受控識別來建立 Microsoft Entra 服務主體。 建立的主體負責存取 Azure Key Vault。
- 將 Azure 金鑰祕密
get
權限存取權指派給服務主體。 如需如何設定權限的詳細資訊,請參閱使用 Azure 入口網站指派 Key Vault 存取原則。 - 暫時將祕密
set
權限的存取權指派給身為開發人員的您。 - 在 Key Vault 祕密中設定共用金鑰,並參考祕密識別碼作為精靈應用程式的組態。
- 移除您的祕密
set
權限。 - 若要從 Azure Key Vault 擷取共用金鑰密碼,請在精靈應用程式中實作 Microsoft Entra 驗證。
- 使用共用金鑰建立 Azure 地圖服務 REST API 要求。 現在,精靈應用程式可以從 Key Vault 擷取共用金鑰。
提示
如果應用程式裝載於 Azure 環境中,建議您使用受控識別來降低管理祕密以進行驗證的成本和複雜度。 若要了解如何設定受控識別,請參閱教學課程:使用受控識別透過 .NET 將 Key Vault 連線至 Azure Web 應用程式。
案例:Microsoft Entra 角色型存取控制
建立 Azure 地圖服務帳戶之後,Azure 地圖服務 Client ID
值會出現在 Azure 入口網站驗證詳細資料頁面中。 這個值代表要用於 REST API 要求的帳戶。 此值應該儲存在應用程式組態中,並在提出 HTTP 要求之前擷取。 案例的目標是讓精靈應用程式能夠向 Microsoft Entra ID 進行驗證,並呼叫 Azure 地圖服務 REST API。
提示
若要啟用受控識別元件的優點,建議您在 Azure 虛擬機器、虛擬機器擴展集或 App Services 上裝載。
在 Azure 資源上裝載精靈
在 Azure 資源上執行時,您可以設定 Azure 受控識別,以啟用低成本、最少認證的管理工作。
若要啟用受控識別的應用程式存取權,請參閱受控識別概觀。
某些受控識別的優點包括:
- Azure 系統管理的 X509 憑證公開金鑰密碼編譯驗證。
- 具有 X509 憑證的 Microsoft Entra 安全性,而不是用戶端密碼。
- Azure 會管理及更新與受控識別資源相關聯的所有憑證。
- 認證作業管理已簡化,因為受控識別會移除安全祕密存放區服務的需求,例如 Azure Key Vault。
在非 Azure 資源上裝載精靈
只有在 Azure 環境中執行時,才能使用受控識別。 因此,您必須透過精靈應用程式的 Microsoft Entra 應用程式註冊來設定服務主體。
建立新的應用程式註冊
如果您已經建立應用程式註冊,請移至指派委派的 API 權限。
若要建立新的應用程式註冊:
登入 Azure 入口網站。
選取 [Microsoft Entra ID]。
在左窗格的 [管理] 底下,選取 [應用程式註冊]。
選取 [新增註冊] 索引標籤。
輸入名稱,然後選取支援帳戶類型。
選取註冊。
指派委派的 API 權限
若要將委派的 API 權限指派給 Azure 地圖服務:
如果您尚未登入 Azure 入口網站,請先登入。
選取 [Microsoft Entra ID]。
在左窗格的 [管理] 底下,選取 [應用程式註冊]。
選取您的應用程式。
在左側窗格的 [管理] 底下,選取 [API 權限]。
選取新增權限。
選取 [我的組織使用的 API] 索引標籤。
在搜尋方塊中,輸入 [Azure 地圖服務]。
使用 [Azure 地圖服務]。
選取 [存取 Azure 地圖服務] 核取方塊。
選取新增權限。
建立用戶端密碼或設定憑證
若要在應用程式中實作伺服器或應用程式型驗證,您可以選擇下列兩個選項之一:
- 上傳公開金鑰憑證。
- 建立用戶端秘密。
上傳公開金鑰憑證
若要上傳公開金鑰憑證:
在左側窗格的 [管理] 底下,選取 [憑證與祕密]。
選取 [上傳憑證]。
在文字方塊右側,選取檔案圖示。
選取 .crt、.cer 或 .pem 檔案,然後選取 [新增]。
建立用戶端密碼
若要建立用戶端密碼:
在左側窗格的 [管理] 底下,選取 [憑證與祕密]。
選取 + 新增用戶端密碼。
輸入用戶端密碼的描述。
選取 [新增]。
複製祕密,並將其安全地儲存在 Azure Key Vault 等服務中。 此外,請使用本文的使用受控識別要求權杖 (部分機器翻譯) 一節。
重要
若要安全地儲存憑證或祕密,請參閱 Azure Key Vault 開發人員指南。 您會使用此祕密從 Microsoft Entra ID 取得權杖。
將使用者的角色型存取權授與給 Azure 地圖服務
您可以將 Microsoft Entra 群組或安全性主體,指派給一或多個 Azure 地圖服務角色定義,來授與 Azure 角色型存取控制 (Azure RBAC)。
若要檢視 Azure 地圖服務的可用 Azure 角色定義,請參閱檢視內建的 Azure 地圖服務角色定義。
如需將可用 Azure 地圖服務角色,指派給已建立的受控識別或服務主體詳細步驟,請參閱使用 Azure 入口網站指派 Azure 角色
若要有效率地管理大量使用者的 Azure 地圖服務應用程式和資源存取權,請參閱 Microsoft Entra 群組。
重要
若要允許使用者驗證應用程式,必須先在 Microsoft Entra ID 中建立該使用者。 如需詳細資訊,請參閱使用 Microsoft Entra ID 新增或刪除使用者。
若要了解如何有效管理使用者的大型目錄,請參閱 Microsoft Entra ID。
警告
Azure 地圖服務的內建角色定義,可為許多 Azure 地圖服務 REST API 提供廣泛的授權存取權。 若要將 API 的存取權限制到最低限度,請參閱建立自訂角色定義,並將系統指派的身分識別指派給自訂角色定義。 這可讓應用程式獲得存取 Azure 地圖服務所需的最低權限。
使用受控識別要求權杖
為裝載資源設定受控識別之後,您可以使用 Azure SDK 或 REST API 來取得 Azure 地圖服務的權杖。 若要了解如何取得存取權杖,請參閱取得存取權杖。
使用應用程式註冊要求權杖
註冊應用程式並將其與 Azure 地圖服務產生關聯之後,您必須要求存取權杖。
若要取得存取權杖:
如果您尚未登入 Azure 入口網站,請先登入。
選取 [Microsoft Entra ID]。
在左窗格的 [管理] 底下,選取 [應用程式註冊]。
選取您的應用程式。
您應該會看到 [概觀] 頁面。 複製應用程式 (用戶端) 識別碼與目錄 (租用戶) 識別碼。
本文使用 bruno 應用程式來建立令牌要求,但您可以使用不同的 API 開發環境。
開啟 bruno 應用程式,選取 [ 新增要求 ] 以建立要求。
在 [新增要求] 視窗中,將 [類型] 設定為 [HTTP]。 輸入要求的 [名稱],例如 POST 令牌要求。
在 [URL] 下拉式清單中選取 [GET HTTP 方法],然後輸入下列 URL:
https://login.microsoftonline.com/{Tenant-ID}/oauth2/v2.0/token?response_type=token&grant_type=client_credentials&client_id={Client-ID}&client_secret={Client-Secret}&scope=https://atlas.microsoft.com/.default
注意
將:
{Tenant-ID}
具有目錄 (租使用者) 識別碼{Client-ID}
具有應用程式 (用戶端) 識別碼{Client-Secret}
使用您的客戶端密碼。
選取 [執行] 按鈕
您應該會看見下列 JSON 回應:
{
"token_type": "Bearer",
"expires_in": 86399,
"ext_expires_in": 86399,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Im5PbzNaRHJPRFhFSzFq..."
}
如需驗證流程的詳細資訊,請參閱 Microsoft 身分識別平台上的 OAuth 2.0 用戶端認證流程
下一步
如需更詳細的範例:
尋找 Azure 地圖服務帳戶的 API 使用計量:
探索範例,了解如何使用 Azure 地圖服務與 Microsoft Entra ID 整合: