在策略管理文档中,它们展示了如何分配允许作为主体访问密钥保管库的应用程序。我想使用 Azure CLI 来完成此操作。
对于用户,我发现我应该执行以下操作。
az keyvault set-policy --name kv-holder --upn [email protected] --secret-permissions all
但是,对注册的服务做相应的事情是行不通的。我可以在 GUI 中执行此操作,将应用程序指定为主体(步骤 2,而不是 3!),如文档中第 4 项所示。但执行以下任何操作似乎都会失败。
az keyvault set-policy --name kv-holder --upn app-web-service --secret-permissions all
az keyvault set-policy --name kv-holder --spn app-web-service --secret-permissions all
az keyvault set-policy --name kv-holder --object-id app-web-service --secret-permissions all
az keyvault set-policy --name kv-holder --application-id app-web-service --secret-permissions all
我收到错误消息,必须指定 upn、spn 或 object-id 之一,当我这样做时,它告诉我没有该名称的用户。
我错过了什么?他们在哪里隐藏了如何以编程方式执行此操作的信息,而不是从门户中隐藏的信息?
当我尝试
object-id
和应用程序的GUID时,它似乎接受了请求。但是,在 GUI 中,我现在看到一个名为 Unknown 的部分(位于之前创建的名为 Application 的部分下方),并且我的 GUID 列在那里,而应用程序(指相同的 GUID!)单独列在其他部分中。他们确实有不同的特权,这让我更加困惑......
要在 Azure CLI 中为应用程序设置密钥保管库的访问策略,您 可以使用以下命令:
az keyvault set-policy --name <kvname> --object-id <service_principal_ID> --secret-permissions all
我创建了一个与您的名称相同的 Azure AD 应用程序,如下所示:
如果您在 CLI 命令的 --object-id
参数中传递上述 Application ID
或Object ID,它将被添加为 Unknown。
注意,您需要传递
服务主体的objectID
,而不是 应用程序。
您可以在 Azure AD 租户的企业应用程序中找到服务主体,其名称与应用程序相同,如下所示:
当我通过包含上述服务主体ObjectID
运行下面的
CLI命令时,它成功添加到访问策略中,如下所示:
az keyvault set-policy --name <kvname> --object-id <service_principal_ID> --secret-permissions all
回复:
很抱歉,这个命令肯定不起作用。