> ## Documentation Index
> Fetch the complete documentation index at: https://developer.box.com/llms.txt
> Use this file to discover all available pages before exploring further.

# セキュリティ

export const Link = ({href, children, className, ...props}) => {
  const localizedHref = localizeLink(href);
  return <a href={localizedHref} className={className} {...props}>
      {children}
    </a>;
};

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

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

## アクセストークン

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

<Frame center shadow border>
  <img src="https://mintcdn.com/box/QQwa5kSyD2QPHaV1/images/guides/security/token_vendiagram.png?fit=max&auto=format&n=QQwa5kSyD2QPHaV1&q=85&s=610b685d7d7ea4eec4c4f2d529270ae7" alt="アクセストークンコンポーネント" width="1182" height="900" data-path="images/guides/security/token_vendiagram.png" />
</Frame>

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

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

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

## スコープ

<Frame center shadow border>
  <img src="https://mintcdn.com/box/QQwa5kSyD2QPHaV1/images/guides/security/scopes.png?fit=max&auto=format&n=QQwa5kSyD2QPHaV1&q=85&s=5b139b771d8cd354fa0c4b7bde6407e9" alt="スコープ" width="2019" height="900" data-path="images/guides/security/scopes.png" />
</Frame>

<Link href="/guides/api-calls/permissions-and-errors/scopes">スコープ</Link>は、アプリケーションの作成時に[開発者コンソール][dc]で構成されます。スコープにより、150を超えるエンドポイントのうち、アプリケーションが問題なく呼び出せるものが決まります。

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

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

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

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

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

* <Link href="/reference/resources/user">ユーザー</Link>の作成、削除、またはその情報の取得
* <Link href="/reference/resources/group">グループ</Link>の作成、削除、または変更
* ユーザーまたは企業の<Link href="/reference/resources/event">イベント</Link>の表示

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

* <Link href="/reference/resources/classification">セキュリティ分類</Link>の操作
* <Link href="/reference/resources/legal-hold-policy">リーガルホールドポリシー</Link>と<Link href="/reference/resources/legal-hold-policy-assignment">割り当て</Link>の操作
* <Link href="/reference/resources/retention-policies">リテンションポリシー</Link>と<Link href="/reference/resources/retention-policy-assignment">割り当て</Link>の操作

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

<Frame center shadow border>
  <img src="https://mintcdn.com/box/_tECS-SYBYV9K-kZ/images/guides/security/app_access.png?fit=max&auto=format&n=_tECS-SYBYV9K-kZ&q=85&s=281af458d76111f94d884796c2ce52a8" alt="アプリケーションアクセスの設定" width="2603" height="900" data-path="images/guides/security/app_access.png" />
</Frame>

サーバー認証 (<Link href="/guides/authentication/jwt">JWT</Link>使用) または<Link href="/guides/authentication/client-credentials">クライアント資格情報許可</Link>を利用するアプリケーションのアプリケーションアクセスは、[開発者コンソール][dc]でのみ構成できます。この設定により、アプリケーションで使用できる<Link href="/platform/user-types">ユーザーのタイプ</Link>が決まります。\[**アプリアクセスのみ**] と \[**アプリ + Enterpriseアクセス**] という2つのオプションがあります。

Box管理コンソールでこれらのアプリケーションのいずれかを<Link href="/guides/authorization">承認</Link>すると、そのアプリケーションを表す<Link href="/platform/user-types/#service-account">サービスアカウント</Link> (`AutomationUser_xxxx_@boxdevedition.com`) が自動的に生成されます。このアカウントは管理者に似たユーザーで、APIを介してしかアクセスできません。その後、このユーザーを使用して、<Link href="/platform/user-types/#app-user">App User</Link>と呼ばれる、アプリケーションのユーザーを作成することができます。サービスアカウントとApp Userしか操作する必要がないアプリケーションの場合は、\[**アプリアクセスのみ**] を選択します。<Link href="/platform/user-types/#managed-users">管理対象ユーザー</Link>とその既存のBoxコンテンツを操作する必要があるアプリケーションの場合は、\[アプリ + Enterpriseアクセス] を選択します。

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

## Enterprise設定と承認

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

<Frame center shadow border>
  <img src="https://mintcdn.com/box/QQwa5kSyD2QPHaV1/images/guides/security/global_integration_settings.png?fit=max&auto=format&n=QQwa5kSyD2QPHaV1&q=85&s=91e48711f37deca71b27f45245a1aade" alt="統合全体の設定" width="1184" height="1116" data-path="images/guides/security/global_integration_settings.png" />
</Frame>

Platformアプリケーションは、公開アプリケーションと未公開アプリケーションという2つのカテゴリに分類されます。公開アプリケーションは、[Box統合][appcenter]に表示されます。Box管理者は、公開アプリケーションと未公開アプリケーションをデフォルトで有効にすることによって、承認なしで使用できるようにするかどうかを決定できます。これらの設定のステータスにより、使用するアプリケーションを問題なく<Link href="/guides/authorization">承認</Link>するために必要な操作が決まります。

<Frame center shadow border>
  <img src="https://mintcdn.com/box/QQwa5kSyD2QPHaV1/images/guides/security/jwt_apps_cam.png?fit=max&auto=format&n=QQwa5kSyD2QPHaV1&q=85&s=10875c240e957d0273c62574174db5f1" alt="管理コンソールの [アプリ] タブ" width="3584" height="1196" data-path="images/guides/security/jwt_apps_cam.png" />
</Frame>

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

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

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

[perm]: https://support.box.com/hc/ja/articles/360044196413-コラボレータの権限レベルについて

[waterfall]: https://support.box.com/hc/ja/articles/360043697254-フォルダの権限について

{/* i18n-enable localize-links */}

[coadminperm]: https://support.box.com/hc/ja/articles/360044194393-共同管理者権限の付与と変更

[dc]: https://app.box.com/developers/console

/platform-app-approval

[appcenter]: https://app.box.com/services
