Introductie
Kubescape is een Kubernetes open-source tool ontwikkeld door Armosec en wordt gebruikt voor risicoanalyse, beveiligingsnaleving, RBAC-visualisatie en het scannen van afbeeldingskwetsbaarheden. Bovendien kan Kubescape Kubernetes-manifesten scannen om potentiële configuratieproblemen te detecteren die uw implementaties blootstellen aan het risico van een aanval. Het kan ook Helm-charts scannen, RBAC-schendingen detecteren, risicoscores berekenen en risicotrends in de loop van de tijd tonen.
Belangrijkste kenmerken van Kubescape:
- Detecteer Kubernetes-misconfiguraties en bied ondersteuning voor remediëring via het Armosec Cloud Portal.
- Risicoanalyse en trendanalyse in de loop van de tijd via het Armosec Cloud Portal.
- Bevat meerdere beveiligingsnalevingskaders, zoals ArmoBest, NSA, MITRE en DevOps Best Practices.
- Ondersteuning voor uitzonderingenbeheer, waardoor Kubernetes-beheerders acceptabele risiconiveaus kunnen markeren.
- Integreert met verschillende tools zoals Jenkins, Github-workflows, Prometheus, enz.
- Afbeeldingsscanning – scan afbeeldingen op kwetsbaarheden en zie, sorteer en filter eenvoudig (welke kwetsbaarheid als eerste te patchen).
- Vereenvoudigt RBAC-complexiteit door een gemakkelijk te begrijpen visuele grafiek te bieden die de RBAC-configuratie in uw cluster laat zien.
Kubescape kan op verschillende manieren worden uitgevoerd:
- Via de command line interface (of CLI). Dit is de voorkeursmethode om uit te voeren binnen scripts en verschillende automatiseringen, inclusief CI/CD pipelines. Resultaten kunnen worden geüpload naar het Armosec Cloud Portal voor analyse.
- Als een cronjob binnen uw Kubernetes-cluster. In deze modus houdt Kubescape voortdurend uw Kubernetes-cluster in de gaten voor wijzigingen en uploadt scansresultaten naar het Armosec Cloud Portal. Deze functie werkt alleen als u Armo Cluster Componenten implementeert in uw DOKS-cluster.
- Via de webinterface van het Armosec Cloud Portal. U kunt configuratiescans, Imagescanning triggeren, RBAC-regels bekijken en inspecteren, frameworks aanpassen, enz. Deze functie werkt alleen als u Armo Cluster Componenten implementeert in uw DOKS-cluster.
- Binnen uw Visual Studio Code IDE. Op deze manier kunt u problemen zeer snel opsporen in de vroege ontwikkelingsfasen.
Kubescape maakt gebruik van verschillende frameworks om misconfiguraties op te sporen, zoals:
Is Kubescape gratis?
Ja, de tooling en de community-editie zijn voor altijd gratis, behalve de implementatie van de cloudportalbackend en misschien enkele andere geavanceerde functies. Er is ook een beperking op het maximale aantal worker-nodes dat u per cluster kunt scannen (tot 10). De gegevensretentie van uw scans is beperkt tot één maand in het Armo-cloudportal.
Zie de prijsopties voor meer informatie.
Is Kubescape open source?
Ja, de tooling is dat zeker. U kunt de Armo GitHub-homepagina bezoeken voor meer details over elke componentimplementatie. De implementatie van de cloudportalbackend is niet open source.
In deze gids zult u Kubescape gebruiken om risicoanalyses uit te voeren voor de supply chain van uw Kubernetes-applicaties (containerimages, Kubernetes-YAML-manifesten). Vervolgens leert u hoe u de juiste actie kunt ondernemen om de situatie te verhelpen. Ten slotte leert u hoe u Kubescape kunt integreren in een CI/CD-pijplijn om te scannen op kwetsbaarheden in de vroege ontwikkelingsfasen.
Inhoudsopgave
- Inleiding
- Vereisten
- Stap 1 – Kennismaken met de Kubescape CLI
- Stap 2 – Kennismaken met het Armosec Cloud Portal
- Stap 3 – Configureren van automatische scans voor Kubescape voor DOKS
- Stap 4 – Gebruik van Kubescape om te scannen op Kubernetes-configuratiekwetsbaarheden in een CI/CD-pijplijn
- Stap 5 – Onderzoeken van Kubescape-scanresultaten en oplossen van gerapporteerde problemen
- Stap 6 – Het Kubescape CI/CD-workflow automatisch activeren
- Stap 7 – Slack-meldingen inschakelen voor continue monitoring
- Conclusie
- Aanvullende bronnen
Vereisten
Om alle stappen uit deze handleiding te voltooien, heeft u het volgende nodig:
- A working
DOKS
cluster runningKubernetes version >=1.21
that you have access to. For additional instructions on configuring a DigitalOcean Kubernetes cluster, see: How to Set Up a DigitalOcean Managed Kubernetes Cluster (DOKS). - A DigitalOcean Docker Registry. A free plan is enough to complete this tutorial. Also, make sure it is integrated with your DOKS cluster as explained here.
- Kubectl CLI voor interactie met
Kubernetes
. Volg deze instructies om verbinding te maken met uw cluster metkubectl
endoctl
. - Helm, om Kubescape te installeren in het Kubernetes-cluster.
- Kubescape CLI om te communiceren met de Kubescape kwetsbaarheidsscanner.
- A free Armosec Cloud Portal account used to periodically publish scan results for your Kubernetes cluster to a nice dashboard. Also, the Armosec portal web interface helps you with investigations and risk analysis.
- A Slack workspace you own, and a dedicated Slack app to get notified of vulnerability scan issues reported by Kubescape.
Stap 1 – Kennismaken met de Kubescape CLI
U kunt handmatig kwetsbaarheden scannen via de kubescape
command line interface. De kubescape CLI is ontworpen om te worden gebruikt in verschillende scripts en automatiseringen. Een praktisch voorbeeld is in een CI/CD-pijplijn geïmplementeerd met verschillende tools zoals Tekton, Jenkins, GitHub Workflows, enzovoort.
Kubescape is ontworpen om een hele Kubernetes-cluster vanaf de grond (workloads, containers, enz.) te scannen. Indien gewenst, kunt u scans ook beperken tot een specifieke namespace. Andere functies zijn onder meer het scannen van hosts (werknodes), lokale of externe repository’s scannen (bijv. GitHub), het detecteren van verkeerde configuraties in Kubernetes YAML-manifesten of Helm charts. Diverse frameworks kunnen worden geselecteerd via de framework
opdracht, zoals ArmoBest, NSA, MITRE, enzovoort.
Wanneer de kubescape CLI wordt aangeroepen, zal het de bekende kwetsbaarheidsdatabase downloaden (of bijwerken) op uw lokale machine. Vervolgens zal het het scanproces starten en problemen rapporteren in een specifiek formaat. Standaard wordt een samenvattingstabel afgedrukt met behulp van de standaarduitvoer of de console. Kubescape kan ook rapporten genereren in andere formaten, zoals JSON, HTML, SARIF, enzovoort.
U kunt ervoor kiezen om de resultaten naar het Armosec Cloud Portal te sturen via de --submit
vlag om de scanresultaten later op te slaan en te visualiseren.
Let op: Het is niet verplicht om scanresultaten naar het Armosec-cloudportaal te sturen. Het grote voordeel van het gebruik van het portaal is zichtbaarheid omdat het u toegang geeft tot een mooi dashboard waar u alle scanrapporten en de algehele risicoscore kunt controleren. Het helpt ook op de lange termijn bij onderzoeken en aanwijzingen voor remediëring.
Enkele voorbeelden om te proberen met Kubescape CLI:
-
Scan een hele Kubernetes-cluster en genereer een samenvattend rapport in de console (standaarduitvoer):
-
Gebruik alleen een specifieke namespace voor het scannen:
-
Sluit specifieke namespaces uit van het scannen:
-
Scan een specifieke namespace en dien resultaten in bij het Armosec-cloudportaal:
-
Voer een cluster scan uit met behulp van een specifiek framework (bijv. NSA):
Kubescape kan ook uw Kubernetes clusterhosts (of werknodes) scannen op besturingssysteem kwetsbaarheden. Om deze functie in te schakelen, moet u de vlag --enable-host-scan
doorgeven aan de kubescape CLI. Wanneer deze vlag is ingeschakeld, implementeert kubescape sensoren
in uw cluster. Sensoren worden gemaakt met behulp van Kubernetes DaemonSets die Pods op elk knooppunt van uw cluster implementeren om bekende kwetsbaarheden te scannen. Nadat het scanproces is voltooid, worden de sensoren uit uw cluster verwijderd (inclusief de bijbehorende Kubernetes-resources).
De Kubescape CLI biedt helppagina’s voor alle beschikbare opties. Met onderstaand commando kunt u de hoofdhelp-pagina afdrukken:
Het uitvoer ziet er vergelijkbaar uit:
Elk kubescape CLI-commando (of subcommando) heeft ook een bijbehorende helppagina die kan worden geopend via kubescape [commando] --help
.
Bezoek alstublieft de officiële kubescape CLI-documentatiepagina voor meer voorbeelden.
Stap 2 – Kennismaking met het Armosec Cloud Portal
Armosec biedt een mooie cloudgebaseerd portaal waar je je Kubescape scanresultaten kunt uploaden en risicoanalyses kunt uitvoeren. Dit is behoorlijk handig omdat je elke scanrapport wilt visualiseren en inspecteren, de juiste actie wilt ondernemen om de situatie te verhelpen, en vervolgens de scan opnieuw wilt uitvoeren om de resultaten te controleren. Door een goede visuele weergave te hebben voor elk rapport en de bijbehorende risicoscore, helpt dit je op de lange termijn bij de onderzoeken en iteraties die nodig zijn om de gerapporteerde beveiligingsproblemen op te lossen.
Je kunt gratis een account aanmaken met beperkingen tot 10 werknodes en 1 maand aan gegevensretentie, wat meestal voldoende is in de meeste gevallen (bijvoorbeeld voor test- of ontwikkelingsbehoeften). Je kunt meer lezen over hoe je het kubescape
cloudaccount kunt aanmaken op de officiële documentatiepagina.
Zodra je het account hebt aangemaakt, wordt er een unieke gebruikers-ID gegenereerd die je kunt gebruiken om scanresultaten voor dat specifieke account te uploaden. Je hebt bijvoorbeeld een specifieke automatisering zoals een CI/CD-pijplijn waar je scanresultaten moet uploaden, vandaar dat de bijbehorende gebruikers-ID nodig is om onderscheid te maken tussen meerdere tenants.
Risicoscoreanalyse en trendanalyse
Voor elk scant rapport dat naar uw Armosec-cloudaccount wordt geüpload, wordt een nieuw geschiedenisrecord toegevoegd met de lijst van gevonden problemen en de bijbehorende risicoscore. Op deze manier kunt u trends en de bijbehorende grafieken krijgen die de evolutie van de risicoscore in de loop van de tijd laten zien. Ook wordt er een lijst met de belangrijkste beveiligingsproblemen gegenereerd in het hoofddashboard.
De onderstaande afbeelding illustreert deze functies:
Begrip van de Risicoscorewaarde van Kubescape
Bij elke scan controleert Kubescape uw bronnen op mogelijke beveiligingsrisico’s met behulp van interne controles. Een Kubescape-controle is een concept dat door de kubescape
-tool wordt gebruikt om de tests aan te duiden die onder de motorkap worden gebruikt om een specifiek aspect van uw cluster (of gescande bronnen) te controleren. Verder is een framework een verzameling van controles of tests die intern worden gebruikt om uw specifieke bron(nen) op problemen te scannen. Dus, afhankelijk van welk framework u gebruikt, wordt een andere reeks controles uitgevoerd (sommige tests delen echter wel bepaalde aspecten). Uiteindelijk wordt de eindscore berekend op basis van het risicofactor dat aan elke test is gekoppeld.
De uiteindelijke score is een positief getal dat varieert van 0 tot 100%. Een lagere waarde geeft de beste score aan, terwijl een hogere waarde de slechtste aangeeft. Dus, als je aan de veilige kant wilt blijven, moet je streven naar de laagst mogelijke waarde. In de praktijk zou een risicoscore gelijk aan of lager dan 30% een goed startpunt moeten zijn.
Ondersteunde Remediatie voor Gemelde Beveiligingsproblemen
Een andere nuttige functie die wordt aangeboden door het Armosec-cloudportaal is ondersteuning bij het oplossen van beveiligingsproblemen. Dit betekent dat je een aanbeveling ontvangt over hoe je elk beveiligingsprobleem kunt oplossen dat wordt gevonden door de kubescape-scanner. Dit is erg belangrijk omdat het het proces vereenvoudigt en de lus sluit voor elke iteratie die je moet uitvoeren om elk gemeld beveiligingsprobleem op te lossen.
De onderstaande afbeelding illustreert dit proces beter:
Voor elk gemeld beveiligingsprobleem wordt een moersleutelicoon weergegeven waarop je kunt klikken om ondersteuning bij het oplossen te krijgen:
Vervolgens wordt een nieuw venster geopend waarin details worden gegeven over elk beïnvloed Kubernetes-object, gemarkeerd in groene kleur:
Je kunt op elke controle zoals C-0018
, C-0030
, C-0086
, enz. klikken en de gemarkeerde problemen onderzoeken. Je krijgt suggesties over hoe elk beveiligingsprobleem op te lossen. Wat overblijft, is de hints volgen en elk beveiligingsprobleem oplossen.
Het starten van cluster scans vanuit de webinterface
De Armo-cloudportal biedt de mogelijkheid om cluster scans te starten vanuit de webinterface, ook als het Helm-grafiek van de Armo-cloudcomponenten is geïmplementeerd in uw DOKS-cluster (besproken in de volgende stap). Zowel configuratie- als afbeeldingsscans kunnen worden gestart via een enkele knop in het portaal. Om deze functie te laten werken, moet u wachten tot de Armo-cloudcomponenten uw cluster in de achtergrond hebben gescand en de resultaten hebben geüpload.
Het starten van een configuratiescan gebeurt door naar de pagina configuratiescan te navigeren en te klikken op de Scan-knop. De onderstaande afbeelding laat zien hoe u deze taak kunt uitvoeren:
U kunt ook de huidige planning voor automatisch scannen instellen of aanpassen indien gewenst door te klikken op de knop Planning in het pop-upvenster dat verschijnt na het klikken op de Scan-knop. Met hetzelfde venster kunt u ook selecteren welke controlekaders moeten worden gebruikt voor scannen. De onderstaande afbeelding laat zien hoe u de taken kunt uitvoeren:
Stap 3 – Kubescape Automatische scans configureren voor DOKS
Kubescape kan geconfigureerd worden om automatisch uw gehele Kubernetes-cluster te scannen op specifieke tijdsintervallen, of telkens wanneer een nieuwe applicatie-image wordt ingezet. U moet Armo-clusteronderdelen implementeren in uw Kubernetes-cluster met behulp van Helm om deze functionaliteit te bereiken. Een Armosec Cloud Portal-account is ook nodig om de resultaten te uploaden en te inspecteren.
Het Armo Helm-chart installeert cron-jobs die zowel een kwetsbaarheidsscan voor het gehele Kubernetes-cluster als voor containerimages triggeren. De interval van elk cron-job is configureerbaar in het Helm-valuesbestand.
Armo-clusteronderdelen voor DOKS provisioning
Stappen om kubescape
in uw Kubernetes-cluster te implementeren met Helm:
- Voeg de
Helm
-repo toe en bekijk de beschikbarecharts
:
De uitvoer ziet er ongeveer als volgt uit:
Opmerking: Het interessante chart is armo/armo-cluster-components
, dat Armo-componenten in uw Kubernetes-cluster zal installeren. Bezoek alstublieft de pagina van het armo-helm-repository voor meer details over dit chart.
- Haal je Armo-accountgebruikers-ID op met behulp van kubescape CLI (nodig in de volgende stap):
Het uitvoer ziet er vergelijkbaar uit:
Opmerking:Als je nog nooit de kubescape
CLI hebt gebruikt om scanresultaten naar het Armosec-cloudportaal te verzenden, zal het bovenstaande commando niet werken. In dat geval moet je inloggen op het portaal en de account-ID daar ophalen zoals hier uitgelegd hier.
- Installeer de Armo Kubescape-clusteronderdelen met behulp van
Helm
– er wordt ook een specialearmo-system
-namespace aangemaakt (zorg ervoor dat je de<>
-placeholders vervangt):
–create-namespace \
Opmerking:Er wordt een specifieke versie van het armo-cluster-onderdelen
Helm-grafiek gebruikt. In dit geval is 1.7.15
gekozen, wat overeenkomt met de 1.7.15
-release van Armo-clusteronderdelen (zie de uitvoer van Stap 1.
). Het is over het algemeen een goede praktijk om te vergrendelen op een specifieke versie. Dit helpt om voorspelbare resultaten te hebben en maakt versiebeheer mogelijk via Git
.
Controleer nu of alle implementaties van Armo-clusteronderdelen actief zijn:
Het uitvoer ziet er vergelijkbaar uit:
Alle implementaties van Armo-clusteronderdelen moeten actief zijn.
- Tenslotte, na een paar minuten, zou je je clusterscanrapporten beschikbaar moeten zien in het cloudportaal, zoals:
- Configuratiescanresultaten:
- Afbeeldingsscanresultaten:
RBAC visualizer resultaten:
Voor meer informatie kunt u de pagina clusterkwetsbaarheidsscannen bezoeken van de officiële documentatie.
Aanpassen van Helm-waarden voor het Armo Cluster-onderdelenoverzicht
U kunt het gedrag van het Armo-clusteronderdelenoverzicht aanpassen door het Helm-waardenbestand te bewerken dat in deze handleiding wordt verstrekt.
- De volgende instellingen kunnen worden gewijzigd:
- Scanschema’s via de waarden
armoScanScheduler
enarmoKubescapeScanScheduler
.
Nieuwe afbeeldingsscans activeren via de waarde triggerNewImageScan
.
De volledige lijst met waarden die aangepast kunnen worden aan uw behoeften is beschikbaar in het officiële Helm-grafiekwaardenbestand.
Om wijzigingen toe te passen, moet u de huidige versie van de Helm-grafiek upgraden via (zorg ervoor dat u de <>
-placeholders vervangt):
Hoe profiteert u van het insluiten van een beveiligingscompatibiliteitsscanner in uw CI/CD-pijplijn en vermijdt u onaangename situaties in een productieomgeving?
Het begint allemaal op het fundamentniveau, waar softwareontwikkeling begint. Over het algemeen wilt u voor elke fase een aparte omgeving gebruiken. Dus, in de vroege stadia van ontwikkeling wanneer de applicatiecode erg vaak verandert, zou u een speciale ontwikkelomgeving moeten gebruiken (meestal de lagere omgeving genoemd). Vervolgens wordt de applicatie steeds verder verfijnd in de QA-omgeving, waar QA-teams handmatige en/of geautomatiseerde tests uitvoeren. Als de applicatie goedkeuring krijgt van het QA-team, wordt deze gepromoot naar de hogere omgevingen, zoals staging, en uiteindelijk naar productie. In dit proces, waarbij de applicatie van de ene omgeving naar de andere wordt gepromoot, wordt een speciale pipeline uitgevoerd, die continu applicatie-artefacten scant en de beveiligingsrisicoscore berekent. Als de score niet voldoet aan een specifieke drempel, mislukt de pipeline onmiddellijk en wordt de promotie van applicatie-artefacten naar productie in de vroege stadia gestopt.
Dus, de beveiligingsscanningtool (bijv. kubescape) fungeert als poortwachter, die ongewenste artefacten in uw productieomgeving tegenhoudt vanaf de vroege stadia van ontwikkeling. Op dezelfde manier gebruiken pipelines van bovenliggende omgevingen kubescape
om applicatie-artefacten al dan niet toe te staan om de uiteindelijke productiestatus te bereiken.
Implementatie van GitHub Actions CI/CD Workflow
In deze stap leer je hoe je een voorbeeld CI/CD-pijplijn kunt maken en testen met geïntegreerde kwetsbaarheidsscanning via GitHub-workflows. Om de basisprincipes van het gebruik van Github Actions met DigitalOcean Kubernetes te leren, raadpleeg deze handleiding.
De pijplijn die wordt geleverd in de volgende sectie bouwt en implementeert de game-2048-voorbeeld-applicatie uit de DigitalOcean kubernetes-voorbeeld-apps-repository.
- Op een hoog overzichtsniveau bestaat de voorbeeld CI/CD-workflow die wordt geleverd in de Kubernetes-voorbeeld-apps-repo uit de volgende fasen:
- Toepassingsbouw- en testfase – bouwt de belangrijkste toepassingsartefacten en voert geautomatiseerde tests uit.
- Kubescape scanfase – scant op bekende kwetsbaarheden in de Kubernetes YAML-manifests die bij de toepassing horen. Het fungeert als een poort, en de uiteindelijke pijplijnstatus (geslaagd/mislukt) is afhankelijk van deze stap. In geval van mislukking wordt ook een Slack-melding verzonden.
- Toepassingsbeeldbouw- en pushfase – bouwt en tagt het toepassingsbeeld met behulp van de nieuwste git-commit-SHA. Vervolgens wordt het beeld naar DOCR gepusht.
Toepassingsimplementatiefase – implementeert de toepassing naar Kubernetes (DOKS).
De onderstaande diagram illustreert elke taak uit de pijplijn en de bijbehorende stappen met acties (alleen relevante configuratie wordt getoond):
- Opmerking:
- In het geval van projecten gebaseerd op
kustomize
, is het het beste om het uiteindelijke manifest weer te geven via hetkubectl kustomize </pad/naar/kustomization_/bestand>
commando om alles vast te leggen en te scannen (inclusief externe bronnen). Aan de andere kant kan het moeilijk zijn om te identificeren welke Kubernetes-bron moet worden gepatcht. Dit komt doordat het resulterende manifestbestand bestaat uit alle bronnen die moeten worden toegepast. Dit is hoe Kustomize werkt – het verzamelt alle configuratiefragmenten uit elke overlay en past ze toe over een basis om het uiteindelijke geheel te bouwen.
Je kunt ook Kubescape
vertellen om de hele map te scannen waar je jouw kustomize
-configuraties bewaart (de huidige handleiding maakt gebruik van deze aanpak). Op deze manier is het eenvoudiger om te identificeren welke bron moet worden aangepast in je repository. Externe bronnen die door kustomize worden gebruikt, moeten stroomopwaarts worden aangepast. Bovendien worden Kubernetes-secrets en ConfigMaps die via kustomize
worden gegenereerd, niet vastgelegd.
Hoe laat je de pijplijn falen als een bepaald beveiligingsniveau niet wordt gehaald?
De Kubescape CLI biedt een vlag genaamd --fail-threshold
voor dit doel. Deze vlag correleert met de algehele risicoscore die wordt berekend na elke scan. Je kunt de pijplijn laten falen of slagen op basis van de drempelwaarde en de toepassingsimplementatie stoppen als de voorwaarden niet worden voldaan.
De onderstaande afbeelding illustreert de flow voor het voorbeeld CI/CD-pijplijn die in deze handleiding wordt gebruikt:
- Volg de onderstaande stappen om de
kubescape
CI/CD GitHub-workflow te maken en te testen zoals geleverd in de kubernetes-sample-apps GitHub-repository: - Vork de kubernetes-sample-apps GitHub-repository.
SLACK_WEBHOOK_URL
– bevat uw Slack inkomende webhook URL gebruikt voor kubescape scanmeldingen.- Ga naar het Actions tabblad van uw gekloonde repo en selecteer de Game 2048 Kubescape CI/CD Example workflow:
A new entry should appear in below list after clicking the Run Workflow green button. Select the running workflow to observe pipeline progress:
Klik op de Run Workflow knop en laat de standaardwaarden staan:
De pipeline zal mislukken en stoppen wanneer de kubescape-nsa-security-check job wordt uitgevoerd. Dit is verwacht omdat de standaard drempelwaarde van 30
voor de algehele risicoscore lager is dan de gewenste waarde. U zou ook een Slack-melding moeten ontvangen met details over de uitgevoerde workflow:
In de volgende stap leer je hoe je het kubescape
-scanrapport kunt onderzoeken om de problemen op te lossen, het risicoscore te verlagen en de pijplijn te laten slagen.
Stap 5 – Onderzoeken van Kubescape Scanresultaten en Oplossen van Gerapporteerde Problemen
Telkens wanneer de drempelwaarde voor de risicoscore niet wordt gehaald, zal de game-2048 GitHub-workflow mislukken en wordt er een Slack-melding verzonden met aanvullende details.
De game-2048 workflow voert één beveiligingscontrole uit (lokale afbeeldingsscans worden niet ondersteund) – controle op fouten in Kubernetes-manifests. De taak kubescape-nsa-security-check wordt hiervoor gebruikt. Het equivalent van het gebruikte kubescape
-commando is – kubescape scan framework nsa /pad/naar/project/kubernetes/manifesten
.
Hieronder staat een fragment van de belangrijkste logica van de taak kubescape-nsa-security-check:
–submit –account=${{ secrets.ARMOSEC_PORTAL_ACCOUNT_ID }}
Bovenstaande configuratie vertelt de kubescape CLI om een nieuwe scan te starten voor alle Kubernetes-manifesten aanwezig in de map kustomize/
met behulp van het NSA-framework. Het specificeert ook welk drempelniveau te gebruiken via de -t-vlag, en om de uiteindelijke resultaten naar het Armo cloudportaal te verzenden (de –submit-vlag in combinatie met –acount).
Hierdoor wordt de risicoscore verlaagd en wordt de workflow doorgegeven door de gerapporteerde problemen van de kubescape-nsa-security-check-taak te onderzoeken en op te lossen. Vervolgens leert u hoe u beveiligingsproblemen kunt aanpakken die door deze taak worden gerapporteerd.
A new browser window opens showing in detail each control and description. You will also be presented with required actions to remediate the issue (highlighted in green color):
Om het statusrapport te controleren, kunt u klikken op de kubescape scanresultaten link van de ontvangen Slack-melding. Klik vervolgens op de REPOSITORIES SCAN-scanknop in het linker menu in het Armo cloudportaal. Klik nu op de invoer kubernetes-sample-apps uit de lijst:
Na het verzamelen van alle informatie uit het scanrapport, kunt u doorgaan en het bestand deployment.yaml bewerken vanuit uw repo (te vinden in de game-2048-example/kustomize/resources
submap). De fixes zijn al geïmplementeerd, u hoeft alleen de laatste regels in het bestand uit te commenten. Het uiteindelijke deployment.yaml
bestand moet er als volgt uitzien:
# Vervang de `<>` placeholders met uw docker registry info
- Opmerking:
De suggesties van C-0055 werden in dit voorbeeld weggelaten voor eenvoud. Je kunt meer lezen over de beveiligde modus voor computing in Kubernetes hier. - Wat is er veranderd? De volgende beveiligingsupdates zijn toegepast:
readOnlyRootFilesystem
– voert de containerafbeelding uit in alleen-lezen modus (kan bestanden niet wijzigen viakubectl exec
in de container).runAsNonRoot
– voert uit als de niet-rootgebruiker gedefinieerd door de USER richtlijn van het game-2048 project Dockerfile.
allowPrivilegeEscalation
– door allowPrivilegeEscalation in te stellen op false wordt ervoor gezorgd dat geen enkel kindproces van een container meer privileges kan verkrijgen dan zijn ouder.
capabilities.drop
– Om containers veiliger te maken, moet je containers voorzien van de minst mogelijke privileges die nodig zijn om uit te voeren. In de praktijk laat je standaard alles vallen en voeg je vereiste mogelijkheden stap voor stap toe. Je kunt meer lezen over containerbeveiliging in dit artikel geschreven door Armosec.
A few final checks can be performed as well on the Kubernetes side to verify if the reported issues were fixed:
- Tenslotte, commit de wijzigingen voor het deployment.yaml-bestand en push naar de hoofdbranch. Na het handmatig triggeren van de workflow zou deze deze keer succesvol moeten worden voltooid:
- Controleer of de implementatie van game-2048 een alleen-lezen (onveranderlijk) bestandssysteem heeft door het toepassingsbestand index.html te schrijven:
Controleer of de container wordt uitgevoerd als een niet-rootgebruiker (moet een geheel getal afdrukken dat niet nul is – bijv. 1000
):
Controleer of de container wordt uitgevoerd als een niet-rootgebruiker (moet een geheel getal afdrukken dat niet nul is – bijv. 1000
):
Als alle controles slagen, heeft u de vereiste beveiligingsaanbevelingen met succes toegepast.
Er zijn situaties waarin u niet wilt dat de uiteindelijke risicoscore wordt beïnvloed door enkele gerapporteerde problemen die uw team als veilig beschouwt om te negeren. Kubescape biedt een ingebouwde functie om uitzonderingen te beheren en deze situatie te overwinnen.
A more efficient approach is where you integrate vulnerability scan tools directly in your favorite IDE (or Integrated Development Environment). This way, you can detect and fix security issues ahead of time in the software development cycle.
U kunt meer lezen over deze functie hier.
- Kubescape voor IDE’s
- Kubescape biedt ondersteuning voor IDE-integratie via de volgende extensies:
De bovenstaande plugins helpen u bij het detecteren en oplossen van problemen in de vroege ontwikkelingsfasen, waardoor frustratie, kosten en beveiligingsfouten in productiesystemen worden geëlimineerd. Het helpt ook om het aantal iteraties te verminderen en menselijke inspanningen op de lange termijn te verminderen. Als voorbeeld, voor elk gerapporteerd beveiligingsprobleem door uw CI/CD-automatisering moet u terugkeren en het probleem in uw code oplossen, wijzigingen committen, wachten op de CI/CD-automatisering opnieuw, en herhalen in geval van mislukking.
U kunt meer lezen over deze functies door naar de Kubescape-documentatie pagina te navigeren, en vervolgens te zoeken in de INTEGRATIES sectie.
Stap 6 – Het automatisch triggeren van de Kubescape CI/CD-workflow
U kunt de workflow instellen om automatisch te worden getriggerd bij elke commit of PR tegen de hoofdbranch door de volgende regels bovenaan het game-2048-kubescape.yaml bestand uit te commentariëren:
Na het bewerken van het bestand, commit je de wijzigingen naar je hoofdtak en dan ben je klaar om te gaan.
Stap 7 – Het inschakelen van Slack-meldingen voor continue monitoring
De automatisering van de kwetsbaarheidsscan die je tot nu toe hebt geïmplementeerd is een goed startpunt, maar niet perfect. Waarom?
Één probleem met de huidige aanpak is dat je nooit weet wanneer er nieuwe problemen worden gemeld voor de assets die je al hebt uitgerold in je omgevingen. Met andere woorden, je hebt de beveiligingsrisico’s beoordeeld en de maatregelen genomen om de problemen op te lossen op één specifiek moment in de tijd – toen je CI/CD-automatisering werd uitgevoerd.
Maar wat als er intussen nieuwe problemen worden gemeld en je applicatie opnieuw kwetsbaar is?
De monitoringfunctie van Kubescape helpt je bij het aanpakken van nieuwe kwetsbaarheden die voortdurend worden gemeld. Wanneer dit wordt gecombineerd met de Slack-integratie, kun je onmiddellijke acties ondernemen om nieuw gemelde problemen op te lossen die van invloed kunnen zijn op je applicatie in een productieomgeving.
- Het Armo-cloudportaal ondersteunt Slack-integratie voor het verzenden van realtime waarschuwingen na elke clusterscan. Deze functie vereist dat de Helm-grafiek van de Armo-cloudcomponenten wordt geïnstalleerd in je DOKS-cluster, zoals uitgelegd in Stap 3 – Kubescape Automatische Scans Configureren voor DOKS.
- Door Slack-meldingen in te schakelen, ontvang je belangrijke meldingen over kwetsbaarheden die zijn gedetecteerd in je DOKS-cluster, zoals:
- Kwetsbaarheden op het werkniveau (OS-niveau).
Kwetsbaarheden in containerimages.
- Kubernetes-misconfiguraties voor verschillende resources zoals deployments, pods, enzovoort.
- Eerst moet je een Slack-app maken. Vervolgens moet je de volgende machtigingen aan je Slack Bot geven op de pagina OAuth & Permissies:
channels:join
– Word lid van openbare kanalen in een werkruimte.channels:read
– Bekijk basisinformatie over openbare kanalen in een werkruimte.groups:read
– Bekijk basisinformatie over privékanalen waaraan je Slack-app is toegevoegd.chat:write
– Verstuur berichten als @.
im:read
– Bekijk basisinformatie over directe berichten waaraan je Slack-app is toegevoegd.
mpim:read
– Bekijk basisinformatie over directe berichten in groepen waaraan je Slack-app is toegevoegd.
Ga vervolgens naar de instellingen-pagina van je Armo cloudportaalaccount (pictogram rechtsboven met tandwieltje). Kies daar de pagina Integraties, en dan Slack.
Nu, plak je Slack Bot OAuth-token (te vinden op de OAuth & Machtigingen-pagina van je Slack App-pagina) in het invoerveld Token invoegen. Selecteer ten slotte hoe je op de hoogte wilt worden gesteld en het Slack-kanaal waar meldingen moeten worden verzonden. Klik op de Instellen meldingen-knop en je bent klaar. De onderstaande afbeelding illustreert de details:
Na het configureren van de Slack-integratie, zou je periodieke meldingen moeten ontvangen na elke clusterscan op het aangewezen kanaal:
Als je meldingen ontvangt die vergelijkbaar zijn met bovenstaande, dan heb je de Armosec Kubescape Slack-integratie succesvol geconfigureerd.
In deze handleiding heb je geleerd hoe je een van de meest populaire Kubernetes kwetsbaarheidsscantechnieken – Kubescape – kunt gebruiken. Je hebt ook geleerd hoe je clusters en repository’s kunt scannen (YAML-manifesten) met behulp van de Kubescape CLI. Vervolgens heb je geleerd hoe je de kwetsbaarheidsscantechniek kunt integreren in een traditionele CI/CD-pijplijn die is geïmplementeerd met GitHub-workflows.
Tenslotte heb je geleerd hoe je kwetsbaarheidsscanrapporten kunt onderzoeken, fixes kunt toepassen om de situatie te verhelpen en het risicoscore tot een minimum kunt terugbrengen via een praktisch voorbeeld – de game-2048-toepassing uit de kubernetes-sample-apps-repository.
- Meer informatie
- U kunt meer leren door de volgende aanvullende bronnen te lezen:
- Het gebruik van de Snyk Vulnerability Scanning Tool
- Kubernetes-beveiligingsbest practices door Armo
- Vang beveiligingsproblemen vooraf op met Armosec
- Beveilig uw Kubernetes-implementaties met Armosec
- Meer informatie over Armosec Host Scanners
Source:
https://www.digitalocean.com/community/developer-center/using-the-kubescape-vulnerability-scan-tool