👩‍💻

#15 Webサービスのセキュリティの基礎知識:「認可」

2024/07/31に公開

はじめに

近頃、Webサービスにおける個人情報漏洩のニュースを目にする機会が多くありました。
そこでWebサービスのセキュリティの基本的な概念である「認証」と「認可」について、前後半に分けて備忘録としてまとめていきたいと思います。
今回は、その後半として「認可」の概念と、認可の管理として用いられるアクセス制御方式の種類と特徴について取り上げたいと思います。

認可とは

Webサービスにおける認可は以下のように説明されます。

認証されたユーザーの権限に基づいて、特定のリソースへのアクセスを許可します。権限は1つ以上の属性によって定義されます。属性とはユーザーのプロパティまたは特性のことです。たとえば、「Marc」はユーザーで、「会議の発言者」は属性です。

つまり、認可とは「認証を通過した人に認めた権限」であり、「アクセス制御によって操作が認められた範囲」と考えることもできます。
認証という前提の元に認可があるということは、Webサービスのセキュリティ概念を考える上での基本になります。

認証と認可を区別する理由

「認証と認可の区別がない」ということは「認証を通過したユーザには全ての権限が付与されている」と考えることができます。
閲覧、作成、編集、削除などあらゆる権限が認証後ほぼ無差別に付与されたとなれば、安全なWebサービスを提供することはできません。
認証と認可が区別されていない場合に想定される危険は様々にあります。
例えば、認証を通過したユーザは

  • Webサービスに登録されている他人の住所やキャッシュカード番号など、個人情報を自由に閲覧できる
  • 他のユーザになりすまし、スパムなどの迷惑行為ができる
  • 他のユーザの投稿などを自由に編集・削除できる

など。
実際にここまで区別のないWebサービスがあるとは思えませんが、不正アクセスによる情報漏洩などの要因として、認証と認可の曖昧さがその一端を担っていることは理解しておくべきでしょう。

アクセス制御方式の種類

「認可」を管理するための要となるのがアクセス制御方式です。
セキュアなWebサービスを提供するためには、サービスに合ったアクセス制御方式を適切に運用していく必要があります。
以下でアクセス制御方式の種類とその特徴を確認していきます。

任意アクセス制御

DAC(Discretionary access control)とも呼ばれ、各ユーザが制御権限を持つ方式。管理者による一元的な管理は行いません。
最も一般的なアクセス制御方式であるとされ、ファイルなど作成者自身が誰に対してアクセスを許可するかを設定するため、管理者の介入が必要なく、管理の手間は少ないです。
組織としてアクセス制御を行う場合、統一されたセキュリティルールに則って個々人で正しく運用する必要が求められます。

強制アクセス制御

MAC(Mandatory access control)とも呼ばれ、システム担当者など決められた人間だけがアクセス制御の権限を持つ方式。
セキュリティ強度の高さから、機密情報を取り扱う際はこのMACの使用が強く推奨されています。

ロールベースアクセス制御

RBAC(Role-base access contorol )とも呼ばれ、ユーザ個人ではなく、グループごとにアクセス権限を付与する方式。
役割(ロール)に応じてユーザをグループに加えることでアクセス制御を行います。
メリットとして、ロールに基づいてアクセス権を付与することができるため、保守や監査などが行いやすいことが挙げられます。
個人単位でアクセス権限を制御する必要がないので、権限管理を効率的に行うことができます。

属性ベースアクセス制御

ABAC(Attribute-base access contorol )とも呼ばれ、ユーザやデータの機密性に応じてアクセス権限を付与する方式。
所属組織や職務といったユーザの持つ属性だけなく、時刻や場所などを指定したアクセス制御を行うことも可能です。
メリットとして、きめ細かくアクセスを制御できるため、組織のニーズに合わせた柔軟なアクセス権限の管理を実現できることが挙げられます。

アイデンティティーベースアクセス制御

IBAC(Identity-based access control)とも呼ばれ、「認証」と「認可」の二段階に分けてアクセス制御を行う方式。
第一段階としてアクセス要求者の認証を行い、アクセスが許可されているユーザかどうかを判別します。
第二段階では、誰からのどんな要求であればアクセスを許可するのかをまとめた「アクセス制御リスト」に基づいて、認証を通過したユーザのアクセス要求が、リストで許可された種類のものであるかを判別します。

おわりに

今回は、Webサービスのセキュリティとして基本的な概念である「認可」と、アクセス制御方式の種類についてまとめてみました。
それぞれのアクセス制御方式の具体例などに関しては、今回の記事では収まりきらないと考え、取り上げませんでした。
機会があれば、実装例などと併せてまとめていきたいと思います。

前後半に分けて「認証」と「認可」の概要について取り上げてみました。
これらの記事が、Webサービスにおけるセキュリティへの理解の一助となることができれば幸いです。

以上です。閲覧ありがとうございました。

出典:

Discussion