Skip to content

Upgrade Model & SDLC

Glean's upgrade model is designed to ensure that our customers always have access to the latest features and improvements, while maintaining the highest level of security, privacy, and reliability. This document describes the processes we follow to ensure that only trusted and verified code runs in the customer deployments.


Trust Chain

At a high level, Glean's chain of trust for our Software Development Lifecycle (SDLC) is as follows:

stateDiagram-v2
    state "Google Cloud Build<br>(Central Build Server)" as gcb
    state "GitHub<br>(Trusted Branches)" as github
    state "Cloud Function<br>(Deployment Pipeline)" as dp

    [*] --> github: Reviewed, validated, & approved code
    github --> gcb: Trusted branches only
    gcb --> dp: Signed builds only
    dp --> TenantA
    dp --> TenantB
    dp --> TenantC
    dp --> ...
    dp --> TenantN

Process

Code Releases

The Glean release branches are protected (code can only be submitted after review) and only allow signed commits.

GitHub Vulnerability Scanning is used here to assist in vulnerability detection.

Building

A central locked down build service (implemented using Google Cloud Build) periodically reads code from trusted branches on Github.

The build service builds the relevant Docker containers and signs them using binary authorization. The build service is locked down so that only specified Glean engineers can access it. Additionally, these engineers can only trigger builds (and deploys) and cannot modify the build pipeline itself.

On build, Glean leverages the Google Cloud Platform (GCP) Web Security Scanner, the GCP Assets Scanner, and the GCP Container Registry Scanner as defence in depth mechanisms to detect any vulnerabilities that may have made it through code review and the GitHub Vulnerability Scanning process.

Testing & QA

Our releases go through an internal soak and automated and manual QA testing, which includes P0 security and permissions tests, before they are approved for deployment to customer tenants.

Glean has separate tenancies that are used for testing. No production and/or customer data is ever used in the testing process.

Deployment

The central deployment workflow only has the capability to invoke a specific Cloud Function in the customer's Glean tenant. The Cloud Function that can be invoked takes the name of the release to upgrade to.

The Glean system self-upgrades to the signed release specified above by downloading the release from a trusted location after verifying the integrity using binary authorization.

Additional Security Measures

In addition to the measures covered above, Glean ensures the following:

Employee Access

Glean leverages Single Sign-On (SSO) with Multi-Factor Authentication (MFA) for access into all corporate systems. For Google Cloud, authentication sessions are limited to 24 hours and force re-authentication after this time.

Only Glean engineers have access to our private GitHub repositories, and of these engineers, only a small subset have IAM permissions to be able to trigger builds. Of the engineers that can trigger builds, none have the ability to modify the build pipelines.

Security Exercises

Glean engineers regularly practice tabletop exercises to identify potential threats and how to mitigate them.

In additon, Glean conducts periodic penetration testing through an external firm (Cobalt).

Info

A copy of the latest Glean pen test report is available under NDA. Please contact your Glean account team for more information.

Compliance

Glean is SOC2 Type II compliant.

Info

A copy of the full SOC2 Type II report is available under NDA. Please contact your Glean account team for more information.