-1

「セキュリティ」とは、データアクセス権を意味します。例:

  • Andrewは、フランスのクライアントへの読み取り専用アクセスのみを持っています
  • ブライアンはフランスとドイツのクライアントを更新できます
  • チャールズは管理者であり、彼はすべての権利を読んで更新しています

各レイヤーの潜在的な議論を見ることができます。

  1. データアクセス層

    DALは、ユーザーがアクセスできるクライアントのみを公開し、ユーザーが許可されていないことを行おうとすると、適切なエラーをビジネスレイヤーに渡します。

    これにより、上位層が簡素化され、データのごく一部にしかアクセスできないユーザーのデータトラフィックを減らすことができます。

  2. ビジネスレイヤー

    これはビジネスロジックが存在する場所であり、セキュリティの実装方法に関する完全な知識を持っているのはビジネス層だけだからです。

  3. UIレイヤー

    正接の議論は、UIレイヤーが認証を処理するレイヤーであるためです。より強力な議論は、アプリケーションにUI以外の機能がある場合です。つまり、毎日のP&Lの計算、アーカイブなどです。これらのプログラムにはセキュリティコンテキストがなく、架空の「システム」ユーザーを作成することはメンテナンスの悪夢です。

  4. 別のレイヤー?

    3のどこかにスロットがありますか?

レイヤーXが大規模な3層アプリケーションに最適であると私に納得させる説得力のある議論を探しています。'それは'答えに依存します;-)を控えてください。

ありがとう。

4

1 に答える 1

0

これは主観的なトピックかもしれません。それでも、外部ソース(サービスの境界を越えるデータなど)を決して信頼しないという原則に従います。通常、最新のアプリケーションは、通常はサービス指向であるため、古いクライアントサーバーの3層モデルとは少し異なります(Webサーバーもサービスとして機能しているようです)。

これにより、クライアントへのアクセスチェックの委任が除外されます。クライアントは許可されたアクセスについて知っており、この情報を使用して異なる動作をする可能性があります(たとえば、一部の機能を提供しないなど)が、最終的にはサービス(サーバー)が決定することだけです。カウントを許可します。

一方、データベースまたはDALは低すぎます。これは、ほとんどのチェックが一部のビジネスロジックまたは外部情報(ユーザーロールなど)にも依存しているためです。したがって、これはデータレイヤーを除外します。私たちの環境では、データアクセスはチェックを行わない信頼できるスペースです。最終的に、DB層とアプリケーションサーバーは論理ユニットを形成し(Roger Sessions Software Fortressesの本によると、これを要塞と呼ぶことができます)、サービスの境界は存在しません。ただし、アプリ層が別のサービスにアクセスする場合は、受信したデータのチェックを実行する必要があります。

要約すると、Roger Sessionsの本のコピーを入手することをお勧めします。これは、大規模なアプリケーションやセキュリティやその他の問題に対処する方法について考えるための貴重な情報と情報を提供するためです。

于 2012-08-15T20:27:32.340 に答える