技術情報

重要:GitLab API認証でエラー出ていませんか?無期限トークン廃止の影響可能性。

GitLab無期限アクセス トークンのサポートの廃止は2022 年 9 月に初めて発表され、GitLab 16.0 (2023 年 5 月) で実装され、2024 年 5 月 14 日に GitLab.com の顧客に対して発効されました。最近、API 呼び出しで大量の 401 または認証の問題が発生するようになりました。これは、アクセス トークンの期限切れが原因である可能性があります。同様の症状として、期限切れのトークンを使用して行われた API 呼び出しにレート制限が課される場合があります。この状況が発生した場合は、有効期限が切れている可能性のあるトークンを確認し、以下の記事の手順に従って有効な有効期限を持つトークンを生成してください。

注: GitLab 自己管理の顧客の場合、有効期限のないトークンは、インスタンスを GitLab 16.0 にアップグレードした日から 1 年で期限切れになるように設定されます。

 

「GitLab アクセス トークンに有効期間制限が設けられた理由」
サイトに、本無期限トークン廃止の背景などとともに影響を最小限に抑える方法などについても言及されています。
GitLab 16.0 へアップグレードされた方は、ぜひ上記サイトご参照ください。

以下には上記サイト内容を引用しています。英語のオリジナル情報、また最新情報はGitLbサイトにてご確認ください。

GitLab アクセス トークンに有効期間制限が設けられた理由

既存および新規の個人、​​グループ、またはプロジェクトのアクセス トークンに有効期間制限が適用されるようになりました。その理由を調べ、混乱を最小限に抑える方法を学びましょう。

セキュリティと使いやすさのバランスを保ちます。とても簡単そうに思えますよね?セキュリティ管理を導入したことのある人なら誰でも、このバランスは微妙であり、人によって許容レベルが異なるため、完全に達成することは決して不可能であることを知っています。

GitLab も例外ではありません。認証グループでは、GitLab 管理者がセキュリティとアクセシビリティのスペクトルにおいて誰もが異なる位置に座っていることを認識し、GitLab 管理者が好みに応じて実装できるアクセスおよびセキュリティ制御のツールボックスを提供しようとしています。ただし、強力で有効期間の長い認証情報とそのライフサイクルに関連するアクセス メカニズムなど、お客様にどのようなアクセス メカニズムを提供するかについて決定を下さなければならない場合があります。これらの認証情報は作成されたまま何年も変更されないことが多く、ログ、構成、およびそれらのツールを使用する人々に漏洩する可能性があります。漏洩すると、組織のセキュリティ体制に取り返しのつかない損害を与える可能性があります。

無期限アクセス トークンのサポートを削除するという決定

GitLab 16.0 では、無期限アクセス トークンのサポートを削除することを決定しました。これは 15.4 で初めて発表されました。削除のお知らせはここで読むことができます。 16.0 マイルストーン (2023 年 5 月) の時点で、以前は有効期限がなかった個人、グループ、またはプロジェクトのアクセス トークンに 2024 年 5 月 14 日の有効期限を適用しました。すでに有効期限が切れているアクセス トークンは、365 日の制限を超えていたとしても、そのまま残されました。

2023 年 5 月 15 日以降、作成された新しいアクセス トークンには、作成後 365 日以内に有効期限が切れる必要があります。

GitLab Ultimate では、管理者はトークンの有効期限のカスタム許容制限を設定できます。このポリシーにより、管理者はコンプライアンスの目的で有効期間を 365 日未満に設定できます。プレミアム枠と無料枠では、トークンの有効期限が 365 日以内に期限切れになるように設定する必要があります。

影響は何ですか?

個人、グループ、またはプロジェクトのアクセス トークンに依存するオートメーションがあり、その有効期限を変更しない場合、有効期限に達すると機能が停止します。以前にトークンの有効期限を設定しなかった場合は、2024 年 5 月 14 日以降に設定されるようになりました。トークンの有効期間を延長したり、トークンをローテーションしたりしない限り、自動化はその日に動作を停止します。

私たちは、これが破壊的な変化である可能性があることを認識しています。この記事は、2024 年 5 月 14 日に先立ち、お客様への意識を高めることを目的としています。

なぜこのような変更を行うのでしょうか?

すべては、社内のアプリケーション セキュリティ チームによって提案された問題から始まり、アクセス トークンにセキュリティを考慮したデフォルトを設定することになりました。つまり、デフォルトで最小限の特権と 30 日間の有効期限を設定することになりました。ユーザーは希望に応じていつでも変更できます。

GitLab 15.0 では、OAuth トークンの有効期限がすでに適用されていました。当社のアプリケーション セキュリティ チームは、個人、プロジェクト、グループのアクセス トークンにも有効期限を設けることを推奨しました。有効期間の長い静的なシークレットには、セキュリティのベスト プラクティスとして有効期間の制限を適用する必要があります。したがって、これらの制限を設ける必要があります。トークンに有効期限がない場合、2023 年 5 月の 16.0 リリースの時点でトークンに 1 年間の有効期限を設定しました。つまり、トークンがローテーションされていないか変更されていなければ、トークンは 2024 年 5 月に期限切れになります。事前に有効期限を設定しておきます。

影響を最小限に抑える方法

