• 締切済み

認証と承認の仕組みについて

現在、認証と承認の仕組みに興味を持っており、色々と調べているところなのですが、イマイチ具体的に理解できないので質問させていただきます。 そもそも、認証はIDとパスワード等の組み合わせが正しいか、そうでないのか、で、本人であるかどうかを確認するプロセスのことだと理解しています。 承認は、認証されたユーザに対して、どの様な権限が与えられているのか、また、その与えられた権限を承認するのが、承認のプロセスだと理解しています。 それぞれ、認証と承認は別々のサービスとして存在する(例えば、認証はKerberos認証やNTLM認証、承認はLDAPやActiveDirectory)と認識しています。 ここで疑問なのですが、認証されたユーザと、そのユーザが持っている権限はどのように・どうやって関連づけられているのでしょうか? 例えば、 認証サーバAを設置し、LDAPやActiveDirectoryなどのディレクトリサービスを提供するサーバBを設置し、何らかのサービスを提供しているサーバCを設置している様な環境で、Cにログインするための認証を認証サーバAに問い合わせ、そのサービスに対する権限情報をサーバBから取得し、やっと、サーバCのサービスが利用できる、といった様な流れになるのでしょうか? また、認証サーバAはどうやって、問い合わせのあったサービスを利用する権限をそのユーザが持っていて、またどの程度の権限がある、と言う様な判断はどうやって行われているのでしょうか。 よろしくお願い申し上げます。

みんなの回答

  • aton
  • ベストアンサー率47% (160/334)
回答No.3

No.2です。 ==<No.2お礼より引用>== いずれの場合においても、認証と承認(アクセス権情報の格納)は1つのマシン内で管理する必要がありそうですね。 質問の主旨から行くと、認証と承認を別のマシンで管理する事は可能か、と言うことだったので、皆様のご回答から行くと、難しいのかもしれませんね。 ==<引用終了>== そういう仕組みはあります。 例えばSAMLがそうです。 http://www.atmarkit.co.jp/fsecurity/rensai/webserv04/webserv01.html の真ん中辺り,図1にSAMLのフレームワークが書かれていますが,SAMLにはAuthentication Authority, Attribute Authority, Policy Decision Pointの3つのオーソリティがあり,Authentication Authorityが認証を,Policy Decision Pointが承認を担っています。 SAMLの仕様は http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=security にあるので,興味があれば調べてみてください。

参考URL:
http://www.atmarkit.co.jp/fsecurity/rensai/webserv04/webserv01.html
paradium-
質問者

お礼

だんだんとわかってきた気がします。 色々と詳しくありがとうございました。 もう少し色々勉強してみたいと思います。

  • aton
  • ベストアンサー率47% (160/334)
回答No.2

認証=authentication(以下authn), 承認=authorization(以下authz), と解釈して話を進めます。 Authzのアクセス権を管理する方法は,大きく ・アクセス対象(ファイルなど)のメタ情報として管理する ・アクセス者(ユーザー)のメタ情報として管理する の2方式に分けられると言われています。 質問の主旨は,おそらく,後者の場合,そのアクセス権情報がどこに格納されていて,どういうタイミングで利用されるのか,ということだと思います。 実際のところ,これについては,実現方式によりさまざまです。 一番単純なやり方としては,例えば,認証機能をもつディレクトリーサーバー(LDAPやActiveDirectory,質問のA+B)に,ユーザー毎にどのサービスへのアクセス権があるかを格納しておき,authzの時にサービス提供サーバー(C)から,ディレクトリーサーバーに問い合わせる,という方法が考えられます。または,authnが終わったら,そのユーザーが所有するアクセス権をオブジェクト化し,有効期限(例えば認証セッション終了時)が終わるまで持ち回るという方法も考えられます。この場合,サービス利用毎にいちいちディレクトリーサーバーに問い合わせる手間が省けますが,アクセス権オブジェクトが複製されたり有効期限を越えて利用されたりする危険があるのでセキュリティ的には弱くなります。 またこのバリエーションとして,Kerberosのように,KDC内に Authentication Server (AS, 認証サーバー)と Ticket-Granting Server (TGS,チケット交付サーバー)を持ち,ASが認証(Aの役割)を,TGSがアクセス権オブジェクトの生成(Bの役割)を行うようなシステムもあります。Kerberosの場合,ユーザーはまず利用したいサービス(C)を決め,当該サービスの利用券(アクセス権オブジェクト)をKDCに要求します。KDCはユーザーをASで認証した後TGSに転送し,TGSは当該ユーザーの当該サービスへの利用券をユーザーに交付します。ユーザーはそれを持ってサービスCに行き,サービスを受ける,という流れになります。 (参考URLはKerberosの解説) このように,ユーザーのメタ情報としてのアクセス権をどこに格納し,どのタイミングで取り出すかについては,いろいろな方法があり,一概にこれ,と答えることはできません。

参考URL:
http://www.ne.jp/asahi/yokohama/juk/krb/krb-open.html
paradium-
質問者

お礼

大変わかりにくい質問の仕方をしてしまって、すいませんでした。 概ね理解できました。ご回答ありがとうございました。 いずれの場合においても、認証と承認(アクセス権情報の格納)は1つのマシン内で管理する必要がありそうですね。 質問の主旨から行くと、認証と承認を別のマシンで管理する事は可能か、と言うことだったので、皆様のご回答から行くと、難しいのかもしれませんね。 ありがとうございました。

  • Palikari
  • ベストアンサー率42% (61/142)
回答No.1

詳細と正確なところは後続の回答者におまかせして、以下概略です。 認証は記述の通り、ユーザ認証のことであり、 承認は記述の通り、アクセス権の確認のことで合っていると考えます。 また、認証では加えて、 ユーザと所属する組織/グループ等情報を関連付けます。 認証とアクセス権確認は別機能ではありますが、 別個のサービス(service)として起動していたかは不確かです。 なお、Kerberos認証やNTLM認証,LDAP,ActiveDirectory(AD)は全て認証側のものです。 LDAPやADは認証サーバ/ディレクトリサーバ, Kerberos認証やNTLM認証は認証機構、Kerberos認証はADで、NTLM認証はNTで使われていたりします。 ファイルやフォルダのアクセス権などの情報は、 フォルダに記録されています。 #UNIXはそう。Windowsも同じと思いますが未確認。 よって、 ログイン時に、ディレクトリサーバ等でユーザとパスワードのマッチングを確認、 かつユーザと所属組織/グループ等の情報が関連付けられ、 ファイル等アクセス時に、ファイル等の所持するアクセス権情報を確認して、アクセスが承認されます。 基本はこれで間違っていないはずなのですが、 すいません、裏づけのための確認をしていません。

paradium-
質問者

補足

ご回答ありがとうございます。 補足で疑問点があるのですが、ACL等を利用した様な一元管理を行うような場合は、どういった流れで認証・承認がおこなわれるのでしょうか? フォルダにアクセス権が記録されている場合は、なんとなくイメージしやすいのですが、各種リソースに対するアクセス権等はどうやって、どこの誰が管理しているのでしょうか?

関連するQ&A

専門家に質問してみよう