付録 O. 管理者認証の手順

 

Enterprise Server での管理者認証に関する全般的な情報については 管理者の認証 を参照してください。

 

Active Directory認証

認証方法の使用の有効化、および認証者リスト内の命令のみが設定されます(auth-ads.xml設定ファイルの<enabled/>および<order/>タグ内)。

動作原理

1.管理者は以下のいずれかのフォーマットでユーザー名およびパスワードを指定します。

username

domain\username

username@domain

user's LDAP DN

2.サーバーはそれらの名前およびパスワードをデフォルトのドメインコントローラ(またはユーザー名内で指定されたドメインコントローラ)に登録します。

3.登録に失敗した場合、次の認証メカニズムへの移行が実行されます。

4.登録されたユーザーのLDAP DNが識別されます。

5.識別されたDNのオブジェクトに対してDrWeb_Admin属性が読み込まれます。FALSE値を持っていた場合、認証は失敗と見なされ次の認証メカニズムへの移行が実行されます。

6.DrWeb_AdminReadOnly属性が読み込まれます。TRUE値を持っていた場合、管理者は読み込みのみの権限を持ちます。

7.DrWeb_AdminGroupOnly属性が読み込まれます。TRUE値を持っていた場合、管理者は特定のグループのみに対する管理権限を持ちます。

8.DrWeb_AdminGroup属性が読み込まれます。この管理者によって管理されるグループのリストが含まれている必要があります。

9.この段階でいずれの属性も定義されていない場合、ユーザーが含まれているグループ内で属性を検索します。各グループに対しそれぞれの親グループがチェックされます(外から内へ)。

 

エラーが発生した場合は、次の認証メカニズムへの移行が実行されます。

 

drwschema-modify.exeユーティリティ(サーバー ディストリビューションキットに含まれています)はActive Directory内に新しいオブジェクトクラスを作成し、このクラスに対して新しい属性を定義します。

属性は Enterprise space内に以下のOIDを持っています。

#define DrWeb_enterprise_OID      "1.3.6.1.4.1"                           // iso.org.dod.internet.private.enterprise
#define DrWeb_DrWeb_OID           DrWeb_enterprise_OID      ".29690"     // DrWeb
#define DrWeb_EnterpriseSuite_OID DrWeb_DrWeb_OID           ".1"         // EnterpriseSuite
#define DrWeb_Alerts_OID          DrWeb_EnterpriseSuite_OID ".1"         // Alerts
#define DrWeb_Vars_OID            DrWeb_EnterpriseSuite_OID ".2"         // Vars
#define DrWeb_AdminAttrs_OID      DrWeb_EnterpriseSuite_OID ".3"         // AdminAttrs
 
// 1.3.6.1.4.1.29690.1.3.1 (AKA iso.org.dod.internet.private.enterprise.DrWeb.EnterpriseSuite.AdminAttrs.Admin)
 
#define DrWeb_Admin_OID           DrWeb_AdminAttrs_OID      ".1"         // R/W admin
#define DrWeb_AdminReadOnly_OID   DrWeb_AdminAttrs_OID      ".2"         // R/O admin
#define DrWeb_AdminGroupOnly_OID  DrWeb_AdminAttrs_OID      ".3"         // Group admin
#define DrWeb_AdminGroup_OID      DrWeb_AdminAttrs_OID      ".4"         // Admin's group
#define DrWeb_Admin_AttrName             "DrWebAdmin"
#define DrWeb_AdminReadOnly_AttrName     "DrWebAdminReadOnly"
#define DrWeb_AdminGroupOnly_AttrName    "DrWebAdminGroupOnly"
#define DrWeb_AdminGroup_AttrName        "DrWebAdminGroup"

Active Directoryユーザーの設定の編集は、Active Directoryサーバーにおいて手動で行われます(管理者の認証 参照)。

認証中の属性処理アルゴリズム

1.ユーザー属性が読み込まれます。

2.DrWebAdmin属性がTRUEに設定されている場合:

