system-config/doc/source/gitcontrol.rst
2023-03-29 13:35:19 +02:00

4.3 KiB

title

Git Control

Git Control

Automation of the GitHub Organizations management.

At a Glance

Hosts
Projects
Configuration
Bugs
Resources

Overview

This project combination is taking care of automating management of the Open Telekom Cloud GitHub organizations. It currently takes care of following:

  • project settings in the organizations
  • branch protection for the projects
  • team/collaborator permissions on the projects
  • organization team management (description, membership)
  • organization collaborator management (membership)

Software Architecture

Ansible collection (opentelekomcloud.gitcontrol) is implementing modules for the managing GitHub organizations, projects, users. Gitstyring projects defines the configuration to be applied.

Zuul jobs defined in the Gitstyring projects are responsible for applying of the target configuration. The workflow is implemented as following:

  • A temporary VM is prepared
  • Ansible Collection Gitcontrol collection is installed together with Ansible
  • Loop over target managed organizations:
    • Temporary GitHub token is retrieved according to gh_auth for the OTCBot GitHub application for the organization. Private key for token signing is retrieved from Vault.
    • Configured state of the organizaiton members is applied using temporary token.
    • Configured state of the organizaiton teams is applied using temporary token.
    • Configured state of the organizaiton projects is applied using temporary token.
    • Temporary token is revoked.

Security Design

Security Architecture

GitHub organizations are managed using OTCBot GitHub application. This allows avoiding necessity to use pre-created tokens with administration privileges. Private key of the GitHub application is stored in the Vault and a special Vault policy is defined to allow access to it. Required configuration projects are using dedicated AppRole in combination with the mentioned policy to restrict which projects are able to access the key. Using the application private key a JWT token is generated which is used to get application installation token with the required scope to be able to apply the configuration to the organization. After using the installation token is forcibly revoked by sending DELETE call to the GitHub API.

As a next step step for improving security a special Vault plugin is going to be created that takes organization name and desired permission set and returns dedicated installation token. this will allow avoiding private key to ever leave Vault.

Every change proposed to the target configuration will be applied in the dry-run mode using token with read-only privileges to verify configuration.

Separation

Not applicable.

Interface Description

Not available.

Tenant Security

Not applicable.

O&M Access Control

Not applicable.

Logging and Monitoring

Logs for the execution can be found in the corresponding Zuul job execution logs.

Patch Management

Not applicable.

Hardening

Not applicable.

Certificate Handling

Not required.

Private key of the GitHub application is kept in the Vault. It can be rotated by generating new key by the administrators of the GitHub opentelekomcloud-infra members and overwriting it in the Vault.

Backup and Restore

Not applicable.

User and Account management

User mapping is configured by Gitstyring. No password/token management is implemented.

Communication Matrix

Not applicable.

Deployment

Not applicable.