ADP Permissions Model¶
This page contains an overview of the roles and permissions within ADP (Azure Development Platform). It outlines the different roles such as Platform User, Technical Team Member, Delivery Team Admin, Delivery Programme Admin, and ADP Admin, along with their respective descriptions and responsibilities. Explains the permissions associated with each role in the ADP Portal, Azure DevOps, and GitHub. It describes how permissions are stored in a database and Azure AD using AAD groups. Users are assigned to specific groups based on their roles, granting them the necessary permissions in the ADP Portal, GitHub, Azure, and Azure DevOps.
ADP Roles¶
The table below details the roles in the Platform, their scope and description:
Role | Scope | Description |
---|---|---|
Platform User | Platform | A user of the ADP Platform, who has access to the ADP Portal and can be a member of a Delivery Project or Programme. To do this, they must have a Cloud or DefraGovUK Account. |
Technical Team Member | Delivery Project | Tech Lead, Tester, Developer, or Architect on the Delivery Project team. |
Delivery Team Member | Delivery Project | Member of the Delivery Project team. |
Delivery Team Admin | Delivery Project | Tech lead and/or Delivery Manager for the Delivery Project team. |
Delivery Programme Admin | Delivery Programme | Administers Delivery Programmes within the ADP Portal. |
ADP Admin | Platform | ADP Platform Engineering delivery team member. |
CCoE Engineer | Organization | Cloud Center of Excellence engineer. |
ADP Service Account | Platform | Service account used by automation within ADP. |
Info
Please note: if a user holds multiple roles, they will receive the combined permissions associated with all their roles. This ensures that they have access to all the rights and privileges granted by the most significant role they possess. Essentially, the role with the highest level of permissions takes precedence.
Portal Permissions¶
The permissions for the portal are stored both in a database and in Azure AD with the use of AAD groups. The group assignments and naming convention are as follows:
- Delivery Non Technical Team Member are assigned to
Delivery AAG-Users-ADP-{programme}-{delivery project}_NonTechUser
AAD group. - Technical Team Member are assigned to
AAG-Users-ADP-{programme}-{delivery project}_TechUser
AAD group. - Delivery Team Admin are assigned to
AAG-Users-ADP-{programme}-{delivery project}_Admin
AAD group. - Delivery Programme Admin are assigned to
AAG-Users-ADP-{programme}_Admin
AAD group. - ADP Admins are assigned to
AAG-User-ADP-PlatformEngineers
AAD group.
By being added to these groups in Azure AD via the ADP Portal, users will be granted the permissions for their role in the ADP Portal.
The permissions for each role in the ADP Portal are detailed below.
Platform User¶
ADP Portal Permissions for the Platform User role:
- Access to the ADP Portal.
- Can be selected as a Delivery Project team member/admin or Delivery Programme Admin.
- Read access to all ALBs, delivery projects, programmes, etc.
Delivery Project: Team Member¶
ADP Portal Permissions for the Delivery Project Team Member role:
- Includes all Platform User permissions.
- Displayed as a Member of assigned Delivery Project teams.
Delivery Project: Technical Team Member¶
ADP Portal Permissions for the Technical Team Member role:
- Includes all Delivery Project Team Member permissions.
- Scaffold/create new services for their delivery project (inc. repos).
Delivery Project: Team Admin¶
ADP Portal Permissions for the Delivery Team Admin role:
- Includes all Delivery Team Member permissions.
- Has the ability to invite/add users to their Delivery Project team as: Team members, Technical Team Members, Team Admins, and Technical Team Admins via the ADP Portal. The function adding an team member will add them to required GitHub team, Azure DevOps project, and Azure AAD groups required for Azure resource access, depending on new team members roles in the Delivery Project.
- Edit delivery project details in the ADP Portal.
Delivery Programme Admin¶
ADP Portal Permissions for the Delivery Programme Admin role:
- Includes all Delivery Team Admin permissions for all Delivery Projects in the programme.
- Can create new Delivery Projects in the programme.
- Can edit programme details for programmes they administrator in the ADP Portal.
- Can invite/add other admins to the programmes they administer.
ADP Admin¶
ADP Portal Permissions for the ADP Admin role: - Full access to the ADP Portal and is admin for all ALBs, delivery projects, programmes, etc.
GitHub Permissions¶
GitHub Permissions are assigned and managed using GitHub teams. The following GitHub teams are automatically assigned to each repository owned by a Delivery Project:
ADP-{programme}-{delivery project}-Contributors
GitHub team: contains all Delivery Project Technical Team MembersADP-{programme}-{delivery project}-Admins
GitHub team: contains users that have been assigned both the Technical Team Member & Delivery Team Admin role for the Delivery ProjectADP-Platform-Admins
GitHub team: contains the ADP Admins.
Info
Please Note: Users that have not been asssigned the Technical Team Member role for a Delivery Project will not be given any GitHub permissions. Delivery Programme Admins & Delivery Project Team Admins can use the ADP Portal to add and remove users from their GitHub teams in via the add/ remove user functionality.
Info
Please Note: By default all repositories are public and can be accessed by anyone. Anyone can clone, fork, and view the repository. However, only members of the GitHub team will be able to push changes to the repository.
Technical Team Member¶
Technical Team Members are given the following permissions in GitHub:
- Write access to Delivery Projects GitHub repositories, which will allow triage permissions plus read, clone and push to repositories.
Technical Team Member with Delivery Team Admin¶
Users that have been given both the Technical Team Member & Team Admin role within a Delivery Project are given the following permissions in GitHub:
- All permissions of a Technical Team Member.
- Admin access to Delivery Projects GitHub repositories, which will allow full access to their repositories including sensitive and destructive actions.
ADP Admin¶
ADP Admins are given the following permissions in GitHub:
- All permissions of a Technical Team Member with Delivery Team Admin.
- Full access to all ADP repositories in the DEFRA GitHub organization.
Azure Permissions¶
TODO
TBC
For Azure permissions we use AAD group to given users the correct level of permissions. There are the key groups are for Azure permissions are as follows:
- Technical Team Member are assigned to
AAG-Users-ADP-{programme}-{delivery project}_TechUser
AAD group. - ADP Admins are assigned to
AAG-User-ADP-PlatformEngineers
AAD group.
Info
Users with Delivery Team Admins, Delivery Programme Admins, or Delivery Team Members roles only will not be given any Azure permissions. They can add, edit, or remove users from their delivery projects AAD groups in the ADP Portal by the add/ remove user functionality in the ADP Portal.
Technical Team Member¶
Technical Team Members are given the following permissions in Azure: - ...
Spell out permissions for each group in each of Azure resources, etc¶
Should this be done here or in an another page?
Resource group Database
- AAG-Azure-ADP-{programme}-{delivery project}-{environment}-PostgressDB_Reader
- AAG-Azure-ADP-{programme}-{delivery project}-{environment}-PostgressDB_Writer
Azure DevOps Permissions¶
TODO
TBC
ADP-ALB-ProgrammeName-DeliveryProjectName-Contributors - For Technical Team Members (write access level to the repo)
Sonar Cloud Permissions¶
ADP will use Technical Team members GitHub account to assign permissions in SonarCloud. Assuming that this GitHub account has been added to the DEFRA's SonarCloud organisation, ADP will assign their GitHub account to the their Delivery Project's SonarCloud group when they are added to a Delivery Project in the ADP Portal. Giving them access to do the required actions for their Delivery Project within SonarCloud.
Info
By default all Sonar Cloud projects are public and can be accessed by anyone in read only mode.
ADP portal creates a SonarCloud user group and permissions template per Delivery Project on creation using the {Delivery Project Team name}
as the groups name. This group will filter on SonarCloud projects by the Delivery Project's ADP namespace or alias fields. For example if project FCP ACD has a ADP namespace of fcp-acd
and a alias of ffc-acd
group will have permissions on Sonar Cloud project starting with fcp-acd*
or ffc-acd*
(ffc-acd-frontend, fcp-acd-backend, etc).
Warning
SonarCloud projects that do not include the delivery projects ADP namespace or alias in the name of the project in Sonar Cloud will not be included in the group permissions. An Sonar Cloud Organisation Admin will need to add the service to the group permissions manually.
Technical Team Member¶
Each Technical Team Member will be added to the SonarCloud user group for the Delivery Project they are a member of in Sonar Cloud. The permissions for the group are as follows for each service in Sonar Cloud:
- Administer Issues: Change the type and severity of issues, resolve issues as being "fixed", "accepted" or "false-positive" (users also need "Browse" permission).
- Administer Security Hotspots: Resolve a Security Hotspot as reviewed (fixed or safe), reset it as to review (users also need Browse permission).
ADP Admin¶
ADP Admins will be able to see all services (SonarCloud projects) created by ADP's automation in Sonar Cloud. These are the permissions for the ADP
user group in Sonar Cloud as the Sonar Cloud project level:
- Administer Issues: Change the type and severity of issues, resolve issues as being "fixed", "accepted" or "false-positive" (users also need "Browse" permission).
- Administer Security Hotspots: Resolve a Security Hotspot as reviewed (fixed or safe), reset it as to review (users also need Browse permission).
- Administer: Access project settings and perform administration tasks. (Users will also need "Browse" permission)
- Execute Analysis: Ability to get all settings required to perform an analysis (including the secured settings like passwords) and to push analysis results to the SonarCloud server.
ADP Service Account & ADP SonarCloud Automation¶
ADP requires these permissions in order to run perform API administration tasks in Sonar Cloud at the organisation level. These permissions are required to create the user groups, permissions templates, and add users to the permissions templates in Sonar Cloud. The permissions are as follows:
- Administer: Allows you to perform any action on both Quality Profiles and Quality Gates.
- Execute Analysis: Allows you to trigger an analysis and to push analysis results to the SonarCloud server.
- Create Project: Allows you to initialize a project and configure its settings before the initial first analysis is performed.
- Administer Organization: Allows you to perform all administrative functions for an organization.
Details of SonarCloud permissions.
Current known Sonar Cloud Web API Actions:
- Create User Group - Create a group. Requires the following permission: 'Administer System'.
- Search for User - Search for users. Requires the following permission: 'Administer System'.
- Add user to User Group - Add a user to a group. 'id' or 'name' must be provided. Requires the following permission: 'Administer System'.
- Create Permissions Template -Create a permission template.Requires the permission 'Administer' on the organization.
- Update Permissions Template - Update a permission template. Requires the permission 'Administer' on the organization.
- Add User Group to Permission Template - Add a group to a permission template. Requires the permission 'Administer' on the organization. Giving a group the permission of
codeviewer
,issueadmin
,securityhotspotadmin
,scan
, anduser
to the group added to permissions template.
Info
Not possible to add new users directly to github organisation. User will need to be added to the Sonar Cloud organisation manually by a Sonar Cloud Organisation Admin or allow for member synchronization on DEFRA GitHub organisation.