การใช้ Amazon Managed Grafana ด้วย SAML Authentication ของ Auth0

การใช้ Amazon Managed Grafana ด้วย SAML Authentication ของ Auth0

เราสามารถใช้งาน Amazon Managed Grafana และ Auth0 ร่วมกันได้ จึงอยากจะมาแนะนำการใช้ Auth0 ในการ Login Amazon Managed Grafana ในบทความนี้
Clock Icon2023.01.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

สวัสดีครับ 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

คลิก Create workspace

แล้วทำการตั้งค่าดังนี้

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 ของเรา

คลิก Sign in with SAML

แล้วจะเห็น "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) ครับ !

Link อ้างอิง

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.