You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell创建可访问Azure多存储容器的本地用户

解决Azure存储SFTP本地用户全局容器访问的PowerShell实现

方案一:配置自动覆盖所有容器(含新增)的权限范围

直接通过*通配符指定所有容器,无需后续手动更新,是最简便的方案。

步骤:

  1. 获取目标存储账户对象
$resourceGroup = "你的资源组名称"
$storageAccountName = "你的存储账户名称"
$storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroup -Name $storageAccountName
  1. 创建覆盖所有Blob容器的权限范围
    权限参数可按需组合:r(读)、w(写)、d(删除)、l(列出)
$globalContainerScope = New-AzStorageLocalUserPermissionScope -Permission "rwdl" `
                                                             -Service "blob" `
                                                             -ResourceType "container" `
                                                             -ContainerName "*"
  1. 创建/更新本地用户
  • 若要新建全局访问用户:
New-AzStorageLocalUser -StorageAccount $storageAccount `
                       -UserName "global-sftp-user" `
                       -PermissionScope $globalContainerScope `
                       -SshPasswordEnabled $true # 根据需求启用密码/密钥登录
  • 若要更新已有用户(避免覆盖原有权限):
    先获取用户现有权限范围,合并全局范围后再更新:
$existingUser = Get-AzStorageLocalUser -StorageAccount $storageAccount -UserName "existing-user"
$updatedScopes = $existingUser.PermissionScope + $globalContainerScope

Set-AzStorageLocalUser -StorageAccount $storageAccount `
                       -UserName "existing-user" `
                       -PermissionScope $updatedScopes

方案二:新增容器时自动为用户添加权限

如果不想使用通配符,可通过脚本实现容器创建时自动追加权限,核心是避免覆盖原有权限。

实现脚本:

param(
    [Parameter(Mandatory=$true)]
    [string]$ResourceGroupName,
    [Parameter(Mandatory=$true)]
    [string]$StorageAccountName,
    [Parameter(Mandatory=$true)]
    [string]$UserName,
    [Parameter(Mandatory=$true)]
    [string]$NewContainerName,
    [string]$Permission = "rwdl"
)

# 获取存储账户和现有用户信息
$storageAccount = Get-AzStorageAccount -ResourceGroupName $ResourceGroupName -Name $StorageAccountName
$existingUser = Get-AzStorageLocalUser -StorageAccount $storageAccount -UserName $UserName

# 检查是否已存在该容器的权限,避免重复添加
$hasExistingScope = $existingUser.PermissionScope | Where-Object { $_.ContainerName -eq $NewContainerName }

if (-not $hasExistingScope) {
    # 创建新容器的权限范围
    $newContainerScope = New-AzStorageLocalUserPermissionScope -Permission $Permission `
                                                               -Service "blob" `
                                                               -ResourceType "container" `
                                                               -ContainerName $NewContainerName
    # 合并原有权限与新权限
    $updatedScopes = $existingUser.PermissionScope + $newContainerScope
    # 更新用户权限
    Set-AzStorageLocalUser -StorageAccount $storageAccount -UserName $UserName -PermissionScope $updatedScopes
}

自动化触发(可选):

将上述脚本上传至Azure自动化账户作为Runbook,然后创建存储账户的事件网格订阅,选择Blob容器已创建事件触发Runbook,即可实现新增容器时自动授权。


内容的提问来源于stack exchange,提问作者Ruwi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 10:12:36