Box API: セキュリティについて

Box Developers
Box Developer Blog
Published in
Mar 24, 2021

Box APIを初めて使用するユーザーであっても、カスタムアプリケーションの承認作業を任されているBox管理者であっても、Boxに保存されているコンテンツを保護するために実装されているセキュリティメカニズムを理解しておくことは重要です。この記事を読み終えるまでに、Box APIを操作する際のアクセス制限について理解を深めていただければ幸いです。なお、セキュリティに関して、APIはBoxウェブアプリと同じ原則および規制事項に従うこととなります。

トークン

アクセストークンの機能の元となる要素

さまざまなBox API呼び出しの中核となるのはアクセストークンです。API呼び出しにはユーザー名とパスワードを使用できないため、Boxサーバーにはユーザーの本人確認を行う手段が必要になります。アクセストークンは認証済みのユーザーを表し、ユーザーが問題なく呼び出すことができるコンテンツを決定します。Boxウェブアプリを使用する場合と同様に、問題なく操作できるのは、アクセストークンに関連付けられたユーザーが所有するコンテンツまたはコラボレータとなっているコンテンツのみです。これは、トークンのダウンスコープによってさらに制限できます。

アクセストークンの有効期限は60分のみですが、いつでも取り消すことができます。その期限が過ぎると、別の新しいアクセストークンの代わりに更新トークン(60日後または1回の使用後に有効期限が切れます) を渡すことができます。セキュリティ上の理由により、Boxでは有効期間の長いアクセストークンを許可していません。

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

アプリケーションスコープ

開発者コンソールでのアプリケーションスコープの設定

ユーザーは開発者コンソールでアプリケーションを作成する際に、アプリケーションスコープを設定する必要があります。スコープにより、Boxの150を超えるエンドポイントのうち、アプリケーションが問題なく呼び出せるものが決まります。また、スコープは、アプリケーションのアク

セストークンによって提供されるアクセス権限に反映されます。つまり、書き込みスコープを付与しても、ユーザーは、Box Enterpriseのすべてのコンテンツに自動的にアクセスできるわけではありません。アクセス権限のあるフォルダの名前変更やフォルダの新規作成などの操作が実行できるようになるだけです。たとえば、ユーザーの管理およびグループの管理のスコープだけが有効になっているアプリケーションを作成するとしましょう。フォルダの情報を取得するAPI呼び出しを実行しようとすると、そのフォルダへのアクセス権限がある場合でも、403エラーが返されます。一方、ユーザーを作成するAPI呼び出しを実行した場合、ユーザーを作成できる管理者にアクセストークンが関連付けられていれば、この呼び出しは成功します。

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

管理者または適切な権限を付与された共同管理者のみが問題なく使用できるAPIエンドポイントがいくつかありま

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

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

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

このようなエンドポイントを以下に示します。

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

開発者コンソールでのアプリケーションアクセスの設定

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

Box管理コンソールでJWTアプリケーションを承認すると、そのアプリケーションのサービスアカウント (AutomationUser_xxxx_@boxdevedition.com) が自動的に生成されます。このアカウントは管理者に似たユーザーで、APIを介してしかアクセスできません。その後、このユーザーを使用して、App Userと呼ばれる、アプリケーションのユーザーを作成することができます。簡潔に言うと、管理対象ユーザーやその既存のBoxコンテンツを操作しなければならないアプリケーションの場合は、[アプリアクセス + Enterpriseアクセス] を選択します。[アプリアクセス + Enterpriseアクセス] を選択したからといって、アプリがBox Enterprise内のすべてのコンテンツにアクセスできるようになるわけではないことに注意してください。

たとえば、読み取り/書き込みスコープと [アプリアクセスのみ] が指定されたJWTアプリケーションがあり、管理コンソールで適切に承認されているとしましょう。次に、管理対象ユーザーがこのアプリケーションのアクセストークンを取得し、自分が所有するフォルダに対してAPI呼び出しを実行します。どうなるか考えてみてください。この呼び出しは成功するでしょうか、それとも失敗するでしょうか。またその理由はわかりますか。

この呼び出しは失敗すると答えた人が正解です。この呼び出しでは、「Cannot obtain token based on the enterprise configuration for your app (アプリに対するEnterprise設定に基づきトークンを取得できません)」というメッセージと共に400エラーが返されます。ユーザーにコンテンツへのアクセス権限があり、適切なスコープと承認がすべて確認されていても、アプリケーションアクセスでアプリケーションの操作が許可されるのは、サービスアカウントとApp Userのみです。

Enterprise設定と承認

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

管理コンソールにおけるJWTアプリの承認

JWTアプリケーションを企業で使用するために、管理者はBox管理コンソールでそのアプリケーションを明示的に承認して有効化する必要があります。これを行うには、[アプリ] > [カスタムアプリ] に移動して [+] ボタンをクリックします。承認は特定時点でのスナップショットです。つまり、開発者が開発者コンソールに再度アクセスして設定を変更した場合は、管理者がその変更を有効にするためにアプリケーションを再承認する必要があります。

Box管理コンソールの [アプリ全体の設定]

カスタムアプリケーションは、公開アプリケーションと未公開アプリケーションという2つのカテゴリに分類されます。公開アプリケーションは、Boxアプリギャラリーにあります。Box管理者は、公開アプリケーションと未公開アプリケーションをデフォルトで有効にすることによって、承認なしで使用できるようにするかどうかを決定できます。これらの設定にアクセスするには、管理コンソールの [アプリ] > [カスタムアプリ] タブで⚙ボタンをクリックします。

デフォルトで公開アプリケーションを無効にするための設定を管理者が有効にする場合は、管理コンソールを使用して、次のように移動します。

[アプリ] > [Boxアプリと統合] タブ > [アプリケーションの個別管理]

有効にするアプリケーションを検索します。[フィルタをクリア] ボタンが表示されている場合は必ずクリックしてください。そうしないと、アプリケーションが見つからない可能性があります。アプリケーションの横にあるドロップダウンをクリックして [使用可能] に設定します。

デフォルトで未公開アプリケーションを無効にするための設定を管理者が有効にする場合、アプリケーションを有効にするための手順は、アプリケーションの認証方式によって異なります。

  • OAuth 2.0: 呼び出しを成功させるには、管理者がアプリケーションのAPIキーを許可リストに追加する必要があります。
  • サーバー認証 (JWT使用): 呼び出しを成功させるには、管理者がアプリケーションを承認し、上記のスクリーンショットに示すようにAPIキーを許可リストに追加する必要があります。

管理者は、デフォルトで未公開アプリケーションを無効にするための設定を有効にしない場合でも、すべてのJWTアプリケーションを承認する必要があることに注意してください。その結果、許可リストにJWTアプリケーションも追加する必要がなくなります。

まとめ

  • アクセストークンにより、アプリで問題なく呼び出せるコンテンツが決まります。
  • アプリケーションスコープにより、アプリで問題なく呼び出せるAPIエンドポイントが決まります。
  • 制限されたエンドポイントは、管理者または共同管理者のアクセストークンのみで使用できます。
  • アプリケーションアクセス (JWTのみ) により、アプリを操作できるユーザータイプが決まります。
  • Enterprise設定により、アプリケーションをデフォルトで無効にするかどうかが決まります。
  • JWTアプリがBox Enterpriseとやり取りできるようにするには、Box管理者による承認が必要です。

Please click here for the English version of this post.

--

--