พอดีว่าเช่ามหาสมุทรเอาไว้ใช้ทำ 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 มา หน้าตาประมาณเนี้ย

001

พอได้ 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 แล้ว ตามรูป

002

อีกวิธี แบบถึกๆ บ้านๆ หลังจากที่ 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 ด้วย เน็ตกากๆ นี่ จบเลย

Leave a Reply