あなたは今このブログ投稿を読んでいるので、このような変更が引き起こす可能性のある影響を先取りしていることを願っています。以下のセクションでは、GitLab をスムーズに実行し続ける方法について詳しく説明します。

自分が何を持っているかを知る

積極的に。すべてのトークンの監査を行うことから始めます。 Ultimate の顧客の場合は、認証情報インベントリ(自己管理型でのみ利用可能) を使用して、インスタンス内のすべての個人、プロジェクト、およびグループのアクセス トークンを表示できます。

資格情報インベントリにアクセスできない場合は、次のことができます。

あなたが GitLab 管理者の場合は、個人のアクセス トークンに加えられるこの変更について、および将来の有効期限をどのように管理するかをエンド ユーザーに伝えてください。それらをこのブログ投稿にリンクできます。

ローテーションAPIを使用する

以前のトークンを取り消し、1 週間で期限切れになる新しいトークンを作成するトークン ローテーション APIをリリースしました。

また、セキュリティを強化するために自動トークン再利用検出も実装しました。自動再利用検出は、攻撃者が漏洩したアクセス トークンを使用することを防ぐのに役立つ多層防御のセキュリティ対策であり、トークン ローテーション API が、期限切れの漏洩トークンを無期限にローテーションして新しいトークンを取得することでユーザーのアカウントへの無期限のアクセスを維持するのを防ぎます。

自動トークン再利用検出がどのように機能するかを簡単に説明するために、正当なユーザーが個人用アクセス トークン (AT1) を誤って公開してしまったシナリオについて説明します。攻撃者はこの漏洩したアクセス トークン (AT1) に遭遇し、AT1 とトークン ローテーション エンドポイントを使用して新しいアクセス トークン (AT2) を取得し、ユーザーのアカウントへのアクセスを維持します。正規のユーザーは、AT1 の漏洩や攻撃者のアクセスに気付かず、AT1 とトークン ローテーション API を使用して、自分用の新しいアクセス トークン (AT3 と考えられます) を取得しようとします。ただし、AT1 はトークン ローテーション エンドポイントで 2 回使用されているため、バックエンドはこの再利用を検出し、この再利用はトークン リークが原因である可能性があると推測します。トークン ローテーション API にリクエストを行っているのが攻撃者であるか正当なユーザーであるかを知る方法がないため、ユーザーのアカウントへのアクセスを保護するために、トークン ファミリの最新のアクティブなトークンである AT2 は、取り消されるため、攻撃者によるユーザーのアカウントへのアクセスが防止されます。

再利用検出の結果として、潜在的な同時実行の問題に注意してトークンのローテーションを実行する必要があります。同じアクセス トークンを使用してトークン ローテーション API を複数回呼び出さないことをお勧めします。そうしないと、前述したように、自動再利用検出により、セキュリティ対策としてトークン ファミリ全体が即座に取り消される可能性があります。

有効期限を手動で設定する

UI を使用して、既存のアクセス トークンを削除し、有効期限を指定して新しいアクセス トークンを作成できます。自動化では必ず新しいトークンを交換してください。既存のトークンの有効期限は UI では変更できないため、それよりも先の有効期限を設定する場合は、新しいトークンを生成する必要があります。

通知に注意してください

私たちのチームは、個人、グループ、プロジェクトのアクセス トークンの有効期限が切れた場合の電子メール通知を実装しました。これらの通知は次のように構成されています。

  • トークンの有効期限が 7 日後に切れると、電子メール通知が届きます。
  • 有効期限が切れる 1 日前に別の電子メールが送信されます。
  • 個々のトークンはそれぞれ独自の個別の電子メールをトリガーします。

グループの所有者、メンテナ、および管理者は、プロジェクトおよびグループのアクセス トークンに関するこれらの電子メール通知を受け取ります。個人用アクセス トークンの場合、個々のユーザーが電子メールを受け取ります。

自動化ユースケースのサービス アカウント

現在グループまたはプロジェクトのアクセス トークンを使用している自動化のユースケースについては、 GitLab Premium および Ultimate レベルで利用可能なサービス アカウントを検討することをお勧めします。これらのアカウントはライセンスシートを使用しないため、対話型ログインを使用して GitLab UI にアクセスできません。また、明確なメンバーシップ タイプがあるため、追跡が簡単になります。これは、オプションのトークンの有効期間制限 (近日公開予定)と組み合わせることで、有効期限が切れないように設定できることを意味します (ただし、セキュリティのベスト プラクティスに留意することをお勧めします)。

次のステップ

次のステップは、この情報をチームと共有し、この変更が自分の環境にどのような影響を与えるかを判断することです。ブログ全体で提供されているリンクに従って、プロジェクト、グループ、個人のアクセス トークンに必要な変更を加えてください。

 

本内容は、GitLab社ブログ から引用しております。
https://about-gitlab-com.translate.goog/blog/2023/10/25/access-token-lifetime-limits/?_x_tr_sl=en&_x_tr_tl=ja&_x_tr_hl=en&_x_tr_pto=wapp&_x_tr_hist=true


弊社パートナー様はNetworld Dev Portal アカウント(無料)登録いただくと、GitLabパートナー制度や DevSecOps関連提案資料などのパートナー限定コンテンツがご覧いただけます。

DevSecOps全般、GitLab製品または本サイトについては以下よりお問い合わせ下さい。

関連記事