使用 Microsoft Entra 凭据运行 PowerShell 命令以访问队列数据

Azure 存储为 PowerShell 提供扩展,使用户可使用 Microsoft Entra 凭据登录并运行脚本命令。 使用 Microsoft Entra 凭据登录 PowerShell 时,会返回 OAuth 2.0 访问令牌。 PowerShell 会自动使用该令牌针对队列存储进行后续数据操作授权。 对于支持的操作,无需再通过命令传递帐户密钥或 SAS 令牌。

可通过 Azure 基于角色的访问控制 (Azure RBAC) 向 Microsoft Entra 安全主体分配对队列数据的权限。 有关 Azure 存储中 Azure 角色的详细信息,请参阅通过 Azure RBAC 管理 Azure 存储数据访问权限

支持的操作

Azure 存储扩展支持针对队列数据的操作。 可调用的操作取决于向 Microsoft Entra 安全主体授予的权限,此安全主体用于登录 PowerShell。 对队列的权限通过 Azure RBAC 进行分配。 例如,如果为你分配了“队列数据读取者”角色,你可以运行从队列读取数据的脚本命令。 如果为你分配了“队列数据参与者”角色,你可以运行脚本命令来读取、写入或删除队列或其中所含数据。

若要详细了解针对队列的每个 Azure 存储操作所需的权限,请参阅使用 OAuth 令牌调用存储操作

重要

在使用 Azure 资源管理器 ReadOnly 锁锁定了某个存储帐户时,不允许为该存储帐户执行列出密钥操作。 “列出密钥”是 POST 操作,并且在为该帐户配置了 ReadOnly 锁时,所有的 POST 操作都会被阻止 。 因此,当帐户被 ReadOnly 锁锁定时,还没有帐户密钥的用户必须使用 Microsoft Entra 凭据来访问队列数据。 在 PowerShell 中,包含 -UseConnectedAccount 参数,以使用 Microsoft Entra 凭据创建 AzureStorageContext 对象。

使用 Microsoft Entra 凭据调用 PowerShell 命令

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

若要使用 Azure PowerShell 登录并使用 Microsoft Entra 凭据针对 Azure 存储运行后续操作,请创建存储上下文用于引用存储帐户,并包含 -UseConnectedAccount 参数。

以下示例演示了如何在 Azure PowerShell 中使用 Microsoft Entra 凭据,在新的存储帐户中创建队列。 请务必将尖括号中的占位符值替换为你自己的值:

  1. 使用 Connect-AzAccount 命令登录到 Azure 帐户。

    Connect-AzAccount -Environment AzureChinaCloud
    

    若要详细了解如何使用 PowerShell 登录 Azure,请参阅使用 Azure PowerShell 登录

  2. 调用 New-AzResourceGroup 创建 Azure 资源组。

    $resourceGroup = "sample-resource-group-ps"
    $location = "chinaeast2"
    New-AzResourceGroup -Name $resourceGroup -Location $location
    
  3. 调用 New-AzStorageAccount 创建存储帐户。

    $storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroup `
      -Name "<storage-account>" `
      -SkuName Standard_LRS `
      -Location $location `
    
  4. 调用 New-AzStorageContext 获取用于指定新存储帐户的存储帐户上下文。 对存储帐户执行操作时,可以引用上下文而不是重复传入凭据。 包含 -UseConnectedAccount 参数,以使用 Microsoft Entra 凭据调用任何后续数据操作:

    $ctx = New-AzStorageContext -StorageAccountName "<storage-account>" -UseConnectedAccount
    
  5. 创建队列之前,请为自己分配存储队列数据参与者角色。 即使你是帐户所有者,也需要显式权限才能针对存储帐户执行数据操作。 若要详细了解如何分配 Azure 角色,请参阅分配用于访问队列数据的 Azure 角色

    重要

    传播 Azure 角色分配可能需要花费几分钟时间。

  6. 通过调用 New-AzStorageQueue 来创建队列。 由于此调用使用在前面步骤中创建的上下文,因此将使用你的 Microsoft Entra 凭据创建队列。

    $queueName = "sample-queue"
    New-AzStorageQueue -Name $queueName -Context $ctx
    

后续步骤