7

LDAP と Java での役割ベースのセキュリティの実装に取り​​組んでいます。具体的には、LDAP で表す必要がある次のオブジェクトがあります。

  • ユーザー
  • ユーザーの企業グループ - 人事、財務など
  • 権限 - DOCUMENT_READ、DOCUMENT_MODIFY など。
  • 役割 - ADMIN、GUEST など

ロールは基本的に権限のグループであり、ユーザーまたはユーザーのグループに割り当てることができます。

LDAPでそれらを次のように表すことを考えていました:

  • ユーザー - userPassword 属性を持つ Person および uidObject クラス。
  • ユーザーのグループ - ユーザーが配置されている organizationUnit クラス。
  • ロール - groupOfNames オブジェクト クラス。
  • パーミッション - これについてはわかりません。おそらく groupOfNames クラスもそうです。

アイデアは、ユーザーまたはグループから、このユーザーまたはグループが持つ役割のリストにすばやくアクセスできるようにすることです。ユーザーとグループを役割の「メンバー」属性に入れることができることはわかっていますが、すべての役割をスキャンして、このユーザーがリストされている役割を見つける必要があります。Person オブジェクトに「member」属性のようなものを持たせる方法はありますか?

一般に、LDAP での適切な役割ベースのセキュリティ実装を知っている人はいますか? このテーマに関する適切なドキュメントやチュートリアルが見つかりませんでした。現在、ApacheDS を LDAP サーバーとして使用していますが、提案は受け付けています。

4

3 に答える 3

9

ユーザー: inetOrgPerson

Collections: organizationUnit ですが、LDAP ディレクトリに組織構造を複製しようとすることに注意してください。これは通常、組織が変化し、ユーザーが組織内を移動するため、間違いです。ou属性の使用を検討する必要があります。

役割: 組織の役割。役割のグループを groupOfUniqueNames として使用しましたが、これは間違いでした。役割が単純に再帰的になるように、organizationRole を使用し続けるべきでした。

パーミッション: これは単なるロール、またはロールの属性です。CMA を使用する場合、それらは LDAP ではなく web.xml で定義されます。

私が言ったように、LDAP ツリーに組織を反映させようとしないでください。独自の組織を反映するようにします。必要に応じて複数の値を持つ属性を使用します。私は主に LDAP 自体内の層、または上記のルールを破った場所で organizationUnit を使用します ;-)

OpenLDAP には参照整合性オーバーレイがあり、これにより多くのことを簡単に行うことができます。

Matt Butcher によるMastering OpenLDAPには、LDAP 構造に関する非常に優れたヒントがいくつかあります

于 2011-11-05T23:13:22.010 に答える
2

もう 1 つのオプション: 属性ベースのアクセス制御 ( ) を確認してください。ABAC は RBAC の進化形です。属性 (ユーザー、リソース、コンテキストに関するラベル) とポリシーを使用して、許可されるものと許可されないものを決定します。

例: Department==sales の role==manager を持つユーザーは、PO の金額 <= ユーザーの承認制限の場合、 type==purchase order のドキュメントで action==edit を実行できます。

ABAC の詳細については、NIST の Web サイトを参照してください。

于 2015-07-28T11:47:33.183 に答える