Siste Byggestatus Lenke til overskrift

Update GuardDuty Digests

Den skjulte utfordringen med AWS GuardDuty-versjonering Lenke til overskrift

Har du noen gang prøvd å spore versjonene av AWS GuardDuty runtime monitoring agents? Hvis du kjører containeriserte arbeidsbelastninger i AWS og bryr deg om sikkerhet, har du sannsynligvis støtt på denne frustrasjonen. Til tross for AWS sin generelt utmerkede dokumentasjon og API-dekning, finnes det et merkelig gap når det gjelder GuardDuty runtime monitoring agent-versjoner, spesielt for Fargate.

Jeg oppdaget nylig at jeg trengte å spore disse versjonene for et compliance-prosjekt. Kravet virket enkelt: dokumentere alle sikkerhetsagentversjoner som kjører i vårt miljø. De fleste komponentene var enkle å inventarisere, men GuardDuty sine runtime monitoring agents viste seg å være unnvikende. AWS eksponerer ikke disse versjonene gjennom noen API, noe som etterlater oss med et blindpunkt i vår sikkerhetsdokumentasjon.

Problemområdet Lenke til overskrift

GuardDuty Runtime Monitoring er en kraftig funksjon som hjelper til med å oppdage trusler i dine containeriserte arbeidsbelastninger. Når den er aktivert, distribuerer AWS sikkerhetsagenter inn i dine ECS Fargate-oppgaver eller EKS-klynger. Disse agentene overvåker mistenkelig aktivitet og rapporterer tilbake til GuardDuty.

Utfordringen? AWS oppdaterer jevnlig disse agentene med nye funksjoner og sikkerhetsfikser, men tilbyr ikke en API for å:

  1. Sjekke hvilken versjon som er distribuert nå
  2. Se utgivelseshistorikk eller endringslogger
  3. Verifisere SHA256-digester for containerbilder

Dette skaper flere problemer:

  • Compliance-team kan ikke enkelt dokumentere hvilke sikkerhetsagenter som er i bruk
  • Sikkerhetsteam kan ikke verifisere om de nyeste agentversjonene er distribuert
  • DevOps-ingeniører kan ikke feilsøke agentrelaterte problemer effektivt

Å bygge en løsning Lenke til overskrift

I stedet for å akseptere denne begrensningen, bestemte jeg meg for å lage en enkel, men effektiv løsning: en JSON-fil som sporer utgivelseshistorikken til GuardDuty runtime monitoring agents, komplett med SHA256-digester.

Tilnærmingen er enkel:

  1. Samle SHA256-digester for GuardDuty runtime monitoring agent-bilder
  2. Organisere dem etter versjon og arkitektur (x86_64 og arm64)
  3. Gjøre dataene tilgjengelige i et strukturert JSON-format
  4. Automatisere oppdateringer for å holde informasjonen oppdatert

Resultatet er et offentlig JSON-endepunkt som alle kan bruke for å sjekke GuardDuty runtime monitoring agent-versjoner: https://guarddutysha.cageyv.dev/guardduty_runtime_image_sha256.json

Inne i JSON-strukturen Lenke til overskrift

JSON-filen organiserer GuardDuty agent-versjoner i to hovedkategorier:

  1. Fargate ECS-agenter - Brukes for Amazon ECS-oppgaver
  2. EKS-agenter - Brukes for Amazon EKS-klynger

Hver kategori inneholder versjonsoppføringer med tilhørende SHA256-digester, slik som dette:

{
  "fargate_ecs": {
    "v1.7.0-Fg_x86_64": "sha256:bf9197abdf853607e5fa392b4f97ccdd6ca56dd179be3ce8849e552d96582ac8",
    "v1.7.0-Fg_arm64": "sha256:bf9197abdf853607e5fa392b4f97ccdd6ca56dd179be3ce8849e552d96582ac8",
    // Additional versions...
  },
  "eks": {
    "v1.10.0-Eks_x86_64": "sha256:6dcbe5b055e1ef0af903071ede0b08f755ad5b7e9774a67df5399efdaa1f3d7d",
    "v1.10.0-Eks_arm64": "sha256:6dcbe5b055e1ef0af903071ede0b08f755ad5b7e9774a67df5399efdaa1f3d7d",
    // Additional versions...
  }
}

Det interessante er at for hver versjon er SHA256-digestene identiske for både x86_64 og arm64-arkitekturer. Dette antyder at AWS bruker multi-arkitektur-bilder med samme digest, en vanlig praksis for containerbilder som støtter flere plattformer.

