👁️
pierreinside
  • Introduction
  • Workbench
    • VirtualBox
    • Linux
      • Linux-Paketverwaltung
      • Linux Initialisierung
      • Ubuntu 14.10 LTS
      • Ubuntu 16.04 LTS
      • Ubuntu 18.04 LTS
      • Ubuntu 20.04 LTS
      • Ubuntu - Netzwerk
    • Konsole
      • ssh
      • zsh
      • cygwin
      • Babun
      • terminator
      • Terminal Multiplexer
      • Linux Tools
    • awesome
    • Entwicklungsumgebungen
      • Texteditors
      • Visual Studio Code
      • IntelliJ - IDEA
  • Softwareentwicklungsprozess
    • Schätzungen
    • Eventstorming
    • OKR
  • Architektur
    • Uncle Bob
    • Microservices
    • NoSQL
      • ElasticSearch
    • Hystrix
    • Reactive Programming
    • AngularJS
    • Service Mesh
  • Networking
    • Dependency Injection
  • Programming
    • Java Core/EE
      • Java 8
      • Java Annotationen
      • Bean Validation
      • Enterprise Java Beans Specification
      • Dependency Injection
    • JRebel
    • Webservices
      • HTTP
      • REST
      • Spring MVC REST
      • Swagger
      • Postman
    • Spring Ecosystem
      • Spring Core
      • Spring Boot
        • Programming
        • Production Ready
        • Testing
      • Spring Cloud
      • Spring Cloud Config
      • Spring MVC
      • Spring Data
      • Spring Petclinic
    • NodeJS
    • UI-Technologie
      • Thymeleaf
      • ionic
      • Web Fonts
      • Jinja Templates
      • Twitter Bootstrap
    • Python Ecosystem
      • Python Libraries
      • Python Testing
      • Python Best-Practices
      • Python Snippets
      • Python Selenium
      • Kivy UI
      • FastAPI
      • Typer CLI
      • Django
    • Groovy
    • Persistenz
      • Transactions
        • Java TX
        • JPA TX
      • TX Handling
      • JPA
        • Eclipse Link
      • MySQL
        • MySQL Performance
        • Docker MySQL
      • Hazelcast
    • Glassfish
    • YAML
    • Angular
    • Camel
    • Zeichenkodierung
    • Kinder lernen Programmieren
  • Testen
    • Easymock
    • Mockito
  • Performance & Scalability
    • Java Performance
      • Heapdump Analysis
    • Java Concurrency
    • Instana
  • Sicherheit
    • Authentifizierung
      • OpenID Connect
      • Web-Authentication API
    • Authorisierung
      • OAuth
      • SAML
    • Spring Security
    • Zertifikate
    • Kali Linux
    • VPN
    • Zero-Trust-Networks
  • Build und Deployment
    • Maven
    • Bamboo
    • Jenkins
      • Jenkins Pipelines
      • Jenkins Pipelines Tips und Tricks
      • Jenkins-configuration-as-Code
      • Jenkins IDE
    • Travis CI
    • Shellprogrammierung
      • jq - JSON Parsing
    • Konfiguration Management
    • Vagrant
      • Vagrant-Ansible-Integration
      • Vagrant Box bauen
    • Ansible
      • Getting Started
      • Ansible Details
    • Saltstack
    • LinuxKit
    • Container
      • Docker
        • Docker Getting Started
        • Debugging Docker
        • Docker Build
        • Docker Registry
        • Docker run
          • docker run
          • docker network
        • Docker Compose
        • docker machine
        • Docker@Windows
        • Docker Host
        • Docker Scaling
        • Docker Ressources
        • Docker Logging
        • windowsContainer
      • Cloud Deployment Provider
        • AWS
          • Anwendungsdeployment
          • Workload
          • Permissions
          • Netzwerke
          • AWS CLI
            • aws-vault
          • RDS
          • Static Website Hosting
          • EKS - Elastic Kubernetes Service
          • S3
        • Google Cloud Platform
      • Docker Orchestrierung
        • CoreOS
        • Kubernetes
          • microK8s
          • minikube
          • autoscaler
          • Docker
          • k9s
        • Nomad
    • PHP
  • Operations
    • Proxy
      • NGINX
    • DNS
    • Logging
      • Graylog
      • Fluentd
    • Monitoring
      • Grafana
    • Infrastructure-as-Code
      • Terraform
        • AWS-Provider
        • GitHub-Provider
      • Packer
    • Deployment
      • Vault
      • Consul
        • Consul Template
      • Fabio
  • Rechtliches
    • Software-Lizenzen
  • Git Ecosystem
    • Git
      • Git Lifecycle Hooks
    • GitHub
      • GitHub Organizations
    • GitHub Actions
    • GitHub Pages
    • GitHub CLI
    • GitHub Copilot
    • GitHub-AWS OIDC
    • GitBook
    • GitLab
    • Bitbucket/Stash
  • Publishing
    • WordPress
    • Markdown
    • Static Site Generators
      • Hugo
      • Jekyll
    • Tiddly Wiki
    • Leanpub
    • Animationsfilme
  • Storage
    • Synology 2012
    • Synology 2021
  • Collaboration
    • Übersicht
    • Microsoft Teams
  • Konferenzen
    • Velocity Berlin 2019
  • IT mit Kindern
    • Projekt Sportstracker
    • Scratch
    • Pico Spielekonsole
  • Schule
    • Mathematik
  • Misc
    • Foto/Video
      • Foto/Video Sammlung bis 2023
        • Handbrake
        • Onedrive
      • Foto/Video Sammlung ab 2024
      • Gopro
      • Panasonic FZ1000 ii
        • als Webcam
      • AV Receiver
      • Videos erstellen
        • OBS Studio
        • Touch Portal
        • Game-Streaming
      • Kameratasche
      • Kamera 2020
    • Handy
      • 2016
      • 2018
      • 2019
      • 2021
      • 2022
    • Computer
      • Laptop
        • 2018
        • Chromebook
      • Monitor
        • 4k
      • Software
        • Command Line Interface
        • Google API
        • Plant UML
        • Chromium
        • Passwort-Manager
        • GPG
      • Dell CNF 2665 Farbdrucker
      • Dockingstation
      • Gaming PC 2021
      • Mobiles Büro
      • Mobiles Internet
      • Mobiler Router
    • Beamer Benq W1000+
    • Spielekonsole
      • 2017
        • Playstation 4
      • Pico Spielekonsole
    • Gadgets
      • iPad Pro 2015 und 2016
      • iPad Air 2024
      • Macbook Pro
      • Smartwatch
      • Slate
      • Mudi
    • Fahrrad
      • Jonas 2018
      • SQLab
    • Auto
      • Auto 2022
      • Camping
        • Camping Touren Ideen
          • Camping Tour - Gardasee 2021
        • Camper
          • Camper klein - keine Stehhöhe
            • VW Bus Erfahrungen
          • Camper gross - Stehhöhe
    • Haus
      • Klimaanlage
      • Swimming Pool
      • Quick Mill Orione 3000
      • Spülmaschine 2021
      • Hebe-Schiebetür
      • Gasgrill
      • Minibar / Mini-Kühlschrank
      • Glasfaseranschluss (Fiber-to-the-Home)
      • Smart-Home
        • Raspberry Pi
        • Heimnetzwerk
      • Homeoffice
      • Energie
        • Solar
        • Wärmepumpe
    • Freizeit
      • Musik Streaming
      • Sky
      • Online Lernplattformen
      • eScooter - ePowerFun
    • Fußball
      • Meine Arbeit als Fußball-Trainer
      • Fußball Tools
      • DFB Talentförderung
    • Google Impact Challenge
  • Englisch
