Security controls are a way to state our company's position on a variety of security topics. It's not enough to simply say "We encrypt data" since our customers and teams will naturally want to know "what data do we encrypt?" and "how do we encrypt that data?". When all of our established security controls are operating effectively this creates a security program greater than the sum of its parts that will demonstrate to our stakeholders that GitLab has a mature and comprehensive security program that will provide assurance that data within GitLab is reasonably protected.
We have tried to take a comprehensive approach to our immediate and future security compliance needs. Older and larger companies tend to treat each security compliance requirement individually which results in independent security compliance teams going out to internal teams with multiple overlapping requests. For example, at such a company you might have one database engineer that is asked to provide evidence of how a particular database is encrypted based on SOC2 requirements, then again for ISO requirements, then again for PCI requirements. This approach can be visualized as follows:
Given our efficiency value here at GitLab we wanted to create a set of security controls that would address multiple underlying requirements with a single security control which would allow us to make fewer requests of our internal teams and efficiently collect all evidence we would need for a variety of audits at once. This approach can be visualized as follows:
Adobe's open source compliance framework served as the original starting point for this efficient method of collecting security control evidence and has since evolved with changes to control statements and related framework mappings. Below is a list of controls grouped by families and sub-families.
Clicking a control below that has a link will take you to a page with a variety of information about that control.
Control Owner - Ensures that the design of the control and the control activities operate effectively and is responsible for remediation of any control activities that are required to bring that control into a state of audit-readiness.
Process Owner - Supports the operation of the control and carries out the process designed by the control owner. The process owner is most likely to be interviewed by an auditor to determine whether or not the process is operating as intended.
The lifecycle of our security controls can be found at this handbook page.
The GitLab production environment includes all endpoints and cloud assets used in hosting GitLab.com and its subdomains. This may include third-party systems that support the business of GitLab.com. The word "production" can mean different things depending on the context. The below list is a holistic view of what is considered to be our production environment from a company perspective and is not representative of what is considered as "production" for specific external security audits (e.g. SOC 2).
|Functions to run gitlab.com||Production||Rationale for Determination||Location|
|gitlab-ops (ops.gitlab.net)||YES||host of the Chef cookbooks and metadata||GCP|
|gitlab-production (gitlab.com)||YES||host of live .com SaaS website and end user OAuth||GCP|
|gs-production||YES||host of GitLab version checker - version-gitlab-com||GCP|
|Route 53||YES||host of DNS||AWS|
|Chef server||YES||host of chef server||Digital Ocean|
|gitlab-ci||LIMITED||hosts runner managers||GCP|
|dev-gitlab-org||YES||host of OAuth||Azure|
|Workhose||YES||host of OAuth||GCP|
|GitLab-Shell||YES||host of OAuth||GCP|
|Gitaly||YES||host of OAuth||GCP|
|Sub-functions of gitlab.com||Production||Rationale for Determination||Location|
|gemnasium-production||YES||hosts services used by dependency scanning||GCP|
|Functions that support gitlab.com||Production||Rationale for Determination||Location|
|license-gitlab-com||YES||host of GitLab license management||GCP|
|Functions that indirectly supports running of GitLab||Production||Rationale for Determination||Location|
|gitlab-security||YES||host of GitLab Security team tools||GCP|
|DELKE||YES||Third party logging||GCP/Elastic|
|env-zero||YES||host of Bootstrap GCP||GCP|
|service-prod||YES||host of design-gitlab-com||GCP|
|PagerDuty||YES||page on-call engineers||PagerDuty|
|Cloudflare||YES||host of CDN||Cloudflare|
|Pages||YES||host of OAuth||GCP|
If you have any feedback on any of the security controls or related documentation, please add it as a comment in this issue.
The GitLab compliance team is responsible for ensuring the consistency of the documentation of the security controls listed below. While normally we welcome any GitLab team-member to make edits to handbook pages, please be aware that even small changes to the wording of any of these controls impacts how they satisfy the requirements for the security frameworks they map to. Because of this, we ask any changes that need to be made to this page and the underlying guidance pages to start with a comment in this issue. The compliance team will then engage with you and make any appropriate changes to these handbook pages.