使用 Azure CLI 在 Azure Active Directory 中的服务主体上重置和附加客户端密钥不会反映在门户中

问题描述 投票:0回答:2

这要么是一个错误,要么是我可以在不同的地方访问这些记录。这是场景:

我使用 CLI 创建一个新的应用程序注册:

az ad sp create-for-rbac --name sp-name --role Contributor --years 2 --scope /subscriptions/xxx-xxx-xxx -o json

我现在可以看到此应用程序注册以及 Azure 门户中反映的秘密。使用提供的凭据测试访问按预期工作。

事情变得奇怪了......

我使用 --append 标志将新的客户端密钥附加到此服务主体,并为其指定自定义显示名称和不同的过期时间:

az ad sp credential reset --id xxx-xxx-xxx --end-date 2023-12-31 --display-name test-name --append 

我取回了这个新客户端密钥的记录以及要使用的密码。我使用这个密码测试访问并且它有效。所以它确实存在。我转到 Azure 门户 > Active Directory > 应用程序注册 > sp-name > 证书和机密 > 客户端机密,我看到的只是使用显示名称 rbac 创建的原始客户端机密。

考虑到可能存在缓存问题,我等了 12 个小时以上,但我仍然没有在该 SP 上的任何位置看到这个新的客户端密钥。但我可以使用它并且有效!

我还尝试通过调用以下命令来重置现有的客户端密钥(没有附加标志):

az ad sp credential reset --id xxx-xxx-xxx --end-date 2023-12-31 --display-name rbac

我得到了一个有效的新密码。但在门户中它仍然显示旧密码的密码提示,并且过期数据尚未更新!我又给了它 12 个多小时,但仍然没有更新。

同样奇怪的是BOTH原始密码和新密码都有效!如果由于泄漏而需要重置怎么办?

我已经这样做了很多次,结果完全相同。尝试重置现有的客户端密钥以及附加新的客户端密钥。在这两种情况下,门户中的数据永远不会反映通过 CLI 创建的客户端密钥的新信息或更新信息。

没有办法在门户中记录这些秘密,这是没有意义的。尤其是当我们可能需要多年后才能找到它们时。谁能告诉我为什么会这样?

我也可能将此作为错误提交。如果我收到该追求的回复,我会更新。

已更新

使用 CLI 我可以取回正确的信息:

az ad sp credential list --id xxx-xxx-xxx

新的和重置的客户端密钥都在那里,它们反映了正确的密码提示以及过期情况。所以也许这是一个门户错误。

但这仍然不能解释为什么原始密码在12个小时后仍然有效。该内容显示在门户中,但未显示在 CLI 中。

更新2

我为 Azure 门户(UI 不刷新)和 AAD(重置后能够使用旧密码)提交了反馈/报告。

以下是这两个提交内容的链接。我找不到合适的错误报告系统,所以看起来这些更像是“功能请求”。如果有人可以对这些进行投票和/或提供其他评论,也许我们可以从微软那里得到一些关注:

Azure 门户错误

Active Directory 请求

如果有人有更好的地方来发布这些,请告诉我

azure azure-active-directory azure-cli azure-service-principal azure-app-registration
2个回答
0
投票

您正在创建服务主体机密。 Azure 门户显示的是应用程序机密。它们是同一类型的对象,具有相同的用途,但存储在不同的位置。应用程序主要是一个数据模型,而服务主体是获得身份验证和授权的对象。后者代表任何给定租户中的应用程序。

如果要更新 Azure AD 应用程序机密,可以使用 AzureAD PowerShell 模块MS Graph API其 SDK 之一。


0
投票

所以我不确定

az ad sp
命令的真正用途,但我刚刚发现要制作服务主体客户端机密,您需要使用
az ad app

az ad app credential reset --id ${CLIENT_ID}
az ad app credential list --id ${CLIENT_ID}

这些可以在 Azure 门户 > Active Directory > 应用程序注册 > sp-name > 证书和机密 > 客户端机密中查看

我不知道

az ad sp
制作的那些去了哪里或者如何使用它们。

© www.soinside.com 2019 - 2024. All rights reserved.