日本時間5月16日のContent Cloud Summitで、カスタムアプリにBox AI APIを活用する方法を紹介します。

詳細を表示

セキュリティ

ガイド セキュリティ

セキュリティ

Box APIを使い始めたばかりの開発者でも、アプリケーションの承認を担当するBox管理者でも、Boxに保存されたコンテンツを保護するためにセキュリティメカニズムを理解することは非常に重要です。

Box APIは、Boxウェブアプリと同じセキュリティの原則と制限に従います。つまり、Box APIを利用しても、コンテンツの権限ウォーターフォール型のフォルダ構造、または管理者向けの要件を回避することはできません。

アクセストークン

さまざまなBox APIコールの中核となるのはアクセストークンです。ユーザー名とパスワードは使用できないため、Boxサーバーにはユーザーの本人確認を行う手段が必要になります。アクセストークンの全機能には、ユーザーの権限、トークンの権限、アプリケーションの設定が含まれます。

アクセストークンコンポーネント

アクセストークンは認証済みのユーザーを表し、ユーザーが問題なく呼び出すことができるコンテンツを決定します。Boxウェブアプリを使用する場合と同様に、問題なく操作できるのは、アクセストークンに関連付けられたユーザーが所有するコンテンツまたはコラボレータとなっているコンテンツのみです。これは、トークンのダウンスコープによってさらに制限できます。

アクセストークンの有効期限は60分のみですが、必要に応じてそれより前に取り消すことができます。アクセストークンの有効期限が切れると、OAuth 2.0アプリケーションを使用している場合、更新トークンを別のアクセストークンと交換できます。更新トークンは、60日後または1回の使用後に有効期限が切れます。また、サーバー認証アプリケーションを使用している場合は、新しいアクセストークンを得るためにアクセストークンをリクエストエンドポイントを呼び出す必要があります。セキュリティ上の理由により、Boxでは有効期間の長いアクセストークンを許可していません。

404エラーが発生する理由がわからない場合は、まず、現在のユーザーを取得エンドポイントを使用して、アクセストークンに関連付けられているユーザーを確認することをお勧めします。

スコープ

 スコープ

スコープは、アプリケーションの作成時に開発者コンソールで構成されます。スコープにより、150を超えるエンドポイントのうち、アプリケーションが問題なく呼び出せるものが決まります。

スコープはユーザーの権限と連動しているため、書き込みスコープを付与しても、ユーザーは、Box Enterpriseのすべてのコンテンツに自動的にアクセスできるわけではありません。つまり、認証済みユーザーは、アクセス権限を持つコンテンツに対する書き込み呼び出しを実行したときに、成功を示すAPIレスポンスを受け取ることができます。

たとえば、ユーザーの管理およびグループの管理のスコープだけが有効になっているアプリケーションを考えてみましょう。このアプリケーションのアクセストークンがフォルダの情報を取得するAPIコールを実行しようとすると、関連付けられているユーザーがそのフォルダを所有している場合でも、403エラーが返されます。これは、この操作を実行するには読み取りスコープが必要なためです。このアプリケーションのアクセストークンには、ユーザーおよびグループに関連したAPIコールに対してのみ、成功を示すレスポンスが返されます。

制限されたエンドポイント

適切な権限を付与された管理者または共同管理者のみが問題なく使用できるAPIエンドポイントがいくつかあります。原則として、管理者または共同管理者だけがBox管理コンソールで実行できる操作の場合、その操作のAPIコールを完了するには、これらのユーザーのいずれかに関連付けられたアクセストークンが必要になります。これについては、必要に応じて、特定のエンドポイントに関するAPIリファレンスのドキュメントを参照してください。

管理者に制限されたエンドポイントの一部を以下に示します。

企業でBox GovernanceやBox Shieldなどのアドオン製品を購入している場合は、以下のように、管理者ユーザーのアクセストークンでのみ使用できるエンドポイントが他にもあります。

アプリケーションアクセス

アプリケーションアクセスの設定

サーバー認証 (JWT使用) またはクライアント資格情報許可を利用するアプリケーションのアプリケーションアクセスは、開発者コンソールでのみ構成できます。この設定により、アプリケーションで使用できるユーザーのタイプが決まります。[アプリアクセスのみ] と [アプリ + Enterpriseアクセス] という2つのオプションがあります。

Upon authorizing one of these applications in the Box Admin Console, a Service Account (AutomationUser_xxxx_@boxdevedition.com) representing the application is automatically generated. This account is an Admin-like user that can only be accessed via the API and can then be used to create user’s of the application called App Users. If an application only needs to interact with the Service Account and App Users, app only access must be selected. If an application needs to interact with managed users and their existing Box content, app + enterprise access must be selected.

たとえば、読み取り/書き込みスコープと [アプリアクセスのみ] が指定されたJWTアプリケーションが管理コンソールで適切に承認されているとします。管理対象ユーザーがアクセストークンを取得し、自分が所有するフォルダに対してAPIコールを実行すると、「Cannot obtain token based on the enterprise configuration for your app (アプリに対するEnterprise設定に基づきトークンを取得できません)」というメッセージとともに400エラーが返されます。ユーザーにコンテンツへのアクセス権限があり、適切なスコープが有効になっていて、アプリが承認されていても、選択したアプリケーションアクセスで許可されるのは、アプリケーションによるサービスアカウントとApp Userの操作のみです。

Enterprise設定と承認

Box APIに関して言えば、注意すべきEnterprise設定がいくつかあります。

アプリ全体の設定

カスタムアプリケーションは、公開アプリケーションと未公開アプリケーションという2つのカテゴリに分類されます。公開アプリケーションは、Box App Centerにあります。Box管理者は、公開アプリケーションと未公開アプリケーションをデフォルトで有効にすることによって、承認なしで使用できるようにするかどうかを決定できます。これらの設定のステータスにより、使用するアプリケーションを問題なく承認するために必要な操作が決まります。

管理コンソールの [アプリ] タブ

上記の設定に関係なく、JWTまたはクライアント資格情報許可を利用するアプリケーションを企業で使用するために、管理者はBox管理コンソールでそのアプリケーションを明示的に承認する必要があります。承認は特定時点でのスナップショットです。つまり、開発者が開発者コンソールに再度アクセスして構成を変更した場合、管理者は、生成されたアクセストークンにその変更を反映するためにアプリケーションを再承認する必要があります。

[デフォルトで未公開アプリを無効にする] の設定をオンにした場合、管理者は、認証方法としてOAuth 2.0を利用しているアプリケーションを明示的に有効にする必要もあります。

また、この設定をオンにした場合は、サーバー認証アプリの有効化も必要になります。