Table of Contents

In de hedendaagse container wereld, het beheer van meerdere Docker beelden veilig en efficiënt is cruciaal voor organisaties van alle grootte. Als bedrijven schaal hun container implementaties, de noodzaak van een robuuste, veilige en functierijke container register wordt van cruciaal belang. Harbor, een CNCF afgestudeerd project met meer dan 30.000 GitHub sterren, is de meest algemeen goedgekeurde open-source cloud native container register. Deze uitgebreide gids voert u door het bouwen van een multi-tenant Docker register met Harbor, die alles van installatie tot geavanceerde beveiligingsconfiguraties.

Wat is Harbor en waarom kiezen?

Harbor is een open source register dat artefacten met beleid en role-based toegangscontrole veilig stelt, zorgt ervoor dat afbeeldingen worden gescand en vrij van kwetsbaarheden, en tekent afbeeldingen als vertrouwd. Harbor breidt de open source Docker Distribution door het toevoegen van de functionaliteiten die meestal vereist zijn door gebruikers zoals veiligheid, identiteit en beheer.

VMware open-source Harbor in 2016, het lid van de CNCF in juli 2018, en het studeerde af in juni 2020 . . waardoor het de eerste open-source register om CNCF afgestudeerde status te bereiken. Deze mijlpaal weerspiegelt zowel de volwassenheid en de sterkte van de gemeenschap ondersteuning.

Belangrijkste kenmerken die de haven apart stellen

Harbor onderscheidt zich van de basis Docker registers en zelfs commerciële alternatieven door verschillende ondernemingsgraden:

  • Multi-tenancy Through Projects: Harbor organiseert inhoud in projecten, waarbij elk project zijn eigen RBAC-beleid krijgt, instellingen scannen, quotalimieten en tag retentieregels
  • Ingebouwde kwetsbaarheid scanning: Haven omvat scan-on-push beleid met pluggable backends waaronder Trivy, Clair, en Anchore die kwetsbare beelden blokkeren voordat ze worden ingezet
  • Afbeelding ondertekenen en Content Trust: Haven ondersteunt het ondertekenen van artefacten met Cosign en Notation voor beveiliging van de supply chain, plus het beleid van vertrouwen in inhoud dat alleen ondertekende afbeeldingen afdwingt, kan worden getrokken
  • Multi-registry Replication: Harbor synchroniseert beelden tussen datacenters, cloudregio's of hybride omgevingen met beleidsgebaseerde filters op repositories, tags en labels
  • Comprehensive Access Control: Authenticatie plugs in LDAP, Active Directory, OIDC providers, of de ingebouwde database
  • Robotrekeningen voor Automatisering: Robotrekeningen geven CI/CD-pijpleidingen toegang tot niet-menselijke verbindingen met een reikwijdte van machtigingen en vervaldatums
  • Complete audit trail: Audit logs track die gepusht, getrokken, verwijderd, of gescand artefacten

Wanneer moet u Harbor kiezen boven alternatieven

Organisaties runnen Harbor wanneer ze een private container register met beveiligingscontroles die gehoste registers kosten voor of gewoon niet bieden, met lucht-gapped omgevingen, gereguleerde industrieën, en multi-cloud opstellingen zijn typische use cases.

Vergeleken met Docker Hub, Harbor biedt ingebouwde kwetsbaarheid scannen, beeld ondertekening, RBAC, audit logging, en multi-registry replicatie .. functies die Docker Hub betaalde plannen nodig hebben of zijn niet beschikbaar. Voor organisaties met gegevens residency vereisten, compliance mandaten, of de noodzaak voor onbeperkte particuliere repositories, Harbor biedt een dwingende zelf-gehost alternatief.

Begrijpen van de haven Multi-tenancy Architectuur

Voordat je in de installatie gaat duiken, is het essentieel om te begrijpen hoe Harbor multi-tenancy implementeert en hoe deze architectuur organisatorische isolatie en veiligheid ondersteunt.

Projecten als huurgrenzen

Artefacten binnen Harbor zijn eigendom van een project, en deze groepering maakt het mogelijk instellingen en machtigingen af te stemmen voor sets van artefacten in tegenstelling tot een zuiver mondiaal niveau. Projecten dienen als de fundamentele eenheid van multi-tenancy in Harbor, die fungeren als geïsoleerde naamruimtes die containerbeelden, Helmkaarten en andere OCI-artefacten scheiden per team, afdeling of klant.

De multi-tenancy mogelijkheden van Harbor omvatten projecten die fungeren als namespaces die modellen isoleren door team, omgeving of use case, samen met fijnkorrelige RBAC voor het controleren wie kan pushen, trekken, of beheren van artefacten. Deze project-gebaseerde isolatie zorgt ervoor dat verschillende huurders niet toegang tot elkaars artefacten zonder expliciete toestemming subsidies.

Roltraptoegangscontrole (RBAC)

Gebruikers kunnen verschillende repositories benaderen via 'projecten' en een gebruiker kan verschillende toestemmingen hebben voor afbeeldingen of Helmkaarten onder een project. Harbor implementeert een geavanceerd RBAC-systeem met vooraf gedefinieerde rollen die op projectniveau kunnen worden toegewezen:

  • Gast: Alleen-lezen toegang tot weergave en trekken artefacten
  • Ontwikkelaar: Lees-schrijfrechten om afbeeldingen te pushen en te trekken
  • Onderhouder: Kan projectleden beheren en projectinstellingen configureren
  • Project Admin: Volledige controle over het project inclusief lees-schrijf-configuratiemogelijkheden

Dit granulaire toestemmingsmodel stelt organisaties in staat het principe van de minste privileges toe te passen, zodat gebruikers en geautomatiseerde systemen alleen toegang hebben tot de middelen die ze nodig hebben.

Authenticatie-integratie

In de eenvoudigste gevallen kunnen gebruikers door Harbor zelf worden gemaakt en intern worden beheerd, maar dit is niet erg goed schalen, dus Harbor biedt ook integratie in andere populaire diensten zoals OIDC, Active Directory en LDAP. Deze flexibiliteit stelt organisaties in staat om bestaande infrastructuur voor identiteitsbeheer te benutten, administratieve overhead te verminderen en consistente toegangsbeleiden te garanderen tussen systemen.

