在本機開發期間,應用程式必須向 Azure 進行驗證,才能使用不同的 Azure 服務。 使用下列其中一種方法在本機進行驗證:
- 將開發人員帳戶與 Azure 身分識別程式庫支援的其中一個開發人員工具搭配使用。
- 使用 服務主體。
本文說明如何使用開發人員帳戶搭配 Azure 身分識別程式庫支援的工具進行驗證。 在前面的章節中,您將學習:
- 如何使用 Microsoft Entra 群組有效率地管理多個開發人員帳戶的許可權。
- 如何將角色指派給開發人員帳戶以限定權限範圍。
- 如何登入支援的本機開發工具。
- 如何使用應用程式程式碼中的開發人員帳戶進行驗證。
驗證的開發人員支援工具
若要讓應用程式在本機開發期間使用開發人員的 Azure 認證向 Azure 進行驗證,開發人員必須從下列其中一個開發人員工具登入 Azure:
- Azure CLI
- Azure Developer CLI
- Azure PowerShell
Azure 身分識別程式庫可以偵測開發人員已從其中一個工具登入。 然後,程式庫可以透過工具取得 Microsoft Entra 存取權杖,以登入使用者身分向 Azure 驗證應用程式。
此方法會利用開發人員現有的 Azure 帳戶來簡化驗證程式。 不過,開發人員帳戶的許可權可能多於應用程式所需的許可權,因此會超出應用程式在生產環境中執行的許可權。 或者,您也可以 建立應用程式服務主體,以在本機開發期間使用,其範圍可限定為只有應用程式所需的存取權。
建立 Microsoft Entra 群組以進行本機開發
建立 Microsoft Entra 群組,以封裝應用程式在本機開發中所需的角色 (權限),而不是將角色指派給個別服務主體物件。 此方法提供下列優點:
- 每個開發人員在群組層級都指派相同的角色。
- 如果應用程式需要新角色,則只需要將其新增至應用程式的群組即可。
- 如果新的開發人員加入小組,則會為開發人員建立新的應用程式服務主體,並新增至群組,以確保開發人員具有在應用程式上工作的正確權限。
流覽至 Azure 入口網站中的 Microsoft Entra ID 概觀頁面。
從左側功能表中選取 [所有群組]。
在 [群組] 頁面上,選取 [新增群組]。
在 [新增群組 ] 頁面上,填寫下列表單欄位:
- 群組類型:選取 [安全性]。
- 群組名稱:輸入包含應用程式或環境名稱參考的群組名稱。
- 群組描述:輸入說明群組用途的描述。
選擇 [未選取成員] 連結於 [成員 ] 下以將成員新增至群組。
在開啟的飛出視窗面板中,搜尋您稍早建立的服務主體,然後從篩選的結果中選取它。 選擇面板底部的「 選取」 按鈕以確認您的選擇。
選取 [新增群組] 頁面底部的 [建立] 以建立群組,然後返回 [所有群組] 頁面。 如果您沒有看到列出的新群組,請稍候一下並重新整理頁面。
將角色指派給群組
接下來,判斷您的應用程式在哪些資源上需要哪些角色 (許可權),並將這些角色指派給您建立的 Microsoft Entra 群組。 群組可以在資源、資源群組或訂閱範圍內被指派角色。 此範例示範如何在資源群組範圍指派角色,因為大部分的應用程式都會將其所有 Azure 資源分組到單一資源群組中。
在 Azure 入口網站中,流覽至包含應用程式之資源群組的 [ 概觀 ] 頁面。
從左側導覽中選擇 存取控制(IAM)。
在 [存取控制 (IAM)] 頁面上,選取 [+ 新增],然後從下拉選單中選擇 [新增角色指派]。 新增 角色指派 頁面提供數個索引標籤來設定和指派角色。
在 [ 角色 ] 索引標籤上,使用搜尋方塊來尋找您要指派的角色。 選取角色,然後選擇 下一步。
在 「成員」 標籤上:
- 針對 [指派存取權] 值,選取 [使用者、群組或服務主體] 。
- 針對 [成員] 值,選擇 [+ 選取成員] 以開啟 [選取成員] 彈出面板。
- 搜尋您稍早建立的 Microsoft Entra 群組,然後從篩選的結果中選取它。 選擇 選擇 以選擇群組,然後關閉彈出面板。
- 請在 成員 索引標籤的底部選取 檢閱 + 指派。
在 [ 檢閱 + 指派 ] 索引標籤上,選取頁面底部的 [ 檢閱 + 指派 ]。
使用開發人員工具登入 Azure
接下來,使用數個開發人員工具之一登入 Azure,這些工具可用來在開發環境中執行驗證。 您驗證的帳戶也應該存在於您稍早建立和設定的 Microsoft Entra 群組中。
開發人員可以使用 Azure CLI 進行驗證。 然後,使用 DefaultAzureCredential 或 AzureCLICredential 的應用程式可以使用此帳戶來驗證應用程式要求。
若要使用 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 程式碼,您可能想要:
- 匯入
azidentity套件。 - 建立
DefaultAzureCredential類型的實例。 - 將
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>)
}