在AAD中注册的应用程序被拒绝访问Azure存储帐户

时间:2019-03-19 21:16:30

标签: azure azure-storage monitoring metrics

背景: 我正在关注https://docs.microsoft.com/en-us/azure/azure-monitor/platform/metrics-store-custom-rest-api,将自定义日志导入Azure存储帐户。 这将导致对资源ID的应有权限失败:Azure AD对象“没有权限对作用域”执行操作“ Microsoft.Insights / Metrics / write”。

我将问题归结为以下事实:存储帐户访问控制(IAM)未列出允许写入的应用程序。 (请注意,我创建了一个客户.NET应用程序)。

我回到了https://docs.microsoft.com/en-us/azure/role-based-access-control/role-assignments-portal

中的方法:“添加角色分配”

如果仍然按照此过程进行操作,则新创建的应用程序不会显示在Azure角色分配中。 (不是服务主体,没有应用程序。) 我是AAD的订阅所有者以及全球管理员。

问题: 允许如上所述的App注册写入新创建的存储帐户的正确程序是什么?

2 个答案:

答案 0 :(得分:1)

好的,问题有两个: 1.尝试添加服务主体时https://docs.microsoft.com/en-us/azure/role-based-access-control/role-assignments-portal中的文档是:您需要搜索应用程序名称,没有ID。找不到ID,仅找到名称。 并且:实际上这不是立即的。开始键入服务主体的首字母,然后等待直到自动完成开始。然后,您会看到您的服务主体。这引出第二点: 2.对应用程序和服务主体关系的耐心和理解。

建议阅读: https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals

一旦出现,我可以分配“监视度量发布者”角色。 Azure Storage RBAC Details

答案 1 :(得分:0)

您有两种选择。从今天开始,推荐的方法是使用Shared Access Signatures。共享访问签名(SAS)为您提供了一种方法,可以将对存储帐户中对象的有限访问权限授予其他客户端,而无需暴露您的帐户密钥。

另一个选项是使用Azure AD,但仍处于预览状态,不建议用于生产环境。将Azure AD与Azure存储集成在一起的第一步是将存储数据的RBAC角色分配给服务主体(用户,组或应用程序服务主体)或Azure资源的托管身份。 RBAC角色包含对容器和队列的常见权限集。要了解有关为Azure存储分配RBAC角色的更多信息,请参见Manage access rights to storage data with RBAC (Preview)

要使用Azure AD授权对应用程序中存储资源的访问,需要从代码中请求OAuth 2.0访问令牌。若要了解如何请求访问令牌并使用它来授权对Azure存储的请求,请参见Authenticate with Azure AD from an Azure Storage application (Preview)。如果您使用的是托管身份,请参见Authenticate access to blobs and queues with Azure managed identities for Azure Resources (Preview)

Azure CLI和PowerShell现在支持使用Azure AD身份登录。使用Azure AD身份登录后,会话将以该身份运行。要了解更多信息,请参阅Use an Azure AD identity to access Azure Storage with CLI or PowerShell (Preview)