-
Notifications
You must be signed in to change notification settings - Fork 241
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Create a JSON file to store permission scopes required for ScubaGear #1380
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Can you move the file from the /Connection folder to a new /Permissions folder instead?
- I noticed you removed the ScubaGearSPPermissions node. In the future ScubaGear will have a utility script that helps users register a service principal to run the tool. Is the thought that our new utility script can just filter the GraphCmdLetPermissions node for entries that are of runtype = application and just use that list to create the needed permissions for the service principal in Entra Id?
- We need to add the following REST APIs as entries to the GraphCmdLetPermissions node along with their associated required permissions. Entra Id now includes direct calls to REST APIs without Cmdlets and therefore we need to ensure those permissions are represented.
- /beta/roleManagement/directory/roleEligibilityScheduleInstances
- /beta/roleManagement/directory/roleAssignmentScheduleInstances
- /beta/identityGovernance/privilegedAccess/group/eligibilityScheduleInstances
- /beta/privilegedAccess/aadGroups/resources
79d40ae
to
1218df3
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minor recommendation for the format as we've had code trip over string vs list values before when it isn't consistent.
PowerShell/ScubaGear/Modules/Permissions/ScubaGear-Permissions.json
Outdated
Show resolved
Hide resolved
1218df3
to
3dc451f
Compare
40c59a0
to
23a7323
Compare
23a7323
to
9d48ea1
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Found a few more multi-valued fields that are represented as strings when singletons. Recommend consistently representing as multi-valued structure (array or dictionary) to make the structure easier to traverse in all cases. Specific fields and examples are included in review comments below.
PowerShell/ScubaGear/Modules/Permissions/ScubaGearPermissions.json
Outdated
Show resolved
Hide resolved
PowerShell/ScubaGear/Modules/Permissions/ScubaGearPermissions.json
Outdated
Show resolved
Hide resolved
PowerShell/ScubaGear/Modules/Permissions/ScubaGearPermissions.json
Outdated
Show resolved
Hide resolved
Updated leastPermissions and poshModule keys to array type. |
PowerShell/ScubaGear/Modules/Permissions/ScubaGearPermissions.json
Outdated
Show resolved
Hide resolved
"commercial", | ||
"gcc", | ||
"gcchigh", | ||
"dod" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This applies to all of the JSON objects in this file. Do we know for sure that this works for dod
?
We have this DoD diclaimer as we've never tested on a DoD
tenant.
PowerShell/ScubaGear/Modules/Permissions/ScubaGearPermissions.json
Outdated
Show resolved
Hide resolved
"dod": "https://{domain}-admin.sharepoint.mil.us" | ||
}, | ||
"poshModule": ["Microsoft.Online.SharePoint.PowerShell"], | ||
"leastPermissions": ["Sites.FullControl.All"], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Connect-SPOService
doesn't support Service Principal auth. This should be empty array.
"moduleCmdlet": "Connect-MicrosoftTeams", | ||
"apiResource": "v1.0/groups/{id}/team", | ||
"poshModule": ["MicrosoftTeamsPowerShell"], | ||
"leastPermissions": ["User.Read.All"], | ||
"higherPermissions": ["User.ReadWrite.All"], | ||
"rolePermissions": ["Global Reader"], | ||
"scubaGearProduct": ["teams"], | ||
"supportedEnv": ["dod"], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does Teams need User.Read.All
or User.ReadWrite.All
?
Global Reader
is sufficient when doing auth via a Service principal or interactive user.
Updated permissions file to reflect discussion last week. Unified keys across objects, renamed rolePermissions to spRolePermissions. Created singular objects for connect cmdlets to break out apiResource based on the environment. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updates addressed previous comments. Looks merge ready to me.
🗣 Description
Permissions file containing current SCuBAGear permissions mapping.
💭 Motivation and context
Added permissions file to allow centralized management of all SCuBAGear Microsoft Graph permissions.
#1391 is a follow up to this issue, which aims to modify the Connection module to read from the new ScubaPermissions.json file instead of hard coded values.
Closes #1356
🧪 Testing
Testing was conducted across commercial and gcchigh tenants. Created PowerShell code that imported the JSON file and made connections to Microsoft Graph utilizing the permission scopes defined under Permission within the ScubaGearGraphScopes section of the file.
✅ Pre-approval checklist
✅ Pre-merge checklist
PR passed smoke test check.
Feature branch has been rebased against changes from parent branch, as needed
Use
Rebase branch
button below or use this reference to rebase from the command line.Resolved all merge conflicts on branch
Notified merge coordinator that PR is ready for merge via comment mention
✅ Post-merge checklist