Install Kong EE with RBAC (สอนติดตั้ง Kong enterprise on docker for windows)

Ploy Thanasornsawan
5 min readSep 2, 2019

--

อันนี้จะขอรีวิวคร่าวๆ เปรียบเทียบความต่างระหว่าง Kong EE กับ Kong CE ฉบับควิ๊กๆล่ะกัน ขออนุมานว่าทุกคนเคยลองเล่น Kong CE มาแล้ว ถ้ายังไม่เคยก็ไปอ่านได้ที่นี่

ในตอนที่ 1 ที่เคยรีวิวตัว Kong ด้วย Konga ไป คือปกติตัว Kong ตอน install มันไม่มีหน้า admin ให้แล้วใน Konga ก็ไม่ได้เชื่อมกับ plugin kong ทุกตัว แถมบางตัวที่มี หน้า UI ก็เหมือนใส่ input ไม่ได้อีก ถ้าจะ enable plugin ไหน ใช้เป็นคำสั่ง curl จะดีกว่า แต่ถ้าใน Kong EE จะมีหน้า admin มาให้ตอน install เลย แถมสามารถ manage api ร่วมกันเป็นทีมได้ด้วย สร้าง developer ขึ้นมา ส่วน RBAC หรือก็คือ Role Base Acess Control คือ สามารถควบคุมได้ว่า user คนนี้มีสิทธิ์ทำอะไรได้บ้างบนหน้าเว็บเรา เป็นการจำกัดสิทธิ์ โดย Kong จะให้สิทธิ์มา 3 อันคือ admin, read-only และ super-admin ซึ่ง super-admin คือสิทธิ์สูงสุด สามารถจัดการ user คนอื่นได้ approve request จาก developer ได้ invite user ได้ และ super-admin ตัวแรกที่ kong ให้มาตอน enable RBAC จะเป็น kong_admin

คนทั่วไปสามารถลองเล่น Kong EE Trial ได้ประมาณ 15 วัน สมัครได้ที่ลิงค์นี้ ทีนี้ kong แนะนำว่าให้เอาไฟล์ไปวางใน path C ตั้งชื่อ folder temp แล้วเปลี่ยนชื่อไฟล์ให้สั้นลงเป็น license.json เพื่อใช้ในการ map path run container ซึ่งเมล์ที่เราได้รับจะประมาณนี้ให้ดาว์โหลด docker สกุล .tar.gz

แต่ถ้าใครอยากติดตั้งแบบธรรมดา ใช้คนเดียวไม่มีทีมต้อง invite users เข้ามาในระบบก็ใช้วิธีการติดตั้งธรรมดาตามเว็บของ kong ได้เลยที่ลิงค์นี้ แต่ถ้าอยากได้หน้าล็อคอินก่อนเข้าหน้า admin แบบนี้ก็ทำตามเรานะ ..

ติดตั้ง kong docker จากไฟล์ที่ดาว์นโหลดในเมลล์ด้วยคำสั่ง
docker load -i /tmp/kong-docker-ee.tar.gz

จากนั้นลองเช็ค image kong ที่โหลดมาด้วยคำสั่ง docker images จากนั้น tag image ของ kong ด้วยเลข image id เพื่อจะเรียกใช้มัน ด้วยคำสั่ง
docker tag <image id> kong-ee

พอลองเช็คอีกทีด้วยคำสั่ง docker images จะเห็น kong-ee เพิ่มขึ้นมา

ต่อมาสร้าง network ให้ kong ee ด้วยคำสั่ง
docker network create kong-ee-net

ต่อมาสร้าง container database ให้ kong ee ในที่นี้ขอใช้เป็น postgres ด้วยคำสั่ง

จากนั้นทำการ migration database ที่กำลังรันอยู่ให้สามารถใช้ RBAC ได้ด้วยคำสั่ง

ถ้าเกิดไม่ใช่ Windows OS ตัว \ ที่อยู่ใน session conf ไม่ต้องใส่ ในคำสั่งคือรันบน Windows PowerShell ตัว cookie_secure ที่กำหนดเป็น false เพราะว่าเล่นบน http แต่ถ้าเกิดใช้ https พารามิเตอร์ cookie_secure ไม่ต้องใส่

จาก https://docs.konghq.com/enterprise/0.36-x/kong-manager/authentication/sessions/#example-configurations

ส่วน KONG_PASSWORD คือ กำหนด password สำหรับใช้ login ด้วย user kong_admin บนหน้า kong admin

ต่อมา run container kong-ee โดยเลือกวิธีการ authen เป็น basic-auth คือหน้าล็อคอินทั่วไป ด้วยคำสั่งตามนี้

จากนั้นลองเช็คสถานะ container ของเราว่ารันอยู่ทั้ง database และ kong-ee ไหมด้วยคำสั่ง docker ps -a

แต่ถ้ามีตัวไหนไม่รันให้ใช้คำสั่ง docker logs <container id> ถ้าทุกอย่างเรียบร้อยแล้วก็ไปที่ http://localhost:8002/login จะเจอหน้าให้ล็อคอิน

ใช้ username: kong_admin , password: password

ลอง invite users ตัวเองเป็น super admin ดู โดยกดที่ invite users แล้วก็กรอกข้อมูลตัวเอง แล้วเลือก super admin จากนั้นกด enable Dev portal แล้วไปที่แถบ Security>admin ตามรูป กด view user ที่เราเพิ่งทำการ invite ไปขึ้นมาเพื่อดูรายละเอียดแล้ว copy registration link ไปวางในอีก browser (อันนี้เราอาจเอาไปประยุกต์กับการส่งอีเมลล์ยืนยันตัวตนโดยส่งลิงค์นี้ให้เขาไป register ในเมลล์ตัวเองอีกทีนะ)

