# 認可制御診断機能のセットアップ

認可制御診断機能では、以下に示す認可制御に関する不備を検出することができます。

- マルチテナントアプリケーションにおける認可制御不備
  - たとえば、「あるテナントに属するユーザーが他のテナント内のデータにアクセスできてしまう」というケースがこれにあたります。
- ロールベースアクセス制御の不備
  - たとえば、「管理者権限を持つユーザーしか利用できない機能が一般のユーザーからアクセスできてしまう」というケースがこれにあたります。

本ページでは、これらの不備を洗い出すために必要なセットアップ手順について説明します。

## テナント名の設定

「マルチテナントアプリケーションにおける認可制御不備」を検出するためには、以下に示す2つの認証設定が必要です。

1. スキャン時にデフォルトで利用され、かつ、テナント名が設定されている認証設定
2. 1 とは異なるテナント名が設定されている認証設定

これらの情報を登録する際は、以下に示す手順に従ってください。

### 新たに認証設定を作成する場合

まず、「認証設定」ページ (`https://cloud.shisho.dev/[orgid]/applications/[appid]/preconditions`) に移動し、「アカウント別設定を追加」ボタンをクリックします。

![認証設定のトップページ](/docs/ja/_md-assets/ee08aaeb66-precondition-top.png)

クリック後表示されるページ (`https://cloud.shisho.dev/[orgid]/applications/[appid]/preconditions/new`) において、「テナント名」のフォームにそのアカウントが所属するテナント名を入力してください。このとき、入力するテナント名は対象のアプリケーションにおいて利用しているテナントの識別子と一致するようにしてください。

また、当該アカウントをスキャン時にデフォルトで利用する認証設定として登録する場合は、「この認証設定をスキャン時にデフォルトで利用する」のチェックボックスをオンにしてください。

![フォーム](/docs/ja/_md-assets/890dd927e0-precondition-form.png)

なお、認証設定自体の作成方法は[Webアプリケーションの初期設定の流れ](/docs/ja/g/getting-started/register-web-applications/first-time-web-application-setup/index.md)を参照してください。

### 既存の認証設定を更新する場合

まず、「認証設定」ページ (`https://cloud.shisho.dev/[orgid]/applications/[appid]/preconditions`) に移動し、「アカウント別設定」タブをクリックします。

![アカウント別設定](/docs/ja/_md-assets/7d7b7f3625-precondition-account.png)

次に、表示される表の中で更新したい認証設定を選択し、「更新」ボタンをクリックしてください。

「更新」ボタンをクリックすると、認証設定の編集画面が表示されます。この画面において、「テナント名」のフォームにそのアカウントが所属するテナント名を入力してください。このとき、入力するテナント名は対象のアプリケーションにおいて利用しているテナントの識別子と一致するようにしてください。

入力が完了したら、画面下部の「保存」ボタンをクリックしてください。

![更新フォーム](/docs/ja/_md-assets/b71fe577f1-precondition-update.png)

## ロールの設定

「ロールベースアクセス制御の不備」を検出するためには、ロールが設定された認証設定が必要です。

このような認証設定を登録する際は、以下に示す手順に従ってください。

### 新たに認証設定を作成する場合

まず、「認証設定」ページ (`https://cloud.shisho.dev/[orgid]/applications/[appid]/preconditions`) に移動し、「アカウント別設定を追加」ボタンをクリックします。

![認証設定のトップページ](/docs/ja/_md-assets/ee08aaeb66-precondition-top.png)

クリック後表示されるページ (`https://cloud.shisho.dev/[orgid]/applications/[appid]/preconditions/new`) において、「ロール名」のフォームにそのアカウントに付与されたロール名を入力してください。

なお、認証設定自体の作成方法は[Webアプリケーションの初期設定の流れ](/docs/ja/g/getting-started/register-web-applications/first-time-web-application-setup/index.md)を参照してください。

### 既存の認証設定を更新する場合

まず、「認証設定」ページ (`https://cloud.shisho.dev/[orgid]/applications/[appid]/preconditions`) に移動し、「アカウント別設定」タブをクリックします。

![アカウント別設定](/docs/ja/_md-assets/7d7b7f3625-precondition-account.png)

次に、表示される表の中で更新したい認証設定を選択し、「更新」ボタンをクリックしてください。

「更新」ボタンをクリックすると、認証設定の編集画面が表示されます。この画面において、「ロール名」のフォームにそのアカウントに付与されたロール名を入力してください。

入力が完了したら、画面下部の「保存」ボタンをクリックしてください。

![更新フォーム](/docs/ja/_md-assets/b71fe577f1-precondition-update.png)

