アクセス制御

アクセス制御についてまとめてみました。
自分が分かるように引用してまとめたので間違いなどがあれば指摘してください。

# アクセス制御
**アクセス制御：** 別名、アクセスコントロール。
コンピュータやシステム、データ、ネットワークなどに正規に承認されていない部外者からのアクセスを制限すること、またはその機能を指す。

アクセス制御が必要である理由は大きく分けて２つ。
①外部からの攻撃を阻止による情報漏洩を防ぐため
②内部不正による情報漏洩を防ぐため
以上のことからアクセス制御はコンピュータやネットワークのセキュリティを保つために必要な機能の一つである。

![スクリーンショット 2023-06-03 11.07.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2785154/db6b12a2-7eb2-5d4d-c0cd-afb7df05549e.png)

### アクセス制御の利用シーン
アクセス制御の利用シーンには、主に以下2つがある。
▲一般ユーザーに公開されているサイト
▲社内のネットワーク

**一般ユーザーに公開されているサイト**
まずは一般ユーザーに公開されているサイト。
通販サイトや会員サイトなどでも、アクセス制御は実施されている。たとえば、ログイン機能などはまさにアクセス制御の典型例の1つ。

会員制サイトは、最初にIDとパスワードを入力しなければ、その後の操作がおこなえい。これはログインさせることによって、ユーザーが本当に会員登録した人なのかを判別している。
他にも管理者用と一般ユーザー用のログイン情報を分けているパターンもあり、管理者用のIDとパスワードでログインすると、管理者しか閲覧できないデータや機能が使えるといったものである。

**社内ネットワーク**
次に社内ネットワークにおけるアクセス制御の利用。
どの企業にも機密情報や役員など一部の人間で共有したい情報があり、そうした情報を管理する際にも、アクセス制御が役立つ。

会社の機密情報を一例に考えてみよう。
社長や役員など、一部の人間のみにしか知られたくない情報があったする。アクセス制御を利用すれば、役員以上の一部のユーザーのみアクセス許可することが可能。その結果、他の社員のアクセスは拒絶されるため、重要情報を限られた人間のみで閲覧できる。
つまり、アクセス制御は外部からの攻撃を防ぐだけでなく、内部情報を管理する役割も持っている。


## アクセス制御の基本機能「認証・認可・監査」
アクセス制御の方法は、「認証・認可・監査」という3つのモデルから成り立っており、それぞれに役割が異なりる。モデルごとの特徴をよく理解しつつ、どこまでの権限をユーザーへ与えるか検討したうえで採用することが重要。

### 認証
「認証」はユーザーを識別する機能で、アクセスしてきたユーザーが許可されたユーザーであるか判断する、または利用者が確かに本人であることを確認すること。
ログインできる権限を与えられたユーザーだけがシステムやサービスへの操作が許可される。

認証の方法は、以下のようなものがある。
![スクリーンショット 2023-06-03 11.16.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2785154/1758b107-7d8f-a9d4-a393-246e498c3290.png)


### 認可
「認可」は、アクセスが許可された（認証された）ユーザーごとに、操作できる範囲を制限する機能、または正しい権限を与えること。
管理者があらかじめ定められていた条件を満たしたユーザーのみアクセスを許可する制御方法で、管理者が定めた条件はアクセスコントロールリスト（ACL）と呼ばれ、ユーザーは、あらかじめ定められたアクセスコントロールリストに基づき、操作できる範囲内で操作ができる。
認証でアクセス可能なユーザーを振り分け、認可によってさらに細かくアクセス可能な範囲を分ける、というイメージ。

ユーザーの判別が行われるのはネットワークルーターを通過するタイミングで、コンピューターが自動的に判別する仕組みとなっている。


### 監査
監査は、認証や許可といった処理の過程で発生したログを記録する機能。
ログを記録することでアクセス制限の検証や改善に役立てられます。（ログとは、ここでは主にユーザーのアクセス履歴を指す。）

アクセス履歴を記録することでアクセスを認証や認可したものの正当性を検証し、改善に役立て、より精度の高い制御が可能になる。アクセス制御は事前に設定したルールや条件によって、不正なアクセスを防止するシステム。つまり、条件設定の精度が高いほど、セキュリティの向上につながる。

加えて、仮に不正アクセスが起こった場合も、発生時のログが確認できる。発生時の記録を見れば、どのように不正アクセスされてしまったのか、「原因の分析」と「対策の検討」が可能になる。

監査では具体的に、以下のようなことが確認できる。
・誰が（ユーザー）
・いつ（アクセス日時）
・どのように行動したか（アクセスや操作履歴）
こうした情報をもとに、精度の高い条件設定ができる


## アクセス制御方式（アクセス制御モデル）の種類
アクセス制御には以下の種類がある。
①任意アクセス制御（DAC）
②強制アクセス制御（MAC）
③役割ベースアクセス制御（RBAC）
④属性ベースアクセス制御（ABAC）
⑤アイデンティティベースアクセス制御 (IBAC)

### 任意アクセス制御（DAC）
任意アクセス制御は、最も一般的なアクセス制御方式。英語で「Discretionary access control」と言い、頭文字を取ってDACとも呼ばれる。管理者が一元で管理するのではなく、各ユーザー自身が制御権限を持っている。

