練習 - 建立服務主體和金鑰

已完成

重要

您必須有自己的 Azure 訂用帳戶才能執行本練習,且可能會產生費用。 如果您還沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

在您為玩具公司的網站建立部署管線之前,您需要先建立服務主體,並將其存取權授與您的 Azure 環境。 在此練習中,您將會建立用於部署管線的服務主體。

在此過程中,您將會:

  • 在單一操作中建立應用程式、服務主體和金鑰。
  • 安全地處理金鑰。
  • 使用認證登入 Azure,以確認服務主體可運作。

此練習需要您具備在 Microsoft Entra 目錄中建立應用程式與服務主體的權限。 如果您無法使用目前的 Azure 帳戶來滿足這些需求,可以取得免費的試用版,並建立新的 Azure 訂用帳戶和租用戶。 或者,您也可以略過此練習。

登入 Azure

若要將此範本部署至 Azure,您必須從 Visual Studio Code 終端機登入您的 Azure 帳戶。

  1. 在 [終端機] 功能表中,選取 [新增終端機]。 終端機視窗通常隨即在畫面的下半部開啟。

    預設殼層通常是 pwsh,如終端視窗右側所示。

    Visual Studio Code 終端機視窗的螢幕擷取畫面,其中 pwsh 顯示為殼層選項。

  2. 選取 [啟動設定檔] 下拉式清單,然後選取 [Azure Cloud Shell (Bash)]

    Visual Studio Code 終端視窗的螢幕擷取畫面。終端殼層下拉式清單和 Azure Cloud Shell (Bash) 功能表項目隨即顯示。

    新的殼層隨即開啟。

使用 Azure CLI 登入 Azure

  1. 在 Visual Studio Code 終端中,執行下列命令以登入 Azure:

    az login
    
  2. 在開啟的瀏覽器中,登入您的 Azure 帳戶。

若要將此範本部署至 Azure,請從 Visual Studio Code 終端登入 Azure 帳戶。

  1. 在 [終端機] 功能表中,選取 [新增終端機]。 終端機視窗通常隨即在畫面的下半部開啟。

    預設殼層通常是 pwsh,如終端視窗右側所示。

    Visual Studio Code 終端機視窗的螢幕擷取畫面,其中 pwsh 顯示為殼層選項。

  2. 選取 [啟動設定檔] 下拉式清單,然後選取 [Azure Cloud Shell (PowerShell)]

    Visual Studio Code 終端視窗的螢幕擷取畫面。終端殼層下拉式清單和 Azure Cloud Shell (PowerShell) 功能表項目隨即顯示。

    新的殼層隨即開啟。

使用 Azure PowerShell 登入 Azure

  1. 在 Visual Studio Code 終端中,執行下列命令以登入 Azure:

    Connect-AzAccount
    
  2. 在開啟的瀏覽器中,登入您的 Azure 帳戶。

建立服務主體和金鑰

  1. 在 Visual Studio Code 終端機中執行此 Azure CLI 命令以建立服務主體:

    az ad sp create-for-rbac --name ToyWebsitePipeline
    

    如果 Azure CLI 顯示錯誤,指出另一個應用程式具有相同的顯示名稱,這表示使用 Microsoft Entra 租用戶的人員已建立同名的服務主體。 將 --name 值變更為唯一的值。 這不會影響您進行後續練習的方式。

  2. 查看上一個命令的 JSON 輸出。 每個輸出都包含下列屬性:

    • appId:服務主體應用程式識別碼。
    • password:服務主體的金鑰。
    • tenant:Microsoft Entra 租用戶識別碼。

    將這些值複製到安全的地方。 您很快就會用到它們。

  1. 在 Visual Studio Code 終端機中執行這些 Azure PowerShell 命令以建立服務主體:

    $servicePrincipal = New-AzADServicePrincipal `
      -DisplayName ToyWebsitePipeline
    
  2. 執行下列命令以取得服務主體的金鑰:

    $servicePrincipalKey = $servicePrincipal.PasswordCredentials.SecretText
    
  3. 執行下列命令以顯示服務主體的應用程式識別碼、金鑰和您的 Microsoft Entra 租用戶識別碼:

    Write-Output "Service principal application ID: $($servicePrincipal.AppId)"
    Write-Output "Service principal key: $servicePrincipalKey"
    Write-Output "Your Azure AD tenant ID: $((Get-AzContext).Tenant.Id)"
    

    將該值複製到安全的地方。 您很快就會用到它們。

警告

上述命令的輸出包含服務主體的金鑰。 請注意在何處執行這些命令。 例如,請勿在有人可以查看的環境中執行它們。

測試服務主體

由於服務主體已建立,您可以使用其認證登入,以確認它已成功建立。

  1. 在 Visual Studio Code 終端機中執行此 Azure PowerShell 命令,以使用服務主體的認證登入。 將您在前一個練習中複製的值取代預留位置。

    az login --service-principal \
      --username APPLICATION_ID \
      --password PASSWORD \
      --tenant TENANT_ID \
      --allow-no-subscriptions
    

    請注意,您會包含 --allow-no-subscriptions 引數。 一般來說,當您執行 az login 命令時,Azure CLI 會尋找您可以存取的 Azure 訂用帳戶。 尚未對服務主體授與任何存取權,因此您可以使用 --allow-no-subscriptions 引數來防止 Azure CLI 檢查訂用帳戶清單並顯示錯誤。

  2. 檢查上一個命令的輸出是否為 JSON 物件,其中包含具有服務主體應用程式識別碼的 user 屬性。 這項資訊表示服務主體已成功登入。

  3. 使用下列命令登出服務主體的帳戶:

    az logout
    
  1. 在 Visual Studio Code 終端機中執行此 Azure PowerShell 命令,以安全地提示您提供服務主體的認證。 使用上一個步驟中的服務主體應用程式識別碼和金鑰,分別提供使用者名稱和密碼。

    $credential = Get-Credential
    
  2. 在 Visual Studio Code 終端機中執行此 Azure PowerShell 命令,以使用服務主體的認證登入。

    Connect-AzAccount -ServicePrincipal `
      -Credential $credential `
      -Tenant TENANT_ID
    
  3. 檢查上一個命令的輸出是否包含具有服務主體應用程式識別碼的 Account 屬性和空白的 SubscriptionName 值。 這項資訊表示服務主體已成功登入。

  4. 使用下列命令登出服務主體的帳戶:

    Logout-AzAccount
    

現在您已有可運作的服務主體,接下來您可以移至下一個階段:授權它存取您的 Azure 環境。