เมื่อลองเปิดลิงค์นี้ จะได้หน้า register ของอีเมลล์ที่ถูก invite ไป

พอสร้าง password กด register เรียบร้อยมันจะให้เราลองล็อคอิน

ถ้าล็อคอินผ่าน user ก็จะเปลี่ยนเป็นชื่อเราแทนที่ชื่อ kong_admin พร้อมกับหน้า dashboard ของ kong admin ไว้เช็คจำนวน request ที่เข้ามายัง service เรา

ส่วนหน้า vital จะเป็นเหมือนหน้าที่เอาไว้เช็คสถานะ service เราทั้งหมด

คือจะดูว่ามี request เข้ามายังระบบเราเยอะแค่ไหน ความช้าของเน็ตเวิร์คเกิดที่ proxy หรือว่า Upstream ที่ถูกทำ balance load ไว้ ส่วนแถบ organization ก็เอาไว้จัดการ role หรือ invite user ส่วนแถบ Dev Portals ก็จะเป็นหน้าเอาไว้จัดการหน้า Dev portal ที่รันอยู่ที่ http://127.0.0.1:8003/default ซึ่งก่อนที่เราจะทำการ add developer เข้ามาในทีมได้ เราต้องมา enable Authentication plugin ก่อนซึ่งในตัวอย่างนี้ขอใช้เป็น ฺBasic Authentication แล้วก็ต้องกำหนด session config ตามรูป ในกรณีที่ใช้ http ก้สามารถใส่เพิ่มเข้าไปได้ว่า cookie_secure:false

จากนั้นไปลอง create account developer บนหน้า dev portal กัน

พอสร้าง developer account เสร็จก็มาที่หน้า admin ดูที่แถบ developer จะเห็นลิสต์ชื่อ ซึ่ง admin สามารถทำการ approve หรือ reject ก็ได้

พอล็อคอินเข้ามาในหน้า Dev portal หน้าแรกก็จะโชว์ dashboard services ที่เราทำการ manage ผ่าน kong ไว้

ส่วนในแถบ documentation อันนี้จะโชว์รายละเอียดของ services ว่า request, response เป็นยังไง ด้วย swagger 2.0 ซึ่งในหน้า Dev portal ทำได้แค่ test api call แต่ถ้าอยากแก้ไข parameter ต้องไปแก้ในหน้า kong admin

หน้า kong admin
หน้า dev portal

admin ยังสามารถทำการแก้ไขหน้าเว็บ Dev portal ในโหมด editor coding ได้

หรือจะทำการแก้ไขทีละหน้าแบบนี้ก็ได้ที่แถบ Dev portal> Pages

ส่วนถ้าใครอยากลองเล่น plugin kong ee ก็สามารถ add service ของตัวเองได้ในหน้า web admin แถบ API Gateway > services ซึ่งวิธีการใช้ก็จะคล้ายๆ konga ที่เราจะต้องทำการสร้าง service ก่อนจากนั้นทำการ route path ให้ service นั้นเพื่อให้คนมาเรียกใช้ service นั้นผ่าน kong แล้วตั้งค่า consumer เพื่อเรียกใช้ service แต่ความต่างคือ kong ee อาจจะมี plugin ที่เยอะกว่า แต่เหมือนว่า kong จะไม่ได้มีรูปแบบ mock up service ได้แบบพวกแบรนด์ enterprise อย่าง AWS หรือ google ที่สามารถสร้างเพื่อ test โดยที่ไม่จำเป็นต้องมี service นั้นจริงๆก็ได้ ทำการ make request, response ขึ้นมาเองไม่ได้ ไม่มี feauture geolocation แบบที่ google apigee ทำว่าสามารถเช็คได้ว่า service ถูกยิงมาจาก region ไหน แล้วก็ไม่มีตัวปลั๊กอิน convert format data จาก xml เป็น json

ซึ่ง dafault port สำหรับลองเรียกใช้ service ผ่าน kong จะเป็น port 8000 ถ้า http แต่ถ้า https จะเป็น 8443 อ้างอิงจาก document kong

https://docs.konghq.com/enterprise/0.36-x/getting-started/start-kong/?fbclid=IwAR2mbeKHrFIwjDSU8uBpzC5ds-MsivoT_tJpIcCp1cb8AYtVei8svg2mLA4

แต่ถ้าใครยังไม่รู้ว่าจะเล่น plugin ยังไงดี สามารถดูตัวอย่างวิธีการใช้ปลั๊กอินได้จากบทความก่อนหน้าได้ที่ลิงค์นี้ แต่ว่าต้องอ้างอิงคู่กับ document version ล่าสุดของ kong ee ไปด้วยนะ ในตัวอย่างบทความก่อนหน้าเป็นเวอร์ชั่น community

ถ้าเกิดใครมีคำแนะนำอะไรก็สามารถบอกเพิ่มเติมได้เกี่ยวกับบล็อคนี้ก็สามารถแสดงความคิดเห็นกันได้เลยเน้อ ขอบคุณค่ะ

--

--

Ploy Thanasornsawan
Ploy Thanasornsawan

Written by Ploy Thanasornsawan

Sharing knowledge about security and automation techniques.

No responses yet