Skip to content

Latest commit

 

History

History
233 lines (176 loc) · 26.9 KB

COMPLIANCE.md

File metadata and controls

233 lines (176 loc) · 26.9 KB

(Back)

Compliance

Table of Contents

Overview

This document outlines the compliance and security features of the platform.

GitHub Foundations Toolkit PBMM Compliance Features

The following table maps the features of the GitHub Foundations Toolkit to the PBMM Controls

Item What Where Controls Open-Source Alternative
Encrypted Secrets Uses GitHub public key to encrypt secrets. Secrets must be encrypted to be used.
  • modules/organization
  • modules/private_repository
  • modules/public_repository
    IA-5(c)(e)(h)(i), IA-5(1)(c),IA-5(6), IA-5(7), SC-8(1), SC-12, SC-13, SC-17
    Vulnerability Alerts
    • Vulnerability alerts are enabled by default on public and private repos
    • Vulnerabilities detection is automatically updated
    • modules/organization
    • modules/private_repository
    • modules/public_repository
    SI-4(5), SI-4(7), SI-10
    Secret Scanning Scanning of the repo for secrets
    • modules/organization
    • modules/private_repository
    • modules/public_repository
    • modules/repository_base
      AC-22, IA-5(7), IR-9, SI-4(5), SI-4(7), SI-10
      Advanced Security
      • Code scanning
      • Manual step. Instructions to be added to README
      • modules/private_repository
      • modules/public_repository
      • modules/repository_base
        SI-4(5), SI-4(7), SI-10
        Protected Branches Ruleset - Pull Requests
        • Require pull requests
        • Require at least 1 reviewer
        • When new commits are pushed to an existing PR, any previous approvals are required again.
        • modules/private_repository
        • modules/public_repository
        • modules/repository_base
          CM-3, CM-4, CM-5, SI-10, SI-12
          Protected Branches Ruleset - Signed Commits


          TODO - Not currently validated
          • Require signed commits
          • modules/private_repository
          • modules/public_repository
          • modules/repository_base
            IA-2, IA-2(11), IA-8, IA-8(100), SC-8, SC-8(1), SC-13
            Export Audit Material


            Audit material is exported in JSON format, or there are instructions on how to obtain logs by other means. See here. GH Action AC-2(4), AC-6(9), AC-17(1), AU-2, AU-6, SI-4
            Delete branches on merge Branches are configured to be deleted after a PR is merged
            • modules/private_repository
            • modules/public_repository
            • modules/repository_base
            SI-12
            Repository Creation Restrictions Users can:
            • Create private repos
            • Create internal repos
            User cannot:
            • Create public repos
            • Fork Private repos
            • modules/organization
            AC-20(3), AC-22
            Predefined Roles Predefined roles include:
            • Security Engineer
            • Contractor
            • Community Manager
            • modules/organization
            AC-2, AC-16(2)
            Drift Detection Tool used to detect if the terraform state has drifted from what's stored in source control
            • modules/organization
            CM-2, CM-3(f)(g), CM-5, CM-6(c)(d), CM-9(d)
            Resource Deletion Protection An action that forces a user to acknowledge Terraform plan deletions, before performing them
            • modules/organization
            AC-16(2), CM-3, CM-4, CM-5, CM-6(D), CM-9, SI-10
            Detect whether GHAS enabled For public repositories, and repos with GHAS purchased, we recommend that it be turned on. This GH Action runs daily at 2am to check that the setting is enabled in all eligible repos GH Action IA-5(7), SI-4(5), SI-4(7), SI-10
            Documentation - Creating resources The documentation for the GHF toolkit includes the relevant documentation that describes authentication methods for users signing into your enterprise, how to create organizations and teams for repository access and collaboration, and suggested best practices for user security READMEs AC-5, AC-6
            • Any text editor / code-revision control tool.

            Controls that are met by GitHub by default

            The following controls are met by GitHub by default and are not explicitly implemented in the toolkit:

            Item What Where Controls Open-Source Alternative
            Account dormancy policy GitHub accounts are marked dormant, and made inactive after 90 days of inactivity for Enterprise accounts Managing Dormant Accounts AC-2(3)
            HTTPS and SSH access GitHub enforces the use of HTTPS and/or SSH for committing and pulling code GitHub Docs AC-17(2), SC-8, SC-8(1), SC-12, SC-13, SC-17

            GitHub Security Features Status

            Inside the toolkit, we strive to provide the most up-to-date security features that GitHub has to offer. Below is a table that shows the status of the features that we support in the toolkit.

            1. The Status column is the status of implementing the GitHub feature in the toolkit.
            2. The _Provider Status_ column is the status of the feature in Terraform GitHub Provider, and
            3. the GH API Status column is the status of the feature in the GitHub API.
            Feature Status Provider Status GH API Status Side Notes
            Encrypted secrets We don't handle encryption directly, but secrets are encrypted with github private keys
            Vulnerability alerts
            Private vulnerability reporting
            Secret scanning
            Secret scanning push protection
            CodeQL codescanning
            Rulesets Although the GitHub Documentation lists it as a capability in the api there are some limitations. For example: Organization rulesets can define workflows that must be completed for the ruleset to be considered passed, but it is not possible for repository rulesets.
            Commit signing enforcement
            Delete branches on merge
            Repository creation restrictions
            Custom Repository Roles
            Custom Organization Roles Confusing because there is a terraform resource named github_organization_custom_role but this resource actually makes custom repository roles. Custom organization roles have not been implemented. But the GH api does support it.
            Deploy Keys
            Organization Member Base Permissions
            Custom Properties
            2FA Not exposed by the API. This setting is completely manual
            SAML SSO Not exposed by the API. This setting is completely manual
            Team Synchronization

            Audit Logs

            Learn how to enable audit logs for your GitHub Enterprise account to track user activity and changes made to your organization.

            1. For GitHub Enterprise Audit logs, see GitHub's documentation.
            2. To query the audit log API for your GitHub Enterprise, see GitHub's documentation.
            3. For Organization Audit logs, see GitHub's documentation.

            Daily Audit Log Export

            A GitHub Workflow is run daily to export the audit logs to a JSON file. The JSON file is then uploaded to the action's output artifacts. The JSON file can be downloaded from the artifacts tab in the GitHub Actions page.

            Exporting GitHub Enterprise Audit Logs to Azure Sentinel

            To export GitHub Enterprise audit logs to Azure Sentinel, follow the steps found here.

            The Azure Marketplace offers the Microsoft Sentinel - Continuous Threat Monitoring for GitHub (Preview) connector to help you get started.

            Streaming Audit Logs to Other Platforms

            GitHub supports the streaming of audit logs to other platforms. The list of currently supported platforms is:


            (retour)

            Conformité

            table des matières

            Aperçu

            Ce document décrit les caractéristiques de conformité et de sécurité de la plateforme.

            Fonctionnalités de conformité PBMM de la trousse d’outils essentiels GitHub

            Le tableau suivant met en correspondance les fonctionnalités de la trousse d’outils essentiels de GitHub avec les Contrôles PBMM

            Article Quoi Contrôles Autre solution à source ouverte
            Secrets chiffrés Utilise la clé publique de GitHub pour chiffrer les secrets. Les secrets doivent être chiffrés pour être utilisés
            • modules/organization
            • modules/private_repository
            • modules/public_repository
              IA-5(c)(e)(h)(i), IA-5(1)(c),IA-5(6), IA-5(7), SC-8(1), SC-12, SC-13, SC-17
              Alertes de vulnérabilité
              • Les alertes de vulnérabilité sont activées par défaut sur les dépôts publics et privés
              • La détection des vulnérabilités est automatiquement mise à jour
              • modules/organization
              • modules/private_repository
              • modules/public_repository
              SI-4(5), SI-4(7), SI-10
              Analyse de secrets Analyse de secrets dans le référentiel de code
              • modules/organization
              • modules/private_repository
              • modules/public_repository
              • modules/repository_base
                AC-22, IA-5(7), IR-9, SI-4(5), SI-4(7), SI-10
                Sécurité avancée
                • Analyse du code
                • Étape manuelle. Instructions à ajouter au fichier README
                • modules/private_repository
                • modules/public_repository
                • modules/repository_base
                  SI-4(5), SI-4(7), SI-10
                  Ensemble de règles des branches protégées - Demande de tirage
                  • Exiger des demandes de tirage
                  • Exiger au moins un évaluateur
                  • Lorsque de nouvelles validations sont poussées vers un DT existant, toutes les approbations précédentes sont à nouveau requises
                  • modules/private_repository
                  • modules/public_repository
                  • modules/repository_base
                    CM-3, CM-4, CM-5, SI-10, SI-12
                    Ensemble de règles des branches protégées - Validations signées


                    TODO - Pas encore validé
                    • Exiger des validations signées
                    • modules/private_repository
                    • modules/public_repository
                    • modules/repository_base
                      IA-2, IA-2(11), IA-8, IA-8(100), SC-8, SC-8(1), SC-13
                      Exportation du matériel d’audit


                      Les données d’audit sont exportées au format JSON, ou des instructions sont fournies sur la manière d’obtenir les journaux par d’autres moyens. Voir ici. GH Action AC-2(4), AC-6(9), AC-17(1), AU-2, AU-6, SI-4
                      Supprimer des branches lors de la fusion Les branches sont configurées pour être supprimées après la fusion d’un DT
                      • modules/private_repository
                      • modules/public_repository
                      • modules/repository_base
                      SI-12
                      Restrictions à la création de dépôts Les utilisateurs peuvent:
                      • Créer des dépôts privés
                      • Créer des dépôts internes
                      Les utilisateurs ne peuvent pas:
                      • Créer des dépôts publics
                      • Diviser des dépôts privés
                      • modules/organization
                      AC-20(3), AC-22
                      Rôles prédéfinis Les rôles prédéfinis sont les suivants:
                      • Ingénieur en sécurité
                      • Entrepreneur
                      • Gestionnaire de communauté
                      • modules/organization
                      AC-2, AC-16(2)
                      Détection de dérive Outil utilisé pour détecter si l’état de terraform s’est écarté de ce qui est stocké dans le contrôle de la source
                      • modules/organization
                      CM-2, CM-3(f)(g), CM-5, CM-6(c)(d), CM-9(d)
                      Protection contre la suppression de ressources Une action qui oblige l’utilisateur à reconnaître les suppressions de plans Terraform avant de les effectuer
                      • modules/organization
                      AC-16(2), CM-3, CM-4, CM-5, CM-6(D), CM-9, SI-10
                      Détecter si le GHAS est activé Pour les dépôts publics et les dépôts ayant acheté un GHAS, nous recommandons de l’activer. Cette action de GH est exécutée tous les jours à 2 h pour vérifier que le paramètre est activé dans tous les dépôts admissibles Action GH IA-5(7), SI-4(5), SI-4(7), SI-10
                      Documentation - Créer des ressources La documentation de la boîte à outils GHF comprend la documentation pertinente qui décrit les méthodes d’authentification pour les utilisateurs qui s’inscrivent dans votre organisation, la façon de créer des organisations et des équipes pour l’accès au dépôt et la collaboration, et les meilleures pratiques suggérées pour la sécurité des utilisateurs READMEs AC-5, AC-6
                      • Tout éditeur de texte / outil de contrôle de la révision du code.

                      Contrôles rencontrés par défaut par GitHub

                      Les contrôles suivants sont respectés par défaut par GitHub et ne sont pas explicitement mis en œuvre dans la boîte à outils:

                      Article Quoi Contrôles Autre solution à source ouverte
                      Politique en matière de comptes inactifs Les comptes GitHub sont marqués comme dormants et rendus inactifs après 90 jours d’inactivité pour les comptes Enterprise Gestion des utilisateurs dormants AC-2(3)
                      Accès HTTPS et SSH GitHub impose l’utilisation de HTTPS ou SSH pour la transmission et l’extraction de code Documentation GitHub AC-17(2), SC-8, SC-8(1), SC-12, SC-13, SC-17

                      Statut des fonctionnalités de sécurité de GitHub

                      Dans la boîte à outils, nous nous efforçons de fournir les fonctionnalités de sécurité les plus récentes que GitHub peut offrir. Vous trouverez ci-dessous un tableau indiquant l’état des fonctionnalités que nous prenons en charge dans la boîte à outils.

                      1. La colonne Statut indique l’état d’avancement de la mise en œuvre de la fonctionnalité GitHub dans la boîte à outils.
                      2. La colonne Status de Provider correspond à l’état de la fonctionnalité dans Terraform GitHub Provider, et
                      3. La colonne Status de l’API GH indique le statut de la fonctionnalité dans l’API GitHub.
                      Fonctionnalité Statut Statut de Provider Statut de l’API GH Notes d’accompagnement
                      Secrets chiffrés Nous ne gérons pas le chiffrage directement, mais les secrets sont chiffrés avec les clés privées de github
                      Alertes de vulnérabilité
                      Signalement des vulnérabilités privés
                      Analyse de secrets
                      Protection par poussée de l’analyse de secrets
                      Analyse des codes CodeQL
                      Ensemble de règles Bien que la documentation GitHub le mentionne comme une capacité de l’API, il y a quelques limitations. Par exemple : Les ensembles de règles d’organisation peuvent définir des flux de travail qui doivent être exécutés pour que l’ensemble de règles soit considéré comme réussi, mais ce n’est pas possible pour les ensembles de règles de dépôt.
                      Engager l’exécution de la signature
                      Supprimer des branches lors de la fusion
                      Restrictions à la création de dépôts
                      Rôles personnalisés du dépôt
                      Rôles personnalisés d’organisation Confusion, car il y a une ressource terraform nommée github_organization_custom_role, mais cette ressource crée en fait des rôles personnalisés de dépôt. Les rôles personnalisés d’organisation n’ont pas été mis en œuvre. Mais l’API de GH le prend en charge.
                      Clés pour qéployer
                      Permissions de base des membres de l’organisation
                      Propriétés personnalisées
                      2FA Non exposée par l’API. Ce réglage est entièrement manuel
                      SAML SSO Non exposée par l’API. Ce réglage est entièrement manuel
                      Synchronisation des équipes

                      Journaux d’audit

                      Découvrez comment activer les journaux d’audit pour votre compte GitHub Enterprise afin de suivre l’activité des utilisateurs et les modifications apportées à votre organisation.

                      1. Pour les journaux d’audit de GitHub Enterprise, voir la documentation de GitHub.
                      2. Pour interroger l’API du journal d’audit de votre GitHub Entreprise, consultez la documentation de GitHub.
                      3. Pour les journaux d’audit de l’organisation, voir la documentation de GitHub.

                      Exportation du journal d’audit quotidien

                      Un flux de travail GitHub est exécuté quotidiennement pour exporter les journaux d’audit vers un fichier JSON. Le fichier JSON est ensuite téléchargé dans les artefacts de sortie de l’action. Le fichier JSON peut être téléchargé à partir de l’onglet artefacts de la page GitHub Actions.

                      Exportation des journaux d’audit de GitHub Enterprise vers Azure Sentinel

                      Pour exporter les journaux d’audit de GitHub Enterprise vers Azure Sentinel, suivez les étapes décrites ici. Azure Marketplace propose le connecteur Microsoft Sentinel – Continuous Threat Monitoring for GitHub (Preview) pour vous aider à démarrer.

                      Diffusion des journaux d’audit vers d’autres plateformes

                      GitHub prend en charge la diffusion des journaux d’audit vers d’autres plateformes. La liste des plateformes actuellement prises en charge est la suivante :