Prisma Cloud Compute Registry-Scan zeigt '429 Too Many Request (HAP429)'
12630
Created On 05/19/22 02:37 AM - Last Modified 03/02/23 01:56 AM
Symptom
- Das Initiieren des Registrierungsscans zeigt den folgenden Fehler:
failed to retrieve repository TESTORG* tags, error failed to query https://registry-1.docker.io/v2/TESTORG*/tags/list, error failed to query https://registry-1.docker.io/v2/TESTORG*/tags/list, Too Many Requests Too Many Requests (HAP429)
Environment
- Prisma Cloud Berechnen
- Selbst gehostet
- Saas
- Docker-Registrierung Hub
Cause
- 429 zeigt an, dass zu viele Anfragen in einer bestimmten Zeit gesendet werden (Ratenbegrenzung).
- Wenn Sie eine Pullanforderung ausgeben und das Limit für Ihren Kontotyp überschreiten, gibt Docker Hub einen Antwortcode
429zurück, wenn das Manifest angefordert wird. - Docker Hub begrenzt die Anzahl der Docker-Image-Downloads ("Pulls") basierend auf dem Kontotyp des Benutzers, der das Image abruft.
- Pull-Rate-Limits basieren auf einzelnen IP Adressen.
- Für anonyme Benutzer ist das Ratenlimit auf 100 Pulls pro 6 Stunden pro IP Adresse festgelegt.
- Für authentifizierte Benutzer sind es 200 Pulls pro 6-Stunden-Zeitraum. Es gibt keine Beschränkungen für Benutzer mit einem kostenpflichtigen Docker-Abonnement.
Resolution
- Setzen Sie Cap auf "1", um die neuesten Registrierungsimages zu scannen. Der Standardwert 5 scannt die letzten 5 Bilder. Wenn Sie dieses Feld auf 0 setzen, werden alle Bilder gescannt.
- Erhöhen Sie die Scanhäufigkeit über > System verwalten > Scan. Scannt die Registrierung standardmäßig Prisma Cloud alle 24 Stunden. Erhöhen Sie es je nach Szenario auf 72 Stunden oder mehr.
- Erhöhen Sie das Ratenlimit am Docker.
Additional Information
Der Defender-Prozess zum Scannen des Registrierungsabbilds
- Das Bild wird vom Verteidiger gezogen, um den Scan durchzuführen.
- Sobald der Scanvorgang abgeschlossen ist, wird das Bild entfernt.
- Die Defender-Protokolle zeigen dasselbe:
Analysieren des Bildes
Ziehen des Bilds
Scannen des Bildes
Entfernen des Bilds
DEBU 2022-03-18T21:49:35.559 scanner.go:145 Analyzing image testimage/test latest:sha256:3a11abed3c123456789023d23b7d0e828c939a4284512345678902138aa3f76a DEBU 2022-03-18T21:49:35.559 scanner.go:161 Pulling registry image id: sha256:3a11abed3c123456789023d23b7d0e828c939a4284512345678902138aa3f76a tag: test.io/testimage/test:latest DEBU 2022-03-18T21:49:54.610 scanner.go:167 Pull image tag:test.io/testimage/test:latest id: sha256:3a11abed3c123456789023d23b7d0e828c939a4284512345678902138aa3f76a completed after 19.051067993 seconds DEBU 2022-03-18T21:49:54.618 scanner.go:100 Image scanning started sha256:3a11abed3c123456789023d23b7d0e828c939a4284512345678902138aa3f76a DEBU 2022-03-18T21:49:54.619 containerized_runner.go:69 Containerized scan started sha256:3a11abed3c123456789023d23b7d0e828c939a4284512345678902138aa3f76a DEBU 2022-03-18T21:50:54.066 containerized_runner.go:270 Containerized scan completed sha256:3a11abed3c123456789023d23b7d0e828c939a4284512345678902138aa3f76a 59.45 [sec] DEBU 2022-03-18T21:50:54.103 augment_static.go:218 sha256:3a11abed3c123456789023d23b7d0e828c939a4284512345678902138aa3f76a [augment] 59.49 [sec] DEBU 2022-03-18T21:50:54.105 scanner.go:218 Image test.io/testimage/test:latest sha256:3a11abed3c123456789023d23b7d0e828c939a4284512345678902138aa3f76a [scanning] 59.49 [sec] DEBU 2022-03-18T21:50:54.105 scanner.go:221 Scan for image tag:test.io/testimage/test:latest id: sha256:3a11abed3c123456789023d23b7d0e828c939a4284512345678902138aa3f76a completed after 78.545885826 seconds DEBU 2022-03-18T21:50:54.105 scanner.go:409 Removing image sha256:3a11abed3c123456789023d23b7d0e828c939a4284512345678902138aa3f76a
So überprüfen Sie das Ratenlimit durch Ziehen des Bildes
- Wenn Sie eine Pull-Anforderung ausgeben und das Limit für Ihren Kontotyp überschreiten, gibt Docker Hub einen
429-Antwortcodemit dem folgenden Text zurück, wenn das Manifest angefordert wird:
You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limits
Wie kann ich I meinen aktuellen Tarif überprüfen?
- Weitere Informationen finden Sie unter Limit für Docker-Download-Rate.
- Gültige Manifestanforderungen API an Hub enthalten in der Regel die folgenden Ratenlimitheader in der Antwort:
ratelimit-limit ratelimit-remaining
- Diese Header werden sowohl für als auch GET HEAD für Anforderungen zurückgegeben. Beachten Sie, dass die Verwendung GET einen echten Pull emuliert und auf das Limit angerechnet wird; using HEAD wird nicht, also werden wir es in diesem Beispiel verwenden. Um Ihre Limits zu überprüfen, müssen
curl,grepundjqinstalliert sein. - So erhalten Sie ein Token anonym (wenn Sie anonym ziehen):
$ TOKEN=$(curl "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq -r .token)
Um ein Token mit einem Benutzerkonto zu erhalten (wenn Sie Ihre Pulls authentifizieren) - vergessen Sie nicht, Ihren Benutzernamen und Ihr Passwort in den folgenden Befehl einzufügen:
$ TOKEN=$(curl --user 'username:password' "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq -r .token)
Führen Sie dann Folgendes aus, um die Header mit Ihren Limits zu erhalten:
$ curl --head -H "Authorization: Bearer $TOKEN" https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest
Was Header zurückgeben sollte, einschließlich dieser:
ratelimit-limit: 100;w=21600 ratelimit-remaining: 76;w=21600
- Das bedeutet, dass mein Limit 100 Pulls pro 21600 Sekunden (6 Stunden) beträgt und I 76 Pulls verbleiben.
Anmerkung: Denken Sie daran, dass diese Header Best-Effort sind und es kleine Abweichungen geben kann.