การใช้ Amazon Managed Grafana ด้วย SAML Authentication ของ Auth0
สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ
ครั้งนี้ผมจะมาแนะนำการใช้ Amazon Managed Grafana ด้วย SAML Authentication ของ Auth0
Amazon Managed Grafana คืออะไร?
Amazon Managed Grafana คือบริการที่มีการจัดการเต็มรูปแบบสำหรับ Grafana ซึ่งเป็นแพลตฟอร์มการวิเคราะห์แบบโอเพ่นซอร์สยอดนิยมสำหรับการสืบค้น แสดงเป็นภาพ และทำความเข้าใจตัววัดของคุณ ไม่ว่าจะเก็บไว้ที่ใด
Amazon Managed Grafana ต้องตั้งค่าระบบตรวจสอบสิทธิ์แยกต่างหาก ซึ่งจำเป็นต้องใช้ AWS IAM Identity Center (AWS SSO) หรือระบบ SAML แต่ในบทความนี้จะมาแนะนำวิธีการใช้ Auth0 เป็น SAML
สิ่งที่ต้องมี
※สร้างบัญชี Auth0 แล้ว
ดูวิธีการสร้างบัญชี Auth0 ได้ที่ลิงก์ด้านล่างนี้
การสร้าง Workspace ใน Amazon Managed Grafana
Login เข้ามาที่หน้า AWS Management Console แล้วเลือก Region Singapore
ที่ด้านขวาบน
ค้นหา ?︎ Amazon Grafana
แล้วเลือก Amazon Grafana
แล้วทำการตั้งค่าดังนี้
Step 1 - Specify workspace details
หัวข้อ Workspace details
ป้อน Workspace name และ Workspace description ตามต้องการ เช่น tinnakorn-test
แล้วคลิก Next
Step 2 - Configure settings
หัวข้อ Authentication access
Choose at least one authentication method.: ✅
Security Assertion Markup Language (SAML)
หัวข้อ Permission type
⦿ Service managed
จากนั้นเลื่อนลงมาด้านล่างสุด แล้วคลิก Next
Step 3 - Service managed permission settings
ครั้งนี้จะไม่ทำการตั้งค่าใดๆ เพราะเราสามารถตั้งค่าภายหลังได้ ให้เลื่อนลงมาด้านล่างสุด แล้วคลิก Next
Step 4 - Review and create
ตรวจสอบข้อมูลที่ตั้งค่าตั้งแต่ Step 1 - Step 3 แล้วคลิก Create workspace
แล้วรอการเริ่มต้นของ Workspace สักครู่จนกว่าจะแสดงเป็น Status: ✅ Active
ครั้งนี้ใช้เวลาประมาณ 4 - 5 นาที
การตั้งค่า Workspace ของ Amazon Managed Grafana ใน SAML
จากนั้นเลื่อนลงมาด้านล่างสุดที่หัวข้อ Security Assertion Markup Language (SAML) แล้วคลิก Complete setup
แล้วจะเห็น URL 3 รายการที่แสดงอยู่ใน Step 1: Configure your IdP เนื่องจากต้องใช้ Service provider identifier (Entity ID), Service provider login URL, Service provider reply URL (Assertion consumer service URL) ในการตั้งค่า Auth0 ดังนั้นให้คัดลอก URL ทั้ง 3 รายการนี้และเปิดหน้าจอนี้ค้างไว้ แล้วนำ URL เหล่านี้ไปตั้งค่าใน Auth0 ก่อน
การตั้งค่า Auth0
การสร้าง Application
เข้ามาที่หน้าเว็บไซต์ Auth0 แล้วเลือก Applications
จาก Applications
และคลิก + Create Application
แล้วป้อน Name* ตามต้องการ เช่น tinnakorn-test-AMG
และเลือก choose application type: Regular Web Applications
แล้วคลิก Create
เมื่อสร้าง Application เสร็จแล้วจะแสดงหน้าจอแบบนี้
ให้คลิกแท็บ Addons
แล้วคลิกที่ SAML2 WEB APP
เมื่อหน้าจอนี้แสดงขึ้นมาแล้ว ให้คลิก Download
ที่ Identity Provider Metadata
คลิกแท็บ Settings
แล้วทำตามขั้นตอนดังนี้
» Application Callback URL: ป้อน Service provider reply URL (Assertion consumer service URL) ของ Grafana
» Settings: คัดลอก Code ด้านล่างนี้วางในช่อง Settings แล้วป้อน URL ที่ "audience"
และ "destination"
ตามคำแนะนำ
» แล้วเลื่อนลงมาด้านล่างสุด แล้วคลิก Enable
และคลิก Save
ก็จะสามารถเปิดการใช้งานได้สำเร็จ
{
"audience": "<Service provider identifier (Entity ID)>",
"destination": "<Service provider reply URL (Assertion consumer service URL)>",
"mappings": {
"email": "email",
"nickname": "nickname"
},
"createUpnClaim": false,
"passthroughClaimsWithNoMapping": false,
"mapUnknownClaimsAsIs": false
}
เมื่อเปิดใช้งานเสร็จแล้วจะแสดงหน้าจอแบบนี้
การสร้าง User
เราจะมาสร้าง User เตรียมไว้เพื่อใช้สำหรับตั้งค่าใน Amazon Managed Grafana
คลิก Users
จาก User Management แล้วคลิก + Create User
เมื่อหน้าจอ Create user แสดงขึ้นมาแล้วให้ป้อนดังนี้:
» Email*: ป้อน Email ที่ต้องการให้เป็นผู้ดูแลระบบใน Grafana (ป้อน Email Address ที่ถูกต้อง เพราะมีการยืนยันการมีอยู่ของ Email)
» Password*: ป้อน Password ที่ต้องการ
» Repeat Password*: ป้อน Password อีกครั้งให้ตรงกัน
» Connection*: Username-Password-Authentication
(Default)
» คลิก Create
เมื่อสร้างเสร็จแล้วจะแสดงหน้าจอแบบนี้ ให้ดูที่ Name
ในแท็บ Details
เราจะใช้ Name นี้ไปตั้งค่าใน Amazon Managed Grafana ในส่วนของ SAML (Step 3: Map assertion attributes)
การป้อนข้อมูล Auth0 ใน Amazon Managed Grafana
กลับมาที่หน้าจอการตั้งค่า Grafana ที่เปิดค้างไว้เมื่อสักครู่นี้
แล้วมาที่ Step 2: Import the metadata ให้เลือก Import method: ◎ Upload or copy/paste
แล้วอัปโหลดไฟล์ Identity Provider Metadata ที่ดาวน์โหลดมาจากขั้นตอน การตั้งค่า Auth0
Step 3: Map assertion attributes ให้ป้อนค่าดังนี้:
» Assertion attribute role: email
» Admin role values: ป้อน Email ของ User ที่สร้างใน Auth0 ที่ต้องการให้เป็นผู้ดูแลระบบ
คลิกเปิด ▼ Additional settings - optional
และป้อนค่าดังนี้:
» Assertion attribute name: nickname
» Assertion attribute login: email
» Assertion attribute email: email
» Login validity duration (in minutes): 1440
(ค่านี้เป็นนาทีมีค่าเท่ากับ 24 ชั่วโมง)
» เมื่อป้อนค่าเสร็จแล้ว คลิก Save SAML configuration
การทดสอบ Login
หลังจากตั้งค่า SAML ในขั้นตอนที่แล้วเสร็จแล้ว ให้รอประมาณ 2 -3 นาที
เมื่อพร้อมที่จะดำเนินการต่อแล้ว ให้คลิกลิงก์ Grafana workspace URL
จากหน้า Workspace ของเรา
แล้วจะเห็น "Tenant Name" และชื่อ "Application: (เช่น tinnakorn-test-AMG)" ที่อยู่ใน Auth0
จากนั้นให้ป้อน Email address และ Password ของ User ใน Auth0 แล้วคลิก Continue
เมื่อเรา Login เข้ามาได้แล้วจะแสดงหน้าจอแบบนี้
ตรวจสอบ Users ใน Configuration
หากตั้งค่าผิดพลาดก็ยังสามารถ Login เข้ามาได้ แต่จะไม่ใช้ผู้ดูแลระบบ ปัญหานี้ก็อาจเกิดขึ้นได้ ดังนั้นเราจำเป็นต้องมาตรวจสอบ Users ใน Configuration กัน
คลิกไอคอนตั้งค่า ⚙
ด้านล่างซ้าย แล้วเลือกแท็บ Users
ในหน้า Configuration
ถ้าคอลัมน์ Login แสดงเหมือนกับ Email ของ User ที่สร้างใน Auth0 และ Role เป็น Admin ก็ถือว่าสามารถ Login ในฐานะผู้ดูแลระบบได้สำเร็จ
สรุป
ผมได้สาธิตวิธีการใช้ Auth0 ในการ Login Amazon Managed Grafana ไปแล้ว เนื่องจาก Auth0 มี Free Plan ดังนั้นเราสามารถใช้งานได้ง่ายและสะดวกมาก
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
POP จากบริษัท Classmethod (Thailand) ครับ !