你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
托管标识提供了一种安全便捷的方式来授权 AzCopy 作,而无需存储凭据或管理 SAS 令牌。 此身份验证方法特别适用于在 Azure 虚拟机或其他 Azure 服务上运行的自动化脚本、CI/CD 管道和应用程序。
本文介绍如何将 AzCopy 配置为使用系统分配的托管标识或用户分配的托管标识。 你将了解如何通过环境变量、AzCopy 登录命令或利用现有的 Azure CLI 或 Azure PowerShell 会话来授权访问。
若要了解授权访问 AzCopy 的其他方法,请参阅 授权 AzCopy。
验证角色分配
确保托管标识具有进行预期操作所需的 Azure 角色。
对于进行下载操作,请使用 存储 Blob 数据读取器 (Blob 存储)或 存储文件数据特权读取器 (Azure 文件)。
对于上传操作,请使用 存储 Blob 数据参与者 或 存储 Blob 数据所有者(Blob 存储)或者 存储文件数据特权参与者(Azure 文件系统)
有关角色分配说明,请参阅 “分配 Azure 角色以访问 Blob 数据 ”(Blob 存储),或 选择如何授权访问 Azure 门户中的文件数据(Azure 文件)。
注释
角色分配最多可能需要五分钟才能传播。
在具有分层命名空间的帐户中传输 blob 时,如果将安全主体添加到目标容器或目录的访问控制列表(ACL),则无需为安全主体分配这些角色之一。 在 ACL 中,安全主体需要对目标目录拥有写入权限,并对容器和每个父目录拥有执行权限。 若要详细了解,请参阅 Azure Data Lake Storage 中的访问控制模型。
使用环境变量授权
若要授权访问,请设置内存中环境变量。 然后运行任何 AzCopy 命令。 AzCopy 检索完成操作所需的身份验证令牌。 操作完成后,令牌将从内存中消失。
AzCopy 使用你提供的凭据检索 OAuth 令牌。 AzCopy 也可使用活动 Azure CLI 或 Azure PowerShell 会话的 OAuth 令牌。
如果计划在没有用户交互的情况下运行的脚本中使用 AzCopy,并且脚本从 Azure 虚拟机(VM)运行,则此选项非常出色。 使用此选项时,无需在 VM 上存储任何凭据。
可以使用在 VM 上启用的系统范围的托管标识,或使用分配给 VM 的用户分配的托管标识的客户端 ID、对象 ID 或资源 ID 登录到帐户。
若要详细了解如何启用系统范围的托管标识或创建用户分配的托管标识,请参阅使用 Azure 门户为 VM 上的 Azure 资源配置托管标识。
使用系统范围的托管身份进行授权
首先,请确保在 VM 上启用系统范围的托管标识。 有关详细信息,请参阅 系统分配的托管标识。
键入以下命令,然后按 Enter。
export AZCOPY_AUTO_LOGIN_TYPE=MSI
然后,运行任何 azcopy 命令(例如 azcopy list https://contoso.blob.core.windows.net)。
使用用户分配的托管标识授权
首先,请确保在 VM 上启用用户分配的托管标识。 有关详细信息,请参阅 用户分配的托管标识。
键入以下命令,然后按 Enter。
export AZCOPY_AUTO_LOGIN_TYPE=MSI
接下来,为用户分配的托管标识的客户端 ID、对象 ID 或资源 ID 设置环境变量。
使用客户端 ID
若要使用客户端 ID 授权,请键入以下命令,然后按 Enter。
export AZCOPY_MSI_CLIENT_ID=<client-id>
请将 <client-id> 占位符替换为用户分配的托管标识的客户端 ID。
可以通过查看托管标识的属性在 Azure 门户中找到客户端 ID。 以下屏幕截图显示了客户端 ID 属性的位置。
使用对象 ID
若要使用对象 ID 授权,请键入以下命令,然后按 Enter。
export AZCOPY_MSI_OBJECT_ID=<object-id>
请将 <object-id> 占位符替换为用户分配的托管标识的对象 ID。
可以通过查看托管标识的属性在 Azure 门户中找到对象 ID。 以下屏幕截图显示了对象 ID(也称为 主体 ID)的位置。
使用资源 ID
若要使用资源 ID 进行授权,请键入以下命令,然后按 Enter。
export AZCOPY_MSI_RESOURCE_STRING=<resource-id>
请将 <resource-id> 占位符替换为用户分配的托管标识的资源 ID。
可以通过查看托管标识的属性在 Azure 门户中找到资源 ID。 以下屏幕截图显示了资源 ID 属性的位置。
使用 AzCopy 登录命令授权
可以使用命令来授权访问,而不是使用 azcopy authentication login 内存中变量。
azcopy login 命令会检索 OAuth 令牌,然后将该令牌放入你系统上的机密存储。 如果操作系统没有密钥存储(如 Linux 密钥环),azcopy authentication login 命令将不起作用,因为无法放置令牌。
使用全局托管标识进行授权
首先,请确保在 VM 上启用系统范围的托管标识。 有关详细信息,请参阅 系统分配的托管标识。
然后,在命令控制台中,键入以下命令并按 ENTER 键。
azcopy login --identity
使用用户分配的托管标识授权
首先,请确保在 VM 上启用用户分配的托管标识。 请参阅用户分配的托管标识。 然后,使用用户分配的托管标识的客户端 ID、对象 ID 或资源 ID 登录。
使用客户端 ID 登录
键入以下命令,然后按 Enter。
azcopy login --identity --identity-client-id "<client-id>"
请将 <client-id> 占位符替换为用户分配的托管标识的客户端 ID。
可以通过查看托管标识的属性在 Azure 门户中找到客户端 ID。 以下屏幕截图显示了客户端 ID 属性的位置。
使用对象 ID 登录
键入以下命令,然后按 Enter。
azcopy login --identity --identity-object-id "<object-id>"
请将 <object-id> 占位符替换为用户分配的托管标识的对象 ID。
可以通过查看托管标识的属性在 Azure 门户中找到对象 ID。 以下屏幕截图显示了对象 ID(也称为 主体 ID)的位置。
使用资源 ID 登录
键入以下命令,然后按 Enter。
azcopy login --identity --identity-resource-id "<resource-id>"
请将 <resource-id> 占位符替换为用户分配的托管标识的资源 ID。
可以通过查看托管标识的属性在 Azure 门户中找到资源 ID。 以下屏幕截图显示了资源 ID 属性的位置。
通过 Azure CLI 授权
使用 Azure CLI 登录时,Azure CLI 会获取 AzCopy 用于授权作的 OAuth 令牌。
若要使 AzCopy 能够使用该令牌,请键入以下命令,然后按 Enter 键。
export AZCOPY_AUTO_LOGIN_TYPE=AZCLI
export AZCOPY_TENANT_ID=<tenant-id>
有关如何使用 Azure CLI 登录的详细信息,请参阅 使用 Azure CLI 通过托管标识登录到 Azure。
使用 Azure PowerShell 授权
如果你使用 Azure PowerShell 登录,则 Azure PowerShell 会获取 OAuth 令牌,AzCopy 可使用该令牌来授权操作。
若要使 AzCopy 能够使用该令牌,请键入以下命令,然后按 Enter 键。
$Env:AZCOPY_AUTO_LOGIN_TYPE="PSCRED"
$Env:AZCOPY_TENANT_ID="<tenant-id>"
有关如何使用 Azure PowerShell 登录的详细信息,请参阅 使用托管标识登录。