繁体   English   中英

Azure - 存储帐户 - 禁止操作

[英]Azure - Storage Account - Forbidden Action

我搜索了互联网以找到解决当前问题的方法,但没有找到适合我情况的解决方案。 我目前正在尝试将数据插入 Azure 存储帐户表。 此数据插入是通过执行 Powershell 脚本的 Azure DevOps 管道完成的。 此脚本使用“Connect-AzAccount”命令将自己作为服务主体对我的 Azure Active Directory 进行身份验证。 此服务主体具有分配给它的“存储帐户数据贡献者”,其范围在我要插入数据的表中。 通过此身份验证,我可以使用命令“Get-AzTableTable ( https://github.com/paulomarquesc/AzureRmStorageTable ) 毫无问题地获取对我的 Azure 存储帐户表的引用。当我尝试插入数据时会出现问题使用“Add-AzTableRow”进入同一个表。当我执行这个命令时,我返回错误:

使用“1”参数调用“执行”的异常:“禁止”

我知道 Azure Devops 代理的 IP 地址需要在存储帐户的防火墙设置中列入白名单。 在我的脚本中,我获取了 Azure DevOps 代理的 IP 地址,并暂时将其添加到此白名单中,直到我的脚本结束数据插入操作。 这个临时添加并没有解决我的问题。

所有这一切的奇怪之处在于,我可以在我的计算机上的本地 Powershell 终端中手动键入脚本中的相同命令,并且我没有收到前面提到的禁止错误。

坦率地说,我没有选择,任何帮助将不胜感激。

几个月前我遇到了这个问题,并通过向我运行的脚本添加延迟来解决它,该脚本将我的 IP 地址添加到存储帐户防火墙。 我最终将 sleep 命令放在脚本末尾,只是为了让 Azure 和防火墙有时间同步。 它对我有用。 我将在下面分享我的脚本以供参考。

az storage account network-rule add --account-name "storageaccountname" --ip- 
address $IPADDR
az keyvault network-rule add --name "kv-$(COMMON_APP_NAME)" --ip-address $IPADDR
sleep 30 

感谢大家的所有回复。 事实证明,我认为通过将所有 Azure 服务 IP 地址添加到存储帐户的防火墙配置中,我认为我会允许我的管道代理访问我的存储帐户,但事实并非如此。 我终于在存储帐户防火墙的配置中使用了一个自托管代理并添加了该代理所在的虚拟网络的子网。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM