web-dev-qa-db-ja.com

認証と承認

私は this リンクを参照しました、そして私はそれを知っています

認証=ログイン+パスワード(あなたは誰ですか)

承認=許可(許可されていること)

私の質問は:[〜#〜] a [〜#〜]のログインIDとパスワードを取得するとします[〜#〜] b [〜#〜]は、Aよりも高い権限を持ちます。これは、AがBとして誤って認証されると、AがBのすべてのアクセス権限を取得するため、承認が侵害されます。

では、承認の全体的なポイントは何ですか?

認証に依存していますか、それとも独立していますか?

18
Sachin Yadav

aがBとして誤って認証されると...

最小限の安全性を備えたシステムでは、これはそのようにはなりません。システムの観点から見ると、ユーザーBではなく、ユーザーBが自分自身を認証しています。誤って認証されることはなく、実際のログインとパスワードを使用していました。これは、資格情報の盗難の単純なケースです。任意の2FAを使用してシステムを強化できますが、システムは意図したとおりに機能しています。

ユーザーAが自分の資格情報を使用し、何らかの形でユーザーBのプロファイルになると、誤って認証されます。この場合、攻撃は認証バイパスまたは特権エスカレーションである可能性があり、システムにパッチを適用する必要があります。

それでは、承認の全体的なポイントは何ですか?

あなたが誰であるかに応じて特権を分離する。誰かがあなたの資格情報を使用できる場合、それは本質的にあなたであるので、承認はまだ保持されます。

認証に依存していますか、それとも独立していますか?

これは独立しています(ただし、多くの承認システムは認証情報に依存することを選択しています)。認証はあなたが誰であるかについてです。承認とは、ユーザーが持つ特権です。たとえば、シングルサインオンシステムを使用してIDを適用し、別のシステムを使用してアクセス許可を適用する必要があります。

42
ThoriumBR

認可と認証は同じコインの両面であり、認可は認証に依存する場合もありますが、常に依存するわけではありません。どうやって?

  1. ログインがなくても、Stack Exchangeの訪問者は質問と回答を表示できます。ここでは訪問者は回答を表示する権限を持っていますが、確かにそのための認証は必要ありません。したがって、ここでは承認は認証とは無関係です。

  2. ログインしたユーザーは、質問を投稿したり質問に答えたりする権限を持っていますが、そのためには適切なログインを提供する必要があるため、ここでの権限は認証に依存しています。

簡単に言えば、もちろん認証が危険にさらされている場合、認証も妨げられます。

8
amit thakur

一般的に言えば、2つだけではなく、4つすべて(認証、承認/アクセス制御、アカウンティング、監査)を検討することをお勧めします。

$ 5レンチメソッドに確実に対抗できる認証方法はありません(Webcomic XKCDで説明されているように、ログインするまで$ 5レンチで誰かに当たったところです)。ただし、パスコード+1などの方法はあります。 $ 5レンチが使用されていることをシステムに警告できます。それは邪悪な世界です。

認証は、他に依存しない唯一のステップです。それが最初に来なければならないことを意味します。認証は、明示的(あなたが誰であるかを教えてください)または暗黙的(バンカー内からログインしたハードウェア証明書で確認できます)にすることができます。個人(コンサルタントリン)または「役割」(任意の殺人犯)として認証できます。法的に規制された企業では、監査が機能する可能性があるため、ほとんどの場合、明示的な個人認証を使用する必要があります。グループまたは役割のアカウントが必要であると思われる場合は、問題の理解に問題がある可能性があります。これは、単に表示されていない別の解決策があるためです。

承認(話すときに認証と承認を簡単に組み合わせることができるため、しばしばアクセスコントロールと呼ばれます)は、認証に基づいてプロセスに権限を付与することです(ログインしたユーザーは、プロセッサの観点からは別のプロセスです)。たとえば、J。ランダムLusrの場合、ホームフォルダにファイルを作成する権限しか得られない場合があります。しかし、企業の貴族であるBiff Snidelyの場合は、共有の部門フォルダにファイルを作成する権利もあるかもしれません。ディスク容量やその他のリソースに制限が適用される場合とそうでない場合があります。

アカウンティングは基本的に、ログインプロセスが使用したリソースの記録です。非常にシンプル(Joeは今日1000プロセッササイクルを使用し、1Gのストレージを使用しました)または非常に精巧です(Biffはこれらのコマンドをこの順序で正確に発行しました) )。これは監査の基礎です。非常に優れたアカウンティングはシステムからデータを送信するため、ハッキングされてもローカルシステムから削除できません。

