วันศุกร์ที่ 26 เมษายน พ.ศ. 2556

มาคุยเรื่อง Security เป็นเรื่องง่ายกัน


มาทำให้ Security เป็นเรื่องง่าย

หลายๆท่านคงคิดเหมือนผม  หัวข้อนี้มัน  “มั่ว/ยาก” จริงๆ  และมักปรึกษา/ถามใคร ไม่ค่อยได้
ผมจำได้แม่นเลยว่า   ผมข้องใจกับเรื่องนี้มากจนยอมไปอ่านหนังสือ ของ IBM  ขนาดเล่มไม่ใหญ่  แต่เนื้อหาส่วนใหญ่เป็นบรรยาย ... สำหรับคนที่ชอบดูแต่ภาพ (ภาษาไม่แข็งแรง)  ถือว่า งานหนัก
บทความนี้จะตอบคำถามนี้ครับ
Q: มีหลักการ (ย่อ) อย่างไร (ถ้าเข้าใจ น่าจะเดาต่อได้ง่าย)
Q: มี Template อธิบายเข้าใจง่ายๆ หรือไม่ ? (อยากได้ทางลัด)

อยากเข้าใจ  แบบย่อ

ระบบรักษาความปลอดภัย = ใคร   มีสิทธิ์ใช้  Resource  อย่างไร ?
            “นีราพร   ไม่มีสิทธิ์ใช้    Web  ABC  ได้              แต่ ชนิดาภรณ์, จุฑามาศ สามารถใช้ได้”
            “เด็ก   ไม่มีสิทธิ์  ดูทีวีหลัง 22:00                         แต่ผู้ใหญ่ (ทำงานแล้ว)  มีสิทธิ์”
            “ศศศรันย์  ดู File ได้ แต่แก้ไขไม่ได้                     ประทีป  ดูและแก้ไข File ได้”
ประโยคข้างต้น  จัดกลุ่ม  ต้องมี  “นิยาม” กันเล็กน้อย = User, Role (กลุ่ม), Resource (สิ่งที่ควบคุม), Function (รายละเอียดการควบคุม)  ลองจัดกลุ่มจาก ต.ย. ข้างต้นดูจะได้ตามนี้ครับ
            “นีราพร   ไม่มีสิทธิ์ใช้    Web  ABC  ได้              แต่ ชนิดาภรณ์, จุฑามาศ สามารถใช้ได้”
ใคร  (User)
นีราพร , ชนิดาภรณ์, จุฑามาศ
กลุ่ม (Role)
นีราพร

ชนิดาภรณ์, จุฑามาศ
Resource
Web ABC
Function
เปิดใช้
                 
            “เด็ก   ไม่มีสิทธิ์  ดูทีวีหลัง 22:00                         แต่ผู้ใหญ่ ดูได้”
ใคร  (User)
(ไม่มี)
กลุ่ม (Role)
เด็ก

ผู้ใหญ่
Resource
ทีวี
Function
เปิดใช้

             “ศศศรันย์  ดู File ได้ แต่แก้ไขไม่ได้                     ประทีป  ดูและแก้ไข File ได้”              
ใคร  (User)
ศศศรันย์  ,ประทีป
กลุ่ม (Role)
(ไม่มี)
Resource
File
Function
เปิดใช้

กลับมาเรื่อง IT ต่อ

            ผู้ใช้งาน IT  ระดับสังคม (องค์กร) ได้ “เข้าใจ”  ไม่ทางตรง/ทางอ้อม  ของ  “กฏ”  แล้ว   เช่น  
บัตร ATM,รหัสเข้าคอมพิวเตอร์, ระบบฯ, internet       แต่ละคนมี UserID  และรหัสผ่าน    เมื่อสิ่งนั้นมีความสำคัญ (เงินของเรา)   ก็ไม่ควรให้  คนอื่น  ยืมบัตร, บอกรหัสผ่าน  (เรามีสิทธ์ใช้   คนอื่นไม่มีสิทธิ์)
ผู้ที่เริ่มต้น IT มักจะได้รับ  “คำแนะนำ” (คำเตือน)  “ก่อน” เริ่มใช้  
หมายเหตุ  บริษัทฯที่มีมาตรฐาน  จะอธิบายในขั้นตอนก่อนเริ่มทำงาน (Orientation) ... บริษัทได้อธิบาย/เตือนแล้ว  ต่างจาก เรื่องง่ายๆคุณน่าจะคิดได้เอง
            คนที่สั่งให้ทำ Security ก็ต้องเป็น  ผู้นำ(ระดับสูง)   เช่น  เพื่อป้องกันเงิน,ข้อมูลความลับ  เป็นต้น   โดยมอบหมายให้ คนจัดการ Security (Admin)  มักจะมี 1-3 คนเท่านั้นประกาศกฎ   ส่วนคนที่เหลือทั้งหมด (99%) คือ  ผู้ใช้งานตามกฏ   ดังนั้นภาระจะตกกับ Admin     ... คุ้นๆกับ กฏระเบียบในบริษัทฯ , กฏหมายของประเทศมั๊ยครับ   (เรื่องใกล้ตัวมากเลย)

แล้วทำอย่างไร ล่ะ

1.       จัดกลุ่ม แบบง่าย  
    a.       กลุ่ม Role, User  เช่น  { Admin, User }  ,  { Account, Marketing, …  } , { Manager, Member }
    b.      กลุ่ม Resource   เช่น   { Folder, File  } , { Menu , Program }
     Tip : จัดให้หยาบ , Level ไม่เกิน 3 ระดับ  (อย่านำ  ภาพ Org  ที่ซับซ้อนทั้งหมดมาใส่)
            ใช้
Mind Map, Organize Chart  ช่วยวาดรูป
             ถ้าทำงานสไตล์  “ไทย” 
Organize
เขียนไว้แบบหนึ่ง  แต่ทำงานจริง ทำข้ามกลุ่ม  ให้จัดกลุ่มตามที่ทำงานจริ
2.       กำหนด Function
    a.       ทำ Function แบบง่ายก่อน    ใช้ได้ (Access), ใช้ไม่ได้ (Deny)
    b.       Function อย่างละเอียด จะทำภายหลัง จะใช้กับ  กลุ่ม “ใช้ได้”  (ดูได้, แก้ไขได้,  คัดลอก/ลบ File ได้) 
3.       จากการจับคู่  (1.a.) และ (1.b.)  ภายใต้ Function  (2)
    a.       รวบรวม “ข้อยกเว้น” เฉพาะไว้  เช่น  Manager ของทุก Role  ทำได้ทุกอย่าง
     Tip : ไม่มีแบบไหน ที่ดีที่สุด  อาจจะต้องรวม หลายแบบเข้าด้วยกัน
            อาจจะต้องจัดกลุ่ม  (1.a.) และ (1.b.)    ใหม่  (ถ้าทำไม่ซับซ้อน และเร็ว  จะทำใหม่กี่รอบก็ได้)
4.       เช็ค ว่า  “กฏ” ที่กำหนด  ตรงตามต้องการหรือไม่ ?

Template

จาก Organize Chart



1. จัดกลุ่มแบบง่าย
1.a เปลี่ยนกำหนด  Role/User   เริ่มต้นจาก “ง่าย” ไปซับซ้อน  ดังนี้
Figure 1
      มี 3  Role  Level     
-      Manager และ  Assistant  Manager   เป็นสมาชิกของ ทุก Role 
-      ทุกคนใน Role : Account มีสิทธิ์เหมือนกัน
หรือ เพิ่ม  Role : Manager  (ดูดี)  4 Role 2 Level        
ถ้าเลือก  ภาพนี้สุดท้ายต้องทำ
1. สร้าง 3 Role 
2. จัด User ทุกคนเข้าไปที่ Role  (ถ้ามีพนักงาน 50 คนก็ป้อน 50 ครั้ง)
Figure 2
มี 7  Role  Level  คือ  แยก Account เป็น  Account_Head  กับ  Account_Member
1.b กำหนด/จัด Resource  
Figure 3
                จัด 3 กลุ่ม   Resource ตามแผนก  เช่น แยก Folder , ชุดโปรแกรม  ไว้ใน Folder, Lib, Database, …
