Как можно получить доступ к точке общего доступа с помощью функции Azure, поддерживаемой управляемым удостоверением?

У меня есть лазурная функция, которая поддерживается управляемой идентификацией.

В том же AD есть офис 365 с сайтом SharePoint под названием «demonews».

Как мне добавить разрешения / добавить управляемую личность в группу «demonews», чтобы она могла получить доступ к SharePoint API?

Я попробовал добавить участника на сайт SharePoint, я попытался добавить участника в группу AD. В раскрывающемся списке не найдено управляемое удостоверение.


person Poul K. Sørensen    schedule 11.09.2019    source источник
comment
Вы пробовали добавить свою личность в качестве пользователя, работающего только с приложением? docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/.   -  person Thomas    schedule 15.09.2019
comment
Это регистрации приложений (вы не можете назначить api разрешений для управляемых регистраций API, о которых я знаю). Таким образом, вы можете создать регистрацию приложения, сохранить секрет в хранилище ключей и использовать MSI для доступа к хранилищу ключей.   -  person Poul K. Sørensen    schedule 15.09.2019
comment
Я никогда не пробовал использовать Sharepoint, но я использовал управляемую идентификацию для подключения к D365, которая имеет такой же подход. Вы можете получить идентификатор приложения с управляемой идентификацией из entreprise application blade в Azure AD.   -  person Thomas    schedule 15.09.2019
comment
Управляемая идентификация - это просто особый тип субъекта-службы, поэтому с точки зрения sharepoint это то же самое: просто объект в Azure ad.   -  person Thomas    schedule 15.09.2019


Ответы (1)


Думаю, это то, что вы ищете:

https://finarne.wordpress.com/2019/03/17/azure-function-using-a-managed-identity-to-call-sharepoint-online/

По сути, вы получите субъект-службу Azure для Office 365 SharePoint, а также роли.

#Get the sharePoint principal $sharePoint = (Get-AzureADServicePrincipal -SearchString “Office 365 SharePoint”).ObjectId

#Get the Roles for that principal $appRoles = Get-AzureADServicePrincipal -SearchString “Office 365 SharePoint” | %{$_.AppRoles}

#Find the specific role $appRole = AppRoles.Where({ $_.Value -eq "Sites.Manage.All" }

#You will also need to get the service principal for your function app

#Get the function app object id $myfunctionapp = (Get-AzureADServicePrincipal -SearchString “myfunctionapp”).ObjectId

#assign the role to the MSI for the sharepoint resource New-AzureADServiceAppRoleAssignment -ObjectId $myfunctionapp -PrincipalId $myfunctionapp -ResourceId $sharePoint -Id $appRole

Затем вы можете использовать локальную конечную точку MSI и секрет для получения токена.

person rfarris2000    schedule 17.09.2019
comment
Если это сработает, я предполагаю, что вы правы, но учитывая, что вы не можете сделать это из пользовательского интерфейса на лазурном портале. Как админ может дать согласие на добавленную роль. - person Poul K. Sørensen; 18.09.2019
comment
Я не знаю ответа на этот вопрос, кроме того, возможно, вы предоставляете разрешения на ресурс для субъекта-службы, а не для приложения? - person rfarris2000; 19.09.2019