将 Azure 自动化帐户中的系统托管标识与 PowerShell 模块 MicrosoftTeams 结合使用

Using System Managed Identity in Azure Automation Account with PowerShell module MicrosoftTeams

通过 PowerShell 模块 MicrosoftTeams 在 Azure 自动化帐户中使用系统托管标识。

Connect-MicrosoftTeams 支持通过 -Identity 开关使用系统管理身份登录。

我不确定需要为服务主体分配哪些权限才能使用 MicrosoftTeams PowerShell 模块 cmdlet。

我想使用 PowerShell 和系统托管标识分配 TeamsAppPermissionPolicy 和 TeamsAppSetupPolicy。 (使用我的个人云帐户当然效果很好。使用团队管理员角色,即不使用托管身份)

当前分配的权限是:

只要执行命令Get-Team,我就能列出所有团队。

当我执行 Grant-csTeamsAppSetupPolicyGrant-csTeamsAppPermissionPolicy 时出现错误:Grant-csTeamsAppPermissionPolicy : The remote server returned an error: (404) Not Found. 这两个 legacy 命令我需要使用

如果有人想对此进行测试,我将在此处提供一些代码:

为服务主体分配权限:

$sp = Get-AzureADServicePrincipal -Filter  "DisplayName eq 'automatebro2'" # Get Service Princiap / Automation Account


$GraphApp = Get-AzureADServicePrincipal -Filter  "AppId eq '00000003-0000-0000-c000-000000000000'" # Microsoft Graph
$Permissions = 'Directory.Read.All', 'Group.Read.All', 'Team.ReadBasic.All', 'TeamSettings.ReadWrite.All'
foreach ($permission in $Permissions) {
    $role = $GraphApp.AppRoles | Where-Object {$_.Value -eq $permission}
    New-AzureAdServiceAppRoleAssignment `
    -ObjectId $sp.ObjectId `
    -PrincipalId $sp.ObjectId `
    -ResourceId $GraphApp.ObjectId `
    -Id $role.Id
}

$skypeandteamsApp = Get-AzureADServicePrincipal -Filter  "AppId eq '48ac35b8-9aa8-4d74-927d-1f4a14a0b239'" # Skype and Teams
$Permissions = 'application_access', 'application_access_custom_sba_appliance'
foreach ($permission in $Permissions) {
    $role = $skypeandteamsApp.AppRoles | Where-Object {$_.Value -eq $permission}
    New-AzureAdServiceAppRoleAssignment `
    -ObjectId $sp.ObjectId `
    -PrincipalId $sp.ObjectId `
    -ResourceId $skypeandteamsApp.ObjectId `
    -Id $role.Id
}

$AzureADGraph = Get-AzureADServicePrincipal -Filter  "AppId eq '00000002-0000-0000-c000-000000000000'" # Azure AD graph
$Permissions = 'Directory.Read.All'
foreach ($permission in $Permissions) {
    $role = $AzureADGraph.AppRoles | Where-Object {$_.Value -eq $permission}
    New-AzureAdServiceAppRoleAssignment `
    -ObjectId $sp.ObjectId `
    -PrincipalId $sp.ObjectId `
    -ResourceId $AzureADGraph.ObjectId `
    -Id $role.Id
}

MicrosoftTeams 测试代码:

Connect-MicrosoftTeams -Identity

Grant-csTeamsAppPermissionPolicy -Identity <UPN> -PolicyName <customPolicy>

据我所知,基本身份验证在 Azure 自动化帐户中可用。

关于如何实现这个的任何想法?

-Cs cmdlet 当前不支持托管服务标识。

Managed Identities Operations