Powered by GitBook
On this page
  • Konzepte
  • Github Oranization
  • GitHub Enterprise
  • Usermanagement
  • GitHub Members
  • Outside Collaborators
  • Betrieb einer GitHub Organisation

Was this helpful?

  1. Git Ecosystem
  2. GitHub

GitHub Organizations

Jeder kennt GitHub für seine privaten oder öffentlichen Repositories oder als Nutzer solcher Repositories.

Will man GitHub aber im Unternehmen oder in einem Open-Source-Projekt mit anderen kollaborieren, dann kommen viele neue Fragestellungen hinzu. Der wichtigste Aspekt in diesem Zusammenhang ist die Sicherheit, denn natürlich sollte man dem Least-Privileges-Principle folgen.


Konzepte

Github Oranization

Jeder Account kann in eine Organisation umgewandelt werden und das ist sogar kostenlos.

Man sollte für jede Unternehmung (in dessen Kontext man mit anderen Personen als Member oder Outside-Collaborator zusammenarbeitet) einen separaten Accounts anlegen und diesen dann in eine Organisation umwandeln. Der Account selber unterliegt anschließend nämlich einigen Restriktionen. Den eigenen GitHub Account fügt man anschließend als Member (oder in der Admin Rolle als Owner) hinzu ... und natürlich seine Kollaborateure.

GitHub Enterprise

Es gibt den sog. GitHub Enterprise Server und die Github Enterprise Cloud ... eine SaaS Lösung.

Der Begriff GitHub Enterprise wird neben den Software-Produkten allerdings auch bei den Billing Plans benutzt. Es bezeichnet hier ein sehr umfangreiches Feature-Set.

Zudem gibt es den sog. GitHub-Enterprise-Account, den man benötigt, um verschiedene GitHub-Organisationen zu managen und Enterprise-Managed-Users einzusetzen.

Der Begriff GitHub Enterprise ist also ein wenig überstrapaziert, was hier und da zu Verwirrung führt.

Usermanagement