一般社員が何かファイルを作成した場合が例にあげられる。任意アクセス制御では、作成されたファイルに誰がアクセスできるか、「作成した一般社員自身」が決められる。
つまり、管理者が「そのファイルはアクセス制御する」と設定するのではなく、ユーザー自身が「このファイルはうちのチームだけアクセスできるようにしよう」と設定する。

各ユーザーが自分で管理するため、セキュリティ担当者や管理者がいちいちアクセス制御に介在する必要がないの管理に手間が掛からない点はメリットと言える。
ただし、会社内のセキュリティルールが統一されていないと、ユーザーによって管理方法がバラバラになってしまうのでセキュリティを担保することが難しい点もある。

後述する他の制御方式と合わせて、利用するのがおすすめ。

### 強制アクセス制御（MAC）
こちらは任意アクセス制御よりも、セキュリティ強度が高い制御方式。「Mandatory access control」の頭文字を取ってMACとも呼ばれる。システム管理者や担当者など、決められた人が制御ルールを定める。

つまり、任意アクセス制御のように、ユーザー自身が勝手にアクセス許可を変えることはできず、ファイルを作成した一般社員自身が、「このファイルはうちのチームのみで共有しよう」といったルール設定はできない。
変更できるのは、システム管理者など決められた人のみ。

逆に言えば、機密情報を取り扱う際は、この制御方式を使えば、機密情報の編集を防止するだけでなく、閲覧自体を拒否することも可能なのでこの強制アクセス制御の活用が強く推奨される。強制アクセス制御は、任意アクセス制御よりはるかに自由が制限される分、セキュリティ強度は高くなる。

### 役割ベースアクセス制御（RBAC）
役割ベースアクセス制御（Role-based access control）は、任意と強制アクセスの中間に位置する制御方式。役割（権限）ごとに、アクセス範囲や利用できる機能に制限をかけている。アクセス制御の基本機能の認可が、とても活用されている制御方式と言える。

各ユーザーは役割ごとに振り分けられており、その役割で許可されている範囲でしかアクセスや機能の利用ができない。

たとえば、ある会社の社内ポータルサイトがあったとする。
以下のような役割とそれに応じた機能が想定できる。
経理：社員全員の給与情報や勤怠情報にアクセス可能
役員：役員のみが閲覧できる機密情報にアクセス可能
一般社員：自分の勤怠管理や給与情報、その他全社員が閲覧できる情報のみアクセス可能

上記はあくまで例だが、このように役割によって閲覧できる情報の範囲が異なる。こうした役割ごとにアクセス許可を振り分けられるのが、役割ベースアクセス制御の特徴。


### 属性ベースアクセス制御（ABAC）
属性ベースアクセス制御は英語で「Attribute-based access control」と言い、略してABACと呼ばれる。この制御方式は、先ほどの役割ベースアクセス制御と近い方式と言える。
属性ベースアクセス制御は、文字通り属性によってアクセス制御を行う。

主な属性の内容は以下の通り。
・アクセス元のIPアドレス
・部門
・役職
・時間

よくある例としては、社内ネットワークからのみアクセスできるようにする形。これはIPアドレスという属性をもとに、アクセス許可を判断している。

また、特定の時間によってアクセス許可を振り分けるパターンもある。たとえば、あるサイトにアクセスできるのは10時〜17時まで。それ以外の時間はアクセスできないといった制御。

役割ベースは「設定した役割ごと」の制御だが、属性ベースは「IPアドレスや時間などの属性」をもとに、さらに細かくアクセス制御ができる。
ただし、細かく制御される分、情報を入手する側になった時に、若干アクセスしづらくなる、という難点もある。

### アイデンティティベースアクセス制御 (IBAC)
アイデンティティベースアクセス制御（Identity-based access control）は、第一段階でアクセス要求者の認証を行い、第二段階でアクセス対象になる物が格納されているシステムのアクセスコントロールリストを用いてアクセス制御を行う方法。

アクセスコントロールリストに列挙してあるものであればアクセスの許可をするし、列挙してないものであれば拒否する。

アクセスを許可するかどうかを、ユーザによって判断するのが第一段階。次に、そのアクセスの種類によって許可するかどうかをさらに絞りこんだのが第二段階。この二段階でアクセス制御を行うのが、アイデンティティベースアクセス制御。


## アクセス制御システムを企業に導入する際のポイント
企業のアクセス制御では、それぞれの部署が扱う情報やシステムに応じて、どの程度の制御を設定するべきかを決める必要がある。
最初に、どの制御方式を利用するのか、どのような基準で権限を付与するのかを検討することが必要で、その際には、業務効率とセキュリティのバランスがとれた、適切なアクセス制御を設定することが大切。
管理する対象の範囲、不正アクセス検知時の対応なども考慮して、自社の業務に合ったシステムを選ぶ。


# 参考記事
https://cybersecurity-jp.com/column/51422#%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E5%88%B6%E5%BE%A1%EF%BC%88%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%EF%BC%89%E3%81%A8%E3%81%AF

https://jp.ext.hp.com/techdevice/cybersecuritysc/34/

https://office110.jp/security/knowledge/technology/access-control