Safeguarding edx.org deploys

This is a public page.

Principles:

  • We want to protect edx.org from accidental problems caused by non-2U committers.

  • We also want to protect edx.org from problems from ourselves!

  • We want to protect edx.org from malicious actors.

  • We want to protect edx.org from problems from third-party code. This is less of a concern due to broader use of third party code.

Approaches:

  • Prevent bad merges

  • Prevent bad deploys

  • Detect bad deploys, limit damage

Possible solutions:

  • edX review of all external commits

    • pro: most security

    • con: extremely high effort

    • con: wrong community stance

  • Fork edx-platform into edx org, pull changes daily

    • pro: gives us an understood deploy window

    • pro: opportunity to review changes for malicious code

      • Note that this option doesn’t necessarily involve reviewing the changes being pulled.

    • con: extra automation and work, especially if reviewing all changes

    • con: two-directional merges adds friction and effort

    • con: doesn’t protect us from ourselves

  • Release from a different branch than master

    • Need details on how this would make things better

  • Automate community merges to occur during opportune times

    • pro: gives us an understood deploy window

    • pro: relatively low effort

    • con: doesn’t protect us from ourselves

    • con: doesn’t protect us from malicious actors

  • Better automated testing

    • pro: protects us from ourselves

    • con: a lot of effort, ongoing

    • con: not clear how to really move the needle on testing

    • con: probably doesn’t protect us from malicious actors

  • Canary deploys

    • pro: protects us from ourselves

    • pro: not a lot of effort

    • con: not a top priority for SRE

    • con: probably doesn’t protect us from malicious actors

Other considerations:

  • How will security fixes be developed and deployed prior to public disclosure?

  • Will SOX compliance complicate this even further?

  • Who else in the community deploys from master?

  • How far can open our monitoring to the community so they at least have visibility to problems?

  • Do we need or want all projects to use the same solution?

    • Completely different solutions for various repos would likely be madness, but perhaps a consistent automated solution with a manual-review variant for sensitive repos could be workable