アプリポータルの権限設計のベストプラクティス(OAuth)
このドキュメントでは、OAuthを利用する際のアプリポータル権限を安全に運用するための推奨設定について説明します。
OAuth 2.0による認可の概要はOAuth 2.0による認可を、アプリポータルの概要については、アプリポータルの概要(OAuth)を参照してください。
前提:アプリポータルの認可モデル
アプリポータルを通じたAPI連携の認可モデルには、以下の特性があります。
- API連携の認可は アプリ単位 で行われ、基本的には認可操作を行ったユーザー個人の権限には依存しない(※一部のサービスでは、そのサービス上のユーザー権限が別途必要な場合があります)
- 認可されたアプリは、OAuthスコープが許可する範囲内で事業者のデータに対して任意の操作が可能になる
つまり、「アプリを認可する」という操作は、そのアプリに対して事業者のデータへの広範なアクセスを許可することを意味します。このため、誰がアプリを登録でき、誰が認可できるかを適切に管理することが重要です。
各権限のセキュリティ上の意味
アプリポータルには3つの権限があります。それぞれの機能と、セキュリティ上の意味(OAuth利用時)を理解してください。
| 権限 | できること | セキュリティ上の意味(OAuth利用時) |
|---|---|---|
| システム管理者(情報システム部門など) | ユーザーの招待・削除、全権限の設定 | アプリポータル全体の統制を担う。付与は最小限にする |
| アプリ開発 | アプリの登録・編集・削除(Client ID/Client Secretの取得) | 認証情報を取得できるが、この権限だけではマネーフォワード クラウドのデータにアクセスできない |
| アプリ連携 | アプリとマネーフォワード クラウドのサービスの連携を認可 | 認可を実行すると、アプリにOAuthスコープの範囲内でデータへのアクセスを許可する。細心の注意を払って付与する権限 |
アプリ連携権限の制御範囲について
アプリ連携権限は、認可操作を許可するサービスを選択して付与できます。たとえば「マネーフォワード クラウド会計Plus」のみを選択すれば、ユーザーは選択したアプリ連携のみ認可できます。
ただし、選択したサービス内での操作を制限できません。たとえば、「マネーフォワード クラウド会計Plus」を選択した場合、そのユーザーはデータの読み取りだけでなく、書き込みを含むすべての操作スコープについて認可操作が可能になります。
アプリ連携権限を持たないユーザーについて: アプリ連携権限が付与されていないユーザーは、アクセストークンを発行できません。つまり、この権限がなければAPIによるデータアクセスは一切不可能です。
権限の設定方法は「権限」の設定方法を参照してください。
アプリ開発権限とアプリ連携権限を分離する
なぜ分離が必要か
アプリポータルでは、「アプリの登録(アプリ開発)」と「アプリとサービスの連携(アプリ連携)」を別の権限として管理しています。
この2つの権限を同一のユーザーに付与すると、そのユーザーはアプリの登録から認可まで単独で完了できます。これは以下のリスクにつながります。
- 管理者の承認なしに、意図しないアプリが事業者のデータにアクセスできる状態になる
- 従業員が個人的に作成したアプリ(野良アプリ)が、管理者の知らないうちに認可される
- 管理者が把握・承認していない外部サービスが認可される
推奨される運用
本番環境では、アプリ開発権限とアプリ連携権限を異なるユーザーに付与してください。
| 環境 | アプリ開発 | アプリ連携 | 説明 |
|---|---|---|---|
| 開発・テスト環境 | 開発者 | 開発者(兼務可) | 開発効率のため、同一ユーザーに両方の権限を付与しても問題ない |
| 本番環境 | 開発者 | 管理者・情報システム部門のみ | 認可はアプリ連携の実行者が確認した上で実施する |
本番環境では、アプリ開発者にアプリ連携権限を付与しないでください。権限を分離することで、アプリの登録と認可の間に管理者による確認プロセスを挟むことができます。
ユースケース別の推奨権限構成
1. 提供されているアプリを利用し、お使いのSaaSとマネーフォワード クラウドを連携する場合
お使いのSaaS側で 連携用アプリがすでにアプリポータルに登録されているケースです。利用可否・手順・契約は製品やサービスごとに異なるため、次のいずれかへお問い合わせいただくか、公開されている手順に沿ってください。
- お使いのSaaSのサポート・連携ガイドをご確認ください。
- 外部サービスとAPI連携する手順は、外部サービスとの連携方法を教えてください。(マネーフォワード クラウド会計サポート)を参考にしてください。
お使いのSaaSの画面から連携を開始し、アプリポータルで連携を許可したうえで、トークンを用いてAPIにアクセスする流れになります。
- 認可のリクエスト:アプリ連携の実行者がクライアントの連携操作を実行するなどして、マネーフォワード クラウドとの連携の認可をアプリポータルに要求する
- 連携の認可(アプリ連携権限):アプリ連携の実行者が、アプリポータルで連携内容を確認したうえで認可する
- 連携の利用:認可後、お使いのSaaSがトークンを用いてマネーフォワード クラウドのAPIにアクセスし、データの取得・連携をする
アプリポータルで付与する権限の意味は、各権限のセキュリティ上の意味を参照してください。設定手順は「権限」の設定方法を参照してください。 連携操作の詳細は、他社サービスと連携する方法を参照してください。
| 役割 | アプリ開発 | アプリ連携 | 理由 |
|---|---|---|---|
| SaaS連携設定の実行者 部門担当者や情報システム部門などが担うことが多い。お使いのSaaSの案内に沿って、連携に必要な準備やSaaS側の設定を行う担当。アプリポータルで連携を「許可」する操作は行わない。 | 付与しない | 付与しない | 認可操作はアプリ連携の実行者が行うため、この担当者にアプリ連携権限は付与しない。 |
| アプリ連携の実行者 連携先のアプリと要求されているOAuthスコープを確認し、アプリポータルで連携の認可を行う担当。 | 付与しない | 付与する | 認可を実行するためにアプリ連携を付与する。 |
| システム管理者 情報システム部門などが担うことが多い。アプリポータルへのユーザー招待や、ポータル全体の運用・統制を担う担当。連携の認可やアプリの新規登録を行わないことが多い。 | 付与しない | 付与しない | ユーザー招待や他ユーザーの権限設定を担ってもよいが、自らが連携の認可やアプリの新規登録をしない限り、自身にはアプリ開発・アプリ連携をいずれも付与しない。 |
2. お使いのSaaSまたは社内システムとマネーフォワード クラウドを連携する場合
お使いのSaaSまたは社内システムをアプリポータルに登録する必要があるケースです。 連携用のアプリがまだアプリポータルに登録されていない場合、アプリポータルで連携を認可する前に、アプリの登録を完了する必要があります。
- アプリの登録:アプリ開発者が、アプリポータルでアプリを登録する
- 認可のリクエスト:アプリ連携の実行者がクライアントの連携操作を実行するなどして、マネーフォワード クラウドとの連携の認可をアプリポータルに要求する
- 連携の認可(アプリ連携権限):アプリ連携の実行者が、アプリポータルで連携内容を確認したうえで認可する
- 連携の利用:認可後、お使いのSaaSがトークンを用いてマネーフォワード クラウドのAPIにアクセスし、データの取得・連携をする
アプリ開発者とアプリ連携の実行者は、可能な範囲で分ける運用を推奨します。
次の表は、この場合の権限構成の一例です。アプリを新規登録する担当者にはアプリ開発権限が必要です。連携の認可にはアプリ連携権限が必要です。上記の各権限のセキュリティ上の意味も参照してください。
| 役割 | アプリ開発 | アプリ連携 | 理由 |
|---|---|---|---|
| アプリ開発者 アプリポータルでアプリを登録し、開発に必要なClient ID/Client Secretの取得などを担う担当。 | 付与する | 付与しない | アプリ開発は付与しアプリ連携は付与しない。アプリの登録と開発を担う。テスト環境ではアプリ連携との兼務も可だが、本番環境では分離する。 |
| アプリ連携の実行者 連携先のアプリと要求されているOAuthスコープを確認し、アプリポータルで連携の認可を行う担当。 | 付与しない | 付与する | 認可を実行するためにアプリ連携を付与する。 |
連携を認可する際の確認事項
アプリ連携の実行者は、アプリとサービスの連携を認可する前に以下を確認してください。
- 承認済みの連携か: 認可対象のアプリが、社内で承認された連携かどうか
- スコープは適切か: 要求されているOAuthスコープが、連携の目的に対して必要最小限の範囲か
- 開発元は信頼できるか: アプリの開発元が信頼できるか
認可フローでは、アクセスを許可する前に 同意画面 が表示されます。同意画面には、連携先のアプリがどのデータ・操作へのアクセスを要求しているかが表示されます。内容を十分に確認した上で承認してください。
トークンのライフサイクル
認可によって発行されるトークンには有効期限があります。
| トークン | 有効期間 |
|---|---|
| アクセストークン | 1時間 |
| リフレッシュトークン | 540日 |
アクセストークンとリフレッシュトークンは、アプリポータルからいつでも失効(revoke)させることができます。不正なアクセスが疑われる場合や、連携を終了する場合は、速やかにトークンを失効させてください。
連携の定期的な棚卸し
認可は事業者単位で行われるため、連携を設定した担当者が異動・退職しても連携は停止しません。これは安定した運用を可能にする一方、不要な連携が残り続けるリスクでもあります。
以下の運用を推奨します。
- 定期的な確認: 連携中アプリの一覧を定期的に確認し、不要な連携がないか棚卸しする
- 速やかな解除: 不要になった連携は、連携中アプリの一覧から速やかに解除する
- 担当者変更時の引き継ぎ: 連携の管理担当者が変わる際は、既存の連携状況を引き継ぐ