セキュリティアーキテクチャ
Exportelier のセキュリティモデルは、意図的な 2 アプリへの分割に基づいており、課題データを扱うアプリがそれをどこかに送る手段を持たないようにします。
メインアプリ:fetch なし、webtrigger なし
メインアプリは Forge マニフェストで外部 fetch も webtrigger も宣言しません。PDF はヘッドレスブラウザもサードパーティサーバーも使わず、すべて Forge 上でレンダリングされます。これは Atlassian のプラットフォームによって強制されます — ポリシー上の約束ではなく、アーキテクチャによる保証です。
図:メインアプリ(egress なし、Forge 上でレンダリング)と Automation アプリ(すべての egress、分離)。
Automation アプリ:分離された egress
データを外部に送る必要があるすべて — メール、Slack Incoming Webhook、Microsoft Teams Workflows、API — は別個の Exportelier Automation アプリに存在します。すべての送信トラフィックを担い、SSRF 保護とプロバイダー固有の秘密 URL を備えます。
レポートはエクスポートした本人として Jira を読みます
レポートが行う Jira の読み取り——保存フィルターの一覧
取得、プリフライトでの確認、エクスポート時の検索——はすべて、Forge の asUser ID
を使ってそれを開始した本人として実行されます。キューに入ったエクスポートを成功
させるために、アプリが自身のアプリ ID へ切り替えることはありません。
ここから 2 つの性質が直接導かれます。
- Exportelier のサイト管理者権限が Jira の可視範囲を広げることはありません。 管理者は自分が見られるフィルターからレポートを構築できますが、それで他の誰かに アクセス権が与えられることはありません。エクスポートする本人がソースを利用できな い場合、エクスポートは失敗してそのソース名を示し、データソースを黙って省くこ とはしません。
- クエリが保存されたり、あなたのテキストから組み立てられたりすることはありません。
Exportelier は保存フィルターの数値 ID を保持し、厳密に数値のみの述語
filter = <id>をちょうど 1 つ組み立てます。フィルターの JQL は読み取り・保存・ ログ記録・連結のいずれも行われないため、JQL インジェクションの攻撃面も、クエリの 古いコピーも存在しません。
レポートの出力は一時的で、ダウンロード後に削除されます——データ保持と GDPR を参照してください。
ダッシュボードインポートは文書化 された API のみを使用します
ダッシュボードインポートが Jira を読むのは、 Atlassian が文書化した Jira Cloud ダッシュボード REST API のみを通じて、しかもインポートする本人としてです。Jira の Web ページを解析せず、 ガジェットの iframe を読まず、スクリーンショットを撮らず、未文書のガジェット設定 エンドポイントを使わず、Forge の外へ何も送信しません。新しい権限スコープも不要でした。
読み取る範囲は意図的に狭くしてあります。ガジェットの構成値はガジェットごとの 許可リストで検証し、Jira 自身の上限をはるかに下回るサイズ制限をかけ、ログにも、 エラーメッセージにも、監査イベントにも決して残しません。JQL は保存しません。 ガジェットのプロパティにたまたま含まれていた場合でも同じです。インポートされた レポートが保持するのは、ほかのレポートと同じ数値のフィルター ID だけです。
関係する操作の 1 つ Get gadgets は、Atlassian によって Experimental と 位置付けられています。その応答が、Exportelier が実際の Jira サイトで検証した内容と 一致しなくなった場合、インポート経路は安全側に倒れて失敗し、機能自体が無効化されます。 誤読した応答に基づいて動作することはありません。既存のレポートとエクスポートには影響 しません。
監査イベントには、インポート記録が確認されたことや削除されたことだけが残ります。 ガジェットの構成も、JQL も、課題データも含まれません。
なぜ分けるのか
ポリシーで送信トラフィックが禁止されている場合、メインアプリのみをインストールすれば、何も Atlassian の外に出ないという確かな保証が得られます。配信が必要なチームは、承知の上で Automation アプリを追加します。
データ所在地と調達 & ベンダーセキュリティのページも参照。