Vereisten en systeemvereisten

Zorg ervoor dat uw omgeving voldoet aan de eisen die nodig zijn voor een productie-klaar implementatie.

Hardwarevereisten

Voor een productiehaven die meerdere huurders ondersteunt, moet u de volgende minimumspecificaties in overweging nemen:

  • CPU: 4 kernen minimaal (8+ kernen aanbevolen voor hoogverkeersomgevingen)
  • Geheugen: 8 GB RAM minimum (16+ GB aanbevolen)
  • Opslag: Hangt af van het beeldvolume; start met 100 GB en plan voor groei
  • Network: Stabiele netwerkconnectiviteit met voldoende bandbreedte voor image push/pull-bewerkingen

Vereisten voor software

De haven vereist de volgende softwarecomponenten:

  • Operating System: Linux distributie (Ubuntu 20.04+, CentOS 7+, RHEL 7+, of soortgelijke)
  • Dokermotor: Versie 20.10.0 of hoger
  • Docker Stel: Versie 1.29.0 of hoger (voor Docker Stel installatiemethode samen)
  • Kubernetes: Versie 1.20+ (indien via Helm ingezet)
  • OpenSSL: Voor het genereren van SSL/TLS-certificaten

Netwerk- en domeinconfiguratie

Voor een productie-implementatie, heb je nodig:

  • Een volledig gekwalificeerde domeinnaam (FQDN) die naar uw Harbor-server wijst
  • SSL/TLS-certificaten (zelf-gesigneerd voor testen, CA-gesigneerd voor productie)
  • Open firewall poorten: 80 (HTTP), 443 (HTTPS), en optioneel 4443 (Notaris)

Harbor installeren: Stap-voor-stap handleiding

Haven kan worden geïnstalleerd op elke Kubernetes omgeving of op een systeem met Docker ondersteuning. Deze gids omvat zowel installatiemethoden, te beginnen met de Docker Compose aanpak voor eenvoud, gevolgd door Kubernetes implementatie met behulp van Helm grafieken.

Methode 1: Het installeren van haven met Docker Compose

Docker Compose biedt het snelste pad om Harbor aan de praat te krijgen, waardoor het ideaal is voor ontwikkelingsomgevingen en kleinere implementaties.

Stap 1: Installeer Docker en Docker Compose

Zorg er eerst voor dat Docker en Docker Compose op uw systeem geïnstalleerd zijn. Op Ubuntu kunt u ze installeren met de volgende commando's:

# Update package index
sudo apt update

# Install prerequisites
sudo apt install -y ca-certificates curl gnupg lsb-release

# Add Docker's official GPG key
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Set up Docker repository
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Install Docker Engine and Docker Compose
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# Start and enable Docker
sudo systemctl start docker
sudo systemctl enable docker

# Verify installation
docker --version
docker compose version

Stap 2: Download haven

Download binaire bestanden van Harbor release en volg Installatie & Configuratie Gids om Harbor te installeren. U kunt de laatste Harbor release downloaden van de officiële GitHub repository:

# Download the latest Harbor release
cd /opt
curl -s https://api.github.com/repos/goharbor/harbor/releases/latest | grep browser_download_url | cut -d '"' -f 4 | grep '.tgz$' | wget -i -

# Extract the archive
tar xzvf harbor-offline-installer-*.tgz

# Navigate to Harbor directory
cd harbor

Stap 3: Harbor instellen

Harbor gebruikt een YAML configuratiebestand dat aangepast moet worden voor uw omgeving:

# Copy the template configuration file
cp harbor.yml.tmpl harbor.yml

# Edit the configuration file
nano harbor.yml

Belangrijkste configuratieparameters om te wijzigen:

# The hostname or IP address of your Harbor server
hostname: harbor.yourdomain.com

# HTTP configuration
http:
 port: 80

# HTTPS configuration (recommended for production)
https:
 port: 443
 certificate: /path/to/your/certificate.crt
 private_key: /path/to/your/private_key.key

# Harbor admin password (change this!)
harbor_admin_password: YourSecurePassword123!

# Database configuration
database:
 password: DatabasePassword123!
 max_idle_conns: 100
 max_open_conns: 900

# Data storage location
data_volume: /data

# Log configuration
log:
 level: info
 local:
 rotate_count: 50
 rotate_size: 200M
 location: /var/log/harbor

Stap 4: SSL-certificaten genereren (facultatief maar aanbevolen)

Voor productie-implementaties, gebruik CA-signed certificaten. Voor het testen, kunt u zelf-signed certificaten genereren:

# Create certificate directory
mkdir -p /opt/harbor/certs
cd /opt/harbor/certs

# Generate private key
openssl genrsa -out harbor.key 4096

# Generate certificate signing request
openssl req -new -key harbor.key -out harbor.csr -subj "/C=US/ST=State/L=City/O=Organization/CN=harbor.yourdomain.com"

# Generate self-signed certificate (valid for 365 days)
openssl x509 -req -days 365 -in harbor.csr -signkey harbor.key -out harbor.crt

# Update harbor.yml with certificate paths
# certificate: /opt/harbor/certs/harbor.crt
# private_key: /opt/harbor/certs/harbor.key

Stap 5: Installeer haven met Trivy Scanner

Trivy is de standaardscanner sinds Harbor v2. Om Harbor te installeren met de Trivy kwetsbaarheidsscanner ingeschakeld:

# Run the installation script with Trivy
sudo ./install.sh --with-trivy

# Verify all containers are running
docker compose ps

Je zou de output moeten zien die alle Harbor diensten laat zien, inclusief haven-core, haven-portaal, haven-db, register, trivy-adapter, en anderen.

Stap 6: Toegang tot Harbor Web Interface

Zodra de installatie voltooid is, moet u toegang hebben tot de Harbor UI in uw webbrowser op https://harbor.yourdomain.com en inloggen met de admin gebruiker en het wachtwoord dat u hebt ingesteld.

Methode 2: Het installeren van haven op Kubernetes met Helm

Als u Harbor wilt inzetten op Kubernetes, gebruik dan de Harbor-kaart. Kubernetes implementatie biedt een betere schaalbaarheid, hoge beschikbaarheid en integratie met cloud-native ecosystemen.

Stap 1: Voeg Harbor Helm repository

