Security Compliance Team
Security Compliance Team
Our objectives
We support the Security division’s mission and operating principles by:
- Maintaining GitLab’s position as the most trusted DevSecOps offering on the market
- Maintaining and achieving security certifications and attestations that meet the needs of our customers
- Identifying and mitigating information security risk through continuous control monitoring of systems, applications, and repositories
- Applying compliance automation and policy-as-code guardrails to minimize toil and enable product, development, and infrastructure teams
- Using our own product (dogfooding) to meet key security controls, improve our offering, and demonstrate to customers how they can do the same
Core Competencies
- Security certifications and attestations
- Gap Analysis Program: feasibility analysis for certification expansion
- External Audit coordination and execution
- Continuous Monitoring of GitLab’s Security Controls which are mapped to applicable regulatory requirements and security certifications/frameworks we have committed to.
- Observation and Remediation Management
- Industry and Regulatory Monitoring and Insights
- Monitoring drafts and changes to relevant laws, executive orders, directives, regulations, policies, standards, and guidelines.
- Collaborating on responses to relevant RFIs, RFQs, RFPs, and requests for public comment.
- Monitoring changes to government contractual language that could impact public sector security and compliance posture.
Where we work
The single source of truth for all of in-progress work is the Security Compliance team top-level epic, which has detailed status updates, along with the team epic board which we use to visualize workflow status and compare to our roadmap. All work that is directly associated with our roadmap should take place via these and issues should be opened in the Security Compliance Team Issue Tracker project. This is important for two reasons: It allows us to work efficiently by centralizing and organizing our work in a single place using a robust labeling scheme and it allows us to report on various operational metrics (performance indicators).
Much of our work related to the FedRAMP Authorization Program is unfortunately not visible to the rest of GitLab due to regulatory mandates outside of our control. In order to bring as much transparency and visibility into our work, and to continue to track basic metrics, it is critical that we continue to use our epic board and issue tracker as much as possible, even if used to track high-level tasks with links to detailed issues within the authorization boundary.
All team members are encouraged to regularly start Slack discussions in # sec-assurance
instead of the private sec-assurance-team
channel which was the default before October 2024. Most of the work we do is actually not limited access and therefore can be discussed openly.
How we work
We use agile program management and project management best practices to organize our work with the goal of being as efficient as possible while continuously iterating towards our objectives. Security Compliance team members are encouraged to regularly bring up feedback on how we can improve the way we work and this is a standing topic in our weekly team meeting agenda.
Scheduled meetings
We try to avoid meetings when possible and prefer to work async. However, if we don’t make progress async we should not hesitate to schedule a meeting. Our only recurring, mandatory meetings are the monthly department meeting, weekly team meeting, and 1:1s. However, don’t wait for our team meeting or 1:1s to start a discussion; instead start a Slack thread and/or an issue and let’s use these meetings to finish the discussion and make final decisions.
We have a weekly call with all of Security Compliance, which includes time for a breakout discussion specific for Dedicated Markets. In addition to that, we also have recurring calls necessary for our FedRAMP program which are necessary for contributing to the working group, and logging meeting minutes (external audit artifacts) associated with the configuration control board and compliance sync.
Our weekly team meeting follows this agenda:
- Personal Updates / weekend highlights / looking ahead (5 mins)
- Team Stand-Up (15 mins)
- Progress Updates: Each team member shares key updates focusing on:
- Major accomplishments since the last meeting / celebrations and wins
- Blockers or dependencies that require team support
- Limit updates to 1-2 minutes per person. Use the epic/issue boards for details outside this meeting.
- Focus Topic: Priority Epic/Issue Discussion, Problem Solving, Brainstorming (20 mins)
- Deep Dive into Key Epics: Choose one or two epics/issues where the team’s input or collaboration is crucial for progress.
- Examples: Major compliance audit preparation, urgent security remediation efforts, etc.
- Discuss blockers, decisions, or resource needs.
- Team Dynamics & Collaboration (10 mins)
- What went well / What can be improved?
- How the team can improve collaboration or efficiency.
- Feedback on communication practices (e.g., storytelling, visibility, impact)
- Identify any friction points or areas for support.
- Action: Agree on one improvement or experiment to try until the next meeting (e.g., better retrospective process, additional support, or skill-sharing).
- Miscellaneous Topics / Open Floor (5 mins)
- Address any other topics that didn’t fit into the above sections.
- Team members can raise quick, time-sensitive issues, or suggestions for future discussion.
- Wrap-Up & Action Items (5 mins)
- Summarize key takeaways, decisions, and next steps.
- Assign action items, if any, and set timelines.
Epic hierarchy
The our team top-level epic is simply a SSOT for status updates for epic assignees / directly responsible individuals (DRIs). The immediate child epics get a seccomp-roadmap
label to appear in our epic board and effectively constitute our roadmap.
- Sub-epics group tasks required to deliver an item mentioned
- Sub-epics represent an item from the roadmap and are delivered in a specific phase
- Sub-epics can span multiple months, but their end date should match the ‘anticipated completion date’ of the roadmap phase they are added to.
The diagram below shows an example of traversing the complete hierarchy:
graph TD
A(Security Compliance top-level epci) --> B(SOC 2 Type 2 attestation)
B --> C([Epic])
B --> D([SOC 2 Type 2 Gap Assessment for GitLab.com])
B --> E([Expand SOC 2 TSC scope to include Availability criteria])
C --> G([Sub-epic])
E --> H([Q1 Continuous Control Monitoring])
E --> I([Q1 CCM: GitLab.com backend])
B --> F([...])
E --> J([...])
G --> K([Issue 1])
Epic assignee responsibilities
Each epic has a single DRI who is ultimately responsible for delivering the project. This does not mean they are doing all of the work, rather they are ensuring the work is progressing, blockers are quickly addressed or escalated if needed, and reporting on the status each week.
The DRI needs to:
- Work with others to move issues through the boards (e.g. from triage to in progress to complete)
- Ensure epic and any nested child epics and issues are using the appropriate labels
- Ensure the epic meets criteria outlined in epic structure (next section)
- Provide status updates on the epic each week including accomplishments, what’s next, overall health status, and any blockers
Epic structure
Each immediate child epic under our top-level team epic must include the following (adjust quick actions as necessary):
## Background
## Objective
## Exit criteria
- [ ]
/label ~"FY26-Q1" ~"seccomp-function::gap assessments" ~"seccomp workflow::triage" ~"team::security compliance" ~"seccomp-roadmap"
/health_status on_track
/set_parent &289
-----------
<!--DO NOT EDIT BELOW THIS LINE-->
<!--STATUS NOTE START-->
<!--STATUS NOTE END-->
The bottom status note comments at the bottom are important as this is what is used to automatically post status updates to these epics and the team epic.
Epic meta data to include
- Assignee is the DRI which should be populated whenever an epic moves to
seccomp workflow::in progress
- Start date is set to the expected start date, and updated to be the actual start date when the project begins
- Due date is set to be the expected end date
- The due date is set based on the Roadmap
- The date that a project actually ended is taken from the date that the epic was closed
- Health status should be kept updated (on track, needs attention, at risk)
Labels are described in the Labels section.
Roadmap
All epics and issues are set with due dates according to the official roadmap.
Process to update epic due dates / roadmap items:
- After the end of each month Security Compliance management reviews the epic (expected) due dates and works with epic assignees / DRIs to determine any roadmap changes if an epic extends beyond the epic’s planned phase.
- Management then determines roadmap adjustments so that planned work in future phases remains realistic after shifting open work.
- Roadmap changes are shared in the next weekly sync.
Status updates
We leverage automation to ensure team members only need to provide a status update once and management only ever has to go to one place to review it. This has historically been a big problem at GitLab with epics and issues spread across various subgroups and projects.
The status for all work relating to the Security Compliance roadmap is maintained in the description of the top-level team epic so that it is visible at a glance.
Weekly status update process
DRIs should provide weekly updates for the DRI’s epics according to following process:
- Every Thursday afternoon the epic assignee / DRI of active epics (anything that is not
seccomp workflow::triage
) will get @mentioned in a comment on the epic asking them to reply with a status update.
- By 17:00 UTC / 12:00 PM ET on Fridays DRIs of active epics (or the person covering if DRI is OOO) provide an update in the status section of the description of the epic regarding status of the epic including any relevant details of child epics and issues.
- If the DRI for a child-epic is different than the epic DRI, the epic DRI is responsible for getting updates from the child-epic DRI.
- Format for weekly update should be a brief update (~sentence or couple bullets) for each of these three items:
- Progress since last update - Changes deployed to production, unblocked blockers, any other progress achieved.
- Risk and Confidence - Any new blockers identified or existing blockers that persist? Any other challenges now or in the near future? How do these blockers and/or challenges affect our confidence of completing by scheduled due date per the roadmap?
- Mitigations - What is required to overcome challenges or blockers identified? Should this be escalated to other team members, teams, executives, or domain experts?
- Update Workflow and Health label - After each status update, the workflow label and health status should be updated. See Labels.
- Top-Level Epic Status Update automation periodically synthesizes updates from the DRI’s status update reply comment to automatically populate their epic with the status and the top-level team epic.
- In order to ensure efficiency we will use these same status updates across any other department, division, or OKR status updates, to include broadcasts in Slack.
Backlog refinement
Prior to the start of a new quarter, the team will spend time refining the epic backlog. This process will be led by the team Manager, who will go through the epics targeted for the upcoming quarter according to the roadmap and ensure each epic contains the following information (pulling in different stakeholders to help fill in the details as necessary):
- Background (e.g. provide context and the purpose of this work, what is it and why is it relevant?)
- Objective (SMART goal explaining the plan/solution: Specific, Measurable, Achievable, Relevant, Time-bound)
- Exit criteria (break down the work into smaller, logical chunks and highlight dependencies and predecessors)
When the above information is being added, the Epic will move from Triage to Ready status. The goal is to start each quarter with our planned roadmap items for that quarter in the Ready list.
Labels
At GitLab, we like to label everything. It provides critical metadata on epics and issues because GitLab does not yet support custom fields. We will work on automation that automatically applies labeling logic to issues or reminds assignees, however this is a work in progress. The SSOT for our labeling schemes will soon become our team’s issue tracker (new as of Oct 2024).
The easiest way to ensure all labels are applied to issues is to use issue templates for everything which can have quick actions with pre-populated labels that can be modified as needed. A feature that includes epic templates will hopefully be coming soon but for now refer back to the.
All epics and issues should have the following labels:
- All epics and issues should have our team label:
team::security compliance
.
- Scoped
seccomp workflow::
labels.
- Scoped
seccomp-function::
labels
- Issues will likely need other labels that may be specific to a function’s workflow or critical for capturing metrics.
In addition to the above, roadmap epics (direct child epics on the top-level team epic) should have:
seccomp-roadmap
which is used by the team epic board
- Fiscal year and quarter(s) (e.g.
FY25-Q4
(and FY26-Q1
if it spans multiple quarters))
Workflow Labels
Workflow steps can be skipped. For example, if an issue is well-defined when it is created, feel free to add the ready or in progress label. The proposal step may not be used frequently and that is ok.
Label |
Description |
seccomp workflow::triage |
Initial review to determine priority and next steps. |
seccomp workflow::proposal |
An idea that is in planning and being refined |
seccomp workflow::ready |
Task is well-defined and ready to be worked on. |
seccomp workflow::in progress |
Actively being worked on by the assignee. |
seccomp workflow::blocked |
Task is halted due to dependencies. |
seccomp workflow::stalled |
Work has paused but can be resumed later. |
seccomp workflow::complete |
Task has been successfully finished and the issue closed. |
seccomp workflow::canceled |
Task is no longer relevant and has been stopped and the issue closed. |
Function Labels
Label |
Description |
seccomp-function::audit-attestation |
Preparation and support for external audits. |
seccomp-function::certification maintenance |
Ongoing work to maintain existing certifications. |
seccomp-function::observation mgmt |
Tracking and managing audit observations. |
seccomp-function::gap assessments |
Identifying gaps in controls or compliance. |
seccomp-function::automation |
Developing and implementing automated solutions. |
seccomp-function::continuous monitoring |
Ongoing checks to ensure control effectiveness. |
seccomp-function::user access reviews |
Reviewing user permissions for compliance. |
seccomp-function::projects |
Work related to specific projects or initiatives. |
seccomp-function::miscellaneous |
Tasks that do not fall under a specific function. |
seccomp-function::team mgmt |
Activities related to managing and supporting the team. |
Metrics and Measures of Success
Metrics are absolutely critical in order for us to tell a story about the impact we have as a team and make data-informed decisions. Our metrics can be classified as strategic (informs business strategy / direction), risk indicators, or operational / performance indicators (health and performance of our team). They can also be either leading or lagging.
The SSOT for our metrics is Tableau. Our metrics are largely collected from issues labels. For that reason, it is critical to ensure all epics/issues have appropriate labels and new labeling schemes are designed in a way that allows us to capture meaningful metrics.
- Slack
- Feel free to tag
@sec-compliance-team
to reach the entire Security Compliance team
- The
#sec-assurance
slack channel is the best place for questions relating to our team (please add the above tag)
- Tag us in GitLab
@gitlab-com/gl-security/security-assurance/security-compliance
References
Return to the Security Assurance Homepage
Background
Security Content Automation Protocol is a a US standard maintained by NIST, and is a method for using specific standards to enable automated vulnerability management, measurement, and policy compliance of information systems. it is most often used for compliance scanning, i.e. to measure IT systems against specific compliance standards like CIS or PCI-DSS.
OpenSCAP is a very popular open-source ecosystem for SCAP scanning and is maintained by Red Hat. It is the most common way to conduct SCAP scanning and assessment.
Purpose
GitLab’s user access review is an important control activity required for internal and external IT audits, helping to minimize threats, and provide assurance that the right people have the right access to critical systems and infrastructure. This procedure details process steps and provides control owner guidance for access reviews.
Benefits to the organization
- Reduces security risk
- Identifies dormant and/or disabled accounts
- Ensures only required team members have access to a system
- Validates users who have changed roles have not retained access no longer relevant
- Ensures terminated team members no longer can access company systems
- Supports GitLab compliance and regulatory requirements which maintains customer trust
Scope
In-Scope Systems
Security Compliance performs Access Reviews for in-scope systems based on a subset of factors. Including:
The Security Compliance team is instrumental in supporting external audits, certifications, and attestations, with benefits that extend across the organization. Our responsibilities include:
- Preparation and Coordination: The team prepares for external audits by gathering necessary evidence, documentation, and ensuring the organization is ready to demonstrate compliance with standards such as SOC 2, ISO 27001, or other industry-specific regulations. We coordinate with internal stakeholders to ensure that the right processes and controls are in place and maintained.
- Liaison with Auditors: The Security Compliance team acts as the primary point of contact between auditors and the company. We facilitate audit activities, such as walkthroughs and interviews, thereby minimizing disruption to operational teams and helping ensure that the audit is conducted smoothly.
- Continuous Monitoring: We implement mechanisms for ongoing monitoring of controls to ensure compliance is maintained between audit cycles, enabling the organization to stay audit-ready at all times.
- Remediation and Follow-up: When findings or deficiencies are identified during audits, the team works to develop remediation plans, tracks the progress of these plans, and ensures that actions are taken to close gaps before the next audit.
Benefits to Customers
- Trust and Assurance: External certifications and attestations serve as independent verification that the organization meets established security standards. This builds trust with customers, reassuring them that their data is handled securely and that the company has taken appropriate measures to protect it.
- Risk Mitigation: Customers can feel confident that risks associated with data breaches or security incidents are mitigated through well-documented, tested, and externally verified controls. This reduces concerns around vendor risk when choosing to work with the company.
- Compliance with Industry Standards: For customers operating in highly regulated industries, it’s crucial to work with partners who comply with relevant regulations. The Security Compliance team’s work in obtaining certifications helps customers meet their own compliance requirements by demonstrating that their partners follow the necessary standards.
Benefits to GitLab
- Enabling Sales and Market Expansion: External certifications and attestations act as competitive differentiators in the marketplace. We enable the sales team to address customer concerns related to security and compliance more effectively, leading to increased sales opportunities. Additionally, some certifications are prerequisites for entering certain markets or working with specific clients, enabling market expansion.
- Supporting the First Line of Defense: The Security Compliance team limits the need for the first line of defense (such as engineering, product, or IT teams) to interact directly with auditors. This allows these teams to focus on their core responsibilities, such as building and delivering products, without the added burden of preparing evidence or explaining controls to auditors. The Compliance team takes on this responsibility, facilitating the audit process and ensuring subject matter experts are only involved when absolutely necessary.
Current certifications and attestations
Refer to the GitLab Trust Center for the latest information on all all of the certifications and attestations we maintain, including 3rd party reports, commonly request security documentation, and answers to commonly asked questions about our security and compliance posture. There is a dropdown menu to view content for GitLab.com and GitLab Dedicated SaaS offerings. Some of the content is applicable to both SaaS platforms and/or GitLab Inc.
Submit a Request
Team members working with security vulnerabilities should read this procedure in its entirety and reach out to @sec-compliance-team
in the #sec-assurance
Slack channel if you have any questions.
Purpose
In accordance with expectations set by the FedRAMP Authorization Act and FedRAMP Program Management Office (PMO), GitLab must follow a formal process to track and request approval (risk acceptance) from our sponsoring Agency Authorizing Official (AO) for any vulnerabilities that cannot be remediated within SLAs due to scenarios described in the Scope section below. These are called vulnerability Deviation Requests (DRs) and are formally reported to our AO every month using GitLab’s Plan of Action & Milestones (POA&M) (internal only). Deviation requests for risk adjustments (severity downgrades), false positives, and operational requirements require Authorizing Official (AO) approval.
Purpose
A gap analysis as it relates to security compliance refers to an in-depth review that helps organizations determine the difference between the current state of their information security and a given security standard (SOC 2 Type 2 Availability Criteria, ISO 27018, BSIMM, etc.) they might want to adopt or align against. The outcome of completing gap analysis procedures is a report to management:
- What, if any, gaps exist between GitLab’s current state and that new standard
- A recommendation for whether or not to pursue that new standard
- The impact of not pursuing that new standard
- The impact if that new standard is pursued
Scope
The scope of gap analysis procedures performed by the Security Compliance team are limited to information security and compliance related regulatory standards and frameworks.
Process Overview
Purpose
As new GitLab security controls are identified that need to be implemented by the Security Compliance Teams for compliance or regulatory reasons, these controls follow an established process in order to make that implementation successful.
These lifecycle phases are managed via GitLab’s governance, risk and compliance (GRC) application.
Scope
This document applies to GitLab’s security controls being assessed by the Security Compliance Team(s).
Overview
The Federal Risk and Authorization Management Program (FedRAMP) is a United States government-wide program that standardizes security requirements for the authorization and ongoing cybersecurity of cloud services in accordance with the FedRAMP Authorization Act, FISMA, and OMB Circular A-130. In short, Federal Agencies are required to procure FedRAMP-authorized cloud services, and cloud service providers are required to be FedRAMP authorized in order to sell to federal agencies and handle their data. FedRAMP.gov has more information about the program including the authorization process, the marketplace, and other helpful resources.
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. It demonstrates to our stakeholders that GitLab has a mature and comprehensive security program that will provide assurance that data within GitLab is reasonably protected.
What is policy-as-code?
Policy as code (PaC) refers to the practice of codifying policies, rules, and regulations that govern various aspects of an organization’s operations, particularly in compliance, security, and risk management. It involves translating these policies into machine-readable code that can be automatically enforced and continuously monitored within the organization’s systems and infrastructure.
Why use policy-as-code / what are the benefits?
Policy as code (PaC) offers several key benefits for organizations embracing the DevSecOps model. Firstly, PaC ensures consistency and standardization across the infrastructure by defining policies in machine-readable formats and enforcing them through automation. This consistency minimizes the risk of misconfigurations and ensures that all deployed resources adhere to organizational standards, enhancing overall system reliability and security.
Purpose
The purpose of this page is to provide direction on where GitLab needs to go as both a software producer and software consumer to provide transparency, and most importantly visibility, into the security of our software supply chain. GitLab is evaluating a very dynamic regulatory landscape with references to SBOM requirements in numerous draft legislation in both the U.S. and non-U.S., executive orders and directives, customer requests, and numerous community frameworks and formatting specifications.