MENU

【決定版】認証と認可の仕組み。なぜ重要なのか?エンジニアが押さえておくべきセキュリティの基本を解説

「認証(Authentication)」と「認可(Authorization)」。似ているようで全く違うこの2つの概念は、システム設計やセキュリティを考える上で避けては通れない、いわば「IT世界の関所」のような存在です。

この記事では、認証と認可それぞれの仕組みについてわかりやす例で解説します。

目次

認証と認可の決定的な違い

認証と認可

【例え話】「遊園地」を例に考えてみるとよくわかります。

  • 認証(だれ?): 入園ゲートでのチケット確認。
    • 「あなたは有効なチケットを持っている本人ですね」と確認すること。
  • 認可(なにができる?): アトラクションごとの身長制限や優先パス。
    • 入園はしている(認証済み)けれど、このジェットコースターに乗る権限(認可)はあるか?」を確認すること。

入園ができても、すべての乗り物に乗れるわけじゃないのが認可のポイントです。

IdPとSPの決定的な違い

認証と認可の概念が整理できたところで、認証認可と関係の深い『IdP』と『SP』について解説します。

IdPとSPについて

  • IdP(Identity Provider): ユーザー情報を一括管理し、「この人は本人です」と証明書を出す役所のような存在。
    • 遊園地の外にあり、あなたの身元を確認して、「入園証(パス)」を発行してくれる場所です。
  • SP(Service Provider):ユーザーが実際に使いたいアプリ(Slack、Salesforceなど)のこと。IdPからの証明書を信じてログインを許可します。
    • 遊園地のことであり遊園地に入る時にIdPが発行した「パス」をチェックします。「チケット発行所(IdP)が認めたパスを持っているから、どうぞ遊園地に入ってください」と利用を許可、拒否します。

遊園地を例に出しましたが、あなたが「Slack」にログインしようとしたときの、裏の流れは以下のようになっています。

STEP
あなたがSlackなどにアクセスします。Slackは「あなたはまだログインしていないので、画面を表示できません」と判断し、あなたをIdPのログイン画面へ自動的に転送(リダイレクト)します。
STEP
IdPでの認証: 下記のようなIdPの画面(Microsoft Entra ID)が表示されます。ここであなたは「ID」と「パスワード」、場合によっては「2段階認証(MFA)」を入力します。IdPは「間違いなく本人ですね」と確認します。(認証)
STEP
トークンの発行: IdPは本人確認(認証)が取れたら、デジタルな証明書である「トークンを作成し、あなたのブラウザ経由でSlackへと届けさせます。
STEP
Slackによる検証: Slackはこのトークンを受け取ると、「この証明書は、信頼しているIdPが発行したものか?」「期限は切れていないか?」をチェック(認証)します。問題なければ、「トークンが正しいので、どうぞ!」とログインを許可します。

なぜIdPとSPが存在しているのか?

この「IdPとSPを分ける」という仕組みがなぜ重要なのか。先ほどの遊園地の例えに「SSO(シングルサインオン)」という概念を加えると、そのメリットが鮮明になります。

SSO(シングルサインオン): 1回の認証(ログイン)で、複数のアプリやサービスを利用できる仕組み。

もし提携している遊園地(SP)ごとにいちいち本人確認(認証)をしていたら、私たちは遊園地に行くたびに免許証を提示し、厳重なチェックを受けなければなりません。これはユーザーにとっても、遊園地側にとっても手間になります。

もくもく太郎

ここではよくいろんな遊園地に行く人をイメージしてください。

そこで登場するのが、このIdPの仕組みです。

  • IdPのメリット(一元管理): あなたは「IdP」という信頼できる窓口で一度だけ本人確認を済ませれば、あとはそこから発行された「パス(トークン)」を見せるだけで、提携しているどこの遊園地(SP)にも自由に入れるようになります。これがSSO(シングルサインオン)です。
  • SPのメリット(サービスへの専念): 遊園地側は、ユーザーの本人確認という面倒な業務を「信頼できるIdP」に丸投げできます。結果、遊園地は「どうやってお客さんを楽しませるか(本来の機能・認可)」というサービス作りに集中できるのです。
IdP(Identity Provider)として有名な製品
  • Microsoft Entra ID (旧Azure AD)
  • Okta
  • OneLogin

認証認可の流れ

実際にどのような流れで認証認可が進んでいくのかをもう少し細かく解説します。

IdP:遊園地のチケット発行所

SP:遊園地

STEP
ユーザが遊園地に行く前に「チケット発行所(IdP)」にあらかじめ自分の情報を登録しておく
  • なぜ事前の登録が必要なのか?
    • 遊園地の「チケット発行所」が、誰にでもパスを渡していたらセキュリティになりませんよね。
    • 登録の目的: 発行所が「あ、この人はうちの会員(社員・顧客)の『⚪︎⚪︎』さんだ」と判断するための照合データを持っておく必要があるからです。
    • メリット: 一度ここに登録してしまえば、園内の100個のアトラクション(SP)それぞれに住所や名前を登録して回る必要がなくなります。これが「一元管理」の強みです。
