セキュリティ関連の用語メモ

インターネットのセキュリティ関係の単語について、調べたことをメモしておきます。

自分のためのメモなので、単語の関連性や順番に規則はありません。

認証と認可

SSOやMFAの仕組みを調べていると必ず出てくる「認証」と「認可」の違いについてまとめます。

「認証」とはサービスにログインするユーザが「誰であるかを確認・特定する」ことです。認証方法としては、パスワード認証・生体認証・SMS認証などが挙げられ、多要素認証(MFA:Multi-Factor Authentication)は、これらの認証方法を2つ以上組み合わせることを言います。

一方、「認可」とは認証済みユーザに対して、特定条件下においてリソースに対する操作権限を与えることです。ユーザAはリソースの作成・削除・閲覧が可能であるが、ユーザBはリソースの閲覧しかできないなど、ユーザ・グループに応じて操作権限を変更することが可能です。

基本的に「認証」と「認可」は相互運用することがセキュリティ上求められ、ほとんどの場合相互運用されます。それぞれの機能を実現する技術としては、下記に挙げるOAuth、OpenID Connect、SAMLが代表的です。

OAuth2.0

OAuth2.0は認可を行うためのプロトコルであり、アプリケーションが利用可能なプロトコルです。

例えば、Facebookに写真を投稿すると自動でTwitterで投稿されたことをツイートする機能に利用されています。この例では、ユーザがFacebookに対してTwitterでツイートすることを許可しており、FacebookからTwitterへのアクセスにOAuthが利用されています。

ほかにも、Googleアカウントが持っている情報(住所・連絡先等)を、異なるWebサービスに提供することを許可するときにも利用されています。

OpenID ConnectとSAML

OpenID Connect(OICD)とSAMLは認証を行うための代表的なプロトコルです。

例えば、TwitterへのログインのためにGoogleアカウントを利用できる仕組みに利用されています。TwitterにログインするユーザがAさんである、ということを認証するために、AさんのGoogleアカウントを利用されていることになります。

OICDはOAuthに認証の機能を追加する形で2014年にリリースされました。Webアプリやモバイルアプリなどに利用されることが多いサービスです。また、認証プロトコルとしてはJson Web Token(JWT)が利用されます。

SAMLは2001年に開発されたプロトコルで、ウェブベースのアプリケーションに利用されることが多いです。認証プロトコルはXMLを利用して認証情報を表します。

SSOとは?

SSO(Single-Sign On)とは、一つのID/PWで複数のサービスを利用する仕組みのことです。パスワード管理のコストが削減可能であることから、よく利用されています。

SSOの実現方法としていくつか方式がありますが、多くの場合SAML認証方式が利用されています。

ゼロトラスト

ゼロトラストとは、会社のファイアウォール内部にあったとしても、常に認証・認可を求める考え方のことです。「決して信頼せず、常に確認する」ことを前提とします。

ユーザー毎に可能なアクションを定義することで、外部から悪意のあるユーザにアクセスされても、被害を最小限に抑えることが可能になります。

SSOを実現可能なソフトウェア

SSOを自前で実装することが可能なソフトウェアとして、KeyCloakOpenAMが有名です。KeyCloakはOSSとして公開されていますが、OpenAMの最新版はOSSで公開されていないので、導入コストという意味ではKeyCloakの方が低いと考えられます。

KeyCloakは、SAML/OICD/OAuthなどの主要なプロトコルに対応しており、IdP (ID Provider)として構築することが可能です。

  • この記事を書いた人

たかさん

犬と暮らすクラウドエンジニア。GCPが好きだけど良く触るのはAWSとAzureです。

-メモ
-,