ประเด็นด้านความมั่นคงปลอดภัยนั้นถือเป็นอีกหนึ่งสิ่งที่นักพัฒนา Software ต้องให้ความสำคัญ Red Hat จึงได้จัด Webinar ในหัวข้อ พัฒนา Microservice Application ที่มีความปลอดภัยโดยใช้ OpenID ด้วย Keycloak เพื่อเสริมความมั่นคงปลอดภัยให้กับการพัฒนาระบบ Microservices ด้วยการทำ Single Sign-On หรือ SSO นั่นเอง
รู้จักกับ Keycloak โครงการ Open Source สำหรับทำ Identity and Access Management Solution
Keycloak คือ Open Source Project ที่มีเครื่องมือต่างๆ มากมาย เช่น Access Management, Identity Brokering, User Fedration ด้วย LDAP/AD, Event Auditing โดยมี Client Library หลากหลายทั้งบน Java EE, MicroProfile, Spring, Node.js และอื่นๆ
ความสามารถหลักของ Keycloak จะแบ่งออกเป็นส่วนๆ ดังนี้
- Authentication การยืนยันตัวตนผู้ใช้งาน
- Authorization สามารถกำหนดสิทธิ์ในการเข้าถึงทรัพยากรต่างๆ ของผู้ใช้งานแต่ละคนได้
- Clients Management รองรับ Application ได้หลาย App สำหรับผู้ใช้งานแต่ละคน
- Session Management จัดการ Session ของผู้ใช้งานแต่ละคน พร้อมทั้งตรวจสอบ Session ทั้งหมดได้
- Identity Manager (IdM) / Identity Access Manager (IAM)
- Identity Provider (IdP)
- Service Provider (SP) รองรับ SAML, OIDC และอื่นๆ
- Identity Provider Federation / Identity Broker ทำงานร่วมกับ Facebook, Google, GitHub และอื่นๆ ที่รองรับ OpenID Connector, SAML ได้
ในการใช้งาน Keycloak ได้จัดเตรียม Login/Register Page ที่พร้อมใช้งานได้ทันที แต่ยังสามารถปรับแต่ง CSS ให้เข้ากับสไตล์การออกแบบของแต่ละ Application ได้โดยไม่ต้องพัฒนาหน้าเหล่านี้ใหม่เองทั้งหมด
นอกจากนี้ ใน Keycloak ยังมี Flow ให้เลือกกำหนดการยืนยันตัวตน การกำหนดสิทธิ์ การ Login และสิ่งที่ผู้ใช้งานสามารถทำได้ในระหว่างกระบวนการการยืนยันตัวตน เช่น การตรวจตสอบ Cookie หรือ Access Token หรือ Kerberos ก่อนว่าเคยยืนยันตัวตนอยู่แล้วหรือยัง, การตรวจสอบว่ารหัสผ่านหมดอายุหรือยังและ Reset รหัสผ่าน, การเพิ่มการทำ OTP/OOB/reCAPTCHA, การทำ MFA และอื่นๆ ทำให้ธุรกิจองค์กรไม่ต้องพัฒนาระบบพวกนี้เองสำหรับแต่ละ Application ช่วยให้การพัฒนา App ลดความซ้ำซ้อนในส่วนของการยืนยันตัวตนและการกำหนดสิทธิ์ได้ โดย Add-on Flow ต่าง ๆ ที่ช่วยเสริมการทำงาน ต่าง ๆ ที่ keycloak มีประกอบไปด้วย
- Authentication Flow เช่น Registration flows, login flows, credential reset flows, etc.
- Registration Flow เช่น self-register, email validation, etc.
- Login Flow เช่น user/password ร่วมกับ MFA
- Required Actions เช่น interval or schedule password reset
ซึ่ง Flow เหล่านี้สามารถปรับแต่ง ผ่าน Keycloak ได้อีกด้วย
Keycloak นั้นสามารถทำการบริหารจัดการผู้ใช้งานแต่ละกลุ่มได้ โดยแบ่งผู้ใช้งานแต่ละกลุ่มออกเป็น Realms และมีการจัดเก็บผู้ใช้งานในแบบ User, Credential, Role, Group เพื่อให้ง่ายต่อการบริหารจัดการการยืนยันตัวตนและการกำหนดสิทธิ์ของผู้ใช้งานแต่ละคน โดยรองรับการใช้ได้ทั้ง Password, One-time Passcode, Digital Certificate และอื่นๆ ในการยืนยันตัวตนได้อย่างหลากหลายและยืดหยุ่น
ในการใช้งาน Keycloack สามารถใช้งานได้บน Java 8 ทันที โดยสามารถเลือกติดตั้งเองก็ได้ หรือจะใช้งานผ่าน Docker/Kubernetes/OpenShift ก็ได้เช่นกัน และสามารถติดตั้งใช้งานเป็นแบบ Cluster กระจายตัวอยู่ข้าม Data Center หรือ Cloud โดยมี Infinispan มาช่วยจัดเก็บทำ Cache และ Replicate Session ของผู้ใช้งานได้ ทำให้สามารถรองรับการใช้งานในระบบ Cloud-Native Application ได้เป็นอย่างดี หรือสำหรับการใช้งานภายใน Data Center แห่งเดียว ก็สามารถทำ High Availability (HA) ภายใน Cluster ได้
สำหรับการประยุกต์การใช้งาน จะมี OpenID Connect Adapter สำหรับใช้งานบน Application เช่น React/Angular/Vue และอื่นๆ, SAML Adapter และ Gatekeeper สำหรับใช้งานบน Container/Kubernetes ในรูปแบบ Sided-Car ให้เลือกใช้งาน
ส่วนการทำ Authorization นั้น Keycloak สามารถทำได้อย่างยืดหยุ่นด้วยการกำหนดภายในระบบของ Keycloak โดยตรง ไม่ต้องเสียเวลาในการพัฒนาเอง เช่น
- Attributed-based (ABAC)
- Role-based (RBAC)
- User-based (UBAC)
- Context-based (CBAC)
- Time-based
- Rule-based
- Custom Access Control Mechanism (ACM) ผ่านทาง Policy Service Provider SPI
ด้วยแนวทางนี้จะทำให้โค้ดของ Application นั้นค่อนข้างเป็นระเบียบเรียบร้อย เพราะแทบทุกอย่างนั้นเกิดขึ้นบน Keycloak โดยไม่ต้องยุ่งกับโค้ดแต่ละส่วนมากนัก รวมถึงในอนาคตหากมีการเปลี่ยนแปลงอย่างไร ก็สามารถทำบน Keycloak แบบศูนย์กลางได้ทันที
สิ่งหนึ่งที่ Red Hat แนะนำให้ใช้คือ OpenID Connect ซึ่งเป็นมาตรฐานที่ถูกพัฒนาต่อยอดมาจาก OAuth 2.0 แต่แก้ไขจุดอ่อนต่างๆ ออกไปค่อนข้างมาก และพร้อมสำหรับการนำมาใช้งานใน Application ของธุรกิจองค์กรได้ดียิ่งขึ้น
Red Hat นั้นได้นำ Keycloak เข้ามาเป็นส่วนหนึ่งของ Red Hat Application Services โดยใช้ชื่อว่า Red Hat Single sign-on ที่มี Red Hat Runtimes, Red Hat Integration & Red Hat Process Automation รวมถึงยังสามารถใช้งานได้ใน Red Hat OpenShift อีกด้วย
ผู้ที่สนใจรายละเอียดเพิ่มเติมเกี่ยวกับ Keycloak สามารถศึกษาข้อมูลเพิ่มเติมได้ที่https://www.keycloak.org/ ครับ
สนใจติดต่อ Red Hat ได้ทันที
ผู้ที่สนใจรายละเอียดเพิ่มเติม สามารถศึกษาข้อมูลเพิ่มเติมได้ที่ https://www.openshift.com/ หรือติดต่อทีมงาน Red Hat ประจำประเทศไทยได้ที่ Email rchemae@redhat.com