使用 Key Vault 的驗證可與 Microsoft Entra ID 搭配運作,此標識碼負責驗證任何指定 安全性主體的身分識別。
安全性主體是物件,代表要求存取 Azure 資源的使用者、群組、服務或應用程式。 Azure 會為每個安全性主體指派唯一的物件識別碼。
使用者安全性主體會識別在 Microsoft Entra ID 中具有設定檔的個人。
群組安全主體用來識別在 Microsoft Entra ID 中建立的一組使用者。 指派給群組的任何角色或權限都會授與群組內的所有使用者。
服務主體是一種安全性主體類型,可識別應用程式或服務,也就是一段程序代碼,而不是使用者或群組。 服務主體的物件標識碼就像其用戶名稱一樣;服務主體的 客戶端密碼 就像其密碼一樣。
在針對應用程式的情況下,有兩種方法可以取得服務主體名稱:
建議:為應用程式啟用系統指派的 受控識別 。
使用受控識別,Azure 會在內部管理應用程式的服務主體,並自動向其他 Azure 服務驗證應用程式。 部署至各種服務的應用程式均可使用受控識別。
如需詳細資訊,請參閱 受控識別概觀。 另請參閱 支援受控識別的 Azure 服務,其中連結至說明如何針對特定服務啟用受控識別的文章(例如 App Service、Azure Functions、虛擬機等)。
如果您無法使用受控識別,請改為向 Microsoft Entra 租使用者 註冊 應用程式,如 快速入門:向 Azure 身分識別平臺註冊應用程式中所述。 註冊也會建立可在所有租用戶中識別應用程式的第二個應用程式物件。
設定 Key Vault 防火牆
根據預設,Key Vault 允許透過公用 IP 位址來存取資源。 為了達到最佳安全性,也可以限制只能存取特定 IP 範圍、服務端點、虛擬網路或私人端點。
如需詳細資訊,請參閱存取防火牆後方的 Azure Key Vault。
Key Vault 請求操作流程及驗證
Key Vault 上的每個要求作業中都需要 Key Vault 驗證。 擷取的權杖可以重複用於後續的呼叫。 驗證流程範例:
權杖要求向 Microsoft Entra ID 進行驗證,例如:
- Azure 資源 (例如具有受控識別的虛擬機器或 App Service 應用程式) 連絡 REST 端點,以取得存取權杖。
- 使用者可以藉由使用者名稱和密碼登入 Azure 入口網站。
如果向 Microsoft Entra ID 驗證成功,則會將 OAuth 權杖授與安全性主體。
透過 Key Vault 的端點 (URI) 呼叫 Key Vault REST API。
Key Vault 防火牆會檢查下列準則。 如果符合任一條件,則允許呼叫。 否則會封鎖呼叫,並傳回禁止的回應。
- 防火牆已停用,且可從公用網際網路連線 Key Vault 的公用端點。
- 呼叫者是 Key Vault 信任的服務,可讓其略過防火牆。
- 呼叫者會依 IP 位址、虛擬網路或服務端點列示在防火牆中。
- 呼叫者可以透過設定的私人連結連線觸達 Key Vault。
如果防火牆允許呼叫,Key Vault 會呼叫 Microsoft Entra ID 來驗證安全性主體的存取權杖。
Key Vault 檢查安全性主體是否有必要權限執行所要求的作業。 如果沒有,Key Vault 會傳回禁止的回應。
Key Vault 會執行要求的作業並傳回結果。
下圖說明應用程式呼叫 Key Vault「取得機密」API 的流程:
備註
Key Vault SDK 用於祕密、憑證和金鑰的客戶端在缺少存取權杖的情況下會額外呼叫 Key Vault,導致擷取租戶資訊時出現 401 回應。 如需詳細資訊,請參閱 驗證、要求和回應
應用程式程式碼中對 Key Vault 的驗證
Key Vault SDK 使用 Azure 身分識別用戶端程式庫,可讓您以相同程式碼跨環境向 Key Vault 進行無縫驗證
Azure 身分識別用戶端程式庫
.NET | Python(程式語言) | 爪哇島 | JavaScript |
---|---|---|---|
Azure Identity SDK .NET | Azure 身分識別 SDK Python | Azure 身分識別 SDK Java | Azure Identity SDK JavaScript |
如需最佳做法和開發人員範例的詳細資訊,請參閱 在程序代碼中向 Key Vault 進行驗證