監査はより大まかに定義されています。これは、ユーザーが実行を許可されていないアクションを実行しようとする試みを監視する自動プロセスである場合もあれば、その日のコマンドログなど、地下で調べられたノームのチームなど、さまざまなものがあります。監査のポイントは、5ドルのレンチで認証を無効にできることです。そのため、ユーザーがハードパスワードを持っているので、誰もセキュリティを破ったことがないと想定することはできません。ユーザーが誤ってアクセス制御を破る方法を見つけられないと思い込むことさえできません。実際、それは常に起こります。

6
Medievalist

考慮すべきもう1つのことは、OPが行っている仮定は、「AがBとして誤って認証されると、AはBのすべてのアクセス特権を取得する」ということです。すべてのシステムとユースケースで必ずしも正しいとは限りません。

たとえば、二重制御ワークフローのシステムでは、最初に認証する必要がありますが、所有者から特定のリソースへのアクセス許可も付与されます。所有者は、私が認証されることを除いて、他の多くの要因による許可を私に与える場合と与えない場合があります。たとえば、一部のリソースは特定の時間帯にのみアクセスする必要があります。

私が主題について考えるのに使用する良いアナロジーはこれです:

  1. 認証は、建物のキーカードを持っているようなものです。

  2. 承認とは、特に建物のカードが盗まれて、私を認識していない誰かによって警備されている部屋に近づいた場合、私が中に入ることは許可されない可能性があるためです。

2
Amit

あなたの質問は、堅牢な認証メカニズムの必要性と、しばらくの間多くの人がパスワードを「死んだ」コントロールと見なしてきた理由を強調しています。さらに、これが多要素認証が採用される理由です。

質問を回してみましょう。組織に、財務HR、管理、その他の情報をホストするシステムがあるとします。これで、人物Aは(正しく)認証され、管理情報の表示のみを許可されます。私たちがあなたの議論を受け入れて、「まあ、私たちは認証を信頼することができないので、許可を気にしないでください」と言うなら、彼女にそれを見る権限が与えられてはいけないとしても、財務Aへのアクセスを人物Aに与えるでしょう。

1
Sean E. M.

認証はこの質問に答えます。これを行う方法は多数ありますが、方法は関係ありません。他の方法より明らかに効果的または信頼できる方法もあります。あなたはそれを二つの質問として見ることもできます:あなたは誰ですか?どうすれば確認できますか?

承認はこれらの質問の1つに答えます:あなたは何ができますか? Xを行うことは許可されていますか?認証なしでこれを行うことができますが、なぜあなたはそうしますか?ポイントは何ですか?

1
Rob F

私にとって、最も簡単な説明は次のとおりです。

認証はあなたが誰であるかをシステムに伝えます。承認は、システムに実行できることを伝えます。

