認証(Authentication)
ユーザーやシステムの身元を確認することです。
RESTアーキテクチャの認証には、公開鍵証明書を使用することが多いです。
例:自分のサービスに対してログインしようとした人が、そのサービスに登録されている本人であるかを確認する
認証のプロトコル
- OIDC(OpenID Connect)
- SAML(Security Assertion Markup Language)
- BASIC認証
多要素認証(Multi Factor Authentication)
認証の3要素である「知識情報」・「所有情報」・「生体情報」のうち、2つ以上の要素を組み合わせて認証することです。
知識情報の例
- パスワード
- PINコード(Personal Identification Number)
- 秘密の質問
所有情報の例
- 携帯電話
- ハードウェアトークン
- ICカード
生体情報の例
- 指紋
- 声紋
- 静脈
認可(Authorization)
認証されたユーザーが特定のリソースや操作を実行する権限を持っているかどうかを確認することです。
例:ユーザーが自分のメールアドレスを変更しようとしたとき、そのユーザーがその操作を行う権限を持っているかを確認する
認可のプロトコル
- OAuth2.0(Open Authorization2.0)
認可の権限管理
役割ベースアクセス制御(Role Based Access Control)
ユーザーにロールを割り当て、そのロールに基づいてアクセス権限を管理する方法です。
例:「管理者」と「一般ユーザー」の2つのロールを割り当て、管理者はすべての操作を行うことができるが、一般ユーザーは一部の操作しか行うことができない属性ベースアクセス制御(Attribute Based Access Control)
ユーザーに対して属性を設定し、その属性情報に基づいてアクセス権限を管理する方法です。
RBACより運営のコストとが高く、属性情報を適切に管理しなければならないです。 例:アクセスしたユーザーの「年齢」・「性別」・「役職」・「デバイス情報」など個人の情報に基づいてアクセス権限を管理任意アクセス制御(Discretionary Access Control)
ファイルやディレクトリの所有者が、そのファイルやディレクトリに対するアクセス権限を任意に設定できる方法です。強制アクセス制御(Mandatory Access Control)
システム管理者が、ユーザーに対してアクセス権限を強制的に設定する方法です。
ユーザーは任意に権限を設定することはできず、システム管理者が設定した権限に従ってアクセスする必要があります。