使用 Microsoft Entra 認證來執行 PowerShell 命令以存取 Blob 資料
Azure 儲存體提供 PowerShell 的延伸模組,可讓您使用 Microsoft Entra 認證登入並執行指令碼命令。 當您使用 Microsoft Entra 認證登入 PowerShell 時,會傳回 OAuth 2.0 存取權杖。 PowerShell 會自動使用該權杖,授權對 Blob 儲存體的後續資料作業。 針對支援的作業,您不需要再使用命令傳遞帳戶金鑰或 SAS 權杖。
您可以透過 Azure 角色型存取控制 (Azure RBAC),將 Blob 資料的權限指派給 Microsoft Entra 安全性主體。 如需有關指派 Azure 角色的詳細資訊,請參閱 Azure 儲存體中的指派存取 Blob 資料的 Azure 角色。
支援的作業
Blob 資料的作業支援 Azure 儲存體延伸模組。 您可呼叫的作業取決於您用來登入 PowerShell 的 Microsoft Entra 安全性主體所獲得授與的權限。 Azure 儲存體容器的權限是透過 Azure RBAC 指派的。 例如,如果您已被指派 Blob 資料讀者角色,則您可以執行從容器讀取資料的指令碼命令。 如果您已被指派 Blob 資料參與者角色,則您可以執行讀取、寫入或刪除容器或所含資料的指令碼命令。
如需有關容器上每個 Azure 儲存體作業所需權限的詳細資訊,請參閱使用 OAuth 權杖呼叫儲存體作業。
重要
使用 Azure Resource Manager ReadOnly 鎖定來鎖住儲存體帳戶時,不允許該儲存體帳戶執行列出金鑰作業。 List Keys 是一個 POST 作業,而在帳戶設定了 ReadOnly 鎖定時,所有 POST 作業都無法執行。 因此,使用 ReadOnly 鎖定來鎖住帳戶時,尚未擁有帳戶金鑰的使用者必須使用 Microsoft Entra 認證來存取 blob 資料。 在 PowerShell 中,包含 -UseConnectedAccount
參數以使用您的 Microsoft Entra 認證建立 AzureStorageContext 物件。
使用 Microsoft Entra 認證呼叫 PowerShell 命令
若要使用 Azure PowerShell 登入,然後使用 Microsoft Entra 認證對 Azure 儲存體執行後續作業,請建立儲存體內容來參考儲存體帳戶,並包含 -UseConnectedAccount
參數。
下列範例示範如何使用 Microsoft Entra 認證,從 Azure PowerShell 建立新儲存體帳戶中的容器。 請記得以您自己的值取代角括號中的預留位置值:
使用 Connect-AzAccount 命令登入您的 Azure 帳戶:
Connect-AzAccount
如需關於使用 PowerShell 登入 Azure 的詳細資訊,請參閱使用 Azure PowerShell 登入。
透過呼叫 New-AzResourceGroup 建立 Azure 資源群組。
$resourceGroup = "sample-resource-group-ps" $location = "eastus" New-AzResourceGroup -Name $resourceGroup -Location $location
透過呼叫 New-AzStorageAccount 建立儲存體帳戶。
$storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup ` -Name "<storage-account>" ` -SkuName Standard_LRS ` -Location $location ` -AllowBlobPublicAccess $false
透過呼叫 New-AzStorageContext 取得指定新儲存體帳戶的儲存體帳戶內容。 使用儲存體帳戶時,您可以參考內容而非重複傳入認證。 包含
-UseConnectedAccount
參數以使用您的 Microsoft Entra 認證呼叫任何後續的資料作業:$ctx = New-AzStorageContext -StorageAccountName "<storage-account>" -UseConnectedAccount
建立容器之前,請將 儲存體 Blob 資料參與者 角色指派給自己。 即使您是帳戶擁有者,您還是需要明確的權限,才能對儲存體帳戶執行資料作業。 如需有關指派 Azure 角色的詳細資訊,請參閱指派存取 Blob 資料的 Azure 角色。
重要
Azure 角色指派可能需要數分鐘的時間傳播。
藉由呼叫 New-AzStorageContainer 來建立容器。 因為此呼叫會使用在先前步驟中建立的內容,所以會使用您的 Microsoft Entra 認證建立容器。
$containerName = "sample-container" New-AzStorageContainer -Name $containerName -Context $ctx