Azure Key Vault 中的驗證

使用 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 驗證。 擷取的權杖可以重複用於後續的呼叫。 驗證流程範例:

  1. 權杖要求向 Microsoft Entra ID 進行驗證,例如:

    • Azure 資源 (例如具有受控識別的虛擬機器或 App Service 應用程式) 連絡 REST 端點,以取得存取權杖。
    • 使用者可以藉由使用者名稱和密碼登入 Azure 入口網站。
  2. 如果向 Microsoft Entra ID 驗證成功,則會將 OAuth 權杖授與安全性主體。

  3. 透過 Key Vault 的端點 (URI) 呼叫 Key Vault REST API。

  4. Key Vault 防火牆會檢查下列準則。 如果符合任一條件,則允許呼叫。 否則會封鎖呼叫,並傳回禁止的回應。

    • 防火牆已停用,且可從公用網際網路連線 Key Vault 的公用端點。
    • 呼叫者是 Key Vault 信任的服務,可讓其略過防火牆。
    • 呼叫者會依 IP 位址、虛擬網路或服務端點列示在防火牆中。
    • 呼叫者可以透過設定的私人連結連線觸達 Key Vault。
  5. 如果防火牆允許呼叫,Key Vault 會呼叫 Microsoft Entra ID 來驗證安全性主體的存取權杖。

  6. Key Vault 檢查安全性主體是否有必要權限執行所要求的作業。 如果沒有,Key Vault 會傳回禁止的回應。

  7. Key Vault 會執行要求的作業並傳回結果。

下圖說明應用程式呼叫 Key Vault「取得秘密」API 的程序:

The Azure Key Vault authentication flow

注意

Key Vault 的祕密、憑證和金鑰 SDK 用戶端在無存取權杖的情況下多呼叫一次 Key Vault,這導致擷取租用戶資訊時出現 401 回應。 如需詳細資訊,請參閱驗證、要求與回應

在應用程式程式碼中向 Key Vault 進行驗證

Key Vault SDK 使用 Azure 身分識別用戶端程式庫,可讓您以相同程式碼跨環境向 Key Vault 進行無縫驗證

Azure 身分識別用戶端程式庫

.NET Python Java JavaScript
Azure 身分識別 SDK .NET Azure 身分識別 SDK Python Azure 身分識別 SDK JAVA Azure 身分識別 SDK JavaScript

如需最佳做法和開發人員範例的詳細資訊,請參閱在程式碼中向 Key Vault 進行驗證

後續步驟