Azure托管身份-功能应用程序和存储帐户- DefaultAzureCredential失败,但ManagedIdentityCredential成功

u5rb5r59  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(135)

我 想 使用 用户 分配 的 标识 来 管理 资源 之间 的 访问 权限 。 我 已 为 存储 帐户 创建 了 一 个 具有 以下 角色 访问 权限 的 标识 :

Storage Blob Data Owner
Storage Account Contributor
Storage Table Data Contributor
Storage Queue Data Contributor

中 的 每 一 个
我 正在 用 C # 编写 此 更改 。 当 我 使用

var tableUri = new Uri(string.Format("https://{0}.table.core.windows.net/", storageAccountName));
var credential = new ManagedIdentityCredential(storageAccessClientId);
services.AddScoped(x => new TableServiceClient(tableUri, credential));

格式
一切 正常 , 我 可以 访问 我 的 表 没有 任何 问题 。

    • 问题 * * 是 我 需要 在 我 的 用例 中 使用 DefaultAzureCredential() , 以 避免 需要 传递 storageAccessClientId 环境 变量 。 根据 文档 , 这 应该 没有 任何 问题 , 因为 它 应该 通过 一 个 权限 链 , 直到 找到 正确 的 。 它 没有 。

很 明显 , 我 已经 正确 配置 了 身份 , 因为 如果 我 明确 告诉 Azure 使用 什么 ID , 我 可以 访问 它 * * , 但是 当 它 自己 尝试 时 , 它 失败 了 , 我 花 了 几 天 时间 试图 了解 原因 。
我 的 一 个 想法 是 , 对于 某种 Azure 幕后 魔术 , 它 说 我 需要 设置 AZURE _ CLIENT _ ID 、 AZURE _ CLIENT _ SECRET 和 AZURE _ TENANT _ ID 。 它 是否 可能 忽略 我 的 用户 分配 的 托管 身份 , 而 只 获取 AZURE _ CLIENT _ ID 变量 ?
我 想 我 找到 了 我 的 答案 , 如果 在 2022 年 仍然 是 这样 , 那么 它 真 的 表明 了 Azure 的 可悲 状态 。 This , 这 是 github 问题 , Azure 开发 人员 特别 指出 , 他们 的 IAM 系统 不够 复杂 , 无法 找到 附加 到 现有 资源 的 用户 分配 的 权限 , 除非 你 * 明确 * 声明 你 想要 什么 。 来自 AWS , 这 似乎 是 完全 不可 接受 的 ,我 希望 这 是 另 一 个 " azure 保留 了 很多 旧 文档 , 所以 继续 寻找 最 新 的 真相 " 的 案例 .. 但 从 我 所 尝试 的 一切 来看 , 似乎 这 实际 上 是 它 的 工作 原理 。
如果 任何 人 可以 告诉 我 不同 的 , 请 让 我 知道 , 因为 我 不 想 使用 系统 管理 的 身份 , 除非 绝对 必要 。 ( 另 一 张 这样 的 票 即将 到来 ... )

lhcgjxsq

lhcgjxsq1#

Azure不提供动态处理多个分配的标识的功能。您需要帮助沿着具体告诉它在您希望使用附加到服务(功能应用、Web应用等)的标识的每种情况下要使用的标识
这对于我们的需求来说是不可接受的,因为我们想要动态的身份访问,所以我们停止了这种方法,转而选择连接字符串,很遗憾

相关问题