在Azure DevOps中使用自动服务主体时,选择订阅不完整的解决方案

57次阅读
没有评论

问题描述

在Azure DevOps中使用自动服务主体时遇到了问题。他想要从Azure DevOps界面中选择他在另一个租户中具有访问权限的订阅,但是在选择时却发现有一些订阅无法显示出来。他的Azure DevOps账号与Azure租户的Azure Active Directory(AAD)连接,他是该AAD中的成员,并具有外部登录、某些权限和角色。

具体地,他想要选择一个包含了资源组和应用服务的订阅,以便可以使用Azure DevOps中预配置的模板创建部署流水线。之前,他在Azure DevOps中的账号是user1@company.com,而在Azure门户中的账号是user1@company.onmicrosoft.com,因为它们属于不同的AAD。后来,他将user1@company.com添加到了包含所需订阅的Azure门户的AAD中,并授予了一些权限以访问这些订阅。这两个账号都设置了多重身份验证(MFA)。

问题的令人沮丧之处在于,虽然他昨晚曾暂时使其工作,可以选择AzureDevOps中的订阅,并在使用user1@company.com账号登录时显示了订阅,但今天它似乎又回到了无法显示来自其他租户的订阅的状态。这也会影响他尝试建立新的服务连接时,尽管这可能与所需的权限设置有关。

非常感谢你提供的任何帮助。

解决方案

请注意以下操作可能存在版本差异或风险,建议在操作前做好备份并了解相关文档。

使用手动服务主体

在处理涉及跨租户订阅的情况下,使用手动服务主体(Service Principal,SP)是更加可控和稳定的方法,相对于自动服务主体。以下是如何使用手动服务主体在Azure DevOps中设置服务连接的步骤:
1. 在Azure门户中创建一个服务主体(SP)。
2. 获取服务主体的客户端ID和客户端密钥等凭据信息。
3. 在Azure DevOps中创建一个新的服务连接,并使用上一步中获取的凭据信息进行配置。

以下是更详细的步骤:

  1. 在Azure门户中创建服务主体:
  2. 进入Azure门户,导航到“Azure Active Directory”。
  3. 在左侧导航中选择“应用注册”。
  4. 点击“+ 新注册”创建一个新的应用程序注册,为它指定一个名称,然后选择所需的支持帐户类型(如多租户或单租户)。
  5. 创建完成后,记录下生成的客户端ID,这将作为服务连接中的身份标识。

  6. 获取服务主体凭据信息:

  7. 在应用程序注册的设置中,导航到“证书和密码”。
  8. 在“客户端密码”部分,点击“+ 新客户端密码”创建一个新的客户端密码,记录下生成的客户端密钥,它将作为服务连接中的密码。

  9. 在Azure DevOps中创建服务连接:

  10. 进入Azure DevOps项目。
  11. 导航到项目设置,并选择“服务连接”。
  12. 点击“+ 新服务连接”。
  13. 选择“Azure资源管理器”作为服务连接类型。
  14. 在“服务主体凭据”部分,填入之前获取的客户端ID和客户端密钥。
  15. 完成配置,保存服务连接。

使用手动服务主体的优势在于你能够更精确地控制权限和连接,避免了自动服务主体在不同租户之间可能出现的问题。但请确保在操作前详细了解相关文档,以及如何安全地管理服务主体的凭据信息。

总结

虽然自动服务主体在同一Azure AD中工作良好,但在处理涉及多租户的情况下可能会出现问题。使用手动服务主体可以为你带来更大的灵活性和控制,以确保跨租户的订阅选择正常工作。

以上解决方案仅供参考,具体操作可能因版本更新而有所差异,请在操作前查阅最新的文档和资源。

正文完