Monday, March 2, 2015

Understanding Basic OpenLDAP Server

               အခု article ကတော့  Linux environment မှာ အသုံးပြုတဲ့ Directory Server "openldap" ဖြစ်ပါတယ်။ Title မှာပြောထားတဲ့ အတိုင်းပဲ "BASE" :D ဆိုတဲ့ အတွက် အရမ်း heavy ကြီးတွေ ပါမှာ မဟုတ်တဲ့ အကြောင်း ကြိုပြောထားပါမယ်။


What is LDAP ?


                 ကျွန်တော်တို့ ldap ကို အများအားဖြင့်  Windows Active Directory လိုမျိုး Authentication ပိုင်းမှာ အဓိက အသုံးပြုပါတယ်။ ဒါပေမယ့် တစ်ခြား အသုံးပြုနိုင်တဲ့ features တွေကို ကြည့်မယ် ဆိုရင် Address Book Directory Server အနေနဲ့ အသုံးပြုပါတယ်။ Address Book Directory Server မျိုးဆိုတာ တစ်နည်းအားဖြင့် customers များရဲ့  name, address, ph number, postal address  စတဲ့ informations တွေကို တစ်နေရာထဲမှာ စုစည်းထားတဲ့ နေရာ ဖြစ်ပါတယ်။



Hierarchical Directory


                  ပြောချင်တာကတော့ ldap directory server ရဲ့ တည်ဆောက်ပုံ ဖြစ်ပါတယ်။ အလွယ်ပြော ရရင် DNS Tree Structure ပုံစံ လိုမျိုး top level ကနေ အောက်ကို branches ပုံစံ ဖြန့်ဆင်း သွားတဲ့ပုံစံ ဖြစ်ပါတယ်။ ဥပမာ Company  တစ်ခု ရဲ့ ပုံစံ အတိုင်း  Chair Man  ကနေ အောက်ကို Director, GM, Manager and office staffs တွေအထိ structure ဆင်းသွားတဲ့ပုံစံဖြစ်ပါတယ်။ အခုလိုမျိုး hierarchical design က formless ဖြစ်ပြီ: user က မိမိစိတ်ကြိုက် Tree Structure ကို သတ်မှတ် နိုင်ပါတယ်။


LDAP Schemas, Objectclasses and Attributes


                  ကျွန်တော်တို့ အခု ldap မှာ အဓိက အရေးကြီးဆုံး အပိုင်း ဖြစ်ပါတယ်။ ဒီ schemas, object classes, attributes တွေမရှိပဲနဲ့ ဘာ entry မှာ ldap မှာ တည်ဆောက်လို့မရပါ။ ဒီအခု ပြောမယ့် အကြောင်း ကို အရင်ထဲက လဲ ကြားဖူးရင်ကြားဖူးမယ် အကယ်၍ Active Directory advance ပိုင်းကို လေ့လာဖူးတယ် ဆိုရင်တော့ သိပါလိမ့်မယ်။ ဘာလို့ ဆိုတော့ Windows က အရမ်းကို လွယ်ကူအောင် ဖန်းတီးထားတဲ့ အတွက် အခြေနေမပေးရင် သိစရာ မလိုအောင် ကျော်သွား ကြမိလို့ပါ။

                   Active Directory မှာ ကျွန်တော်တို့ user account တစ်ခု ဆောက်ကြမယ်ဆိုရင် right click - create new user ဆိုရင် box တစ်ခု ကျလာပြီး အဲ့ဒီမှာ First Name တွေ Last Name တွေထည့် မယ် ပြီးရင် password ပေးမယ် ဆိုပြီးသွားပြီး နောက် ထို user ကို Right Click - Properties ၀င်လိုက်မယ် ဆိုရင် အဲဒီမှာ User information တွေထည့်လို့ရတဲ့ box ထဲမှာ "Muliple Tabs" ကို တွေ့ရမှာ ဖြစ်ပါတယ်။ ထိုနေရာမှာ ရှိတဲ့ information တွေကို users ဖြည့်နိုင်အောင် အဓီက background ကနေ Microsoft Active Directory Schema က supporting ပေးထားတာ ဖြစ်ပါတယ်။ ဆိုတော့ domain services တင်လိုက်ကထဲ က တစ်ခါထဲ ပါလာပြီးသား ဖြစ်တဲ့အတွက် ဖြစ်ပါတယ်။

                  အခု ဒီ Linux based ldap မှာတော့ schemas​ တွေကို manual import လုပ်ရပါတယ်။ အရင်ဆုံး attributes အကြောင်းကို ပြောမယ်ဆိုရင် နားလည်လွယ်အောင် user create လုပ်တဲ့ အချိန်မှာ ပေးရတဲ့ first name, last name, common name တွေ နောက်  ph numbers, home address, organization name တွေ စတာ တွေကို "Attributes" တွေ ဟုသတ်မှတ်ပါတယ်။ ထို "Attributes" တွေ သတ်မှတ်နိုင်အောင် ပြုလုပ်ပေးထားတာကတော့ "Object Classes" တွေပဲ ဖြစ်ပါတယ်။ တစ်နည်းအားဖြင့် ဥပမာ sn (surname), cn (common name) တွေ သတ်မှတ်နိင်ရန်အတွက် "Person" ဆိုတဲ့ Object Class ကို ကြေညာထားပေးရပါတယ်။ နောက် ဥပမာ authentication အတွက်  ဆိုလျှင် လိုအပ်သော "Attributes" တွေက  uid ( User ID), gid (Group ID), loginshell, home directory စတဲ့ "Attributes" တွေလိုအပ်ပြီး ထို Attributes တွေကို အသုံးပြုနိုင်ရန် "Posix Account"ဆိုတဲ့ object class ကို ကြေညာပေးထားရပါမယ်။ အခု ဥပမာ ပေးသွားတာတွေက "Users and Authentication" ဖက်ကိုပဲ အလေးပေး ပြောသွားတာဖြစ်ပြီ: တစ်ကယ်တန်း networking services တွေ ဖြစ်တဲ့ dhcp, dns တွေကို လဲ  "ldap" နဲ့ integration လုပ်ရမယ်ဆိုလျှင် ဒီ "ldap" schema ထဲမှာ လာပြီးသတ်ဆိုင်တဲ့ schemas တွေကို import လုပ်ရမှာ ဖြစ်ပါတယ်။ 

               အခု နောက်ဆုံးပြောစရာကျန်တာက "Schema" ပဲဖြစ်ပါတယ်။ Schema files တွေသည် read-only file အမျိုးအစားဖြစ်ပါတယ်။ သူကတော့ ရှင်းပါတယ် အခု ဒီသတ်မှတ်ရမည့် "attributes" တွေ "object classes" ကို သိမ်းဆည်းထားတာ ဖြစ်ပါတယ်။ ထိုကြောင့် တစ်နည်းအားဖြင့် " sn (surname)", "cn ( common name) ", နောက် "ou name (organization unit) ",  စတဲ့ attributes တွေ သတ်မှတ်ချင်ရင် ကိုယ့် entry မှာ "Person" Object Class ကြေညာ ရမှာ ဖြစ်ပြီး ထို Object Class ရဖို့ရန် မိမိ LDAP မှာ "core.schema"ဆိုတဲ့ schema file ကို  import လုပ်ထားရမှာ ဖြစ်ပါတယ်။ ထိုမှ သာ အသုံးပြုနိုင်မှာ ဖြစ်ပါတယ်။ 