Hier gibt es zwei disjunkte Ansätze, die nicht vermischt werden können:

  • Open-Source-Ansatz: In diesem Fall verwenden die Member/Outside Collaborators Personal GitHub Accounts und werden zu einer Organisation/Enterprise eingeladen. Über SSO ist es sogar möglich den Personal Account mit einer Enterprise Identity zu linken, um so nur Usern den Zugriff auf Ressourcen der Organisation zu gewähren, die sich zusätzlich zum GitHub Account auch an einem Active Directory eines Unternehmens authentifiziert und damit identifiziert haben.

  • Closed-Source-Ansatz: In diesem Fall erstellt/löscht das Active Directory des Unternehmens die GitHub-User-Accounts (sog. Enterprise-Managed-Users (EMU)) und bestimmt über deren Settings/Policies. Es sind User-Accounts, die im GitHub-Ecosystem nur eingeschränkt funktionieren. Man kann hier keine Public-Repos anlegen oder bei anderen GitHub-Organisationen mitarbeiten. Diese Accounts sind einzig und allein im Kontext des Unternehmens nutzbar (ok ... man kann auch Public Repos lesen). Hier erfährt man mehr über die Limitierungen.

    • für diesen Ansatz benötigt man einen speziellen GitHub Enterprise Account, bei dem dann das EMU Feature aktiviert ist

    • Konfigurieren von GitHub Enterprise Managed User

Aus meiner Sicht ist der Closed-Source-Ansatz sehr sicher für Unternehmen, um ihre Assets (Source-Code) zu schützen und dennoch auf einer der besten Plattformen unterwegs zu sein. Allerdings kann man sich dann schon fragen warum man nicht GitLab verwendet, das im Unternehmensbereich zusätzlich Features im Bereich Sicherheit mitbringt.

GitHub Members

Man muß zwischen Members und Outside Collaborators unterscheiden. Members haben mehr Rechte und sind der Standard-Use-Case. Sie können beispielsweise in Teams organisiert werden, um die Permission-Verwaltung zu vereinfachen ... diese Option steht bei Outside Collaborators nicht zur Verfügung. Das ist nur ein Beispiel.

Owner sind besondere Member ... sie agieren als Admin-User und können in einer Organisation alles tun. Will man sich die Verwaltung des Accounts teilen, dann kann man Billing Managers, GitHub-App-Managers, ... definieren, die dann in einem bestimmten Scope Admin-Berechtigungen haben ... aber nicht global.

Outside Collaborators

Dieser Ansatz bietet sich an, wenn man mit externen Partnern zusammenarbeiten möchte, die keine Member-Berechtigungen erhalten sollen. Die Default-Permission bei Members ist beispielsweise "Read-Only" auf ALLE Repositories. Das möchte man solchen Partnern i. d. R. nicht erlauben. Deshalb muß man bei Outside Collaborators die Permissions auf JEDEM Repository definieren ... der Default ist somit "Keine Berechtigung".


Betrieb einer GitHub Organisation

Die UI kann jeder nutzen, um User, Rollen, Permissions, ... zu managen. Das hat allerdings den großen Nachteil, daß Änderungen dann oftmals keinem 4-Augen-Prinzip (mit Abstimmungen und Reviews) unterworfen sind, Änderungen nicht nachvollziehbar sind und Dinge kaputtkonfiguriert werden.

Terraform supported GitHub. Auf diese Weise kann man Änderungen durch Code beschreiben und alle Änderungen wie bei Code üblich einem Review Prozess unterwerfen. Insbesondere bei kritischen Änderungen (Permissions) kann dieses Vorgehen sehr empfehlenswert sein und von manchen Auditoren (hinsichtlich Nachvollziehbarkeit) gefordert werden.

In GitHub kann man Repositories nicht gruppieren (im Gegensatz zu BitBucket beispielsweise), um beispielsweise auf einer Gruppe bestimmte Berechtigungen/Policies/... zu definieren. Deshalb ist es aufwendig und fehleranfällig, die Konsistenz der Konfiguration zu garantieren, wenn man keine Automatisierung wie Terraform verwendet. Letztlich ist der Source-Code eine äußerst kritische Komponente, die IMMER schützenswert ist. Deshalb sollte man hier auf professionelle Verwaltung setzen, d. h. Automatisierung, 4-Augen-Prinzip, Approvals, ... Im besten Fall gibt es sogar Tests, um zumindest die Sicherheitseinstellungen kontinuierlich - nach jeder Änderung - zu testen. Schnell sind wichtige Workflows gebrochen und Hotfixes können plötzlich nicht mehr ausgeliefert werden.

Wenn man mal hunderte von Repositories hat (und das hat man im professionellen Umfeld sehr schnell erreicht), dann möchte man evtl. auch eine gewisse Konsistenz (Policies, Berechtigungen, Protected Branches checks, bereitgestellte Reusable Workflows, ...) sicherstellen. Beispiel:

  • man verwendet CODEOWNERS basierend auf GitHub Teams und will nun ein Team umbenennen

Hat man keine Automatisierung und muss man durch ALLE Repos durchgehen und die Änderungen manuell machen. Dabei muss man noch grantieren, keine Fehler zu machen. NEIN - das will NIEMAND ... ohne Automatisierung finden solche hilfreichen Dinge einfach nicht mehr statt.

PreviousGitHubNextGitHub Actions

Last updated 2 years ago

Was this helpful?