## 認可ポリシーの設定

認証設定が完了したら、次に認可ポリシーの設定に進みます。認可ポリシーでは以下に示す2つの情報を登録する必要があります。

- 認可マトリクス
  - ロールとエンドポイントの組み合わせに対して、許可または拒否の設定を行います。
- 許可条件
  - どのようなレスポンスが返ってきた場合、それに対応するリクエストが許可されたと判断すべきかの基準を表します。

### 認可マトリクスの設定

まず、「認可診断設定」ページ (`https://cloud.shisho.dev/[orgid]/applications/[appid]/authorizationpolicy`) に移動し、「設定する」ボタンをクリックします。

![認可診断設定のトップページ](/docs/ja/_md-assets/2c5aee5dbf-authz-top.png)

次に、表示されるページ (`https://cloud.shisho.dev/[orgid]/applications/[appid]/authorizationpolicy/edit/matrix`) において認可マトリクスを設定します。当該ページでは、「どのエンドポイントを診断対象とするか」および「あるエンドポイントとあるロールの組み合わせに対してアクセスを許可するべきか」を設定することができます。

まず、診断対象にしたいエンドポイントの「診断対象」列のチェックボックスをオンにしてください。

![診断対象のチェックボックスをオンにする](/docs/ja/_md-assets/3a24f10165-authz-config-1.png)

次に、その行のラジオボタンを操作し、各ロールについて「許可」または「拒否」を設定してください。たとえば、以下は `http://example.test/books/{bookId}` に対する DELETE リクエストについて、`admin` ロール以外からのリクエストが拒否されるべきであるときの設定例です。

![許可/拒否の設定例](/docs/ja/_md-assets/ab660dba08-authz-config-2.png)

設定が完了したら、画面右上の「保存」ボタンをクリックしてください。

### Shisho AI を活用した認可マトリクスの自動設定

認可マトリクスを設定する際、Shisho AI を活用して認可仕様を自動的に推測することができます。Shisho AI は、各ロールの説明文を分析し、それに基づいてエンドポイントへのアクセスが許可されるべきかどうかを推測します。

Shisho AI を利用する場合は、「認可マトリクス」画面 (`https://cloud.shisho.dev/[orgid]/applications/[appid]/authorizationpolicy/edit/matrix`) において、「Shisho AI で認可仕様を推測」ボタンをクリックしてください。

![Shisho AI で認可仕様を推測](/docs/ja/_md-assets/a87eee2882-shisho-ai-button.png)

クリック後、サイドオーバーが表示されます。サイドオーバー内には各ロールの説明文を入力するフォームが表示されるので、それらのフォームに各ロールの説明文を入力してください。

なお、説明文の生成自体を Shisho AI に依頼することができます。本機能を利用する場合は、各フォームの右上にあるボタンをクリックしてください。

![Shisho AI による説明文の生成](/docs/ja/_md-assets/9c2a182b25-shisho-ai-sparkle-button.png)

入力が完了したら、画面下部の「実行」ボタンをクリックしてください。Shisho AI は入力された説明文を分析し、それに基づいてエンドポイントへのアクセスが許可されるべきかどうかを推測し、認可マトリクスを自動的に更新します。

![Shisho AI による認可仕様の推測](/docs/ja/_md-assets/e61a495056-shisho-ai-done.png)

### 許可条件の設定

まず、「認可診断設定」ページ (`https://cloud.shisho.dev/[orgid]/applications/[appid]/authorizationpolicy`) に移動し、「設定する」ボタンをクリックします。

![認可診断設定のトップページ](/docs/ja/_md-assets/2c5aee5dbf-authz-top.png)

次に、表示されるページにおいて「許可条件タブ」をクリックし、設定画面 (`https://cloud.shisho.dev/[orgid]/applications/[appid]/authorizationpolicy/edit/matcher`) に移動します。

遷移先のページにおいて、許可条件を設定することができます。許可条件は「レスポンスのステータスコードが一致するか」、「レスポンスに特定の文字列が含まれるか」および「レスポンスが正規表現にマッチするか」を基準に設定することができます。

また、許可条件は複数設定することができ、それぞれの条件は AND か OR のいずれかで結合することができます。

たとえば、以下は「ステータスコードが `200` であるか、レスポンスに `Success` という文字列が含まれている場合に対応するリクエストが許可されたと判断する」場合の設定例です。

![許可条件の設定例](/docs/ja/_md-assets/4837f8f9ce-authz-matcher.png)

設定が完了したら、画面右上の「保存」ボタンをクリックしてください。
