非人間のアイデンティティを保護する:自動失効、OAuth、スコープ付き権限
Agents(エージェント)によりソフトウェアの開発はこれまでになく高速になりましたが、環境とコードを誤りや悪意から守るには実務的な対策が必要です。Open Web Application Security Project (OWASP) は、エージェント型AIシステムにおける資格情報漏洩、ユーザーなりすまし、権限昇格などのリスクを指摘しています。これらはサービス拒否、データ損失、情報漏洩などの重大な被害や経済的・評判被害につながります。
これはアイデンティティの問題です。現代の開発環境では「アイデンティティ」は人間だけではなく、代理で動作するエージェント、スクリプト、サードパーティツールも含みます。非人間アイデンティティ(NHI)を保護するには、そのライフサイクル全体を管理する必要があります:資格情報(トークン)の漏洩を防ぎ、OAuth を通じてどのアプリがアクセスを持っているかを把握し、きめ細かい RBAC(ロールベースアクセス制御)で権限を限定することです。
本日、これらのニーズに対応する更新を公開します:資格情報を保護するためのスキャン可能トークン、プリンシパルを管理する OAuth の可視化、ポリシーを微調整するためのリソース単位の RBAC です。
アイデンティティの理解:プリンシパル、資格情報、ポリシー
自律エージェント時代のインターネットを安全にするには、アイデンティティの取り扱いを再考する必要があります。要求が人間の開発者から来る場合でも AI エージェントから来る場合でも、API とのやり取りは以下の3つの柱に依存します:
- プリンシパル(旅人):誰であるか。OAuth でログインしたあなた、あるいはデプロイのために API トークンを使うバックグラウンドエージェントなど。
- 資格情報(パスポート):そのアイデンティティの証明。API トークンがパスポートに相当し、盗まれれば誰でもそのアイデンティティを“着用”できます。
- ポリシー(ビザ):そのアイデンティティが何をできるかを定義するもの。有効なパスポートがあっても、すべての国に入れるわけではないように、ポリシーは認証済みでも必要最小限のリソースにのみアクセスを許可します。
これらが一緒に管理されないとセキュリティは破綻します。盗まれた資格情報を使う正当なプリンシパル、あるいは広すぎるポリシーを持つ正規のアイデンティティなどが発生します。
漏洩トークンの検出
エージェントやサードパーティアプリは Cloudflare API にアクセスするために API トークンを使用します。最も一般的な秘密漏洩の原因の一つは、誤ってトークンを公開 GitHub リポジトリにプッシュしてしまうことです。GitGuardian の報告では、昨年は 2,800 万件以上のシークレットが公開 GitHub リポジトリに公開され、AI により漏洩が5倍速く発生しているとされています。
API トークンがデジタルのパスポートなら、公開リポジトリに置き忘れるのは公園のベンチにパスポートを放置するようなものです。見つけた人はそのドキュメントが無効にされるまでなりすますことができます。
我々の GitHub との連携は、これらの資格情報のためのグローバルな「落とし物センター」として機能します。パスポートを失ったことに気付く頃には、我々はそのドキュメントを特定し、チェックサムで真正性を検証し、悪用を防ぐために無効化しています。
我々は主要な資格情報スキャンツールと提携し、漏洩したトークンを積極的に検出し、悪用される前に取り消す手助けをしています。これは「いつ」起きるかの問題であり、「もし」ではありません。あなた、従業員、あるいはエージェントが誤ってシークレットをどこかにプッシュしてしまう可能性は常にあります。
GitHub
我々は GitHub と提携し、Secret Scanning プログラムに参加しています。公開・非公開リポジトリの両方でトークンを検出します。トークンが公開リポジトリに漏洩したと通知された場合、悪用を防ぐために該当トークンを自動的に失効します。非公開リポジトリの場合は、GitHub が Cloudflare トークンの漏洩を検知してあなたに通知し、クリーンアップできます。
仕組み
新しいトークン形式(以下)を GitHub に共有しており、GitHub はすべてのコミットをスキャンします。漏洩らしき文字列を見つけた場合、チェックサムでトークンの実在性を検証し、失効のための webhook を送信します。その後、ユーザーにメールで通知し、Dashboard の設定で新しいトークンを生成できるようにします。これにより、問題が見つかった時点で穴を塞ぐことができます。あなたがミスに気づく頃には、既に対応が完了しています。
我々はこの機能が不要であることを望みますが、パートナーが漏洩を監視してあなたの安全を守ります。
Cloudflare One
Cloudflare One のお客様もこれらの漏洩から保護されます。Credentials and Secrets DLP プロファイルを設定することで、資格情報が移動するあらゆる場所で予防を有効化できます:
- ネットワークトラフィック(Cloudflare Gateway):ポリシーにこれらのエントリを適用して、ネットワークを横断する Cloudflare API トークンを検出・ブロックします。ファイルアップロード、アウトバウンドリクエスト、ダウンロード中のトークンを目的地に到達する前に止めます。
- アウトバウンドメール(Cloudflare Email Security):Microsoft 365 を利用する場合、Outlook に対して同じ予防を拡張できます。DLP Assist アドインが送信前にメッセージをスキャンし、外部送信前にトークンを検出します。
- データ保存先(Cloudflare CASB):Cloud Access Security Broker は同じプロファイルで接続されている SaaS アプリケーション上のファイルをスキャンし、Google Drive、OneDrive、Dropbox などに保存または共有されたトークンを検出します。
もっとも新しい露出ベクターは AI トラフィックです。Cloudflare AI Gateway は同じ DLP プロファイルと連携し、着信プロンプトおよび送信される AI モデルの応答をリアルタイムでスキャン・ブロックします。
その他の資格情報スキャナ
資格情報スキャンが有効に機能する唯一の方法は「あなたがいる場所で検出する」ことです。そのため、我々は複数のオープンソースおよび商用の資格情報スキャナと協力し、どのシークレットスキャナを使っていても保護できるようにしています。
スキャン可能トークンの仕組み
これまで Cloudflare の API トークンは外見がかなり一般的で、資格情報スキャナが高い信頼度で特定するのが難しいものでした。これらの自動セキュリティツールは、コードリポジトリをスキャンして API キー、トークン、パスワードなどの露出を探します。
新しいトークンには cf プレフィックスを付け、トークンを瞬時に識別できるようにし、チェックサムにより静的検証を容易にしました。既存のトークンは引き続き動作しますが、新しく生成するトークンはスキャン可能フォーマットになるため、高い確信度で検出されます。
| Credential Type | 用途 | New Format |
|---|
| User API Key | Legacy global API key tied to your user account (full access) | cfk_[40 characters][checksum] |
| User API Token | Scoped token you create for specific permissions | cfut_[40 characters][checksum] |
| Account API Token | Token owned by the account (not a specific user) | cfat_[40 characters][checksum] |
導入方法
既存の API トークンがある場合、トークンをロール(再発行)して新しいスキャン可能な API トークンを作成できます。これはオプションですが、漏洩時にトークンが検出されやすくするため推奨します。
OAuth と外部アプリの可視化
API トークンは自社のスクリプトやエージェントが使うものですが、サードパーティプラットフォームのアクセス管理は OAuth が担います。どちらの場合も、誰(あるいは何)がデータにアクセスできるかを明確に把握することが重要です。
OAuth 同意画面の改善
Wrangler のようなサードパーティアプリを OAuth 経由で Cloudflare アカウントに接続すると、そのアプリにアカウントのデータへのアクセスを許可することになります。時間が経つと、なぜあるサードパーティにアクセスを与えたのか忘れることがあります。以前は、それらのアプリを一元的に管理・確認する場所がありませんでした。今日からその機能を提供します。
今後、サードパーティアプリがあなたの Cloudflare アカウントへのアクセスを要求するとき、以下を確認できます:
- どのサードパーティアプリがアクセスを要求しているか(Name、Logo、Publisher を含むアプリ情報)
- アプリが要求しているスコープ
- どのアカウントに対してアクセスを許可するか
すべてのアプリが同じ権限を必要とするわけではありません。あるアプリは読み取りのみで十分な場合もあれば、アカウントに変更を加える必要がある場合もあります。アクセス付与前にこれらのスコープを理解することで、最小権限の原則を守れます。
また、Connected Applications(接続済みアプリ)体験を追加しました。どのアプリがどのアカウントにアクセスしているか、そのアプリに関連付けられたスコープ/権限は何かを確認し、必要に応じてそのアクセスを簡単に取り消せます。
導入方法
OAuth の同意と取り消しの改善は本日より利用可能です。現在どのアプリがあなたのアカウントにアクセス権を持っているかを確認するには、My Profile > Access Management > Connected Applications を訪問してください。
Cloudflare に統合を構築する開発者向けには、独自の OAuth アプリを登録する方法についての発表を Cloudflare Changelog で順次案内していきます。
リソース単位のきめ細かい権限付与
トークンがパスポートなら、リソーススコープの権限はその中のビザに相当します。有効なパスポートで玄関は通れても、建物内のすべての部屋に入れるべきではありません。特定の Load Balancer プールや特定の Gateway ポリシーなど、リソース単位でスコープを狭めることで、たとえアイデンティティが認証されても必要最小限の場所だけにアクセスを許可できます。
昨年、Zero Trust 製品群のいくつかで Cloudflare の RBAC にリソーススコープ権限のサポートを発表しました。これにより、ユーザーとエージェントの権限を適正化してセキュリティリスクを最小化できます。今回はこの機能をさらに多くのリソースに拡張しました。
リソーススコープは以下でサポートされます:
- Access Applications
- Access Identity Providers
- Access Policies
- Access Service Tokens
- Access Targets
また、Account API Tokens のプロビジョニングと管理を Dashboard からより簡単に行えるよう、API トークン作成エクスペリエンスを全面的に刷新しました。
仕組み
メンバーを Cloudflare アカウントに追加したり API トークンを作成したりするとき、通常はそのプリンシパルにポリシーを割り当てます。Permission Policy は、あるプリンシパルにアクションを実行する権限を与えるものです。これがなければ、プリンシパルは認証はできてもアカウント内での操作は認可されません。
ポリシーは以下の3要素で構成されます:プリンシパル、ロール、スコープ。
- プリンシパル:人間ユーザー、API トークンのような非人間アイデンティティ(NHI)、あるいはユーザーに代わって動作するエージェントなど、アクセスを与える対象。
- ロール:許可される操作の定義。
- スコープ:それらの権限がどこに適用されるか。従来はアカウント全体か個別のゾーンに限定されていました。
新しい権限ロール
Account と Zone レベルの両方でロールを広く拡張し、多くの製品に対して新しいロールを導入しました。
Account スコープの新しいロール例:
- CDN Management
- MCP Portals
- Radar
- Request Tracer
- SSL/TLS Management
Zone スコープの新しいロール例:
- Analytics
- Logpush
- Page Rules
- Security Center
- Snippets
- Zone Settings
導入方法
リソーススコープと全ての新しいアカウント/ゾーンレベルのロールは、本日より全 Cloudflare 顧客が利用できます。Cloudflare Dashboard、API、または Terraform を通じてアカウント、ゾーン、あるいはリソーススコープのポリシーを割り当てられます。すべての利用可能なロールとスコープの仕組みについては、roles and scope のドキュメントを参照してください。
アカウントを保護する
これらの更新は、真の最小権限アーキテクチャを構築するためのきめ細かい基礎を提供します。資格情報と権限の管理方法を洗練することで、開発者や企業はユーザー、アプリ、エージェント、スクリプトにわたるセキュリティ姿勢に対する信頼を高められます。
(Authors: Justin Hutchings, Adam Bouhmad, Rebecca Varley — 8 min read)