サードパーティのFigmaツールを使うには、FigmaのSettings画面でPersonal Access Tokenを生成してツールに貼り付けます。これは基本中の基本です。すべてのFigmaインテグレーションがそれを求めます。

多くの人が完全には認識していないこと:そのトークンは「1ファイル」を読むのではありません。アカウントがアクセスできるすべてのファイルを読みます。すべてのプライベートファイル。すべての組織ライブラリ。すべての共有プロジェクト。FigmaのPATのデフォルトスコープはアカウントの全読み取り範囲です。

個人アカウントを持つ個人デザイナーにとって、これは中程度のリスクです。未発売の製品、ブランドアセット、内部ツールを含む共有デザインライブラリを持つエンタープライズのスタッフデザイナーにとっては重大です。そのようなデザイナーにとって「見つけたツールにFigmaトークンを貼り付けた」はセキュリティインシデントです。

figmascopeはそのインシデントが起きないよう設計されています。

FigmaのPATが付与するもの

FigmaのAPI認証はPATベースです。トークンはあなたとして認証します。APIはトークンレベルでファイルごとのスコープを強制しません—アカウントの権限に基づいてファイルアクセスを強制します。アカウントがファイルを閲覧できれば、PATはAPIを通じてそれを読めます。

デフォルトのPATスコープは以下への読み取りアクセスを付与します:

Figmaは2023年により絞り込まれたトークンタイプを導入しました—付与するスコープを選択できるトークンです。しかしUIはデフォルトで幅広いトークンに設定されており、多くのチュートリアルはスコープを指定せずにトークンを生成するよう指示しています。実際のところ、デザイナーのクリップボードの履歴に浮かんでいるほとんどのPATは完全な読み取りトークンです。

PAT受け入れツールの脅威モデル

FigmaのPATを受け入れてバックエンドを持つツールは特定の脅威に直面します:バックエンドはトークンを保存し(あなたの代わりにFigmaを呼び出すために)、そのストレージがターゲットになります。バックエンドが侵害されると、そこに保存されているすべてのPATが侵害されます。バックエンドにデータベース侵害があると、すべてのユーザーのFigmaアクセスが侵害されます。

これは仮定の話ではありません。OAuthトークンストレージの侵害は多くのサービスで起きています。パターンは:ユーザーがアクセスを付与し、サービスがトークンを保存し、サービスが侵害され、攻撃者がトークンを流出させ、攻撃者はそれらのトークンが到達できるすべてのものにアクセスを持つ。エンタープライズでのFigmaトークンにとって、「それらのトークンが到達できるすべてのもの」は完全なデザインシステムです。

バックエンドベースのツールはこの問題を解決しなければなりません。良いものはそうします:保存時の暗号化、短命トークン、再認証ワークフロー、監査ログ。適切に解決することはエンタープライズグレードのセキュリティエンジニアリング問題です。ほとんどのツールは適切に解決していません;侵害されていないだけです。

最も安全なトークンストレージはストレージなしです。アーキテクチャがトークンを永続化しなければ、侵害するものが何もありません。これがfigmascopeが行うアーキテクチャの選択です—単なる機能ではなく、完全なセキュリティモデルです。

figmascopeのアーキテクチャ

figmascopeは完全にブラウザで動作します。バックエンドサーバーはありません。データベースはありません。セッション管理も、ユーザーアカウントも、トークンストレージ層もありません。アプリケーションはCDNから配信される静的なHTML/CSS/JSバンドルです。使用するとき、計算はブラウザタブで行われます。figmascopeサーバーに送信されるものは何もありません—figmascopeサーバーが存在しないからです。

PATフローはこのように機能します:

  1. 入力フィールドにPATを入力します。
  2. 値はJavaScriptクロージャ変数に保存されます—アプリケーションモジュール内の通常のJSletバインディング。
  3. localStorageには書き込まれません。sessionStorageにも書き込まれません。クッキーとして設定されません。indexedDBにも書き込まれません。2つのFigma APIエンドポイント以外のどんなURLにも送信されません。
  4. エクスポートを行うとき、トークンはapi.figma.comとFigma CDN(画像アセット)へのfetch()コールでX-Figma-Tokenヘッダーとして渡されます。
  5. タブを閉じるかリロードすると、JSメモリが解放されます。トークンは消えます。

これが完全なライフサイクルです。どこにも永続化なし。Figmaへの直接のネットワーク送信以外はなし。