# Add Harbor Helm repository
helm repo add harbor https://helm.goharbor.io

# Update Helm repositories
helm repo update

# Create namespace for Harbor
kubectl create namespace harbor

Stap 2: Bestand Helmwaarden aanmaken

Maak een bestand met aangepaste waarden om uw Harbor implementatie te configureren:

cat > harbor-values.yaml <<EOF
expose:
 type: ingress
 tls:
 enabled: true
 certSource: secret
 secret:
 secretName: harbor-tls
 ingress:
 hosts:
 core: harbor.yourdomain.com
 className: nginx
 annotations:
 cert-manager.io/cluster-issuer: "letsencrypt-prod"

externalURL: https://harbor.yourdomain.com

persistence:
 enabled: true
 resourcePolicy: "keep"
 persistentVolumeClaim:
 registry:
 storageClass: "fast-ssd"
 size: 500Gi
 database:
 storageClass: "fast-ssd"
 size: 10Gi
 redis:
 storageClass: "fast-ssd"
 size: 1Gi

harborAdminPassword: "ChangeThisPassword123!"

database:
 type: internal

redis:
 type: internal

trivy:
 enabled: true

notary:
 enabled: true
EOF

Stap 3: Installeer haven via Helm

# Install Harbor
helm install harbor harbor/harbor
 -n harbor
 -f harbor-values.yaml

# Wait for all components to be ready
kubectl wait --for=condition=available --timeout=600s
 deployment --all -n harbor

# Check pod status
kubectl get pods -n harbor

# Get Harbor admin password
kubectl get secret harbor-core -n harbor -o jsonpath='{.data.HARBOR_ADMIN_PASSWORD}' | base64 -d

Multi-tenancy instellen in Harbor

Met Harbor geïnstalleerd, de volgende stap is het configureren van multi-tenancy om meerdere teams, afdelingen, of klanten binnen uw organisatie te ondersteunen.

Projecten voor huurders aan het maken

U kunt meerdere projecten in Harbor maken om de artefacten die zijn opgeslagen door verschillende teams of sub-organisaties binnen een onderneming te scheiden. Projecten kunnen worden gemaakt via de Harbor webinterface of programmatisch via de API.

Projecten aanmaken via webinterface

Om een project te maken via het havenportaal:

  1. Log in op Harbor als beheerder
  2. Klik op "Projecten" in het linker navigatiemenu
  3. Klik op de "NIEUW PROJECT" knop
  4. Configureer de projectinstellingen:
    • Projectnaam: Gebruik een beschrijvende naam (bijv. "team-frontend," "customer-acme")
    • Toegangsniveau: Kies "Public" (iedereen kan trekken) of "Privé" (vereist authenticatie)
    • Opslagquotum: Stel een limiet in om te voorkomen dat een enkele huurder overmatige opslag gebruikt
    • Proxy Cache: Optioneel configureren van het project als proxy-cache voor externe registers
  5. Klik op "OK" om het project aan te maken

Projecten maken via API

Voor het automatisch aanmaken van projecten of bulkbewerkingen, gebruik de Harbor REST API:

# Set Harbor credentials
HARBOR_URL="https://harbor.yourdomain.com"
HARBOR_USER="admin"
HARBOR_PASSWORD="YourSecurePassword123!"

# Create multiple projects
for project in team-frontend team-backend team-ml customer-alpha customer-beta; do
 curl -X POST "${HARBOR_URL}/api/v2.0/projects"
 -H "Content-Type: application/json"
 -u "${HARBOR_USER}:${HARBOR_PASSWORD}"
 -d "{
 "project_name": "${project}",
 "public": false,
 "storage_limit": 107374182400
 }"
 echo "Created project: $project"
done

# List all projects
curl -X GET "${HARBOR_URL}/api/v2.0/projects"
 -u "${HARBOR_USER}:${HARBOR_PASSWORD}" | jq .

Instellingen voor projectniveau instellen

Elk project in Harbor kan onafhankelijk worden geconfigureerd met instellingen die beveiligingsbeleid en resourcelimieten afdwingen.

Opslagquota

Opslagquota verhinderen dat individuele huurders buitensporige schijfruimte verbruiken:

  1. Naar het project navigeren
  2. Klik op "Configuratie" tabblad
  3. In het kader van "Resource Management" stelt u het opslagquotum vast (bijv. 100 GB)
  4. Klik op "Opslaan"

Kwetsbaarheid Scanning Beleid

Automatisch kwetsbaarheidsscanning instellen voor afbeeldingen die naar het project worden geduwd:

  1. Ga naar project "Configuratie"
  2. "Automatisch scannen van afbeeldingen bij het duwen" inschakelen
  3. Stel "Voorkom kwetsbare beelden van het uitvoeren" in om beelden met kritieke kwetsbaarheden te blokkeren
  4. De ernstdrempel instellen (bv. afbeeldingen blokkeren met "High" of "Critical" kwetsbaarheden)

Tag Bewaringsbeleid

Bewaarbeleid automatisch oude of ongebruikte afbeeldingen opruimen om opslag efficiënt te beheren:

  1. Naar project "Beleid' tabblad Navigeren
  2. Klik op "Regel toevoegen" onder tag Bewaring
  3. Configureer bewaarcriteria:
    • Rechtory matching patroon (bijv., "**" voor alle repositories)
    • Bewaringsregel (bijv. "behoud de meest recent geduwde 10 artefacten")
    • Bijpassend tagpatroon (bv. "laatste" en "productie"-tags uitsluiten)
  4. Klik op "Toevoegen" en vervolgens "Nu uitvoeren" om het beleid te testen

Vertrouwen van inhoud en ondertekenen van afbeeldingen

Schakel het vertrouwen in inhoud in om ervoor te zorgen dat alleen ondertekende afbeeldingen kunnen worden getrokken:

  1. In project "Configuratie" "Inschakelen van vertrouwen in inhoud"
  2. Dit vereist dat afbeeldingen worden ondertekend met behulp van Docker Content Trust of Cosign
  3. Niet-signed images worden afgewezen wanneer gebruikers proberen om ze te trekken

Gebruikerstoegang en toegangsrechten beheren

Effectieve multi-tenancy vereist zorgvuldig beheer van de toegang van gebruikers en machtigingen om ervoor te zorgen huurders alleen toegang tot hun aangewezen middelen.

