(Back)
This document outlines the compliance and security features of the platform.
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. |
|
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 |
|
|
SI-4(5), SI-4(7), SI-10 | |
Secret Scanning | Scanning of the repo for secrets |
|
AC-22, IA-5(7), IR-9, SI-4(5), SI-4(7), SI-10 | |
Advanced Security |
|
|
SI-4(5), SI-4(7), SI-10 | |
Protected Branches Ruleset - Pull Requests |
|
|
CM-3, CM-4, CM-5, SI-10, SI-12 | |
Protected Branches Ruleset - Signed Commits TODO - Not currently validated |
|
|
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 |
|
SI-12 | |
Repository Creation Restrictions | Users can:
|
|
AC-20(3), AC-22 | |
Predefined Roles | Predefined roles include:
|
|
AC-2, AC-16(2) | |
Drift Detection | Tool used to detect if the terraform state has drifted from what's stored in source control |
|
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 |
|
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 |
|
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 | |
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.
- The Status column is the status of implementing the GitHub feature in the toolkit.
- The _Provider Status_ column is the status of the feature in Terraform GitHub Provider, and
- 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 | ❌ | ✅ | ✅ | |
Learn how to enable audit logs for your GitHub Enterprise account to track user activity and changes made to your organization.
- For GitHub Enterprise Audit logs, see GitHub's documentation.
- To query the audit log API for your GitHub Enterprise, see GitHub's documentation.
- For Organization Audit logs, see GitHub's documentation.
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.
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.
GitHub supports the streaming of audit logs to other platforms. The list of currently supported platforms is:
(retour)
Ce document décrit les caractéristiques de conformité et de sécurité de la plateforme.
Le tableau suivant met en correspondance les fonctionnalités de la trousse d’outils essentiels de GitHub avec les Contrôles PBMM
Article | Quoi | Où | 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 |
|
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é |
|
|
SI-4(5), SI-4(7), SI-10 | |
Analyse de secrets | Analyse de secrets dans le référentiel de code |
|
AC-22, IA-5(7), IR-9, SI-4(5), SI-4(7), SI-10 | |
Sécurité avancée |
|
|
SI-4(5), SI-4(7), SI-10 | |
Ensemble de règles des branches protégées - Demande de tirage |
|
|
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é |
|
|
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 |
|
SI-12 | |
Restrictions à la création de dépôts | Les utilisateurs peuvent:
|
|
AC-20(3), AC-22 | |
Rôles prédéfinis | Les rôles prédéfinis sont les suivants:
|
|
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 |
|
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 |
|
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 |
|
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 | Où | 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 | |
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.
- La colonne Statut indique l’état d’avancement de la mise en œuvre de la fonctionnalité GitHub dans la boîte à outils.
- La colonne Status de Provider correspond à l’état de la fonctionnalité dans Terraform GitHub Provider, et
- 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 | ❌ | ✅ | ✅ | |
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.
- Pour les journaux d’audit de GitHub Enterprise, voir la documentation de GitHub.
- Pour interroger l’API du journal d’audit de votre GitHub Entreprise, consultez la documentation de GitHub.
- Pour les journaux d’audit de l’organisation, voir la documentation de GitHub.
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.
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.
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 :