【问题标题】:Azure - Creating Service Principal with Tenant Admin PermissionAzure - 创建具有租户管理员权限的服务主体
【发布时间】:2022-01-26 10:10:55
【问题描述】:

我正在尝试通过在 terrafrom 中执行 ARM 模板来配置 Azure AD Domain Service。为了让 terrafrom 访问 Azure,我使用以下脚本创建了一个 service principal

az ad sp create-for-rbac --role="Owner" --scopes="/subscriptions/xxxxxxxx-xxxxxfca38"

然后将 Client ID 和 Secret 提供给 terrafrom。

问题是,当我执行脚本时,azure 给我一个错误提示:

code":"BadRequest", "message": "The user xxxxx-80b is not the tenant admin of tenant xxxxxx-xxxxxfca38.

但是,当我使用我的电子邮件和密码登录 Azure 门户时,我可以创建 AZ AD Domain Service 而不会出现任何错误。

如何创建具有正确权限的服务主体来执行此类操作?我最初认为--role="Owner" 应该足够了。

或者,是否可以获得用于登录 Azure 门户的同一帐户的客户端 ID 和机密?

P.S : 我在 azure 中使用个人帐户,该帐户未链接到任何组织 AD。

【问题讨论】:

  • 对,您需要Owner 订阅权限和在 Azure AD 中创建应用程序的权限。我从未亲眼见过此错误,因此无法说明为什么会抛出此错误或如何解决此错误,但请考虑检查您是否确实是该订阅的所有者,或授予自己 User Access Administrator 权限订阅

标签: azure azure-active-directory


【解决方案1】:

我没有订阅测试的个人帐户。只需参考以下步骤即可尝试。

我正在使用未链接到任何组织 AD 的 azure 个人帐户。

登录azure门户时,其实有一个默认目录,但是如果直接在Azure AD中创建AD App,就不能选择单租户应用了。

1.在门户中导航到Azure AD -> Create a directory(后面我们不使用目录,只是因为操作会让Default Directory出现)。

目录创建成功后,关闭浏览器(不刷新),重新打开一个,登录门户,点击如下按钮,会看到Default Directory

2.导航到门户中的订阅->检查Directory,然后您将知道您的订阅所在的目录,同时确保My roleOwnerUser Access Administrator,否则,您将无法成功运行命令az ad sp create-for-rbac --role="Owner" --scopes="/subscriptions/xxxxxxxx-xxxxxfca38"

3.如果您的订阅在Default directory,您可以导航到Azure AD -> Properties -> 将Access management for Azure resources 设置为Yes,那么您将是User Access Administrator。(如果您已经是OwnerUser Access Administrator,忽略这一步。)

4.然后使用以下命令登录 Azure CLI,指定订阅所在的tenanttenant ID

az login --tenant <tenant>

5.运行命令az ad sp create-for-rbac --role="Owner" --scopes="/subscriptions/xxxxxxxx-xxxxxfca38",应该可以了。

【讨论】:

  • 感谢您的详细解答。在您的第二步中,我检查了我的订阅角色,上面写着“帐户管理员”。这是我从 Microsoft 获得的免费订阅。我已经完成了第 3 步,但仍然遇到同样的错误。我将尝试使用另一个帐户和不同的订阅。
  • @Benjamin 我没有使用免费订阅,请尝试在订阅中授予自己为Owner -> 访问控制(IAM),并确保您在正确的租户中进行操作,这很重要。
【解决方案2】:

这是完整的答案:

您收到“错误请求”错误,因为服务原则需要在租户中拥有全局管理员权限。

要运行完整的 TF 模板,您需要租户和订阅级别的正确权限。

  • 订阅:所有者
  • 租户:全局管理员

Joy 已经展示了如何设置 Subscription Owner 属性,因此我不会在此重复,但如果您有多个,则需要确保您处于正确的目录/租户上下文中。

将全局管理员角色分配给服务主体:

在门户中导航到:

Azure Active Directory
  -> Roles and Administrators
   -> Search for and select "Global Administrator"
    -> Click on "Global Administrator" 

此时您将看到当前分配此角色的所有用户和服务原则的列表。

这是不明显的部分。当您单击“添加分配”时,右侧会弹出一个刀片,其中包含当前租户中的 AD 用户和组的列表,但没有服务原则。您需要按名称搜索 SP - 它会在搜索结果中弹出。像选择用户一样选择它并“添加”。 SP 现在将显示在之前分配了 GA 角色的用户列表中。

一旦我这样做了,Terraform 模板就能够创建 AAD DS 实例。

【讨论】:

    猜你喜欢
    • 2013-07-16
    • 2021-05-23
    • 2019-02-16
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2015-02-18
    • 2022-01-21
    • 2018-11-16
    相关资源
    最近更新 更多