Content Security Policy の強制

「Figmaにのみ送信される」プロパティを単なる主張ではなく強制可能にするために、figmascopeはconnect-srcを2つの許可されたホストにロックするContent Security Policyをデプロイします:

connect-src 'self'
  https://api.figma.com
  https://figma-alpha-api.s3.us-west-2.amazonaws.com;

CSPはブラウザで強制されます。ページにスクリプトインジェクション脆弱性があったとしても、ブラウザはトークンをサードパーティのホストに送信する試みをブロックします。他の宛先へのネットワークリクエストはマシンを離れる前にブラウザレベルで失敗します。

これは多層防御です。アプリケーションコードはすでにトークンを他の場所に送信していません。CSPはアプリケーションコードが試みても他の場所に送信できないようにします。

リカバリパス

トークンはメモリのみなので、リカバリは些細です:タブを閉じる。トークンは消えます。失効ステップも、「アカウント削除」も、「サインアウト」も不要です。タブを閉じる = トークンが消える。

これはオペレーショナルセキュリティの観点からも正しい動作です。短命な認証情報ウィンドウは露出を最小化します。figmascopeを開き、PATを貼り付け、エクスポートを行い、タブを閉じる。PATがアクセス可能なウィンドウはそのブラウザセッションの期間だけです。明示的に失効させるまでトークンが何か月も保存され、アクティブでアクセス可能なバックエンドツールと対照的です。

ツールに関係なく推奨事項

figmascopeのインメモリアーキテクチャでも、良いPATハイジーンが重要です:

スコープ付きトークンを使う。FigmaはEDEK今や明示的なスコープを持つトークンをサポートしています。figmascopeエクスポートのような読み取り専用操作には、読み取り専用トークンで十分で、露出した場合の影響範囲を制限します。デフォルトの幅広いスコープではなく、file_readスコープのみのトークンを生成してください。

積極的に使っていないトークンは失効させる。FigmaのSettingsはすべてのアクティブなPATを示します。終了したプロジェクトのために生成したトークンは失効させるべきです。6か月前にfigmascope用に生成したトークンで以来使っていないものは、失効させて次回必要なときに再生成できます。

セキュリティポスチャーを確認せずにバックエンドを持つツールにトークンを貼り付けない。確認してください:このサービスにはバックエンドがありますか?もしそうなら、どこで、どのようにトークンを保存していますか?答えが満足のいくものでなければ、または答えがなければ、リスクとして扱ってください。これはfigmascopeだけでなくすべてのFigmaツールに適用されます。

エンタープライズユーザー:利用可能な場合は共有/サービスアカウントを使う。組織が特定プロジェクトへの読み取り専用アクセスを持つFigmaサービスアカウントを作成できるなら、個人アカウントではなくそのアカウントからPATを生成することで、それらのプロジェクトへのアクセスに制限できます。

主張しないこと

figmascopeのブラウザのみのアーキテクチャはサーバーサイドの認証情報盗難の攻撃面を最小化します。すべてのセキュリティ懸念を排除するわけではありません:

エンタープライズグレードのセキュリティ監査の代替だと主張しているわけではありません。主張しているのは:アーキテクチャがサーバーサイドのトークンデータベース侵害—特定のクラスの攻撃—をサーバーを排除することで構造的に不可能にするということです。それは意味のある攻撃面の削減であり、完全な免疫ではありません。

ここでオープンソースが重要な理由

セキュリティの主張は検証可能性なしに無意味です。figmascopeはMITライセンスで、完全なソースがGitHubにあります。このポストの主張—localStorageへの書き込みなし、バックエンド送信なし、CSPヘッダー—はすべてコードを読むことで検証可能です。app.jsはブラウザストレージAPIへの書き込みがないことを示します。ヘッダーファイルはCSPを示します。fetchコールはどのURLがトークンを受け取るかを正確に示します。

もしこれらについて嘘をついていたら、30分で見つけられます。それがポイントです。オープンソースは単なるライセンスの選択ではありません;認証情報を扱うツールにとって、それはセキュリティ主張の唯一の誠実な根拠です。

あなたは認証情報を扱うツールを検証すべきです。検証に抵抗するツールは心配する価値があります。

満足したら、figmascopeアプリに向かってFigmaコンテキストバンドルをエクスポートし、Claude CodeまたはCursorと一緒に使ってください。