基于身份的身份验证不适用于 Azure 存储文件共享

Posted

技术标签:

【中文标题】基于身份的身份验证不适用于 Azure 存储文件共享【英文标题】:Identity based authentication not working for Azure Storage File Share 【发布时间】:2021-12-11 09:18:04 【问题描述】:

我们创建了 Azure 存储文件共享并尝试设置基于身份的身份验证。我们遵循了此处提供的 GitHub 示例:Azure Files Samples on GitHub

我们能够成功运行以下命令来设置与存储帐户对应的用户帐户。

Join-AzStorageAccountForAuth `
    -ResourceGroupName $ResourceGroupName `
    -Name $StorageAccountName `
    -DomainAccountType "ServiceLogonAccount" `
    -OrganizationalUnitDistinguishedName "ou-distinguishedname-here" 

在此之后,我们通过存储访问密钥挂载了存储帐户,并为文件共享分配了 NTFS 权限。我们还确保在 Azure 门户的存储帐户中的文件共享上也分配了 SMB 相关的贡献者权限。

当我们尝试挂载文件共享时,系统会提示我们输入凭据并且它没有连接。我们正在尝试使用以下命令尝试连接:

net use Y: \\storageAccountName.file.core.windows.net\testShare

我们确保我们是在具有域用户的已加入域的计算机上尝试这些步骤。本地 AD 通过每 30 分钟运行一次的 AD Connect 连接到 Azure AD。我们确保此域用户是 AD 组的一部分,这些组在 Azure 门户中被分配了对文件共享的访问权限以及对共享本身的 NTFS 权限。存储帐户启用了专用终结点,为了降低复杂性,我们正在使用分配给存储帐户的 IP 地址进行测试。

为什么该命令仍然要求提供凭据而不连接到文件共享?有什么我们可能遗漏的吗?

【问题讨论】:

【参考方案1】:

经过更多故障排除后找到了解决方案。解决方案是首先设置 DNS。设置 DNS 并尝试连接到“storageAccountName.file.core.windows.net”而不是 IP 地址后,连接工作正常。它不要求任何凭据,而是利用登录的域用户进行连接。

我相信 Kerberos 身份验证需要连接到 DNS 名称(而不是直接 IP 地址),因为与存储对应的对象设置为存储帐户的名称。

希望这可以帮助其他面临此问题的人。

【讨论】:

以上是关于基于身份的身份验证不适用于 Azure 存储文件共享的主要内容,如果未能解决你的问题,请参考以下文章

具有 Azure AD 身份验证的 Azure 函数 - 允许的令牌受众不适用于 Microsoft Graph

AcquireToken(string resource, string clientId, UserCredential userCredential) 不适用于 Azure 身份验证

SignalR 不适用于 Windows 集成身份验证

next() 中间件不适用于令牌身份验证

403.60 - 使用 Azure 移动应用对 Cordova 进行身份验证时出现禁止错误

身份验证不适用于使用 NodeJS 进行的谷歌云 API 身份验证