Prisma Cloud Compute Registry のスキャンで「429 Too Many Request (HAP429)」と表示される
12592
Created On 05/19/22 02:37 AM - Last Modified 03/02/23 01:56 AM
Symptom
- レジストリ スキャンを開始すると、以下のエラーが表示されます。
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 コンピューティング
- セルフホスト
- SaaS
- ドッカーHubレジストリ
Cause
- 429 は、一定時間内に送信されるリクエストが多すぎることを示します (レート制限)。
- プル リクエストを発行し、アカウント タイプの制限を超えている場合、DockerHubを返します
429マニフェストが要求されたときの応答コード。 - ドッカーHubイメージをプルするユーザーのアカウント タイプに基づいて、Docker イメージのダウンロード (「プル」) の数を制限します。
- プルレートの制限は個人に基づいていますIPアドレス。
- 匿名ユーザーの場合、レート制限は 6 時間あたり 100 プルに設定されます。IP住所。
- ために認証済みユーザーの場合、6 時間あたり 200 プルです。 有料の Docker サブスクリプションを持つユーザーには制限がありません。
Resolution
Additional Information
レジストリ イメージをスキャンするための Defender プロセス
- イメージは、スキャンを実行するためにディフェンダーによってプルされます。
- スキャンが完了すると、画像は削除されます。
- Defender ログは同じことを示します:
画像の分析
画像のプル
画像のスキャン
画像の削除
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
画像を引っ張ってRate Limitを確認する方法
- プル リクエストを発行し、アカウント タイプの制限を超えている場合、DockerHubを返します
429マニフェストが要求されたときに、次の本文を含む応答コード:
You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limits
どのようにすることができますI現在のレートを確認しますか?
- 参照するDocker ダウンロードのレート制限.
- 有効なマニフェストAPIへの要求Hub通常、応答には次のレート制限ヘッダーが含まれます。
ratelimit-limit ratelimit-remaining
- これらのヘッダーは両方で返されますGETとHEADリクエスト。 使用することに注意してくださいGET実際のプルをエミュレートし、制限に向かってカウントします。使用してHEADないので、この例ではそれを使用します。 制限を確認するには、次のものが必要です。
カール、grep、 とjqインストールされています。 - トークンを匿名で取得するには (匿名でプルする場合):
$ TOKEN=$(curl "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq -r .token)
ユーザー アカウントでトークンを取得するには (プルを認証している場合)、次のコマンドにユーザー名とパスワードを挿入することを忘れないでください。
$ TOKEN=$(curl --user 'username:password' "https://auth.docker.io/token?service=registry.docker.io&scope=repository:ratelimitpreview/test:pull" | jq -r .token)
次に、制限を示すヘッダーを取得するには、次を実行します。
$ curl --head -H "Authorization: Bearer $TOKEN" https://registry-1.docker.io/v2/ratelimitpreview/test/manifests/latest
これらを含むヘッダーを返す必要があります。
ratelimit-limit: 100;w=21600 ratelimit-remaining: 76;w=21600
- これは、私の制限が 21600 秒 (6 時間) あたり 100 プルであることを意味します。I残り76回。
ノート:これらのヘッダーはベスト エフォートであり、多少の違いがあることに注意してください。