อาจจะเพิ่ม   Role : All ไว้ด้านบน (ดูเป็น Organize)
ถ้าเลือกภาพนี้   สุดท้าย IT ต้องรวบรวมจัด Folder  Program,Library, Database ให้
ตย. เช่น  สร้างโปรแกรม
Account ไว้ 1 Path เท่านั้น 
Figure 4
                จัด 5 กลุ่ม โดยแยก Resource  ที่อนุญาตให้ทุกคนเข้าได้  ไว้ที่ Share  เช่น  โปรแกรมดูรายงานพื้นฐาน, Table ที่ทุกคนต้องใช้ร่วมกัน (Master)
Figure 5
                10 กลุ่ม  โดยแทนที่จะแยก Share ไปเพิ่มกลุ่มย่อย
2.  กำหนด Function แบบง่าย (ที่สุดก่อน)
Figure 6
                ใน ASP.net การ ACL  แบบง่ายกำหนดไว้แค่นี้ (ผมว่าเพียงพอแล้ว)
                เมื่อเริ่มต้น งานที่ซับซ้อน  ก็จัดการยากแล้ว   ขอให้ทดลองเล่นๆดูก่อน  ว่า “จัดการได้หรือไม่”  ก่อนจะเปิดใช้จริง  ใน Windows, iSeries รองรับรายละเอียดดังนี้ ได้    เรียกใช้ (ดู,แก้ไข),  จัดการ(สร้าง, คัดลอก,ลบ)
3. จับคู่ Mapping  โดยมองเป็นตาราง ดังนี้
Table 1

Resource
Account
Marketing
HR
Role
Account
Access
Deny
Deny
Marketing
Deny
Access
Deny
HR
Deny
Deny
Access
แบบนี้  เข้าใจง่าย และ สร้าง ง่ายที่สุด  (ต้องระบุ/ป้อน 9 ช่อง)
ในระบบการกำหนดค่ามักจะอนุญาตให้ Default ค่าเริ่มเป็น “Deny”  ทำให้ต้องป้อนแค่ 3 ช่องเท่านั้น (เร็ว + ง่าย)
แทนที่จะบอกว่า พนักงาน 50 คนเข้าใช้อะไรได้บ้าง  ก็บอกเป็น “กลุ่ม Role” อะไร ใช้กับ “กลุ่ม Resource” อะไรได้บ้าง
เริ่มเห็นภาพน๊ะครับว่า  ถ้าทำข้อ 1,2 ไว้  ซับซ้อน  ข้อ 3. จะยุ่งยากมาก
Table 2

Resource
Account
Marketing
HR
Role
Manager
Access
Access
Access
Account
Access
Deny
Deny
Marketing
Deny
Access
Deny
HR
Deny
Deny
Access
เมื่อเลือกใช้  Role:Manager  จะเพิ่ม การกำหนด (ป้อน 12 ช่อง)
Table 3

Resource
Account
Marketing
HR
Role
Manager
Manger
Access
Access
Access
Account
Account_Head
Access
Deny
Deny

Account_Member
Access
Deny
Deny
Marketing
Marketing_Head
Deny
Access
Deny

Marketing_Member
Deny
Access
Deny
HR
HR_Head
Deny
Deny
Access

HR_Member
Deny
Deny
Access
จากตารางข้างต้น  ถ้าแบ่ง Head และ Member โดยที่มีสิทธิ ใช้  “เท่ากัน”    ไม่จำเป็นต้องแบ่ง  Head, Member ให้เสียเวลา (ป้อนรวม 21 ช่อง)
ตารางข้างต้น อาจจะมีประโยชน์  ถ้ากำหนด  หน้าที่แบบนี้  Account_Head  สามารถเข้าไปดู Marketing ได้
Table 4

Resource
Account
Marketing
HR
Role
Manager
Manger
Access
Access
Access
Account
Account_Head
Access
Access
Deny

Account_Member
Access
Deny
Deny
Marketing
Marketing_Head
Deny
Access
Deny

Marketing_Member
Deny
Access
Deny
HR
HR_Head
Deny
Deny
Access

