---
title: "最小権限の原則とは？データベースの参照権限・更新権限の違い【基本情報技術者試験】"
description: "最小権限の原則を、データベースの参照権限・更新権限・管理者権限の違いから整理します。検索・表示だけを行うアプリケーションに必要な権限と、基本情報技術者試験で過剰権限を見抜く判断軸を解説します。"
last_modified_at: "2026-07-18"
canonical_url: "https://stemtazoo.github.io/fe/least-privilege-database-access/"
section: "fe"
---

## まず結論

**最小権限の原則とは、利用者やプログラムに、処理に必要な最低限の権限だけを与える考え方です。**

データベースを検索して結果を表示するだけのアプリケーションなら、必要なのは**参照権限だけ**です。

| アプリケーションの処理 | 必要な権限 |
|---|---|
| 検索・表示 | 参照権限 |
| 登録・変更・削除 | 更新権限 |
| テーブル全体の管理 | 管理者権限 |

試験では、次の一文を判断軸にします。

> **検索・表示だけなら参照権限。使わない更新・削除権限は与えない。**

## 直感的な説明

最小権限の原則は、仕事に必要な鍵だけを渡す考え方です。

資料を読むだけの担当者に、書き換えや廃棄までできる鍵を渡す必要はありません。

```text
資料を読む
→ 閲覧用の鍵だけ

資料を追加・変更する
→ 編集用の鍵も必要

すべて管理する
→ 管理者用の鍵が必要
```

データベースでも同じです。

検索アプリケーションの目的が、利用者情報を検索して画面へ表示することだけなら、データを変更する権限は不要です。

```text
検索する
＋
表示する
↓
データを読むだけ
↓
参照権限
```

## 定義・仕組み

最小権限の原則は、英語で **Principle of Least Privilege** といいます。

利用者、アプリケーション、プロセスなどに対し、業務や処理を実行するために必要な範囲だけ権限を与えます。

### 参照権限

データベースのレコードを読み出すための権限です。

SQLでは、主に `SELECT` に対応します。

```sql
SELECT 利用者名, メールアドレス
FROM 利用者
WHERE 利用者ID = 'A001';
```

この処理はデータを検索するだけで、内容を書き換えません。

```text
読む
検索する
表示する
→ 参照権限
```

### 更新権限

レコードの登録、変更、削除を行う権限です。

SQLでは、主に次の命令に対応します。

```text
INSERT
→ 登録

UPDATE
→ 変更

DELETE
→ 削除
```

例えば、利用者情報を変更するアプリケーションでは更新権限が必要です。

```sql
UPDATE 利用者
SET メールアドレス = 'new@example.com'
WHERE 利用者ID = 'A001';
```

### 管理者権限

参照や更新に加え、テーブルの作成・変更・削除、権限設定など、より広い操作を行える権限です。

```text
データを読む
データを書き換える
テーブルを管理する
権限を設定する
→ 管理者権限
```

管理者権限は便利ですが、通常のアプリケーションへ安易に与えると、事故や攻撃が起きたときの被害が大きくなります。

## 科目Aでどう出る？

科目Aでは、アプリケーションの目的を読んで、どの権限を与えるべきか選ぶ問題が出ます。

判断するときは、問題文に書かれた動詞を確認します。

```text
検索する・表示する
→ 参照権限

登録する・追加する
→ 更新権限

変更する・修正する
→ 更新権限

削除する
→ 更新権限

テーブルや権限を管理する
→ 管理者権限
```

### 典型的な切り分け

検索結果を表示するだけのアプリケーションについて考えます。

| 選択肢 | 判断 |
|---|---|
| 管理者権限 | 権限が強すぎる |
| 更新権限 | 登録・変更・削除は不要 |
| 参照権限 | 必要な操作と一致する |
| 参照権限と更新権限 | 不要な更新権限を含む |

正しいのは、参照権限だけです。

### 「できる」ではなく「必要最小限」で選ぶ

管理者権限を与えても、検索処理自体は実行できます。

しかし、問題で問われているのは、単に動作するかではなく、**セキュリティ管理上適切か**です。

```text
処理できる
≠
セキュリティ上適切
```

試験では、必要な権限を含む選択肢ではなく、不要な権限を含まない選択肢を選びます。

## どんな場面で使う？

### 検索専用アプリケーション

利用者情報や商品情報を検索して表示するアプリケーションには、参照権限だけを与えます。

```text
検索画面
↓
SELECTだけ実行
↓
参照権限だけ付与
```

### 登録・変更機能を持つアプリケーション

利用者登録や住所変更などを行うアプリケーションでは、必要なテーブルと操作に限って更新権限を付与します。

```text
利用者登録
→ INSERT

住所変更
→ UPDATE
```

更新できる対象も、必要なテーブルや列へ絞ることが重要です。

### バッチ処理

定期的にデータを集計するバッチ処理は、集計結果を読み出すだけなら参照権限で足ります。

結果を別のテーブルへ保存する場合は、保存先に対する登録権限が必要です。

```text
集計だけ
→ 参照権限

集計結果を保存
→ 参照権限＋必要な登録権限
```

### 管理ツール

テーブルの構造変更や権限設定を行う管理ツールには、管理者権限が必要になる場合があります。

ただし、通常利用するアプリケーションとはアカウントを分けるのが基本です。

```text
通常アプリ
→ 必要最小限の権限

管理ツール
→ 管理作業に必要な権限
```

## よくある誤解・混同

### 参照権限と更新権限を両方与えた方が便利？

便利に見えても、不要な権限を与えることになります。

```text
現在必要な操作
→ 検索・表示だけ

将来必要になるかもしれない操作
→ 今は付与しない
```

将来、更新機能が追加された時点で、必要な権限を追加します。

### 画面に表示するのは「更新」ではない？

画面への表示は、データベースの内容を書き換える操作ではありません。

```text
データベースから読み出す
→ 参照

画面に表示する
→ アプリケーション側の処理
```

したがって、検索結果を表示するだけなら参照権限で十分です。

### 管理者権限ならすべてできるので正しい？

実行できるかどうかだけなら、管理者権限でも処理できます。

しかし、権限が強すぎるため、最小権限の原則に反します。

```text
必要な権限
→ 参照だけ

付与した権限
→ 参照・登録・変更・削除・管理

結論
→ 過剰な権限
```

### 権限が強いと何が危険？

アプリケーションに脆弱性があった場合、攻撃者はそのアプリケーションが持つ権限を悪用できる可能性があります。

```text
参照権限だけ
→ 情報を読まれる危険

更新権限もある
→ 情報を書き換えられる危険

削除権限もある
→ 情報を消される危険
```

権限を絞ることで、問題が起きたときの影響範囲を小さくできます。

### 認証と認可の違い

権限の問題では、認証と認可も混同しやすいです。

```text
認証
→ 誰なのかを確認する

認可
→ 何をしてよいか決める
```

データベースの参照権限や更新権限を設定することは、認可に当たります。

## まとめ（試験直前用）

- **最小権限の原則**は、必要最低限の権限だけを与える考え方
- **検索・表示だけ**なら参照権限
- **登録・変更・削除**を行う場合に更新権限が必要
- 管理者権限は通常のアプリケーションには強すぎる
- 必要な権限が含まれるだけでなく、**不要な権限を含まないこと**を確認する

試験直前には、次の順で考えます。

```text
何をするアプリか確認
↓
必要な操作を特定
↓
不要な権限を除外
↓
最小の権限を選ぶ
```

> **検索・表示だけなら参照権限。使わない更新・削除権限は与えない。**
