Skip to content

GolangCI Security

Isaev Denis edited this page Jun 30, 2019 · 1 revision

We understand that security is critical, and we follow best practices and strict procedures to keep our systems, and your data, safe. Our system is open-source so you can easily ensure it's secure: microservices, web, and golangci-lint.

Source Code Protection

Source Code During Analysis

Code analysis runs in an isolated environment. The virtualized servers they’re running on are disposed of after each run and always restored from a snapshotted image that has no knowledge of any source code other than the code required to create our build environment.

We use AWS Fargate to run an analysis. AWS Fargate allows running Docker containers in isolated virtual machines. Isolation boundary of these virtual machines is the same as the isolation of AWS EC2 instances. We allocate such virtual machine at the beginning of each build and deallocate in the end (with TTL 15 min). We don't reuse virtual machines between different builds. We use golangci/build-runner Docker image for AWS Fargate. You can view a source of our AWS Fargate builds runner here.

Amazon Web Services (AWS) provide strong security measures to protect our infrastructure and are compliant with most certifications. You can read more about their practices here.

Product Security

Single Sign On (SSO)

Our products support single sign on (SSO) via GitHub.com for authentication.

Permissions

When you set up GolangCI you authorize the system to check out your public repositories (you may grant access to private repositories later). You may revoke this permission at any time through your GitHub settings page and by removing GolangCI's Service Hooks from your repositories’ Admin pages. While GolangCI allows you to selectively build your projects, GitHub’s permissions model is “all or nothing” — GolangCI gets permission to access all of a user’s repositories or none of them. Your instance of GolangCI will have access to anything hosted in those git repositories and will create webhooks for a variety of events (eg: when code is pushed, when a user is added, etc.) that will call back to GolangCI, triggering one or more git commands that will pull down code to your build fleet.

Uptime

Our systems have an uptime of 99% or higher: we use cloud infrastructure, Kubernetes and high availability practices to achieve it.

Network and Application Security

Cloud Infrastructure

All of our services run in the cloud. We don’t host or run our own routers, load balancers, DNS servers, or physical servers. Our service is built on Amazon Web Services and Google Cloud. They provide strong security measures to protect our infrastructure and are compliant with most certifications. You can read more about their practices:

We use the following datacenters:

  • AWS EC2 datacenters in US East (N. Virginia).
  • Google Cloud datacenters in Council Bluffs, Iowa, USA.

The following cloud services are used:

All traffic to and inside of GolangCI is secured and encrypted with SSL/TLS.

Data Hosting and Storage

GolangCI hosts its data in PostgreSQL databases. These databases are hosted by Kubernetes (persistent volumes) in Google Cloud: we use Google Kubernetes Engine (GKE). We follow GKE’s best practices which allow us to take advantage of their secured, distributed, fault-tolerant environment.

Failover and Disaster Recovery

Our systems were designed and built with disaster recovery in mind. Our infrastructure and data are spread across Google Cloud availability zones and systems will continue to work should any one of those data centers fail.

Back Ups and Monitoring

GolangCI uses automation to backup all datastores that contain customer data. We use AWS S3 for archival purposes of these backups.

Incident Response

GolangCI implements an Incident Response Policy for handling security events which includes escalation procedures, rapid mitigation and post mortem. All employees are informed of our policies.

Credit Card Data

When you purchase a paid GolangCI subscription, your credit card data is not transmitted through nor stored on our systems. Instead, we depend on Paddle, a company dedicated to this task. Paddle is PCI compliant and adheres to the Payment Card Industry Data Security Standard. All credit card transactions are handled on their behalf by PCI compliant providers.

Reporting An Issue

Your input and feedback on our security, as well as responsible disclosure, is always appreciated. If you've discovered a security concern, please email us. We'll work with you to make sure we understand the issue and address it. We consider security correspondence and vulnerabilities our highest priorities and will work to promptly address any issues that arise.

Please act in good faith towards our users' privacy and data during this process. White hat researchers are always appreciated and we won't take legal action against you if act accordingly.

Clone this wiki locally
You can’t perform that action at this time.