Jenkins の「ERROR: anonymous is missing the Overall/Read permission」
Jenkins はそのリクエストを「誰でもない人」(anonymous)からの物として受け取り、セキュリティの設定では anonymous は何も読めません。直すのは権限ではなく、たいていは「ユーザー ID と API トークンをリクエストと一緒に Jenkins へ届けること」です。
Jenkins の答え
2026年10月24日に、手元の Jenkins 2.580.1(ログイン必須・匿名では何も読めない設定)で確かめました。資格情報なしの Jenkins CLI は、list-jobs でも build でも同じでした(終了コード 6):
java -jar jenkins-cli.jar -s https://jenkins.example.com/ -http list-jobs ERROR: anonymous is missing the Overall/Read permission
Jenkins が日本語で動いていると、同じ誤りはこう出ました(文の言語は Jenkins のサーバー側の言語で決まりました):
ERROR: anonymous には、全体/Read パーミッションがありません。
資格情報なしの REST API:
curl -i 'https://jenkins.example.com/api/json' HTTP 403 X-You-Are-Authenticated-As: anonymous X-Required-Permission: hudson.model.Hudson.Read
本文は「Authentication required」という HTML のページで、ブラウザーを /login へ回し、注釈に Permission you need to have (but didn't): hudson.model.Hudson.Read とあります。JSON を待つスクリプトには、このページが届きます。
資格情報が届かなかった訳
- 送っていない。
-authを付けない CLI、-uを付けない curl、ユーザー ID かトークンの欄が空の道具。 - 道具が聞かれるのを待っている。Jenkins は anonymous に 403 で答え、その 403 には
WWW-Authenticateのヘッダーがありません。なので、求められてからパスワードを送る道具は、いつまでも送りません。同じユーザー ID とトークンで、curl --anyauth -u …は 403、最初から Basic 認証を送るcurl -u …は 200 でした。 - トークンの間違いは別の答えになります:HTTP 401 と
WWW-Authenticate: Basic realm="Jenkins"。実在のユーザーで違うトークンでも、存在しないユーザー ID でも同じでした。つまり「anonymous」なら資格情報は Jenkins に届いておらず、401 なら届いたうえで間違っています(「401 Unauthorized」)。 - 道具が最初から送っているのに anonymous と言われるなら、間にある何かが
Authorizationのヘッダーを外しています。Jenkins のマシンの上で同じ curl を打って比べます。
Jenkins が自分を誰だと思っているかは /whoAmI/api/json で分かります。anonymous にも答えが返り({"name":"anonymous","anonymous":true,…})、ユーザー ID と API トークンを付ければそのユーザーの名前が返りました。
ユーザー ID と API トークンを渡す
トークンは Jenkins で作ります。自分のユーザーのページ(右上の自分の名前)→ Security → API Token → Add new Token。表示されるのは1回だけです。次のどれも、同じ Jenkins で通りました:
# CLI java -jar jenkins-cli.jar -s https://jenkins.example.com/ -http -auth あなたのユーザーID:APIトークン list-jobs java -jar jenkins-cli.jar -s https://jenkins.example.com/ -http -auth @credentials.txt list-jobs # ファイルの中身は ユーザーID:APIトークン JENKINS_USER_ID=あなたのユーザーID JENKINS_API_TOKEN=APIトークン java -jar jenkins-cli.jar -s https://jenkins.example.com/ -http list-jobs # REST API curl -u 'あなたのユーザーID:APIトークン' 'https://jenkins.example.com/api/json'
API トークンでサインインしたリクエストは、CSRF のクラムも要りません:「403 No valid crumb was included in the request」。
名前が anonymous ではないとき
「<ユーザー> is missing the Overall/Read permission」なら、Jenkins はそのユーザーの資格情報を受け付けたうえで、権限の設定がそのユーザーに全体/Read を与えていません。こちらは本当に権限の問題で、管理者が Manage Jenkins → Security で与えます。
IntelliJ IDEA など JetBrains IDE で Jenkins のビルドを見るなら
Pipeline Inbox for Jenkins は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。Jenkins のサーバーごとに、ユーザー ID と API トークンをすべてのリクエストに最初から付けて送ります。サインインが要るサーバーにトークンが入っていなければそう表示して設定へ案内し、Jenkins が断ったユーザー ID やトークンはそうと分かる文で出します。ビルドの一覧・Pipeline の段・失敗したテスト・コンソールのログは無料、パラメーター付きのビルド・再ビルド・中止・入力ステップは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。
Jenkins® は LF Charities Inc. の登録商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Jenkins プロジェクト・JetBrains のいずれとも提携しておらず、承認も受けていません。