STEP
認証:遊園地に着くとあなたは「チケット発行所(IdP)」に行き、本人確認をしてパスをもらいます。このパスがSAMLアサーションになる。
STEP
SSO(シングルサインオン): そのパスがあれば、遊園地へと入場ができます。仮に今回入場した遊園地と提携している他の遊園地があるとした場合同じパスを使って入場することができます。
STEP
認可: ただし、「遊園地(SP)」では、「パスは持っているけど、身長が足りないからこの乗り物はダメ(認可NG)」といった判断を個別に行います。
区分管理場所保持している主な情報
IdPチケット発行所・ユーザーID(会員番号)
・氏名 / 表示名
・メールアドレス
・所属(部署・グループ)
・役職 / 権限レベル
・パスワード(本人確認用)
SP遊園地・利用可能なグループリスト
・必要な役職ランク
・個別の利用制限(例:身長、年齢)
・サービス内での固有設定

ただし、IdPはあくまで『あなたであること』を証明する専門家です。 実際にその遊園地の中でどの乗り物に乗れるか、VIPエリアに入れるかといった『権限(認可)』の話は、遊園地(SP)側が独自に管理しています。IdPはそこまで口出しをしない、という役割分担になっています。

EIAMCIAMの違いについて

さらにチケット発行所のIdPには2種類あります。

  • EIAM(Enterprise IAM)
    • Enterprise:企業
  • CIAM(Consumer IAM)
    • Consumer:顧客

EIAM(従業員向け)は、自社の社員や組織メンバーを対象とした社内システム用の仕組みです。アカウントは管理者が作成・付与した特定の人物に限定され、組織の統制を目的としています。

一方、CIAM(顧客向け)は一般消費者を対象としており、ユーザー自身が自由に会員登録を行える「セルフサインアップ」を前提とした、サービス利用の入り口となる仕組みです。

AWSでのサービス対応表
EIAM (従業員向け)AWS IAM Identity Center
CIAM (顧客向け)Amazon Cognito

遊園地の例では誰でも会員登録ができるので、CIAMのサービスを利用したものになります。

SAMLについて

IdP(チケット発行所)とSP(遊園地)は、それぞれ別の組織が作っていることがよくあります。例えば、IdPは「会社全体で使う認証システム」、SPは「外部のSaaSアプリ」といった具合です。

この時、「バラバラのシステム同士が、どうやって認証した情報を連携すればいいのか?」という課題が出てきます。そこで登場するのがSAMLです。

SAML(Security Assertion Markup Language):「誰が本人か(認証)」と「どんな権限があるか(認可)」の情報を、特定の形式(XML)で記述してやり取りするための国際ルールです。

SAMLを使ったログインプロセスは、IdPとSPの間で以下のような「手紙のやり取り」が行われています。

STEP
SP(遊園地)への到着: ユーザーがSPの門を叩きます。「入りたいです!」
STEP
SPからの誘導: SPは「お名前がわからないので、IdP(チケット発行所)へ行って証明書をもらってきてください」と、ユーザーをIdPへリダイレクト(転送)します。
STEP
IdP(チケット発行所)での本人確認: IdPはユーザーにID/PWや多要素認証を求め、本人であることを確認します。
STEP
Assertion(証明書)の発行: ここがSAMLの心臓部です。IdPは、ユーザーが本人であるという情報を「Assertion(アサーション)」という特別な形式の『封筒』に入れて、封(電子署名)をしてユーザーに渡します。

SAML Assertion(SAMLアサーション): IdPからSPに送られる「この人は認証済みですよ」という中身のデータそのもののこと(証明書そのもの)。ルール(SAML)に従って書かれた、中身の詰まったXMLファイル。つまりSAML規格で書かれたXML形式のファイルのことをSAML Assertionと読んでいる

STEP
SP(遊園地)での確認: ユーザーはその封筒をSPへ持ち帰ります。SPは、IdPの印鑑(電子署名)が正しいかを確認し、封筒の中身を読み取ります。 「ああ、このIdPからの手紙なら間違いない。〇〇さんだね。どうぞ入ってください!」と判断します。(SAML認証)

SAML認証: SAML Assertionを使ってSPが認証すること。

まとめ

最後にもう一度、この記事で出た重要な用語について整理します。

  • 認証: 「私は〇〇という本人です」と証明する行為。
  • 認可: 「あなたはここに入っていいですよ」と許可される行為。
  • IdP(認証プロバイダ): 「本人確認」を行うシステムでユーザー情報の管理役。
  • SP(サービスプロバイダ): サービスを提供し、IdPから受け取った証明書をもとに利用を許可するシステム。

多くのエンジニアが最初は混同してしまうこれらの概念ですが、認証認可を理解することで、クラウド環境のセキュリティ設計やAPI連携の仕組みが驚くほど明確に見えてきます。

この役割分担があるからこそ、私たちは安全かつ快適に、一つのIDで複数のサービスを利用できるのです。認証・認可の仕組みで迷ったときは、ぜひこの記事を振り返って、その「役割の境界線」を確認してみてください。

目次