Gebruikersbeheerstrategieën

Harbor ondersteunt meerdere authenticatie backends, zodat u de aanpak kunt kiezen die het beste past bij de infrastructuur van uw organisatie voor identiteitsbeheer.

Lokaal gebruikersbeheer

Voor kleine implementaties of testen kunt u direct gebruikers in Harbor maken:

  1. Log in als admin
  2. Navigeren naar "Administratie" → "Gebruikers"
  3. Klik op "NIEUW GEBRUIKER"
  4. Vul gebruikersgegevens in (gebruikersnaam, e-mail, volledige naam, wachtwoord)
  5. Klik op "OK"

LDAP/Active Directory Integratie

Voor implementaties van ondernemingen, integreer Harbor met uw bestaande LDAP of Active Directory:

  1. Navigeren naar "Administratie" → "Configuratie" → "Authenticatie"
  2. Selecteer "LDAP" als authenticatiemodus
  3. LDAP-instellingen instellen:
    • LDAP-URL: ldap://ldap.yourdomain.com:389
    • LDAP Search DN: cn=admin,dc=yourdomain,dc=com
    • LDAP Base DN: dc=yourdomain,dc=com
    • LDAP-filter: (objectklasse=persoon)
    • LDAP UID: uid
    • LDAP-omvang: Subboom
  4. Test de verbinding
  5. Klik op "Opslaan"

OIDC-integratie

Voor moderne identiteitsproviders zoals Okta, Auth0, of Keycamlak:

  1. In "Authenticatie" instellingen, selecteer "OIDC"
  2. OIDC parameters configureren:
    • OIDC Provider Naam: Uw providernaam
    • OIDC Eindpunt: https://your-idp.com
    • OID client ID: uw client ID
    • OIDC Client Secret: Uw cliënt geheim
    • OIDC Scope: openid,profile,email
  3. Controleren en opslaan

Gebruikers aan projecten toewijzen

Zodra gebruikers zijn geauthentiseerd, toewijzen ze aan projecten met passende rollen:

  1. Naar het project navigeren
  2. Klik op "Leden" tabblad
  3. Klik op "USER" of "GROUP" om leden toe te voegen
  4. Zoeken naar de gebruiker of groep
  5. Selecteer de juiste rol:
    • Gast: Alleen-lezen toegang om afbeeldingen te trekken
    • Ontwikkelaar: Kan afbeeldingen duwen en trekken
    • Onderhouder: Kan projectleden beheren en instellingen configureren
    • Project Admin: Volledige controle over het project
  6. Klik op "OK"

Robotrekeningen voor CI/CD-integratie

Robotaccounts zijn serviceaccounts in Harbor met specifieke machtigingen, gebruikt voor geautomatiseerde bewerkingen zoals CI/CD-pijpleidingen die afbeeldingen duwen of trekken zonder dat er menselijke referenties nodig zijn.

Om een robotaccount aan te maken:

  1. Naar het project navigeren
  2. Klik op het tabblad "Robotaccounts"
  3. Klik op "NIEUW ROBOT REKENING"
  4. Configureer het robotaccount:
    • Naam: Descriptieve naam (bijv. "ci-pipeline-bot")
    • Tijdsduur: Stel een vervaldatum in voor de zekerheid
    • Toestemmingen: Selecteer specifieke repositories en acties (push, pull, delete)
  5. Klik op "ADD"
  6. Kopieer het gegenereerde token onmiddellijk (het zal niet opnieuw worden getoond)

Gebruik de robotaccount in uw CI/CD-pijpleiding:

# In your CI/CD pipeline (e.g., GitLab CI, Jenkins)
docker login harbor.yourdomain.com -u 'robot$ci-pipeline-bot' -p 'TOKEN_HERE'
docker build -t harbor.yourdomain.com/team-frontend/app:${CI_COMMIT_SHA} .
docker push harbor.yourdomain.com/team-frontend/app:${CI_COMMIT_SHA}

Beveiligingskenmerken voor multi-huuromgevingen

Veiligheid is van het grootste belang in multi-huuromgevingen waar meerdere teams of klanten infrastructuur delen. Harbor biedt uitgebreide beveiligingsfuncties om uw container supply chain te beschermen.

Kwetsbaarheidsscanning

Door gebruik te maken van populaire beeldscanners, zoals Trivy, kunnen beelden automatisch worden gescand op bekende kwetsbaarheden, en de resultaten van deze scans kunnen worden gebruikt om het trekken van artefacten met niet-geadresseerde beveiligingsproblemen te voorkomen.

Automatisch scannen instellen

Schakel automatisch scannen in op systeem- of projectniveau:

  1. Voor systeembreed scannen: "Administration" → "Interrogation Services" → Trivy instellingen instellen
  2. Voor project-niveau scannen: Project → "Configuratie" → Schakel "Automatisch scannen van beelden op push" in
  3. Instellen van geplande scans om bestaande afbeeldingen opnieuw te scannen op nieuw ontdekte kwetsbaarheden

Kwetsbaarheidspreventiebeleid

Beleid configureren om te voorkomen dat kwetsbare beelden worden ingezet:

  1. In project "Configuratie" kunt u "Beveiligde beelden voorkomen"
  2. Stel de ernstdrempel in (bv. "High" of "Critical")
  3. Afbeeldingen met kwetsbaarheden op of boven deze drempel kunnen niet worden getrokken

Scanresultaten bekijken

Om de resultaten van de kwetsbaarheidsscan te bekijken:

  1. Naar het project en de repository navigeren
  2. Klik op een artefact/tag
  3. Bekijk het tabblad "Kwetsbaarheden" voor gedetailleerde scanresultaten
  4. Beoordeling CVE details, ernst niveaus, en beschikbare fixes

Vertrouwen van afbeeldingen en inhoud

Harbor ondersteunt het ondertekenen van containerbeelden met behulp van Docker Content Trust (afleveren notaris) voor het garanderen van authenticiteit en herkomst, en beleid dat voorkomt dat niet-signeerde beelden worden ingezet, kan ook worden geactiveerd.

Content vertrouwen inschakelen

Om inhoud vertrouwen voor een project in te schakelen:

  1. Navigeren naar project "Configuratie"
  2. "Betrouwbaarheid van inhoud inschakelen" inschakelen
  3. "Voorkomen van niet-gesigneerde afbeeldingen van het trekken" inschakelen

