Get-AzStorageBlob:此请求无权执行此操作

问题描述 投票:0回答:1

我正在 Runbook 中运行 Get-AzStorageBlob 命令。 自动化帐户具有存储 Blob 数据贡献者角色。使用系统分配的托管身份。 但我收到此错误:

Get-AzStorageBlob : This request is not authorized to perform this operation.

执行的命令

`$ctx = New-AzStorageContext -StorageAccountName $storageAccountName -UseConnectedAccount

 $blobs = Get-AzStorageBlob -Container $containerName -Context $ctx | Select-Object -Property Name`
azure azure-blob-storage azure-powershell azure-runbook
1个回答
0
投票

此请求无权执行此操作。

当您没有适当的权限或存在可能阻止访问存储帐户的网络设置时,就会出现上述错误。

检查门户中的网络设置。

传送门:

enter image description here

如果它与选定的网络或专用端点连接,您可以参考此MS-Document

在我的环境中,我创建了自动化帐户,并赋予系统管理身份

Storage Blob Data Contributor
角色。

传送门: enter image description here

现在我在 azure 自动化中运行下面的脚本来获取 blob 列表。

脚本:

$subscription = "xxxx"
$identity = "1xxx"
$storageAccountName = "venkat6781"
$containerName = "test"

$null = Disable-AzContextAutosave -Scope Process # Ensures you do not inherit an AzContext in your runbook
$AzureContext = (Connect-AzAccount -Identity -AccountId $identity).context  # Connect to Azure with user-assigned managed identity
$connectionResult = Set-AzContext -Subscription $subscription -DefaultProfile $AzureContext
$connectionResult

$ctx = New-AzStorageContext -StorageAccountName $storageAccountName -UseConnectedAccount
$blobs = Get-AzStorageBlob -Container $containerName -Context $ctx | Select-Object -Property Name

foreach ($blob in $blobs) {
    Write-Output $blob.Name
}

输出:

Name               : Default
Subscription       : 158bxxxxxxdd048f
Account            : 1b3bxfb4f9c755bxxxx
Environment        : AzureCloud
Tenant             : 226xxd40283xxx
TokenCache         : 
VersionProfile     : 
ExtendedProperties : {}
001.csv
002.csv
003.csv
004.csv
sample.mp4

enter image description here

参考:

为 Azure 自动化帐户使用系统分配的托管标识 |微软学习

© www.soinside.com 2019 - 2024. All rights reserved.