Inheritance, Mandatory, Optional in the Object Class


                သိထားရမည့် အက​ြောင်းအရာ တစ်ခုဖြစ်ပါတယ်။ ပထမဆုံး "inheritance" အကြောင်းကတော့  object class တွေဟာ inheritance structure သွားနိုင်ပါတယ်။ ဥပမာ "C" ဆိုတဲ့ object class သည် "B" ရဲ့ child object class  ဖြစ်ပြီး "B" ကိုယ်တိုင်ကတော့ "A" ရဲ့ child object class ဖြစ်ပါတယ်။ ထိုကြောင့် "A" သည် top level object class ဖြစ်ပါတယ်။ ထို့ကြောင့် object class သတ်မှတ် တဲ့အခါမှာ "objectclass" structure ကျအောင် အစဥလိုက် သတ်မှတ်ပေးရပါတယ်။ မဟုတ်ရင် entryထည့်တဲ့နေရာမှာ error ပြပါတယ်။  နောက်တစ်ခု က  "Mandatory and Optioanl" ဆိုသည်မှာ "attributes"သတ်မှတ်ရာမှာ အသုံးပြုပါတယ်။ ပြောချင်သည် မှာ သတ်မှတ်ထားတဲ့ "Object Class" တစ်ခုဆီမှာ attributes ပုံစံ နှစ်မျိုး ကွဲသွားပါတယ်။ "Must" attributes ဒီ object class ကို အသုံးပြုထားလျှင် ထို entry မှာ သုံးကို သုံးရမည့် "attributes" အမျိုးအစား နှင့် "May" attributes ဆိုတာကတော့ သုံးလဲရတယ် မသုံးလဲ ရတဲ့ attributes အမျိုးအစားဖြစ်ပါတယ်။

                ဥပမာ "Person" ဆိုတဲ့ object class သည် user information ဖြည့်ရာမှာ အသုံးပြုတဲ့ အတွက် ထို object class ကို အသုံးပြုမယ် ဆိုလျှင်  "sn (surname)" , "cn (common name)" တို့ဆိုတာ မပါမနေရ "Attributes" အမျိုးအစား ဖြစ်ပါတယ်။ 

               အခု လောက်ဆိုလျှင် LDAP တစ်ခု ရဲ့ နောက်ကွယ်က အလုပ်လုပ်ပုံ အကြမ်းဖြင်းလောက် သိသွားပြီလို့ထင်ပါတယ်။ ခြုံပြောရလျှင် ldap entry တိုင်းသည် files တွေဖြစ်ပြီး tree structure ပုံစံတည်ဆောက်ပါတယ်။ user create လုပ်တာဖြစ်ဖြစ် group create လုပ်တာဖြစ်ဖြစ် user ကို secondary group (memberof) လုပ်တာပဲဖြစ်ဖြစ် အကုန်လုံးသည် "files"​ တွေနဲ့ပဲ တည်ဆောက်သွားတာဖြစ်ပါတယ်။ ထို entry file တွေထဲမှာက တည်ဆောက်တဲ့ အမျိုးအစားကို မူတည်ပြီး  objectclsss တွေ သတ်မှတ်မယ် ထို object class ထဲမှာ အသုံးပြုလို့ ရတဲ့ attributes​ တွေကို သတ်မှတ်ပြီး   entry တစ်ခု ဖြစ်လာအောင် တည်ဆောက်တာဖြစ်ပါတယ်။ အရေးကြီးဆုံးကတော့ ထိုအရာတွေသတ်မှတ်နိုင်ရန် လိုအပ်တဲ့ "Schema" file တွေ ကို LDAP မှာ import လုပ်ထားရမှာ ဖြစ်ပါတယ်။ 

Share:

0 comments:

Post a Comment