共用方式為


使用開發人員帳戶在本機開發期間向 Azure 服務驗證 Go 應用程式

在本機開發期間,應用程式必須向 Azure 進行驗證,才能使用不同的 Azure 服務。 使用下列其中一種方法在本機進行驗證:

本文說明如何使用開發人員帳戶搭配 Azure 身分識別程式庫支援的工具進行驗證。 在前面的章節中,您將學習:

  • 如何使用 Microsoft Entra 群組有效率地管理多個開發人員帳戶的許可權。
  • 如何將角色指派給開發人員帳戶以限定權限範圍。
  • 如何登入支援的本機開發工具。
  • 如何使用應用程式程式碼中的開發人員帳戶進行驗證。

驗證的開發人員支援工具

若要讓應用程式在本機開發期間使用開發人員的 Azure 認證向 Azure 進行驗證,開發人員必須從下列其中一個開發人員工具登入 Azure:

  • Azure CLI
  • Azure Developer CLI
  • Azure PowerShell

Azure 身分識別程式庫可以偵測開發人員已從其中一個工具登入。 然後,程式庫可以透過工具取得 Microsoft Entra 存取權杖,以登入使用者身分向 Azure 驗證應用程式。

此方法會利用開發人員現有的 Azure 帳戶來簡化驗證程式。 不過,開發人員帳戶的許可權可能多於應用程式所需的許可權,因此會超出應用程式在生產環境中執行的許可權。 或者,您也可以 建立應用程式服務主體,以在本機開發期間使用,其範圍可限定為只有應用程式所需的存取權。

建立 Microsoft Entra 群組以進行本機開發

建立 Microsoft Entra 群組,以封裝應用程式在本機開發中所需的角色 (權限),而不是將角色指派給個別服務主體物件。 此方法提供下列優點:

  • 每個開發人員在群組層級都指派相同的角色。
  • 如果應用程式需要新角色,則只需要將其新增至應用程式的群組即可。
  • 如果新的開發人員加入小組,則會為開發人員建立新的應用程式服務主體,並新增至群組,以確保開發人員具有在應用程式上工作的正確權限。
  1. 流覽至 Azure 入口網站中的 Microsoft Entra ID 概觀頁面。

  2. 從左側功能表中選取 [所有群組]。

  3. [群組] 頁面上,選取 [新增群組]。

  4. [新增群組 ] 頁面上,填寫下列表單欄位:

    • 群組類型:選取 [安全性]
    • 群組名稱:輸入包含應用程式或環境名稱參考的群組名稱。
    • 群組描述:輸入說明群組用途的描述。

    顯示如何在 Azure 入口網站中建立群組的螢幕快照。

  5. 選擇 [未選取成員] 連結於 [成員 ] 下以將成員新增至群組。

  6. 在開啟的飛出視窗面板中,搜尋您稍早建立的服務主體,然後從篩選的結果中選取它。 選擇面板底部的「 選取」 按鈕以確認您的選擇。

  7. 選取 [新增群組] 頁面底部的 [建立] 以建立群組,然後返回 [所有群組] 頁面。 如果您沒有看到列出的新群組,請稍候一下並重新整理頁面。

將角色指派給群組

接下來,判斷您的應用程式在哪些資源上需要哪些角色 (許可權),並將這些角色指派給您建立的 Microsoft Entra 群組。 群組可以在資源、資源群組或訂閱範圍內被指派角色。 此範例示範如何在資源群組範圍指派角色,因為大部分的應用程式都會將其所有 Azure 資源分組到單一資源群組中。

  1. 在 Azure 入口網站中,流覽至包含應用程式之資源群組的 [ 概觀 ] 頁面。

  2. 從左側導覽中選擇 存取控制(IAM)

  3. 在 [存取控制 (IAM)] 頁面上,選取 [+ 新增],然後從下拉選單中選擇 [新增角色指派]。 新增 角色指派 頁面提供數個索引標籤來設定和指派角色。

  4. [ 角色 ] 索引標籤上,使用搜尋方塊來尋找您要指派的角色。 選取角色,然後選擇 下一步

  5. 「成員」 標籤上:

    • 針對 [指派存取權] 值,選取 [使用者、群組或服務主體]
    • 針對 [成員] 值,選擇 [+ 選取成員] 以開啟 [選取成員] 彈出面板。
    • 搜尋您稍早建立的 Microsoft Entra 群組,然後從篩選的結果中選取它。 選擇 選擇 以選擇群組,然後關閉彈出面板。
    • 請在 成員 索引標籤的底部選取 檢閱 + 指派

    顯示如何將角色指派給 Microsoft Entra 群組的螢幕快照。

  6. 在 [ 檢閱 + 指派 ] 索引標籤上,選取頁面底部的 [ 檢閱 + 指派 ]。

使用開發人員工具登入 Azure

接下來,使用數個開發人員工具之一登入 Azure,這些工具可用來在開發環境中執行驗證。 您驗證的帳戶也應該存在於您稍早建立和設定的 Microsoft Entra 群組中。

開發人員可以使用 Azure CLI 進行驗證。 然後,使用 DefaultAzureCredentialAzureCLICredential 的應用程式可以使用此帳戶來驗證應用程式要求。

若要使用 Azure CLI 進行驗證,請執行 az login 命令。 在具有預設網頁瀏覽器的系統上,Azure CLI 會啟動瀏覽器來驗證使用者。

az login

對於沒有預設網頁瀏覽器的系統,az login 命令會使用裝置程式代碼驗證流程。 使用者也可以強制 Azure CLI 使用裝置程式代碼流程,而不是藉由指定 --use-device-code 自變數來啟動瀏覽器。

az login --use-device-code

從您的應用程式向 Azure 服務進行驗證

azidentity 套件提供各種認證,以支援不同的案例和 Microsoft Entra 驗證流程。 接下來的步驟將示範如何在本機和生產環境中,使用服務主體時透過 DefaultAzureCredential 進行身份驗證。

實作程序代碼

若要向 Azure 驗證 Azure SDK 用戶端物件,您的應用程式應該使用 DefaultAzureCredential 類別。 在此案例中,DefaultAzureCredential 會循序檢查開發人員是否已使用 Azure CLI 或 Azure 開發人員 CLI 登入 Azure。 如果開發人員使用其中一個工具來登入 Azure,則應用程式會使用用來登入工具的認證向 Azure 進行驗證。

首先,將 azidentity 套件新增至您的應用程式。

go get github.com/Azure/azure-sdk-for-go/sdk/azidentity

接下來,對於應用程式中任何用於建立 Azure SDK 客戶端物件的 Go 程式碼,您可能想要:

  1. 匯入 azidentity 套件。
  2. 建立 DefaultAzureCredential 類型的實例。
  3. DefaultAzureCredential 類型的實例傳遞至 Azure SDK 用戶端建構函式。

下列步驟的範例會顯示在下列程式代碼區段中。

import (
	"context"

	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)

const (
	account       = "https://<replace_with_your_storage_account_name>.blob.core.windows.net/"
	containerName = "sample-container"
	blobName      = "sample-blob"
	sampleFile    = "path/to/sample/file"
)

func main() {
	// create a credential
	cred, err := azidentity.NewDefaultAzureCredential(nil)
	if err != nil {
	  // TODO: handle error
	}
	
	// create a client for the specified storage account
	client, err := azblob.NewClient(account, cred, nil)
	if err != nil {
	  // TODO: handle error
	}
	
	// TODO: perform some action with the azblob Client
	// _, err = client.DownloadFile(context.TODO(), <containerName>, <blobName>, <target_file>, <DownloadFileOptions>)
}