Azure Functions, PnP PowerShell, 관리 ID 및 SharePoint Online
Connect-PnPOnline -ManagedIdentity
현재 연결에 SharePoint 컨텍스트가 없습니다.
액세스 토큰
그래도 관리 ID를 계속 사용할 수 있습니다. connect to Azure services in app code에 대한 추가 단계가 필요합니다.
프로필.ps1
if ($env:MSI_SECRET) {
$resourceURI = $env:resourceURI
$tokenAuthURI = $env:MSI_ENDPOINT + "?resource=$resourceURI&api-version=2017-09-01"
$tokenResponse = Invoke-RestMethod -Method Get -Headers @{"Secret" = "$env:MSI_SECRET" } -Uri $tokenAuthURI
$accessToken = $tokenResponse.access_token
Connect-PnPOnline -Url $env:SiteUrl -AccessToken $accessToken
#Invoke Get-PnPSite to test
}
$env:MSI_SECRET
및 $env:IDENTITY_HEADER
는 동일한 값을 반환합니다. $env:MSI_ENDPOINT
및 $env:IDENTITY_ENDPOINT
도 마찬가지입니다.$env:resourceURI
및 $env:SiteUrl
는 app settings 다음과 같이 정의됩니다.$resourceURI ="https://<yourtenant>.sharepoint.com"
$siteUrl="https://<yourtenant>.sharepoint.com/sites/<yoursite>"
최소 필수 권한
그리고 필요한 최소 권한을 할당해야 한다고 생각하므로 관리 ID에는 Graph API 및 SPO에 대한 API 권한
Sites.Selected
만 있습니다.설정.ps1
function Set-AzureADPermissions_SitesSelected {
param(
$tenantId,
$appDisplayName
)
Connect-AzureAD -TenantId $tenantId
$GraphAppId = "00000003-0000-0000-c000-000000000000" # Microsoft Graph
$SPOAppId = "00000003-0000-0ff1-ce00-000000000000" # SharePoint Online
#Retrieve the Azure AD Service Principal instance for the Microsoft Graph (00000003-0000-0000-c000-000000000000) or SharePoint Online (00000003-0000-0ff1-ce00-000000000000).
$servicePrincipal_Graph = Get-AzureADServicePrincipal -Filter "appId eq '$GraphAppId'"
$servicePrincipal_SPO = Get-AzureADServicePrincipal -Filter "appId eq '$SPOAppId'"
$permissionName = "Sites.Selected"
$SPN = Get-AzADServicePrincipal -Filter "displayName eq '$appDisplayName'"
Start-Sleep -Seconds 10
# Use application permissions. Delegate permissions cannot be utilized using a Managed Identity.
# $servicePrincipal_Graph.AppRole | Where-Object { $_.AllowedMemberType -eq "Application" -and $_.Value -eq "Sites.Selected"}
$appRole_Graph = $servicePrincipal_Graph.AppRoles | Where-Object { $_.AllowedMemberTypes -eq "Application" -and $_.Value -eq $permissionName }
$appRole_SPO = $servicePrincipal_SPO.AppRoles | Where-Object { $_.AllowedMemberTypes -eq "Application" -and $_.Value -eq $permissionName }
# Grant API Permissions
New-AzureAdServiceAppRoleAssignment -ObjectId $SPN.Id -PrincipalId $SPN.Id -ResourceId $servicePrincipal_Graph.ObjectId -Id $appRole_Graph.Id
New-AzureAdServiceAppRoleAssignment -ObjectId $SPN.Id -PrincipalId $SPN.Id -ResourceId $servicePrincipal_SPO.ObjectId -Id $appRole_SPO.Id
# Write-Host "Now grant access to SPO site using the following:"
# Write-Host "App Id: $($SPN.AppId)"
# Write-Host "App Name: $($SPN.DisplayName)"
return $SPN.AppId
}
function Set-PnPSiteAccess{
param(
$siteUrl,
$appId,
$appName,
$permission
)
Connect-PnPOnline -Url $siteUrl -Interactive
Grant-PnPAzureADAppSitePermission -AppId $appId -DisplayName $appName -Site $siteUrl -Permissions $permission
}
$appId= Set-APIPermissions -tenantId $tenantId -appDisplayName $appName
Set-PnPSiteAccess -siteUrl $siteUrl -appId $appId -appName $appName -permission Write
Reference
이 문제에 관하여(Azure Functions, PnP PowerShell, 관리 ID 및 SharePoint Online), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kkazala/azure-functions-pnp-powershell-managed-identity-and-sharepoint-online-2ih5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)