Afbeeldingen ondertekenen met Docker Content Trust

# Enable Docker Content Trust
export DOCKER_CONTENT_TRUST=1
export DOCKER_CONTENT_TRUST_SERVER=https://harbor.yourdomain.com:4443

# Push and sign an image
docker push harbor.yourdomain.com/team-frontend/app:v1.0

# The first push will prompt you to create signing keys
# Follow the prompts to set passphrases for root and repository keys

Ondertekenen met Cosign

Voor moderne signing workflows, gebruik Cosign:

# Install Cosign
curl -O -L "https://github.com/sigstore/cosign/releases/latest/download/cosign-linux-amd64"
sudo mv cosign-linux-amd64 /usr/local/bin/cosign
sudo chmod +x /usr/local/bin/cosign

# Generate key pair
cosign generate-key-pair

# Sign an image
cosign sign --key cosign.key harbor.yourdomain.com/team-frontend/app:v1.0

# Verify signature
cosign verify --key cosign.pub harbor.yourdomain.com/team-frontend/app:v1.0

Auditloggen en naleving

Alle operaties naar de repositories worden gevolgd door logs. Harbor onderhoudt uitgebreide audit logs die alle gebruikersactiviteiten volgen, waardoor het gemakkelijker wordt om te voldoen aan de nalevingseisen en beveiligingsincidenten te onderzoeken.

Auditlogs bekijken

  1. Navigeren naar "Administratie" → "Logs"
  2. Filter logs met:
    • Gebruikersnaam
    • Soort bewerking (push, pull, delete, create, etc.)
    • Soort hulpbron (project, repository, artefact)
    • Tijdbereik
  3. Logboeken exporteren voor externe analyse of archivaris

Integratie met SIEM-systemen

Voor de naleving van de bedrijfsvoorschriften, integreer Harbor logs met uw SIEM systeem:

# Configure Harbor to send logs to syslog
# Edit harbor.yml
log:
 level: info
 external_endpoint:
 protocol: tcp
 host: syslog.yourdomain.com
 port: 514

# Restart Harbor to apply changes
docker compose down
docker compose up -d

Netwerkbeveiliging en toegangscontrole

HTTPS instellen

