練習 - 建立服務主體和金鑰
重要
您必須有自己的 Azure 訂用帳戶才能執行本練習,且可能會產生費用。 如果您還沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
在您為玩具公司的網站建立部署管線之前,您需要先建立服務主體,並將其存取權授與您的 Azure 環境。 在此練習中,您將會建立用於部署管線的服務主體。
在此過程中,您將會:
- 在單一操作中建立應用程式、服務主體和金鑰。
- 安全地處理金鑰。
- 使用認證登入 Azure,以確認服務主體可運作。
此練習需要您具備在 Microsoft Entra 目錄中建立應用程式與服務主體的權限。 如果您無法使用目前的 Azure 帳戶來滿足這些需求,可以取得免費的試用版,並建立新的 Azure 訂用帳戶和租用戶。 或者,您也可以略過此練習。
登入 Azure
若要將此範本部署至 Azure,您必須從 Visual Studio Code 終端機登入您的 Azure 帳戶。
在 [終端機] 功能表中,選取 [新增終端機]。 終端機視窗通常隨即在畫面的下半部開啟。
預設殼層通常是 pwsh,如終端視窗右側所示。
選取 [啟動設定檔] 下拉式清單,然後選取 [Azure Cloud Shell (Bash)]。
新的殼層隨即開啟。
使用 Azure CLI 登入 Azure
在 Visual Studio Code 終端中,執行下列命令以登入 Azure:
az login
在開啟的瀏覽器中,登入您的 Azure 帳戶。
若要將此範本部署至 Azure,請從 Visual Studio Code 終端登入 Azure 帳戶。
在 [終端機] 功能表中,選取 [新增終端機]。 終端機視窗通常隨即在畫面的下半部開啟。
預設殼層通常是 pwsh,如終端視窗右側所示。
選取 [啟動設定檔] 下拉式清單,然後選取 [Azure Cloud Shell (PowerShell)]。
新的殼層隨即開啟。
使用 Azure PowerShell 登入 Azure
在 Visual Studio Code 終端中,執行下列命令以登入 Azure:
Connect-AzAccount
在開啟的瀏覽器中,登入您的 Azure 帳戶。
建立服務主體和金鑰
在 Visual Studio Code 終端機中執行此 Azure CLI 命令以建立服務主體:
az ad sp create-for-rbac --name ToyWebsitePipeline
如果 Azure CLI 顯示錯誤,指出另一個應用程式具有相同的顯示名稱,這表示使用 Microsoft Entra 租用戶的人員已建立同名的服務主體。 將
--name
值變更為唯一的值。 這不會影響您進行後續練習的方式。查看上一個命令的 JSON 輸出。 每個輸出都包含下列屬性:
appId
:服務主體應用程式識別碼。password
:服務主體的金鑰。tenant
:Microsoft Entra 租用戶識別碼。
將這些值複製到安全的地方。 您很快就會用到它們。
在 Visual Studio Code 終端機中執行這些 Azure PowerShell 命令以建立服務主體:
$servicePrincipal = New-AzADServicePrincipal ` -DisplayName ToyWebsitePipeline
執行下列命令以取得服務主體的金鑰:
$servicePrincipalKey = $servicePrincipal.PasswordCredentials.SecretText
執行下列命令以顯示服務主體的應用程式識別碼、金鑰和您的 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)"
將該值複製到安全的地方。 您很快就會用到它們。
警告
上述命令的輸出包含服務主體的金鑰。 請注意在何處執行這些命令。 例如,請勿在有人可以查看的環境中執行它們。
測試服務主體
由於服務主體已建立,您可以使用其認證登入,以確認它已成功建立。
在 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 檢查訂用帳戶清單並顯示錯誤。檢查上一個命令的輸出是否為 JSON 物件,其中包含具有服務主體應用程式識別碼的
user
屬性。 這項資訊表示服務主體已成功登入。使用下列命令登出服務主體的帳戶:
az logout
在 Visual Studio Code 終端機中執行此 Azure PowerShell 命令,以安全地提示您提供服務主體的認證。 使用上一個步驟中的服務主體應用程式識別碼和金鑰,分別提供使用者名稱和密碼。
$credential = Get-Credential
在 Visual Studio Code 終端機中執行此 Azure PowerShell 命令,以使用服務主體的認證登入。
Connect-AzAccount -ServicePrincipal ` -Credential $credential ` -Tenant TENANT_ID
檢查上一個命令的輸出是否包含具有服務主體應用程式識別碼的
Account
屬性和空白的SubscriptionName
值。 這項資訊表示服務主體已成功登入。使用下列命令登出服務主體的帳戶:
Logout-AzAccount
現在您已有可運作的服務主體,接下來您可以移至下一個階段:授權它存取您的 Azure 環境。