Hvordan det fungerer bak kulissene Lenke til overskrift

Repositoryet bruker en enkel, men effektiv tilnærming for å vedlikeholde disse dataene:

  1. Et Python-script sjekker periodisk etter nye GuardDuty agent-versjoner
  2. Når nye versjoner oppdages, oppdateres JSON-filen
  3. GitHub Actions automatiserer denne prosessen for å holde dataene oppdaterte
  4. Cloudflare Workers server JSON-filen for offentlig tilgang

Hele løsningen er open source og tilgjengelig på GitHub: guardduty-runtime-monitoring-agent-release-json

Praktiske bruksområder Lenke til overskrift

Hvordan kan du bruke denne informasjonen? Her er noen scenarier:

Compliance-dokumentasjon Lenke til overskrift

For organisasjoner som trenger å dokumentere alle sikkerhetsverktøy i sitt miljø:

# Hent de nyeste GuardDuty agent-versjonene
curl -s https://guarddutysha.cageyv.dev/guardduty_runtime_image_sha256.json | jq '.fargate_ecs | keys'

Verifiseringsskript Lenke til overskrift

For å verifisere at dine containere bruker forventet GuardDuty agent-versjon:

import requests
import json

# Hent GuardDuty agent-versjonene
response = requests.get('https://guarddutysha.cageyv.dev/guardduty_runtime_image_sha256.json')
guardduty_versions = json.loads(response.text)

# Sjekk om en spesifikk digest er en kjent GuardDuty agent
def is_guardduty_agent(digest):
    for platform in guardduty_versions:
        for version, sha in guardduty_versions[platform].items():
            if sha == digest:
                return True, platform, version
    return False, None, None

# Eksempel på bruk
is_agent, platform, version = is_guardduty_agent("sha256:bf9197abdf853607e5fa392b4f97ccdd6ca56dd179be3ce8849e552d96582ac8")
if is_agent:
    print(f"Dette er en GuardDuty agent for {platform}, versjon {version}")

Sikkerhetsovervåking Lenke til overskrift

For sikkerhetsteam som ønsker å sikre at de nyeste agentversjonene er distribuert:

# Hent den nyeste Fargate ECS agent-versjonen
LATEST_VERSION=$(curl -s https://guarddutysha.cageyv.dev/guardduty_runtime_image_sha256.json | jq -r '.fargate_ecs | keys | .[0]')
echo "Nyeste GuardDuty Fargate agent-versjon: $LATEST_VERSION"

Nåværende begrensninger og fremtidig arbeid Lenke til overskrift

Selv om denne løsningen dekker det umiddelbare behovet, finnes det noen begrensninger:

  1. EKS agent-versjonsnavn er basert på kvalifiserte gjetninger, siden AWS ikke publiserer denne informasjonen
  2. Det finnes ingen offisiell endringslogg fra AWS som knytter versjoner til spesifikke funksjoner eller fikser
  3. Dataene samles manuelt i stedet for å bli levert gjennom en offisiell AWS-kanal

Jeg håper AWS etter hvert vil tilby en offisiell API for denne informasjonen. Inntil da fungerer denne JSON-filen som en nyttig midlertidig løsning for oss som trenger å spore GuardDuty runtime monitoring agent-versjoner.

Bidra Lenke til overskrift

Hvis du synes dette er nyttig og ønsker å bidra, finnes det flere måter å hjelpe på:

  1. Rapporter nye agent-versjoner når du oppdager dem
  2. Foreslå forbedringer til JSON-strukturen eller API-en
  3. Hjelp til med å dokumentere forskjellene mellom agent-versjoner
  4. Del hvordan du bruker disse dataene i dine egne prosjekter

GitHub-repositoryet er åpent for issues og pull requests: guardduty-runtime-monitoring-agent-release-json

Avsluttende tanker Lenke til overskrift

Noen ganger er de enkleste løsningene de mest effektive. Selv om AWS tilbyr utmerket verktøy for de fleste sikkerhetsbehov, finnes det fortsatt hull som fellesskapet kan fylle. Dette lille prosjektet adresserer ett slikt hull, og gjør det enklere for oss alle å spore og verifisere sikkerhetsagentene som beskytter våre containeriserte arbeidsbelastninger.

Hvilken annen AWS-sikkerhetsinformasjon ønsker du å få gjort mer tilgjengelig? Gi meg beskjed i kommentarene eller ta kontakt direkte.