Gebruik altijd HTTPS in productie om gegevens in transit te versleutelen:

  1. SSL/TLS-certificaten verkrijgen bij een vertrouwde CA (Let's Encrypt, DigiCert, enz.)
  2. Harbor.yml instellen met certificaatpaden
  3. Herstart haven

Firewall-configuratie

Toegang tot de haven beperken met behulp van firewall regels:

# Allow HTTPS traffic
sudo ufw allow 443/tcp

# Allow HTTP (if needed for redirect)
sudo ufw allow 80/tcp

# Allow Notary (if using Docker Content Trust)
sudo ufw allow 4443/tcp

# Restrict access to specific IP ranges (optional)
sudo ufw allow from 10.0.0.0/8 to any port 443 proto tcp

# Enable firewall
sudo ufw enable

Afbeeldingsreplicatie voor multi-site implementaties

Afbeeldingen en grafieken kunnen worden gerepliceerd (gesynchroniseerd) tussen meerdere register instanties gebaseerd op beleid met behulp van filters (repository, tag en label), en Harbor retrieft automatisch een replicatie als het tegenkomt fouten, die kunnen worden gebruikt om loadbalancing te helpen, bereiken van hoge beschikbaarheid, en het faciliteren van multi-datacenter implementaties in hybride en multi-cloud scenario's.

Instellingen voor het ophalen van eindpunten

Replicatiedoelen zijn onder andere andere Harbor gevallen, Docker Hub, AWS ECR, Google GCR/GAR, Azure ACR, en elk OCI-conforme register.

Om een replicatie-eindpunt te configureren:

  1. Navigeren naar "Administratie" → "Registeren"
  2. Klik op "NIEUW ENDPOINT"
  3. Configureer eindpuntdetails:
    • Provider: Selecteer het registratietype (Harbor, Docker Hub, AWS ECR, enz.)
    • Naam: Beschrijvende naam voor het eindpunt
    • Eindpunt URL: Register-URL
    • Toegang ID/Geheim: Authenticatie-gegevens
  4. Test de verbinding
  5. Klik op "OK"

Replicatieregels aanmaken

Definieer het replicatiebeleid om automatisch afbeeldingen te synchroniseren:

  1. Navigeren naar "Administratie" → "Replicaties"
  2. Klik op "NEW REPLICATION REULE"
  3. Configureer de regel:
    • Naam: Beschrijvende regelnaam
    • Replicatiemodus: Duw (naar remote) of trek (vanaf remote)
    • Bronregister: Selecteer bron
    • Bestemmingsregister: Selecteer het doeleindpunt
    • Triggermodus: Handmatig, gepland of op evenementen gebaseerd
    • Bestanden: Geef aan welke repositories, labels of labels te repliceren zijn
  4. Klik op "SAVE"

Gebruik cases voor replicatie

  • Disaster Recovery: Kritieke beelden repliceren naar een secundaire haven instantie in een andere regio
  • Geografische distributie: Afbeeldingen synchroniseren naar regionale registers voor snellere trektijden
  • Hybrid Cloud: Repliceren tussen haven- en cloudregisters op de lokalen
  • Ontwikkeling/Productiescheiding: Bevorderen van beelden van dev naar productieregisters

Werken met de haven: praktische werkstromen

Zodra Harbor is geconfigureerd voor multi-tenancy, teams kunnen beginnen met het gebruiken van het voor hun container workflows.

Afbeeldingen naar haven pushen

Om een afbeelding naar Harbor te pushen:

# Log in to Harbor
docker login harbor.yourdomain.com

# Tag your image with Harbor registry path
docker tag myapp:latest harbor.yourdomain.com/team-frontend/myapp:v1.0

# Push the image
docker push harbor.yourdomain.com/team-frontend/myapp:v1.0

Afbeeldingen van de haven aan het trekken

# Log in to Harbor (if pulling private images)
docker login harbor.yourdomain.com

# Pull the image
docker pull harbor.yourdomain.com/team-frontend/myapp:v1.0

# Run the container
docker run -d harbor.yourdomain.com/team-frontend/myapp:v1.0

Gebruik van haven met Kubernetes

Om afbeeldingen uit de haven in Kubernetes te halen, maak een afbeelding pull secret:

# Create a Docker registry secret
kubectl create secret docker-registry harbor-registry
 --docker-server=harbor.yourdomain.com
 --docker-username=your-username
 --docker-password=your-password
 [email protected]
 -n your-namespace

# Reference the secret in your pod spec
apiVersion: v1
kind: Pod
metadata:
 name: myapp
spec:
 containers:
 - name: myapp
 image: harbor.yourdomain.com/team-frontend/myapp:v1.0
 imagePullSecrets:
 - name: harbor-registry

Proxy-cache voor externe registers

Harbor's proxy cache functie stelt Harbor in staat om te fungeren als een caching proxy voor externe registers, het verminderen van bandbreedte gebruik en het verbeteren van de trekprestaties.

Om een proxy-cacheproject in te stellen:

  1. Een nieuw project aanmaken
  2. Selecteer "Proxy Cache" als projecttype
  3. Kies het doelregister (Dokter Hub, Quay.io, enz.)
  4. Indien nodig credentials configureren
  5. Afbeeldingen door de haven trekken met behulp van het pad voor de proxycache
# Instead of pulling from Docker Hub directly
docker pull nginx:latest

# Pull through Harbor proxy cache
docker pull harbor.yourdomain.com/dockerhub-proxy/library/nginx:latest

Back-up en herstel van rampen

Het beschermen van uw Harbor implementatie en de gegevens ervan is van cruciaal belang voor de bedrijfscontinuïteit.

Back-up van havengegevens

Harbor gebruikt een database om zijn gegevens op te slaan, en standaard gebruikt het een PostgreSQL database die wordt beheerd door Docker.

Om de haven te steunen:

# Stop Harbor
cd /opt/harbor
docker compose down

# Backup the data directory
sudo tar -czf harbor-backup-$(date +%Y%m%d).tar.gz /data

# Backup the configuration
sudo cp harbor.yml harbor.yml.backup

# Backup the database (if using external database)
docker exec harbor-db pg_dump -U postgres registry > harbor-db-backup-$(date +%Y%m%d).sql

# Restart Harbor
docker compose up -d

Automatisch reservekopiescript

#!/bin/bash
# harbor-backup.sh

BACKUP_DIR="/backup/harbor"
DATE=$(date +%Y%m%d-%H%M%S)
HARBOR_DIR="/opt/harbor"
DATA_DIR="/data"

# Create backup directory
mkdir -p $BACKUP_DIR

# Stop Harbor
cd $HARBOR_DIR
docker compose down

# Backup data volume
tar -czf $BACKUP_DIR/harbor-data-$DATE.tar.gz $DATA_DIR

# Backup configuration
cp $HARBOR_DIR/harbor.yml $BACKUP_DIR/harbor-config-$DATE.yml

# Restart Harbor
docker compose up -d

# Remove backups older than 30 days
find $BACKUP_DIR -name "harbor-*" -mtime +30 -delete

echo "Backup completed: $BACKUP_DIR/harbor-data-$DATE.tar.gz"

Schakel dit script in met cron:

# Run backup daily at 2 AM
0 2 * * * /usr/local/bin/harbor-backup.sh >> /var/log/harbor-backup.log 2>&1

Herstel van back-up

# Stop Harbor
cd /opt/harbor
docker compose down

# Restore data directory
sudo rm -rf /data
sudo tar -xzf /backup/harbor/harbor-data-20260402.tar.gz -C /

# Restore configuration
sudo cp /backup/harbor/harbor-config-20260402.yml /opt/harbor/harbor.yml

# Restart Harbor
docker compose up -d

Monitoring en prestatieoptimalisatie

Het monitoren van de gezondheid en prestaties van Harbor zorgt voor een optimale werking en helpt problemen te identificeren voordat ze gebruikers beïnvloeden.

Monitoring van de gezondheid van havens

Harbor stelt gezondheidscheck eindpunten bloot:

# Check Harbor health
curl -k https://harbor.yourdomain.com/api/v2.0/health

# Expected response
{
 "status": "healthy",
 "components": [
 {"name": "core", "status": "healthy"},
 {"name": "database", "status": "healthy"},
 {"name": "redis", "status": "healthy"},
 {"name": "registry", "status": "healthy"}
 ]
}

Prometheus Metrics

De haven stelt Prometheus metrics voor monitoring bloot:

# Enable metrics in harbor.yml
metric:
 enabled: true
 port: 9090
 path: /metrics

# Scrape metrics with Prometheus
curl http://harbor.yourdomain.com:9090/metrics

Optimalisatie van de prestaties Tips

  • Gebruik SSD-opslag: Bewaar havengegevens op snelle SSD-stations voor betere I/O-prestaties
  • Redis caching instellen: Zorg ervoor dat Redis voldoende geheugen toegewezen heeft
  • Database tuning: De PostgreSQL-instellingen optimaliseren voor uw werklast
  • Vuilnisverzameling inschakelen: Plan regelmatig afvalverzameling om opslag terug te vorderen
  • Gebruik proxy cache: Externe register pulls verminderen door vaak gebruikte afbeeldingen te cachen
  • Implementatiereplicatie: Verdeel belasting over meerdere Harbor instanties

Afvalverzameling

Vuilnisverzameling is het proces van het terughalen van opslagruimte door het verwijderen van niet-gereferentiede blobs en artefacten die niet langer nodig zijn.

Om vuilnisverzameling uit te voeren:

  1. Navigeren naar "Administratie" → "Barbage Collection"
  2. Klik op "GC NOW" voor onmiddellijke verzameling
  3. Of regel regelmatig afval (bv. wekelijks om 2 uur)

Problemen oplossen van gemeenschappelijke problemen

Kan afbeeldingen niet versturen

Symptomen: "verzaakt: gevraagde toegang tot de bron wordt geweigerd" fout

Oplossingen:

  • Verifiëren gebruiker heeft ontwikkelaar of hogere rol in het project
  • Projectopslagquotum controleren is niet overschreden
  • Zorg ervoor dat de gebruiker is geauthenticeerd: .2]]
  • Projectnaam controleren in afbeeldingstag die overeenkomt met bestaand project

