从AKS群集访问Azure存储Blob

从AKS群集访问Azure存储Blob,azure,azure-storage,azure-storage-blobs,azure-aks,Azure,Azure Storage,Azure Storage Blobs,Azure Aks,有一点背景:我必须将一个项目从AWS迁移到Azure,我目前正在使用ECS,在Azure中我将使用AKS,因为它们的ACS(ECS等价物)已被弃用 这是一个普通的Django应用程序,其配置变量从托管在私有S3存储桶上的server config.json获取,EC2实例具有正确的角色S3FullAccess 我一直在考虑复制相同的行为,但是使用Azure Blob存储,没有取得任何成功:-( 我尝试使用服务主体概念,并将其添加到存储Blob Data Owner角色的AKS集群,但这似乎不起作

有一点背景:我必须将一个项目从AWS迁移到Azure,我目前正在使用ECS,在Azure中我将使用AKS,因为它们的ACS(ECS等价物)已被弃用

这是一个普通的Django应用程序,其配置变量从托管在私有S3存储桶上的
server config.json
获取,EC2实例具有正确的角色
S3FullAccess

我一直在考虑复制相同的行为,但是使用
Azure Blob存储
,没有取得任何成功:-(

我尝试使用
服务主体
概念,并将其添加到
存储Blob Data Owner
角色的
AKS集群
,但这似乎不起作用。总的来说,这是一次非常令人沮丧的经历-也许我只是很难掌握正确的权限/范围使用方法。事实上e> AKS Cluster创建自己的资源组是一件难以理解的事情,但我也尝试将策略附加到它上,但没有效果。然后,我转向了Microsoft指定的解决方案

通过指定的解决方案,我成功地将我的AKS POD与正确的
用户管理标识
绑定,但我觉得我遗漏了什么。我将
存储Blob数据所有者/参与者
分配给了该标识,但当我进入POD并尝试访问Blob时(使用python sdk),我收到一条
未找到资源
消息


我试图实现的目标可能实现吗?或者我必须使用
Azure Keyvault
/类似的解决方案吗?

首先,你可以使用Kubernetes现在或多或少的ACS

至于对blob存储的访问,您不必使用托管服务标识,您只需使用account name\key(它的安全性稍差,但不太容易出错,并且存在更多示例)。事实上,您得到的
资源未找到
错误很可能意味着您的身份验证部分没有问题,您只是没有访问该资源的权限,根据storage blob contributor的说法,如果您将其分配到适当的作用域,则应该没有问题。要使其100%起作用,只需在订阅级别为您的身份参与者提供访问权限,这样就可以保证工作


我发现了一个将python与MSI()结合使用的示例。您应该从这个示例开始(并授予您的身份参与者访问权)并验证您是否可以列出资源组。这样做时,使读blob正常工作应该很简单。

谢谢您的回答!我正在尝试避免使用存储帐户密钥,因为这意味着在我的代码中硬编码凭据—这在生产级别上我绝对不会这样做(对于开发/登台环境来说应该没问题)。我一直在摆弄权限的范围和附加到哪里(服务主体/托管标识),但到目前为止似乎没有任何效果。至少根据麦克风盒中记录的事件,管理标识绑定成功地发生了。这就是我所缺少的!:)我试图通过权限/角色来重现我在AWS中所做的事情,但在这里似乎没有同样的效果。通过
Secret
(或通过
ConfigMap
——相当于我的
服务器配置.json
)添加密钥已经解决了我的问题。再次感谢!好吧,使用MSI会更符合你所做的,但秘密也可以:)请记住秘密实际上不是秘密任何拥有适当权限的人都可以列出它们的内容