【问题标题】:Azure function service principal not available in ADAzure 函数服务主体在 AD 中不可用
【发布时间】:2019-06-04 07:24:49
【问题描述】:

我在 azure 函数的托管标识方面遇到了一个问题。 所以这是我的步骤: 1.创建Azure函数 2. 在“平台功能”中,我创建/启用了“系统分配”身份。 3. 现在我想为这个服务主体创建一个密钥,所以我去 Active Directory -> App Registrations 但没有服务主体。

我这样做是因为我想做以下事情:https://wp.sjkp.dk/lets-encrypt-azure-functions-and-managed-service-identity/

【问题讨论】:

  • 如果没有您需要/可以创建的服务主体,对吧?
  • 服务主体在Enterprise applications而不是App Registrations,搜索时选择Application TypeAll applications即可找到。
  • 是的,我可以在企业应用程序中看到它,但是对于 Let's Encrypt 扩展,我需要创建此应用程序的 SecretKey,并且这仅在“应用程序注册”中可用?
  • 是的,它只在应用注册中可用。
  • 是的,但是为什么服务主体不在那里?

标签: azure azure-functions


【解决方案1】:

如果要为服务主体创建密钥,可以使用 powershell New-AzureADServicePrincipalPasswordCredential

注意:您需要确保您有运行该命令的权限,例如您是租户的全局管理员。

New-AzureADServicePrincipalPasswordCredential -ObjectId <service principal objectid>

服务主体的application id是您提供的链接中使用的ClientId,截图中的Value是秘密。

更新:

如果我们启用 MSI,函数应用会定义两个环境变量。 MSI_ENDPOINTMSI_SECRETMSI_SECRET 是服务主体的秘密。

您可以在函数的Advanced tools (Kudu) 中找到它 -> Environment

参考:https://docs.microsoft.com/en-us/azure/app-service/overview-managed-identity#using-the-rest-protocol

【讨论】:

  • 好的,谢谢,但我得到:消息:权限不足,无法完成操作。我是此租户的全局管理员
  • 谢谢,解决密钥保管库中的值不是问题。我认为 Let's Encrypt Extension 需要 clientID 和 clientSecret 来保存 WebApp 的证书。
  • @bater 也许你可以手动为你的函数create a new AD App,然后create a secret
  • 是的,这就是解决方案。我创建了一个新应用程序并使用了它。感谢您的帮助!
  • @bater 我错过了MSI_SECRET,你也可以使用它,看我的更新。
猜你喜欢
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-28
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多