スコープ
スコープ
重要なのは、開発者コンソールでBoxアプリケーションを設定するときに適切なスコープを選択してそのアプリケーションに対する適切な権限を選択することです。
スコープについて
ユーザーがBox内のファイルやフォルダなどの項目に対する特定のアクセス権限を持つように、アプリケーションも、BoxユーザーまたはBoxを使用する会社に代わって特定のアクションを実行するための権限を独自に持ちます。
アプリケーションに対する権限セットの名前を「スコープ」と言います。アプリケーションに適切なスコープを選択することで、ユーザーの特定のタスクをそのアプリケーションで実行できるほか、自分が意図しないタスクを実行しないようアプリケーションを制限することもできます。
スコープとOAuth 2承認
アプリケーションを承認するためにクライアント側のOAuth 2フローを介してユーザーを送信する際は、承認URLに一連のスコープを追加してユーザーのアクセストークンをさらに制限できます。
たとえば、アプリケーションでroot_readonly
およびroot_readwrite
スコープが有効になっている場合は、ユーザーのリダイレクト時にこのスコープを指定することで、ユーザーのアクセストークンをroot_readonly
に制限できます。
GET https://account.box.com/api/oauth2/authorize?scope=root_readonly&client_id=....
スコープパラメータが省略されている場合、アプリケーションでは、そのアプリケーションの作成時に設定されたスコープが使用されます。
セルフサービススコープ
これらのスコープは、カスタムアプリケーションの設定時に開発者コンソールから使用できます。アプリケーション設定の[構成]ページにある[アプリケーションスコープ]セクションに移動して、以下のいずれかのスコープを選択します。
すべてのファイルとフォルダの読み取り
OAuthスコープ | root_readonly |
アプリケーションスコープ | Boxに格納されているすべてのファイルとフォルダの読み取り |
アプリケーションで、認証済みユーザーはすべてのファイル/フォルダを読み取ることができるようになります。
これにより、アプリケーションにはファイルとフォルダに対する読み取り権限が付与されますが、API呼び出しを実行するユーザーには、アクセス対象の項目に対するアクセス権限が必要です。
つまり、JWT認証済みのアプリケーションが管理対象ユーザーの項目にアクセスする場合、アプリケーションは、その項目にアクセスできるユーザーとして認証されるようにas-user
ヘッダーを使用するか、ユーザーアクセストークンを作成する必要があります。
すべてのファイルとフォルダの読み取りと書き込み
OAuthスコープ | root_readwrite |
アプリケーションスコープ | Boxに格納されているすべてのファイルとフォルダの読み取りと書き込み |
アプリケーションには、認証済みユーザーの書き込みアクセス権限が付与されます。これにより、アプリケーションでは、ファイルのアップロード、新しいバージョンのファイルのアップロード、新しいフォルダの作成、コラボレーションの作成、編集、削除、コメント、タスク、コレクションの作成などを実行できます。
これにより、アプリケーションには項目に対する読み取り/書き込みアクセス権限が付与されますが、API呼び出しを行うユーザーには、アクセス対象の項目に対するアクセス権限が必要です。
ユーザーを管理
開発者コンソールにある「ユーザーを管理」アプリケーションスコープオプションは、実際に2つのOAuthスコープにマップされます。
OAuthスコープ | manage_managed_users |
アプリケーションスコープ | ユーザーを管理 |
アプリケーションには、標準(管理対象)のBoxユーザーを管理するための権限が付与されます。これにより、このアプリでは、ユーザーのプライマリログインの変更、ユーザーのパスワードのリセット、管理対象ユーザーのロールの変更を実行できます。
OAuthスコープ | manage_app_users |
アプリケーションスコープ | ユーザーを管理 |
アプリケーションには、標準のApp Userを管理するための権限が付与されます。App Userは通常の(管理対象)ユーザーとは異なり、Boxウェブアプリにログインできません。代わりに、App Userは仮想ユーザーとして、アプリケーションがサーバー側の認証済みアプリケーションにデータを分離するために使用できます。
このスコープは、サーバー側で認証されている(JWT)アプリケーションのみに適用されます。
グループを管理
OAuthスコープ | manage_groups |
アプリケーションスコープ | グループを管理 |
アプリケーションには、会社のグループを管理するための権限が付与されます。これにより、このアプリでは、グループの作成、更新、削除のほか、グループでのユーザーの追加と削除を実行できます。
Webhookを管理
OAuthスコープ | manage_webhook |
アプリケーションスコープ | Webhookを管理 |
アプリケーションには、ユーザーのWebhookを作成するための権限が付与されます。Webhookにはいくつかの制限があります。注目すべきは、1ユーザーにつき1つのアプリケーションあたりWebhookは1,000個までという制限があることです。
エンタープライズのプロパティを管理
OAuthスコープ | manage_enterprise_properties |
アプリケーションスコープ | エンタープライズのプロパティを管理 |
アプリケーションには、エンタープライズイベントストリームを表示するための権限に加え、エンタープライズの属性とレポートを表示および編集するための権限が付与されます。さらに、アプリケーションでは、Device Pinnerの編集と削除も実行できます。
リテンションポリシーを管理
OAuthスコープ | manage_data_retention |
アプリケーションスコープ | リテンションポリシーを管理 |
依存先 | gcm スコープ |
アプリケーションには、Box Governanceでリテンションポリシーを表示および作成するための権限が付与されます。そのため、会社ではBox Governanceを購入しておく必要があります。
リクエストに応じて使用可能
アプリケーションに対して特定の機能を有効にするリクエストで使用可能な追加のスコープがいくつかあります。
このスコープは、Boxのサポートチームを通じてチケットを作成することでリクエストできます。サポートチームは、個別にリクエストを確認し、このスコープが必要なユースケースのみを承認します。
リーガルホールドの管理
OAuthスコープ | manage_legal_holds |
アプリケーションスコープ | リテンションポリシーを管理 |
依存先 | gcm スコープ |
アプリケーションには、Box Governanceでリテンションポリシーを表示および作成するための権限が付与されます。そのため、会社ではBox Governanceを購入しておく必要があります。
メール通知の抑制
アプリケーションスコープ | API呼び出しからメール通知を抑制可能 |
API呼び出しが行われるときにメール通知を抑制できます。
グローバルコンテンツマネージャ
OAuthスコープ | gcm |
アプリケーションスコープ | グローバルコンテンツマネージャ |
社内のコンテンツへのアクセス権限を持つユーザーとして明示的に認証されていなくても、管理者とサービスアカウントは社内のすべてのコンテンツを取得できます。このスコープは、リテンションポリシーとリーガルホールドを使用する特定のアプリケーションで必要になる場合があります。
ダウンスコープ用のスコープ
特にトークンをクライアント側(ブラウザなどの公開された環境)に公開する必要がある場合など、アクセストークンをより厳格な権限レベルにダウンスコープしなければならないことがあります。その主な例として、ユーザーのブラウザでアクセストークンが必要となるBox UI Elementsを使用する場合が挙げられます。
既存のアクセストークンをダウンスコープするためにPOST /oauth2/token
エンドポイントで使用できる追加のスコープのリストを以下に示します。
OAuthスコープ | 影響を受けるUI Element | 説明 |
---|---|---|
annotation_edit | Preview | 注釈の編集と削除をユーザーに許可します。 |
annotation_view_all | Preview | すべてのユーザーによる注釈の表示をユーザーに許可します。 |
annotation_view_self | Preview | ユーザーに自分の注釈のみの表示を許可します。 |
base_explorer | Explorer | ユーザー/ファイル/トークンの権限に基づいて、フォルダツリー内のコンテンツへのアクセスを許可します。 |
base_picker | Picker | ユーザー/ファイル/トークンの権限に基づいて、フォルダツリー内のコンテンツへのアクセスを許可します。 |
base_preview | Preview | ファイルのプレビューのみをユーザーに許可します。 |
base_sidebar | Sidebar | Sidebar UI Elementに必要なファイルの基本情報の取得をユーザーに許可します。 |
base_upload | Uploader | トークンのダウンスコープ時に、resource の下で指定されたフォルダへのアップロードを許可します。 |
item_delete | Explorer | ファイルとフォルダの削除を許可します。 |
item_download | Explorer, Preview | ファイルまたはフォルダのコンテンツのダウンロードを許可します。 |
item_preview | Explorer | ファイルのプレビューを有効にします。 |
item_rename | Explorer | ファイルとフォルダの名前変更を許可します。 |
item_share | Explorer, Picker | トークン交換のresource で指定された項目の共有を許可します。 |
item_upload | Picker | Content Pickerでのアップロードを許可します。 |
また、ダウンスコープ時には標準OAuthスコープもサポートされます。
OAuthスコープ | 説明 |
---|---|
root_readonly | Boxに格納されているすべてのファイルとフォルダの読み取り |
root_readwrite | Boxに格納されているすべてのファイルとフォルダの読み取りと書き込み |
manage_managed_users | Manage managed users |
manage_app_users | Manage app users |
manage_groups | グループを管理 |
manage_webhook | Webhookを管理 |
manage_enterprise_properties | エンタープライズのプロパティを管理 |
manage_data_retention | リテンションポリシーを管理 |