|
461 | 461 | <Sources> |
462 | 462 | <File>conditionalAccessPolicies.json</File> |
463 | 463 | <File>roleDefinitions.csv</File> |
464 | | - <File>roleAssignments.csv</File> |
| 464 | + <File>RoleAssignmentReport.csv</File> |
465 | 465 | <File>Users.csv</File> |
466 | 466 | </Sources> |
467 | 467 | <PowerShell> |
|
472 | 472 | # get ga role id |
473 | 473 | $gaRoleId = $Data["roleDefinitions.csv"] | Where-Object { $_.displayName -eq "Global Administrator"} | Select-Object -First 1 -ExpandProperty id |
474 | 474 | # get permanently assigned GA users ids |
475 | | - $GAids = $Data["roleAssignments.csv"] | Where-Object { $_.directoryScopeId -in ("/","unknown") -and $_.principalId -eq "user" -and $_.roleDefinitionId -eq $gaRoleId -and $_.assignmentType -eq "Active" } | Select-Object -ExpandProperty principalId |
| 475 | + $GAids = $Data["RoleAssignmentReport.csv"] | Where-Object { $_.directoryScopeId -in ("/","unknown") -and $_.principalType -eq "user" -and $_.roleDefinitionId -eq $gaRoleId -and $_.assignmentType -eq "Assigned" } | Select-Object -ExpandProperty principalId |
476 | 476 | # filter cloud users - only keep cloud GAs |
477 | 477 | $BGAids = $Data["users.csv"] | Where-Object { $_.id -in $GAids -and $_.onPremisesSyncEnabled -eq $false } | Select-Object -ExpandProperty id |
478 | 478 |
|
|
505 | 505 | <Sources> |
506 | 506 | <File>conditionalAccessPolicies.json</File> |
507 | 507 | <File>roleDefinitions.csv</File> |
508 | | - <File>roleAssignments.csv</File> |
| 508 | + <File>RoleAssignmentReport.csv</File> |
509 | 509 | <File>Users.csv</File> |
510 | 510 | </Sources> |
511 | 511 | <PowerShell> |
|
516 | 516 | # get ga role id |
517 | 517 | $gaRoleId = $Data["roleDefinitions.csv"] | Where-Object { $_.displayName -eq "Global Administrator"} | Select-Object -First 1 -ExpandProperty id |
518 | 518 | # get permanently assigned GA users ids |
519 | | - $GAids = $Data["roleAssignments.csv"] | Where-Object { $_.directoryScopeId -in ("/","unknown") -and $_.principalId -eq "user" -and $_.roleDefinitionId -eq $gaRoleId -and $_.assignmentType -eq "Active" } | Select-Object -ExpandProperty principalId |
| 519 | + $GAids = $Data["RoleAssignmentReport.csv"] | Where-Object { $_.directoryScopeId -in ("/","unknown") -and $_.principalType -eq "user" -and $_.roleDefinitionId -eq $gaRoleId -and $_.assignmentType -eq "Assigned" } | Select-Object -ExpandProperty principalId |
520 | 520 | # filter cloud users - only keep cloud GAs |
521 | 521 | $BGAids = $Data["users.csv"] | Where-Object { $_.id -in $GAids -and $_.onPremisesSyncEnabled -eq $false } | Select-Object -ExpandProperty id |
522 | 522 |
|
|
2186 | 2186 | </Recommendation> |
2187 | 2187 | <Sources> |
2188 | 2188 | <File>roleDefinitions.csv</File> |
2189 | | - <File>roleAssignments.csv</File> |
| 2189 | + <File>RoleAssignmentReport.csv</File> |
2190 | 2190 | <File>conditionalAccessPolicies.json</File> |
2191 | 2191 | </Sources> |
2192 | 2192 | <PowerShell> |
|
2490 | 2490 | <Name>Use PIM to grant just-in-time access</Name> |
2491 | 2491 | <Sources> |
2492 | 2492 | <File>roleDefinitions.csv</File> |
2493 | | - <File>roleAssignments.csv</File> |
| 2493 | + <File>RoleAssignmentReport.csv</File> |
2494 | 2494 | </Sources> |
2495 | 2495 | <PowerShell> |
2496 | 2496 | param($Data) |
|
2510 | 2510 | $scopedRoleIds = $Data['roleDefinitions.csv'] | Where-Object { $_.DisplayName -in $securityDefaultRoles } | Select-Object -ExpandProperty id |
2511 | 2511 |
|
2512 | 2512 | # look for active permanent role assignements for those roles |
2513 | | - $scopedActivePermanentAssignments = @($Data['roleAssignments.csv'] | Where-Object { $_.roleDefinitionId -in $scopedRoleIds -and $_.assignmentType -eq "Active" -and [string]::IsNullOrWhiteSpace($_.endDateTime) }) |
| 2513 | + $scopedActivePermanentAssignments = @($Data['RoleAssignmentReport.csv'] | Where-Object { $_.roleDefinitionId -in $scopedRoleIds -and $_.assignmentType -eq "Assigned" -and [string]::IsNullOrWhiteSpace($_.endDateTime) }) |
2514 | 2514 |
|
2515 | 2515 | $res.Priority = "Passed" |
2516 | 2516 | if ($scopedActivePermanentAssignments.Count -gt 0) { |
|
2536 | 2536 | <recommendation> |
2537 | 2537 | <Sources> |
2538 | 2538 | <File>roleDefinitions.csv</File> |
2539 | | - <File>roleAssignments.csv</File> |
| 2539 | + <File>RoleAssignmentReport.csv</File> |
2540 | 2540 | <File>conditionalAccessPolicies.json</File> |
2541 | 2541 | </Sources> |
2542 | 2542 | <PowerShell> |
2543 | 2543 | param($Data) |
2544 | 2544 |
|
2545 | 2545 | $res = "" | select Priority,Data |
2546 | 2546 |
|
2547 | | - # get role ids of each roles with an assignment |
2548 | | - $scopedAssignments = @($Data['roleAssignments.csv'] | Select-Object -ExpandProperty roleDefinitionId) |
| 2547 | + # get role ids of each roles with an assignment (assigned or eligible) |
| 2548 | + $scopedAssignments = @($Data['RoleAssignmentReport.csv'] | Select-Object -ExpandProperty roleDefinitionId) |
2549 | 2549 |
|
2550 | 2550 | # get the role definitions of assigned roles |
2551 | 2551 | $roleDefintions = @($Data['roleDefinitions.csv'] | Where-Object { $_.id -in $scopedAssignments}) |
|
2859 | 2859 | </Recommendation> |
2860 | 2860 | <Sources> |
2861 | 2861 | <File>roleDefinitions.csv</File> |
2862 | | - <File>roleAssignments.csv</File> |
| 2862 | + <File>RoleAssignmentReport.csv</File> |
2863 | 2863 | <File>users.csv</File> |
2864 | 2864 | </Sources> |
2865 | 2865 | <PowerShell> |
|
2870 | 2870 | $GARoleId = $Data['roleDefinitions.csv'] | Where-Object { $_.DisplayName -eq "Global Administrator" } | Select-Object -ExpandProperty id |
2871 | 2871 |
|
2872 | 2872 | # look for users with assigned roles |
2873 | | - $userIdsWithGA = @($Data['roleAssignments.csv'] | Where-Object { $_.roleDefinitionId -eq $GARoleId -and $_.principalType -eq "user"} | Select-Object -ExpandProperty principalId) |
| 2873 | + $userIdsWithGA = @($Data['RoleAssignmentReport.csv'] | Where-Object { $_.roleDefinitionId -eq $GARoleId -and $_.principalType -eq "user"} | Select-Object -ExpandProperty principalId) |
2874 | 2874 |
|
2875 | 2875 | # get GA users |
2876 | 2876 | $usersWithGA = @($Data['users.csv'] | Where-Object { $_.id -in $userIdsWithGA}) |
|
2900 | 2900 | </Recommendation> |
2901 | 2901 | <Sources> |
2902 | 2902 | <File>roleDefinitions.csv</File> |
2903 | | - <File>roleAssignments.csv</File> |
| 2903 | + <File>RoleAssignmentReport.csv</File> |
2904 | 2904 | <File>users.csv</File> |
2905 | 2905 | </Sources> |
2906 | 2906 | <PowerShell> |
|
2921 | 2921 | $scopedRoleIds = $Data['roleDefinitions.csv'] | Where-Object { $_.DisplayName -in $securityDefaultRoles } | Select-Object -ExpandProperty id |
2922 | 2922 |
|
2923 | 2923 | # look for users with assigned roles |
2924 | | - $usersWithRole = @($Data['roleAssignments.csv'] | Where-Object { $_.roleDefinitionId -in $scopedRoleIds -and $_.principalType -eq "user"} | Select-Object -ExpandProperty principalId) |
| 2924 | + $usersWithRole = @($Data['RoleAssignmentReport.csv'] | Where-Object { $_.roleDefinitionId -in $scopedRoleIds -and $_.principalType -eq "user"} | Select-Object -ExpandProperty principalId) |
2925 | 2925 |
|
2926 | 2926 | # get the synced users |
2927 | 2927 | $syncedUsersWithRole = @($Data['users.csv'] | Where-Object { $_.id -in $usersWithRole -and ($_.onPremisesSyncEnabled -eq "True" -or $_.onPremisesImmutableId -eq "True")}) |
|
2989 | 2989 |
|
2990 | 2990 | #### Learn More |
2991 | 2991 |
|
2992 | | - - [Trusted Locations | Microsoft Docs](https://docs.microsoft.com/en-us/azure/active-directory/conditional-access/location-condition#trusted-locations) |
| 2992 | + - [Trusted Locations | Microsoft Docs](https://docs.microsoft.com/en-us/azure/active-directory/conditional-access/location-condition) |
2993 | 2993 | </Recommendation> |
2994 | 2994 | </recommendation> |
2995 | 2995 |
|
|
3015 | 3015 |
|
3016 | 3016 | #### Learn More |
3017 | 3017 |
|
3018 | | - - [Trusted Locations | Microsoft Docs](https://docs.microsoft.com/en-us/azure/active-directory/conditional-access/location-condition#trusted-locations) |
| 3018 | + - [Trusted Locations | Microsoft Docs](https://docs.microsoft.com/en-us/azure/active-directory/conditional-access/location-condition) |
3019 | 3019 | </Recommendation> |
3020 | 3020 | </recommendation> |
3021 | 3021 |
|
|
3042 | 3042 |
|
3043 | 3043 | #### Learn More |
3044 | 3044 |
|
3045 | | - - [Trusted Locations | Microsoft Docs](https://docs.microsoft.com/en-us/azure/active-directory/conditional-access/location-condition#trusted-locations) |
| 3045 | + - [Trusted Locations | Microsoft Docs](https://docs.microsoft.com/en-us/azure/active-directory/conditional-access/location-condition) |
3046 | 3046 | </Recommendation> |
3047 | 3047 | </recommendation> |
3048 | 3048 |
|
|
3074 | 3074 | </Recommendation> |
3075 | 3075 | </recommendation> |
3076 | 3076 |
|
| 3077 | + <recommendation> |
| 3078 | + <Category>Access Management</Category> |
| 3079 | + <Area>Access Policies</Area> |
| 3080 | + <ID>AR0095</ID> |
| 3081 | + <Type>QnA</Type> |
| 3082 | + <QnA> |
| 3083 | + <Name>AccMgmt_Did_you_find_customer_is_licensed_for_Intune_and_there_is_desire_to_allow_personal_devices_use_but_MAM_is_not_deployed</Name> |
| 3084 | + <Answers> |
| 3085 | + <Answer Value="Yes" Priority = "P1"/> |
| 3086 | + <Answer Value="No" Priority = "Passed"/> |
| 3087 | + </Answers> |
| 3088 | + </QnA> |
| 3089 | + <Name>MAM Client App Access Policy for Personal Devices</Name> |
| 3090 | + <Summary> |
| 3091 | + Microsoft Intune Application Management (MAM) provides the ability to push data protection controls such as storage encryption, PIN, remote storage cleanup, etc. to compatible client mobile applications such as Outlook. |
| 3092 | + |
| 3093 | + Then, Conditional Access can enforce policies that will restrict access to cloud services (such as Exchange Online) from approved/compatible apps. |
| 3094 | + </Summary> |
| 3095 | + <Recommendation> |
| 3096 | + - Deploy application MAM policies to manage the application configuration in personal owned devices without MDM enrollment. |
| 3097 | + - Update Conditional Access policies to only allow access from MAM capable clients. |
| 3098 | + |
| 3099 | + #### Learn More |
| 3100 | + |
| 3101 | + - [Conditional Access: Require approved client apps or app protection policy | Microsoft Docs](https://docs.microsoft.com/en-us/azure/active-directory/conditional-access/howto-policy-approved-app-or-app-protection) |
| 3102 | + </Recommendation> |
| 3103 | + </recommendation> |
| 3104 | + |
| 3105 | + <recommendation> |
| 3106 | + <Category>Access Management</Category> |
| 3107 | + <Area>Access Policies</Area> |
| 3108 | + <ID>AR0096</ID> |
| 3109 | + <Type>QnA</Type> |
| 3110 | + <QnA> |
| 3111 | + <Name>AccMgmt_Did_you_find_customer_is_licensed_for_Intune_and_there_is_desire_to_allow_corporate_devices_use_but_MAM_is_not_deployed</Name> |
| 3112 | + <Answers> |
| 3113 | + <Answer Value="Yes" Priority = "P3"/> |
| 3114 | + <Answer Value="No" Priority = "Passed"/> |
| 3115 | + </Answers> |
| 3116 | + </QnA> |
| 3117 | + <Name>MAM Client App Access Policy for Corporate Devices</Name> |
| 3118 | + <Summary> |
| 3119 | + Microsoft Intune Application Management (MAM) provides the ability to push data protection controls such as storage encryption, PIN, remote storage cleanup, etc. to compatible client mobile applications such as Outlook. |
| 3120 | + |
| 3121 | + Then, Conditional Access can enforce policies that will restrict access to cloud services (such as Exchange Online) from approved/compatible apps. |
| 3122 | + </Summary> |
| 3123 | + <Recommendation> |
| 3124 | + - Deploy application MAM policies to manage the application configuration and be future proof for personal devices. |
| 3125 | + - Update Conditional Access policies to only allow access from MAM capable clients. |
| 3126 | + |
| 3127 | + #### Learn More |
| 3128 | + |
| 3129 | + - [Conditional Access: Require approved client apps or app protection policy | Microsoft Docs](https://docs.microsoft.com/en-us/azure/active-directory/conditional-access/howto-policy-approved-app-or-app-protection) |
| 3130 | + </Recommendation> |
| 3131 | + </recommendation> |
3077 | 3132 |
|
3078 | 3133 | <!-- |
3079 | 3134 | <recommendation> |
|
0 commit comments