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:
- Log in op Harbor als beheerder
- Klik op "Projecten" in het linker navigatiemenu
- Klik op de "NIEUW PROJECT" knop
- 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
- 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:
- Naar het project navigeren
- Klik op "Configuratie" tabblad
- In het kader van "Resource Management" stelt u het opslagquotum vast (bijv. 100 GB)
- Klik op "Opslaan"
Kwetsbaarheid Scanning Beleid
Automatisch kwetsbaarheidsscanning instellen voor afbeeldingen die naar het project worden geduwd:
- Ga naar project "Configuratie"
- "Automatisch scannen van afbeeldingen bij het duwen" inschakelen
- Stel "Voorkom kwetsbare beelden van het uitvoeren" in om beelden met kritieke kwetsbaarheden te blokkeren
- 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:
- Naar project "Beleid' tabblad Navigeren
- Klik op "Regel toevoegen" onder tag Bewaring
- 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)
- 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:
- In project "Configuratie" "Inschakelen van vertrouwen in inhoud"
- Dit vereist dat afbeeldingen worden ondertekend met behulp van Docker Content Trust of Cosign
- 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:
- Log in als admin
- Navigeren naar "Administratie" → "Gebruikers"
- Klik op "NIEUW GEBRUIKER"
- Vul gebruikersgegevens in (gebruikersnaam, e-mail, volledige naam, wachtwoord)
- Klik op "OK"
LDAP/Active Directory Integratie
Voor implementaties van ondernemingen, integreer Harbor met uw bestaande LDAP of Active Directory:
- Navigeren naar "Administratie" → "Configuratie" → "Authenticatie"
- Selecteer "LDAP" als authenticatiemodus
- 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
- Test de verbinding
- Klik op "Opslaan"
OIDC-integratie
Voor moderne identiteitsproviders zoals Okta, Auth0, of Keycamlak:
- In "Authenticatie" instellingen, selecteer "OIDC"
- 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
- Controleren en opslaan
Gebruikers aan projecten toewijzen
Zodra gebruikers zijn geauthentiseerd, toewijzen ze aan projecten met passende rollen:
- Naar het project navigeren
- Klik op "Leden" tabblad
- Klik op "USER" of "GROUP" om leden toe te voegen
- Zoeken naar de gebruiker of groep
- 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
- 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:
- Naar het project navigeren
- Klik op het tabblad "Robotaccounts"
- Klik op "NIEUW ROBOT REKENING"
- 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)
- Klik op "ADD"
- 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:
- Voor systeembreed scannen: "Administration" → "Interrogation Services" → Trivy instellingen instellen
- Voor project-niveau scannen: Project → "Configuratie" → Schakel "Automatisch scannen van beelden op push" in
- 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:
- In project "Configuratie" kunt u "Beveiligde beelden voorkomen"
- Stel de ernstdrempel in (bv. "High" of "Critical")
- Afbeeldingen met kwetsbaarheden op of boven deze drempel kunnen niet worden getrokken
Scanresultaten bekijken
Om de resultaten van de kwetsbaarheidsscan te bekijken:
- Naar het project en de repository navigeren
- Klik op een artefact/tag
- Bekijk het tabblad "Kwetsbaarheden" voor gedetailleerde scanresultaten
- 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:
- Navigeren naar project "Configuratie"
- "Betrouwbaarheid van inhoud inschakelen" inschakelen
- "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
- Navigeren naar "Administratie" → "Logs"
- Filter logs met:
- Gebruikersnaam
- Soort bewerking (push, pull, delete, create, etc.)
- Soort hulpbron (project, repository, artefact)
- Tijdbereik
- 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:
- SSL/TLS-certificaten verkrijgen bij een vertrouwde CA (Let's Encrypt, DigiCert, enz.)
- Harbor.yml instellen met certificaatpaden
- 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:
- Navigeren naar "Administratie" → "Registeren"
- Klik op "NIEUW ENDPOINT"
- 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
- Test de verbinding
- Klik op "OK"
Replicatieregels aanmaken
Definieer het replicatiebeleid om automatisch afbeeldingen te synchroniseren:
- Navigeren naar "Administratie" → "Replicaties"
- Klik op "NEW REPLICATION REULE"
- 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
- 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:
- Een nieuw project aanmaken
- Selecteer "Proxy Cache" als projecttype
- Kies het doelregister (Dokter Hub, Quay.io, enz.)
- Indien nodig credentials configureren
- 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:
- Navigeren naar "Administratie" → "Barbage Collection"
- Klik op "GC NOW" voor onmiddellijke verzameling
- 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:
- Naar project "Webhooks" gaan
- Klik op "NIEUW WEBHOOK"
- Configureer webhook:
- Endpoint URL: Je webhook receiver URL
- Events: Selecteer de te activeren gebeurtenissen (push, pull, delete, scan voltooid)
- Authenticatie: Authenticatie configureren indien nodig
- Test de webhaak
- 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.