クライアント[〜#〜] a [〜#〜]のログインとパスワード[〜#〜] b [〜#〜]を取得し、authenticateas [〜#〜] b [〜#〜]、「だまされた」サーバーへのすべての意図と目的のために- [〜#〜] a [〜#〜]は現在[〜#〜] b [〜#〜]であり、許可されていますあらゆることを行う[〜#〜] b [〜#〜]ができること。

承認は認証とは独立して機能しますが、認証は承認の前提条件であると私は主張します。システムがあなたが誰であるかを知らない場合、システムはどのようにして何ができるかを知ることができますか?

1
Bahrom

あなたの仮説は本当に意味がありません。あなたは、誰かが自分のものよりも多くの権限を持つ他の誰かの資格情報を取得したために何かが危険にさらされていると言っています。誰かが他人の資格情報を単独で入手したからといって、それは危険にさらされています。彼らがより高い、同じ、またはより少ない権限を持っているかどうかは重要ではありません。

管理者が通常のユーザーの資格情報を取得する状況を考えてみてください。これで、そのユーザーになりすますことができます。以前は、確かに、おそらくそのユーザーと同じように操作できたかもしれませんが、おそらく誰かが監査して、それがユーザーとして機能している管理者であることを確認できるログがあるでしょう。ただし、誰かがそのユーザーの資格情報を持っている場合、ログにはそのユーザーであることが示されます。

認可のポイントはまだ残っています。さまざまなユーザーがさまざまなことを実行できるようにする必要があり、許可なしでは達成できません。

Amit thakurが answer で述べているように、認証されていないユーザーでも、ログインしていないときにこのWebサイトで質問と回答を表示するなどのタスクを実行する権限があります。したがって、承認と認証は別々の概念ですが、密接に関連しています。

0
Captain Man

多くのアパートのある建物に滞在し、ゲートの警備員があなたが実際にそこに住んでいることを知っているが、あなたが住んでいる正確なアパートを知らない場合を想像してください。中に入ることができます。

ただし、建物に入ることができるからといって、目に見えるアパートに入ることができるわけではありません。したがって、自分のアパートにアクセスすると、アクセスが承認されているため、承認が行われます。

0
codein

承認/承認は認証に依存していますが、認証の方法は承認のレベルによって異なるため、それらはまだ完全に異なる概念です。

認証をバイパスして、通常のユーザーとして認証することはできますが、ルートアクセスに到達するには、多要素認証を実行する必要があります。

0
s h a a n

私の質問は次のとおりです。AがAよりも高い権限を持つBのログインIDとパスワードを取得するとします。AがBとして誤って認証されると、AはBのすべてのアクセス権限を取得するため、認証が侵害されます。

必ずしも。承認は、いくつものことに結び付けることができます。たとえば、ユーザーBは、デバイスの種類(コンピューターとモバイルデバイス)に基づいて異なる承認プロファイルを取得する場合があります。または、ネットワークへの接続方法(有線と無線とVPN、本社と支社など)に応じて、プロファイルが異なる場合があります。または、最後の例として、日付/時刻によって、ユーザーに適用される認証プロファイルが決まる場合があります。

つまり、ユーザーAユーザーBの資格情報を使用できるからといって、必ずしも同じ特権が付与されるわけではありません。

では、承認の全体的なポイントは何ですか?

さまざまな要因に応じて、ユーザー/デバイスが実行できることを集中管理できます。これにより、ユーザーに権限を一貫してより確実に適用できます。

従業員の職責が変更された場合(昇格、職位の変更など)、特権を調整する必要があるとします。権限を変更する必要がある各リソースに「触れる」ことで、そうすることができます。または、これらすべてのリソースが中央のAAAサーバーを使用している場合は、特権を中央で変更するだけで、それらの特権をすばやく簡単に付与できます(繰り返しの変更を行うときに、リソースの不足や人為的エラーが発生しにくくなります)。多くの場合、これはグループメンバーシップをユーザーアカウントに変更/追加するのと同じくらい簡単です。

または、同じ特権を持つ必要がある従業員が複数いるとします。それらはすべて同じ許可プロファイルを共有できます。繰り返しになりますが、管理が簡単で、彼らの経験がすべて一貫していることを確認します。

認証に依存していますか、それとも独立していますか?

ある意味では、両方。承認は認証の後に行われるため、一方で認証は(「オープン認証」であっても)認証が行われるまで行われません。

一方、承認は認証とはまったく別のプロセスです。認証では、適用する許可プロファイルを決定する場合としない場合があります。

0
YLearn