考量驗證

已完成

根據預設,對 Azure AI 服務資源的存取透過使用訂用帳戶金鑰加以限制。 管理這些金鑰的存取權是安全性的主要考量。

重新產生金鑰

您應該定期重新產生金鑰,以防止未經授權的使用者共用或存取金鑰的風險。 您可以使用 Azure 入口網站,或使用 az cognitiveservices account keys regenerate Azure 命令列介面 (CLI) 命令重新產生金鑰。

每項 AI 服務都提供兩個金鑰,可讓您在不中斷服務的情況下重新產生金鑰。 若要完成這個程序:

  1. 如果您在生產環境中同時使用這兩個金鑰,請變更程式碼,讓只有一個金鑰正在使用中。 例如,將所有實際執行環境應用程式設定為使用金鑰 1。
  2. 重新產生金鑰 2。
  3. 切換所有實際執行環境應用程式,使用新的重新產生金鑰 2。
  4. 重新產生金鑰 1
  5. 最後,更新生產程式碼以使用新的金鑰 1。

例如,若要在 Azure 入口網站中重新產生金鑰,您可以執行下列動作:

  1. 在 Azure 入口網站中,移至資源的 [金鑰和端點] 窗格。
  2. 然後選取 [重新產生金鑰1],或選取 [重新產生金鑰2],視您想要當時重新產生哪個金鑰而定。

使用 Azure Key Vault 保護金鑰

Azure Key Vault 是一項 Azure 服務,可讓您安全地儲存祕密 (例如密碼和金鑰)。 金鑰保存庫的存取權會授與安全性主體,您可以將其設想為使用 Microsoft Entra ID 進行驗證的使用者身分識別。 系統管理員可以將安全性主體指派給應用程式 (在這種情況下,稱為「服務主體」),來定義應用程式的「受控識別」。 然後,應用程式可以使用此身分識別來存取金鑰保存庫,並取出其具有存取權的祕密。 以這種方式控制祕密的存取權,可將其在應用程式中經過硬式編碼或儲存在設定檔中的風險降至最低。

您可以將 AI 服務資源的訂用帳戶金鑰儲存在 Azure Key Vault 中,並將受控識別指派給需要使用該服務的用戶端應用程式。 然後,應用程式可以視需要從金鑰保存庫取得金鑰,而不會有暴露於未經授權使用者的風險。

Diagram showing Azure AI services credentials retrieved from Azure Key Vault.

權杖式驗證

使用 REST 介面時,某些 AI 服務支援 (或甚至「需要」) 權杖型驗證。 在這些情況下,訂用帳戶金鑰會在初始要求中呈現,以取得驗證權杖,該權杖的有效期為 10 分鐘。 後續要求必須出示權杖,以驗證呼叫端是否已通過驗證。

提示

使用 SDK 時,SDK 會為您處理取得和呈現權杖的呼叫。

Microsoft Entra ID 驗證

Azure AI 服務支援 Microsoft Entra ID 驗證,可讓您針對在 Azure 中執行的應用程式和服務,授與特定服務主體或受控識別的存取權。

注意

如需 AI 服務驗證選項的詳細資訊,請參閱 AI 服務文件

您可以使用 Microsoft Entra ID 對 Azure AI 服務進行驗證,包括:

使用服務主體進行驗證

使用服務主體對 Azure AI 服務進行驗證的整體程式如下:

建立自訂子網域

您可以透過不同的方式建立自訂子網域,包括透過 Azure 入口網站、Azure CLI 或 PowerShell。

例如,您可以在 Azure Cloud Shell 中使用 PowerShell 建立子網域。 若要這樣做,您可以使用下列命令來選取您的訂用帳戶:

Set-AzContext -SubscriptionName <Your-Subscription-Name>

然後,您可以執行下列命令來建立 Azure AI 服務資源,以指定自訂子網域:

$account = New-AzCognitiveServicesAccount -ResourceGroupName <your-resource-group-name> -name <your-account-name> -Type <your-account-type> -SkuName <your-sku-type> -Location <your-region> -CustomSubdomainName <your-unique-subdomain-name>

建立之後,您的子網域名稱稱將會在回應中傳回。

將角色指派給服務主體

您已建立與自訂子網域連結的 Azure AI 資源。 接下來,您會將角色指派給服務主體。

若要開始,您必須註冊應用程式。 若要這樣做,請執行下列命令:

$SecureStringPassword = ConvertTo-SecureString -String <your-password> -AsPlainText -Force

$app = New-AzureADApplication -DisplayName <your-app-display-name> -IdentifierUris <your-app-uris> -PasswordCredentials $SecureStringPassword

這會建立應用程式資源。

然後使用 New-AzADServicePrincipal 命令來建立服務主體,並提供應用程式的識別碼:

New-AzADServicePrincipal -ApplicationId <app-id>

最後,您可以執行下列命令,將認知服務使用者角色指派給服務主體:

New-AzRoleAssignment -ObjectId <your-service-principal-object-id> -Scope <account-id> -RoleDefinitionName "Cognitive Services User"

使用受控識別進行驗證

受控識別有兩種類型:

  • 系統指派的受控識別:受控識別會建立並連結至特定資源,例如需要存取 Azure AI 服務的虛擬機器。 刪除資源時,也會刪除身分識別。
  • 使用者指派的受控識別:受控識別會建立成可供多個資源使用,而不是繫結至一個資源。 它獨立於任何單一資源。

您可以在建立資源期間或建立資源之後,將每種受控識別類型指派給資源。

例如,假設您在 Azure 中有一部虛擬機器,您想要用來每日存取 Azure AI 服務。 若要啟用此虛擬機器的系統指派身分識別,請先確定您的 Azure 帳戶具有虛擬機器參與者角色。 然後,您可以在 Azure Cloud Shell 終端機中使用 Azure CLI 執行下列命令:

az vm identity assign -g <my-resource-group> -n <my-vm>

然後,您可以使用下列項目,在 Azure 入口網站中授與 Azure AI 服務的存取權:

  1. 移至您想要授與虛擬機器受控識別存取權的 Azure AI 服務資源。

  2. 在 [概觀] 窗格上,選取 [存取控制 (IAM)]

  3. 選取 [新增],然後選取 [新增角色指派]。

  4. 在 [角色] 索引標籤中,選取 [認知服務參與者]

    A screenshot showing the Add role assignment tab.

  5. 在 [成員] 索引標籤的 [指派存取權] 中,選取 [受控識別]。 然後,選取 [+ 選取成員]

    A screenshot showing the Select managed identities pane.

  6. 確定您已在 [訂用帳戶] 下拉式清單中選取您的訂用帳戶。 針對 [受控識別],選取 [虛擬機器]

  7. 在清單中選取您的虛擬機器,然後選取 [選取]

  8. 最後,選取 [檢閱 + 指派] 以檢閱,然後選取 [檢閱 + 指派] 以完成。

注意

如需如何設定受控識別的詳細資訊,包括使用者受控識別,請參閱 使用 Azure CLI 在 Azure VM 上設定 Azure 資源的受控識別