SSL-certificaatfouten

Symptomen: "x509: certificaat ondertekend door onbekende autoriteit" fout

Oplossingen:

  • Voeg het CA-certificaat van Harbor toe aan Docker's vertrouwde certificaten
  • Voor zelfondertekende certificaten, kopieer het CA-cert naar
  • Herstart Docker daemon:

Langzame afbeelding duwen/intrekken

Symptomen: Afbeeldingen doen te lang over

Oplossingen:

  • Controleer netwerkbandbreedte en latentie
  • Opslag I/O-prestaties verifiëren
  • Verhoog Docker daemon's maximale gelijktijdige uploads/downloads
  • Overweeg om Harbor replicatie te gebruiken voor geografisch gedistribueerde teams
  • Proxy-cache inschakelen voor vaak getrokken externe afbeeldingen

Databaseverbindingsproblemen

Symptomen: Harbor UI toont fouten of zal niet laden

Oplossingen:

  • Controleer de containerstatus van de database:
  • Controleer databasegegevens in harbor.yml
  • Controleer databaselogboeken:
  • Zorg ervoor dat de database voldoende middelen heeft (CPU, geheugen, schijf)

Geavanceerde multi-tenancy scenario's

De distributie van containers door klanten

Harbor kan worden gebruikt om containerized software te verspreiden naar externe klanten:

  • Maak aparte projecten voor elke klant
  • Gebruik robotaccounts met vervaldatums voor toegang tot klanten
  • Webhook-notificaties implementeren wanneer nieuwe versies beschikbaar zijn
  • Stel zo nodig replicatie in op klantspecifieke registers
  • Projectquota gebruiken om opslag per klant te beheren

Meerregionale inzet

Voor wereldwijde organisaties, zet Harbor in meerdere regio's:

  • Haveninstanties in elke grote regio (VS, EU, APAC) inzetten
  • Bidirectionele replicatie tussen instanties instellen
  • Gebruik DNS-gebaseerde load balancering om gebruikers te routeren naar het dichtstbijzijnde instantie
  • Een consistente LDAP/OIDC-authenticatie implementeren in alle instanties
  • Controle en loggen centraliseren voor alle instanties

Naleving en regelgevingseisen

Voor gereglementeerde sectoren (gezondheidszorg, financiën, overheid):

  • Compleet auditloggen inschakelen
  • Implementeren van verplichte kwetsbaarheid scannen met blokkeren beleid
  • Image-signing voor alle productiebeelden vereisen
  • Configureer het bewaarbeleid om te voldoen aan de vereisten inzake gegevensopslag
  • LDAP/AD-integratie gebruiken voor gecentraliseerde toegangscontrole
  • Implementeer netwerksegmentatie en firewall regels
  • Regelmatige back-up- en noodhersteltests
  • Documenteer alle beveiligingscontroles en -procedures

Beste praktijken voor multi-tenant haven implementaties

Beste praktijken op het gebied van beveiliging

  • Gebruik altijd HTTPS: Nooit Harbor draaien over gewone HTTP in productie
  • Wijzig standaard wachtwoorden: Wijzig onmiddellijk het wachtwoord van de beheerder na installatie
  • Veiligheidsscanning inschakelen: Automatisch scannen instellen bij duwen
  • Implementeren van het ondertekenen van afbeeldingen: Vereiste ondertekende afbeeldingen voor productie-implementaties
  • Gebruik robotaccounts: Gebruik nooit persoonlijke referenties in CI/CD-pijpleidingen
  • Reguliere beveiligingsupdates: Houd Harbor en zijn componenten up-to-date
  • Beginsel van het minst privilege: Gebruikers minimaal noodzakelijke machtigingen verlenen
  • Activeer audit logging: Controleer en bekijk logs regelmatig

Operationele beste praktijken

  • Implementeer back-upstrategie: Regelmatige automatische back-ups met geteste herstelprocedures
  • Monitor resource use: Track storage, CPU, geheugen en netwerkmetrics
  • Set opslagquota: Voorkom dat individuele projecten te veel opslag gebruiken
  • Configureer het retentiebeleid: Automatisch oude of ongebruikte afbeeldingen opruimen
  • Schuilafvalverzameling: Regelmatige opruiming om opslagruimte terug te vorderen
  • Documentprocedures: Documentaire handhaven voor gemeenschappelijke operaties en probleemoplossing
  • Proef het herstel van rampen: Regelmatig testen van back-upherstel- en fail-overprocedures
  • Capaciteitsplanning: De groeitrends en het plan voor schaalvergroting monitoren

Organisatie van beste praktijken

  • Namen conventies: Een consistente naam voor projecten, repositories en tags instellen
  • Projectstructuur: Projecten organiseren per team, toepassing of omgeving
  • Toegangscontrolebeleid: Duidelijk beleid bepalen voor wie toegang kan krijgen tot wat
  • Tagging strategie: Gebruik semantische versiering en betekenisvolle tags
  • Opleiding en documentatie: Zorg ervoor dat teams begrijpen hoe ze de haven effectief kunnen gebruiken
  • Beheren wijzigen: Goedkeuringsprocessen implementeren voor configuratiewijzigingen
  • Communicatie: Kantoren instellen voor het aankondigen van onderhoud en updates

Integratie van havens met uw DevOps Ecosysteem

Integratie van CI/CD-pijpleidingen

Voorbeeld GitLab CI-pijpleiding:

stages:
 - build
 - scan
 - deploy

variables:
 HARBOR_REGISTRY: harbor.yourdomain.com
 HARBOR_PROJECT: team-frontend
 IMAGE_NAME: myapp

build:
 stage: build
 script:
 - docker login -u robot$ci-bot -p $HARBOR_TOKEN $HARBOR_REGISTRY
 - docker build -t $HARBOR_REGISTRY/$HARBOR_PROJECT/$IMAGE_NAME:$CI_COMMIT_SHA .
 - docker push $HARBOR_REGISTRY/$HARBOR_PROJECT/$IMAGE_NAME:$CI_COMMIT_SHA