HR_Member
Deny
Deny
Access
จำได้มั๊ยครับรวมรวม  อะไรที่ยกเว้นเฉพาะ ไว้   
ตย. ข้างต้น  กรณีพิเศษ เดียว   เราจะไม่เพิ่มโครงสร้าง  “เผื่อไว้”  (เพิ่ม 9 ช่อง เพื่อแก้ปัญหา ช่องเดียว)
เราจะแก้ปัญหาเฉพาะ โดย   ระบุเพิ่ม ว่า 
User-K  (ใน Role:Account)  มีสิทธิใช้ Resource: Marketing 
ใน iSeries เรียกตัวนี้ว่า Grant Authorize   (คำเตือน   ห้ามใช้  โดยที่ไม่เข้าใจเป็นอันขาด   ตย. Grant ให้ User-J มีสิทธ์เท่า Admin  สิ่งที่มันทำคือ  เข้าไปทีละ Object แล้วเพิ่มสิทธิ   ในขณะที่เข้าไป  “มันจะหยุดการใช้ Object ทั้งหมด”  พูดง่ายๆ เครื่องจะ Hang ไป )

FAQ

Q: สร้าง Security เป็นของตนเอง หรือใช้ของ IBM, Microsoft ดี
A: (ความเห็นของผม)  ใช้ของผู้ผลิตดีที่สุด   ลด/เพิ่มได้   (สร้างเอง   ไม่มีทางทำได้ครอบคลุม)
Q: สร้างไว้ใช้เอง อยู่แล้ว   ต้องเปลี่ยนมั๊ย ?
A: ถ้าคุณไม่โดน Audit หรือระบบคุณไม่มีปัญหา  ไม่ต้องเปลี่ยนครับ   ที่แนะนำไว้จะทำให้คุณชั่งน้ำหนักได้ว่าคุณขาดอะไร ?
Q: มีเรื่องอื่น อีกมั๊ย ?
A: มีครับ  แต่จุกจิกและซับซ้อนตามสิ่งที่คุณพบ   เช่น  Role แยกกลุ่มใหญ่อีก (อ่านไม่ผิดกลุ่มใหญ่)  ต้องจัดเข้าไปอยู่ใน AD (windows) ของบริษัทแม่,   ใช้หลาย Server  OS  มี Role ของตนเอง  และ หลากหลาย Role ใน DB เป็นต้น

ไม่ง่ายที่จะสื่อสาร  

คนส่วนใหญ่ไม่ค่อยอยากฟังเรื่องยาก/ปวดหัว   กลายเป็น “หนีปัญหา”  ไปผมเชื่อว่า  ถ้าเรา “หนี” ไม่ได้  ก็วิ่งเข้าใส่  เลยดีกว่า (ถ้ามันไม่ยาก  แล้วมากลัวมัน   ก็ต้องหนีกันชั่วชีวิต)
การบอก “กฏ”(วิธี)   หรือ  เปลี่ยนสิ่งที่รู้สึกว่า  “ได้” / “ห้าม” เป็นการ “เขียน”  มันไม่ง่าย 
“ไม่มีสิทธิ์ใช้” ... ต้องป้องกัน  ไม่ให้รู้เลยว่ามี  หรือ บอกให้รู้  แต่ห้ามไม่ให้ใช้
“ดูได้ แต่แก้ไขไม่ได้” ... File ใน Computer ถ้าดูได้   ก็ต้อง Copy ได้น๊ะ  แก้ไขนับรวม Copy หรือไม่ ?
เขียนสั้นไป  ก็ตีความได้หลากหลาย, เขียนบรรยายยาวเกินไป  ก็ทำให้มากเกิน (ไม่อยากอ่าน = ไม่รู้กฏ)
Q: คุณเคยอ่านหนังสือ “กฏ” ของบริษัท,กฏหมาย รัฐธรรมนูญ มั๊ยครับ ?  (สิ่งที่ต้องรู้  แต่มันมีมาก)
A: มันน่าเบื่อ  (เข้าใจยาก + ต้องใช้เวลา)
Tip : หลายที่ใช้เทคนิค เพื่ออธิบาย ดังนี้ 
            พูด/อธิบาย  แทนการ  ให้อ่านเอง
ช่วงอธิบายยาว  ก็พูดให้ “สั้น”  โดย พูดโดยเน้นเฉพาะเรื่องที่ “ไม่คุ้นเคย”   เช่น “เน้น” กฏการขับรถ  พูดให้คนต่างชาติ (ประเทศเขาขับรถชิดเลนขวา)  แต่คนไทย  ไม่ต้องอธิบาย  
            ย้ายบางเรื่องไปพูดแทรก  ในขณะอธิบาย  ชีวิตประจำวัน  เช่น การใช้เครื่องจักร,  ใช้ห้องสมุด  ก็แทรก “กฏ”
