将 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-csTeamsAppSetupPolicy
或 Grant-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 当前不支持托管服务标识。
通过 PowerShell 模块 MicrosoftTeams 在 Azure 自动化帐户中使用系统托管标识。
Connect-MicrosoftTeams
支持通过 -Identity
开关使用系统管理身份登录。
我不确定需要为服务主体分配哪些权限才能使用 MicrosoftTeams PowerShell 模块 cmdlet。
我想使用 PowerShell 和系统托管标识分配 TeamsAppPermissionPolicy 和 TeamsAppSetupPolicy。 (使用我的个人云帐户当然效果很好。使用团队管理员角色,即不使用托管身份)
当前分配的权限是:
只要执行命令Get-Team
,我就能列出所有团队。
当我执行 Grant-csTeamsAppSetupPolicy
或 Grant-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 当前不支持托管服务标识。