scan:
 stage: scan
 script:
 - |
 # Wait for Harbor to scan the image
 sleep 30
 # Check scan results via Harbor API
 SCAN_STATUS=$(curl -u robot$ci-bot:$HARBOR_TOKEN
 "$HARBOR_REGISTRY/api/v2.0/projects/$HARBOR_PROJECT/repositories/$IMAGE_NAME/artifacts/$CI_COMMIT_SHA"
 | jq -r '.scan_overview.scan_status')
 if [ "$SCAN_STATUS" != "Success" ]; then
 echo "Vulnerability scan failed"
 exit 1
 fi

deploy:
 stage: deploy
 script:
 - kubectl set image deployment/myapp myapp=$HARBOR_REGISTRY/$HARBOR_PROJECT/$IMAGE_NAME:$CI_COMMIT_SHA
 only:
 - main

Webhook-integratie

Webhooks instellen om acties te starten wanneer afbeeldingen worden gepusht:

  1. Naar project "Webhooks" gaan
  2. Klik op "NIEUW WEBHOOK"
  3. Configureer webhook:
    • Endpoint URL: Je webhook receiver URL
    • Events: Selecteer de te activeren gebeurtenissen (push, pull, delete, scan voltooid)
    • Authenticatie: Authenticatie configureren indien nodig
  4. Test de webhaak
  5. Klik op "CONTINUE"

Helmdiagramrepository

Harbor kan ook dienen als een Helm-kaart repository:

# Add Harbor as Helm repository
helm repo add myteam https://harbor.yourdomain.com/chartrepo/team-frontend
 --username your-username
 --password your-password

# Push a Helm chart to Harbor
helm package ./mychart
helm push mychart-1.0.0.tgz myteam

# Install from Harbor
helm install myapp myteam/mychart

Toekomst-Bewijzen van uw haven implementatie

Huidige updates blijven

Beginnend met v2.15.0, Harbor release artefacten zijn cryptografische ondertekend met behulp van Cosign om authenticiteit en integriteit te garanderen. Controleer altijd Harbor releases voordat u upgrade:

# Download Harbor release and signature
wget https://github.com/goharbor/harbor/releases/download/v2.15.0/harbor-offline-installer-v2.15.0.tgz
wget https://github.com/goharbor/harbor/releases/download/v2.15.0/harbor-offline-installer-v2.15.0.tgz.sigstore.json

# Verify signature
cosign verify-blob
 --bundle harbor-offline-installer-v2.15.0.tgz.sigstore.json
 --certificate-oidc-issuer https://token.actions.githubusercontent.com
 --certificate-identity-regexp '^https://github.com/goharbor/harbor/.github/workflows/publish_release.yml@refs/tags/v.*$'
 harbor-offline-installer-v2.15.0.tgz

Schalen van overwegingen

Als uw organisatie groeit, overweeg dan:

  • Horizontale schaalvergroting: Inschakelen van meerdere Harbor instanties met load balancing
  • Externe database: Gebruik beheerde PostgreSQL voor een betere schaalbaarheid en betrouwbaarheid
  • Externe Redis: Gebruik beheerde Redis of Redis cluster voor caching
  • Objectopslag: Gebruik S3, Azure Blob, of GCS voor opslag van afbeeldingen in plaats van lokale schijf
  • CDN-integratie: Gebruik CDN voor de wereldwijde beelddistributie

Opkomende gebruiks gevallen

Haven is altijd OCI-compliant geweest, wat betekent dat het kan opslaan en distribueren van elk artefact dat voldoet aan de OCI-distributie Specificatie, en de OCI specificatie uitbreidbaarheid betekent dat AI modellen nu kunnen profiteren van dezelfde infrastructuur met dezelfde beveiliging, governance, en operationele rijpheid. Harbor wordt steeds vaker gebruikt voor:

  • AI/ML modelregister: Opslaan en verspreiden van modellen voor machine learning als OCI artefacten
  • WASM-modules: Het verdelen van webassemblymodules
  • Software-Bill of Materials (SBOM): SBOM's opslaan en beheren naast afbeeldingen
  • Beleidsbundels: Het verdelen van beleidsmaatregelen en andere configuratie-artefacten

Conclusie

Het bouwen van een multi-tenant Docker register met Harbor biedt organisaties een krachtige, veilige en schaalbare oplossing voor het beheer van containerbeelden over teams, afdelingen en zelfs klanten. Harbor overbrugt de kloof als een open-source, enterprise-grade containerregister dat veiligheid, prestaties en soevereiniteit brengt naar container beeldbeheer, naadloos integreren met bestaande operationele paradigma's en het bieden van een robuuste oplossing voor moderne container beeldbeheer behoeften.

Door de implementatie van de praktijken die in deze gids worden beschreven, van de juiste installatie en configuratie tot beveiliging verharding, multi-tenancy setup en operationele beste praktijken.U kunt een productie-ready Harbor implementatie bouwen die uw organisatie vandaag de dag nodig heeft, terwijl u flexibel genoeg blijft om zich aan toekomstige eisen aan te passen.

Belangrijkste afhaalpunten voor succesvolle Harbor multi-tenancy:

  • Projecten zijn de basis: Gebruik projecten om geïsoleerde naamruimtes te creëren voor verschillende huurders
  • Beveiliging is van het grootste belang: Kwetsbaarheidsscanning, beeldondertekening en uitgebreide auditlogging inschakelen
  • Automatisering is essentieel: Gebruik robotaccounts, webhooks en API-integratie voor CI/CD-workflows
  • Plan voor schaal: Implementeer replicatie, monitoring en capaciteitsplanning vanaf het begin
  • Blijf betrokken: Word lid van de Harbor-gemeenschap, blijf actueel met updates en draag bij aan de terugkeer

Of u nu containers beheert voor een klein ontwikkelingsteam of een grootschalig multitenantplatform bedient van honderden klanten, Harbor biedt de functies, flexibiliteit en ondersteuning van de gemeenschap die nodig zijn om te slagen. Begin met de basisprincipes, implementeer beste praktijken op het gebied van beveiliging, en geleidelijk geavanceerde functies aan te nemen naarmate uw behoeften evolueren.

Voor meer informatie en bronnen, bezoek de officiële Harbor website, verken de GitHub repository, sluit je aan bij de community op Slack en raadpleeg de uitgebreide Harbor documentatie[]. De Harbor gemeenschap is actief, gastvrij en klaar om je te helpen slagen met je container register implementatie.