ค้นหา  สิ่งผิดปรกติ   เช่น  การใช้ห้องน้ำ ของคนต่างจังหวัด กับในเมือง (นั่งยอง, นั่งโถ, มีระบบไฟฟ้า)
                Q: คนไทยชอบคิดแบบ “ศรีธนชัย” – ดูเป็นเรื่องสนุกดี (คนรุ่นใหม่ รู้จักกันหรือเปล่าครับ  ถ้าไม่ได้เรียน  คงเคยได้ยิน “กฏ มีไว้แหกกฏ”  หรือ  ขอ “แถ” ไปจนได้)
A: ถ้า “กฏ” ถูกสร้างบนความจำเป็น + เข้าใจ   คนส่วนใหญ่คงไม่  “แถ” ออกไปครับ
ความเห็นส่วนตัว
ทุกคนที่อยู่ในสังคม  มีส่วนในการทำตาม “กฏ”  และมีโอกาศเป็นคน “สร้าง” กฏ  ...  เข้าใจซะ (อย่า ละเลย)
เมื่อเป็น “ผู้สร้าง” กฏ   ก็สร้าง “กฏ ที่ดี” เข้าใจง่าย/รัดกุม
เมื่อต้อง “ทำตาม” กฏ  ก็ทำด้วยความเข้าใจ  (มากกว่า จะแหกกฏ)
---คิดแบบนี้  “สังคม”  จะเป็นระเบียบ---

จริงหรือไม่ ?

ในชีวิตประจำวัน ก็มี “กฏ” เต็มไปหมด  ถ้าเขียนออกมาคงมีมาก 
“กฏ” = ข้อมูล  ที่การถ่ายทอด/สอน  จาก  คนหนึ่ง  ไปอีก คนหนึ่ง   วิธีถ่ายทอด “ที่ง่าย + ดี” คือ  การถ่ายทอด  ผ่านชีวิตประจำวัน
“กฏ”  พื้นฐาน   จะสอนผ่าน  “สังคม” ครอบครัว – เด็กๆ ที่ถูกเลี้ยงด้วยทีวี, เกมส์   ไม่ค่อยมีเวลาคุยกับครอบครัว  ก็จะไม่รู้ “กฏ” ดังกล่าว  ...  คุ้นตามั๊ยครับ   คนรุ่นใหม่ (Gen Y) ใช้มือถือขณะกินข้าวเป็นเรื่องปรกติ   คนรุ่นเก่า ถือว่าเป็น “กฏ” ห้ามทำ ... ระหว่างกินข้าว
ระดับถัดไป คือ “สังคม” ในโรงเรียน/มหาวิทยาลัย
                และสุดท้าย  “กฏ” เฉพาะด้าน  จะถูกอธิบาย  “ก่อน” การใช้  เช่น การขับขี่มอเตอร์ไซต์, ขับรถ, ใช้คอมพ์, เครื่องจักร  เป็นต้น   เป็นหน้าที่ของ ผุ้สอน ที่ต้อง “อธิบาย”  (เริ่มต้นที่  ผู้สอน ก่อน)
                ถ้าในแต่ละ ช่วงเวลา – ไม่คุยกัน-   -หนี/ไม่ฟัง-   -เลี่ยง/ไม่สอน-   จะเกิดอะไร
วันนี้  “คุณ” ได้ทำหน้าที่  “สื่อสารที่ดี”  หรือยัง ?  (เริ่มที่ตนเองก่อน)

สรุป

ถ้ามองอย่างกลางๆ  จะพบว่า  “หลักการ” ไม่ยากอะไร   ขั้นตอนการ “เลือก” แบบที่จะทำ   ต้องแยกแยะสิ่งที่อยากได้(คุ้นเคย) กับ สิ่งที่ต้องทำ ออกจากกัน (ตย. ข้างต้นแสดงให้เห็นว่า  เริ่มทำจาก Organize Chart ของบริษัท  แต่สุดท้ายไม่จำเป็นต้องเหมือน)  และเพื่อให้จัดการง่าย   ควรเน้นความเข้าใจ รวมทั้งปรับวิธีการสื่อสารที่เหมาะสม