WildFly8 – Role Base Access Control
พอดีว่าเช่ามหาสมุทรเอาไว้ใช้ทำ java web server เลยได้ลองเอา wildfly มาใช้ดู แล้วเห็นมันมี feature ใหม่มาให้ใช้ คือการกำหนดสิทธิหรือ role ของ user โดย role ที่เรียกว่า rbac โดย role ที่มีมาให้ก็จะมีดังนี้
Role | Permissions |
---|---|
Monitor | Has the fewest permissions Only read configuration and current runtime state No access to sensitive resources or data or audit logging resources |
Operator | All permissions of Monitor Can modify the runtime state, e.g. reload or shutdown the server, pause/resume JMS destination, flush database connection pool. Does not have permission to modify persistent state. |
Maintainer | All permissions of Operator Can modify the persistent state, e.g. deploy an application, setting up new data sources, add a JMS destination |
Deployer | All permissions of Maintainer Permission is restricted to applications only, cannot make changes to container configuration |
Administrator | All permissions of Maintainer View and modify sensitive data such as access control system No access to administrative audit logging system |
Auditor | All permissions of Monitor View and modify resources to administrative audit logging system Cannot modify sensitive resources or data outside auditing, can read any sensitive data |
Super User | Has all the permissions Equivalent to administrator in previous versions |
ก็ทำความเข้าใจ ตีความกันไปละกันว่า role ไหนทำอะไรได้ ประเด็นของ note นี้คือวิธีการ enable rbac ของ wildfly เพราะปกติแล้ว มันไม่ได้ enable มาให้ default access control มันจะเป็นแบบ simple เราต้องมา enable ให้เป็น rbac เอง เหตุผลก็เพื่อให้มัน compat กับ app เก่าๆ ของ Jboss ที่เราสร้างกันมาอย่างยากเย็น
เรามาเริ่มกันที่ start server ขึ้นมา โดยในที่นี้จะใช้ standalone environment พอ start server ได้แล้วก็ให้ทำการ add user ด้วย script add-users
กันก่อน โดยให้ add เป็น Management User วิธีการก็จะคล้ายๆ Jboss7 ดังนั้น ไม่ขอพูดถึงนะจ๊ะ
หลังจาก add user แล้ว ก็เริ่มกันเลย run script ที่ชื่อว่า jboss-cli -c
เราจะได้หน้า jboss command มา หน้าตาประมาณเนี้ย
พอได้ command มาแล้วให้พิมพ์คำสั่งตามดังนี้
cd core-service=management/access=authorization ./role-mapping=SuperUser/include=user-magicbank:add(name=magicbank,type=USER) :write-attribute(name=provider,value=rbac) reload --admin-only=false
สังเกตุในส่วนที่เป็นตัวหนังสือสีแดง ให้เปลี่ยนเป็น username ของคนที่ต้องการ และมี tips เล็กๆ น้อยๆ คือ สามารถใช้ tab ในการ auto complete คำสั่งได้ สบายสุดๆ และหลังจากที่ server reload เสร็จ เปิด web ไปที่ management console ไปที่หมวด Administration ก็จะเห็นรายการ user ที่ถูก map กะ role แล้ว ตามรูป
อีกวิธี แบบถึกๆ บ้านๆ หลังจากที่ add-user แล้ว ให้ stop server แล้วเปิดไฟล์ standalone.xml หรือ configuration file ตามที่ใช้งานขึ้นมา แล้วหา <management> ดูในส่วนของ <access-control แก้ไขค่าให้เป็นไปตามนี้
<access-control provider="rbac"> <role-mapping> <role name="SuperUser"> <include> <user name="$local"/> <user name="magicbank"/> </include> </role> </role-mapping> </access-control>
ให้แก้ในส่วนของ provider ให้เป็น rbac และเพิ่ม user ตาม username ที่ต้องการ แล้ว save แล้ว start server จบ รู้สึกจะเข้าใจง่ายกว่าการใช้ command นะ
จบแล้ว เรื่องอื่นก็เดาๆ กันเอง note นี้ทำเฉพาะการ enable rbac พอ
เอามาจาก ที่นี่ ซึ่งดูวิธีการมาจาก ตรงนี้ ก็ไม่รู้ทำไมต้องทำเป็น video ด้วย เน็ตกากๆ นี่ จบเลย