2.1.いくつかの属性が無く、DrWebInheritPermissions属性がTRUEに設定されている場合、足りない属性はグループから読み込まれます。属性が全て設定されるとすぐにグループのバイパスが終了します。そのため、属性は早く読み込まれるほど高い優先度を持ちます。管理者アクセスが許可されます。

2.2.いくつかの属性が無く、DrWebInheritPermissions属性がFALSEに設定されている(または定義されていない)場合、管理者アクセスは拒否されます。

2.3.全ての属性が設定されている場合、管理者アクセスは許可されます。

3.DrWebAdmin属性がFALSEに設定されている場合、管理者アクセスは拒否されます。

4.DrWebAdmin属性が定義されていない場合:

4.1.DrWebInheritPermissions属性がTRUEに設定されている場合、グループから属性が読み込まれます。以後はstep 2と同様です。

4.2.DrWebInheritPermissions属性がFALSEに設定されている(または定義されていない)場合、step 3と同様です。

LDAP認証

設定はauth-ldap.xml設定ファイル内にあります。

設定ファイルの一般的なタグは以下のとおりです。

<enabled/> および <order/> — Active Directoryと同様。

<server/> LDAPサーバーアドレスを指定します。

<user-dn/>DOS-likeマスクを使用して名前をDN(Distinguished Name:識別名)へ変換する際のルールを定義します。

<user-dn/> タグ内では、以下のワイルドカードの使用が可能です。

* は、. , = @ \ および空白を除く任意の記号のシーケンスと置き換えられます。

# は、任意の記号のシーケンスと置き換えられます。

<user-dn-expr/>正規表現を使用して名前をDNへ変換する際のルールを定義します。

以下の2つは同じルールです。
<user-dn user="*@example.com" dn="CN=\1,DC=example,DC=com"/>
<user-dn-expr user="(.*)@example.com" dn="CN=\1,DC=example,DC=com"/>

\1 .. \9 は * 記号の値を置き換える場所、またはテンプレートでの角括弧内の表現を定義します。

この原理に従うと、ユーザー名がlogin@example.comと指定されていた場合、変換後のDNは"CN=login,DC=example,DC=com"になります。

<user-dn-extension-enabled/>ユーザー名をDNに変換するために、ldap-user-dn-translate.dsextensionsフォルダから)がLuaスクリプトを実行することを可能にします。。このスクリプトはuser-dnuser-dn-exprルールの使用が試行された後、適切なルールが見つからなかった場合に実行されます。スクリプトは、パラメータを1つ(指定されたユーザー名)持ちます。スクリプトはDNを含んだストリングを返すか、または何も返しません。適切なルールが見つからず、スクリプトが無効であるかまたは何も返さない場合、指定されたユーザー名がそのまま使用されます。

変換の結果定められたDNに対するLDAPオブジェクトの属性およびその可能な値はタグによって定義されます(デフォルト値が提示されます)。

<!-- DrWebAdmin attribute equivalent (OID 1.3.6.1.4.1.29690.1.3.1) -->
<admin-attribute-name value="DrWebAdmin" true-value="^TRUE$" false-value="^FALSE$"/>
 
<!-- DrWebAdminGroupOnly attribute equivalent (OID 1.3.6.1.4.1.29690.1.3.2) -->
<readonly-admin-attribute-name value="DrWebAdminReadOnly" true-value="^TRUE$" false-value="^FALSE$"/>
 
<!-- DrWebAdminGroupOnly attribute equivalent (OID 1.3.6.1.4.1.29690.1.3.3) -->
<grouponly-admin-attribute-name value="DrWebAdminGroupOnly" true-value="^TRUE$" false-value="^FALSE$"/>
 
<!-- DrWebAdminGroup attribute equivalent (OID 1.3.6.1.4.1.29690.1.3.4) -->
<groups-admin-attribute-name value="DrWebAdminGroup"/>

true-value/false-value パラメータの値として、正規表現が指定されます。

定義されていない管理者属性の値が存在し、設定ファイル内で<group-reference-attribute-name value="memberOf"/>タグが設定されている場合、memberOf属性の値はこの管理者が含まれているDNグループのリストであると見なされ、必要な属性の検索はActive Directoryの場合と同様にそのグループ内で実行されます。