โครงการข่าวกรองธุรกิจขนาดใหญ่ (BI) ที่มีผู้ใช้และทีมจำนวนมากและข้อมูลละเอียดอ่อนต้องการสถาปัตยกรรมความปลอดภัยแบบหลายแง่มุม สถาปัตยกรรมดังกล่าวควรให้ผู้ดูแลระบบ BI และสถาปนิกมีความสามารถในการลดจำนวนข้อมูลที่ผู้ใช้สามารถเข้าถึงได้ สำหรับวิธีแก้ปัญหาที่ตรงไปตรงมาในการจัดการ อเมซอน QuickSight สิทธิ์การเข้าถึงผู้ใช้และสินทรัพย์ คุณสามารถใช้ อินเทอร์เฟซบรรทัดคำสั่ง AWS AWS (AWS CLI) หรือ คอนโซลการจัดการ AWS เพื่อแก้ไขบทบาทผู้ใช้ QuickSight และการเข้าถึงแดชบอร์ดด้วยตนเอง อย่างไรก็ตาม ในบางกรณี องค์กรสามารถมีผู้ใช้และกลุ่มได้หลายร้อยหรือหลายพันคน และวิธีการจัดการการเข้าถึงเหล่านี้ไม่มีประสิทธิภาพ เราได้รับคำขอจำนวนมากเพื่อจัดเตรียมวิธีการตั้งโปรแกรมขั้นสูงเพื่อปรับใช้และจัดการสถาปัตยกรรมความปลอดภัย QuickSight แบบรวมศูนย์
โพสต์นี้อธิบายแนวทางปฏิบัติที่ดีที่สุดสำหรับการตรวจสอบสิทธิ์ QuickSight และการควบคุมการเข้าถึงแบบละเอียดของการอนุญาต และมอบแอปพลิเคชันระบบคลาวด์แบบรวมศูนย์ด้วย ชุดพัฒนา AWS Cloud (AWS CDK) กองเพื่อดาวน์โหลด ข้อดีอย่างหนึ่งของโซลูชันของเราคือองค์กรสามารถปรับใช้เฟรมเวิร์กการรักษาความปลอดภัยเพื่อจัดการการควบคุมการเข้าถึง BI โดยไม่ต้องออกจาก AWS
การกำหนดค่าทั้งหมดจะถูกบันทึกไว้ใน ที่เก็บพารามิเตอร์ AWS Systems Manager. Parameter Store ให้การจัดเก็บข้อมูลที่ปลอดภัยและมีลำดับชั้นสำหรับการจัดการข้อมูลการกำหนดค่าและการจัดการความลับ คุณสามารถจัดเก็บข้อมูล เช่น ชื่อผู้ใช้ สิทธิ์ของผู้ใช้ รหัสผ่าน และสตริงฐานข้อมูลเป็นค่าพารามิเตอร์ คุณสามารถอ้างอิง ผู้จัดการระบบ AWS พารามิเตอร์ในสคริปต์และเวิร์กโฟลว์การกำหนดค่าและการทำงานอัตโนมัติโดยใช้ชื่อเฉพาะที่คุณระบุเมื่อคุณสร้างพารามิเตอร์
เทมเพลตแอปพลิเคชัน AWS CDK เหมาะสมกับโครงสร้างพื้นฐานการผสานรวมอย่างต่อเนื่องและการปรับใช้อย่างต่อเนื่อง (CI/CD) และให้หรือเพิกถอนการรับรองความถูกต้องและการอนุญาตทั้งหมดตามนโยบายที่กำหนดไว้ซึ่งกำหนดโดย AWS สิ่งนี้จะหลีกเลี่ยงข้อผิดพลาดของมนุษย์ที่อาจเกิดขึ้นจากนักพัฒนา BI หรือผู้ดูแลระบบ นักพัฒนา BI สามารถแก้ไขพารามิเตอร์การกำหนดค่าเพื่อเผยแพร่แดชบอร์ดใหม่ให้กับผู้ใช้ปลายทาง ในเวลาเดียวกัน ผู้ดูแลระบบ BI สามารถแก้ไขชุดพารามิเตอร์อื่นเพื่อจัดการผู้ใช้หรือกลุ่ม การออกแบบ AWS CDK CI/CD นี้เชื่อมช่องว่างระหว่างกิจกรรมการพัฒนาและการดำเนินงานโดยบังคับใช้ระบบอัตโนมัติในการสร้างและปรับใช้แอปพลิเคชัน BI
ข้อกำหนดด้านความปลอดภัย
ในการออกแบบแอปพลิเคชัน BI ขององค์กร การเช่าหลายรายการเป็นกรณีการใช้งานทั่วไป ซึ่งให้บริการผู้ใช้หลายชุดด้วยโครงสร้างพื้นฐานเดียว ผู้เช่าอาจเป็นลูกค้าที่แตกต่างกันของผู้จำหน่ายซอฟต์แวร์อิสระ (ISV) หรือแผนกต่างๆ ขององค์กร ในการออกแบบผู้เช่าหลายราย ผู้เช่าแต่ละรายจะแชร์แดชบอร์ด การวิเคราะห์ และสินทรัพย์ QuickSight อื่นๆ ผู้ใช้แต่ละรายที่สามารถเห็นผู้ใช้รายอื่นทั้งหมดที่อยู่ในผู้เช่าเดียวกัน (เช่น เมื่อแชร์เนื้อหา) จะไม่ปรากฏแก่ผู้เช่ารายอื่น ภายในผู้เช่าแต่ละราย ทีมผู้ดูแลระบบ BI ต้องสร้างกลุ่มผู้ใช้ที่แตกต่างกันเพื่อควบคุมการอนุญาตข้อมูล รวมถึงการอนุญาตการเข้าถึงสินทรัพย์และการเข้าถึงข้อมูลระดับย่อย
มาพูดถึงกรณีการใช้งานของการอนุญาตการเข้าถึงเนื้อหาโดยละเอียด ในแอปพลิเคชัน BI สินทรัพย์ที่แตกต่างกันมักจะถูกจัดประเภทตามโดเมนธุรกิจ (เช่น แดชบอร์ดการปฏิบัติงานหรือแดชบอร์ดสรุปสำหรับผู้บริหาร) และการจัดประเภทข้อมูล (ที่สำคัญ เป็นความลับสูง ภายในเท่านั้น และสาธารณะ) ตัวอย่างเช่น คุณสามารถมีแดชบอร์ดสองหน้าสำหรับวิเคราะห์ข้อมูลผลการขาย รูปลักษณ์ของแดชบอร์ดทั้งสองจะคล้ายกัน แต่การจัดประเภทความปลอดภัยของข้อมูลนั้นแตกต่างกัน แดชบอร์ดหนึ่งชื่อ Sales Critical Dashboard ประกอบด้วยคอลัมน์และแถวข้อมูลที่สำคัญ แดชบอร์ดอื่นที่เรียกว่า Saleshigh-Confidential Dashboard มีคอลัมน์และแถวข้อมูลที่เป็นความลับสูง ผู้ใช้บางคนได้รับอนุญาตให้ดูทั้งสองแดชบอร์ด และคนอื่น ๆ มีสิทธิ์ระดับความปลอดภัยต่ำกว่าและสามารถเข้าถึงแดชบอร์ดที่เป็นความลับสูงสำหรับการขายเท่านั้น
ในกรณีการใช้งานต่อไปนี้ เราจะจัดการกับการเข้าถึงข้อมูลระดับย่อยดังนี้:
- การเข้าถึงระดับแถว (RLS) – สำหรับผู้ใช้ที่สามารถเข้าถึง Sales Critical Dashboard บางคนสามารถดูได้เฉพาะข้อมูลของสหรัฐอเมริกาเท่านั้น อย่างไรก็ตาม ผู้ใช้ทั่วโลกบางรายสามารถดูข้อมูลของทุกประเทศ รวมทั้งสหรัฐอเมริกาและสหราชอาณาจักร
- การเข้าถึงระดับคอลัมน์ (CLS) – ผู้ใช้บางคนสามารถดูได้เฉพาะคอลัมน์ข้อมูลที่ไม่สามารถระบุตัวบุคคลได้ (PII) ของชุดข้อมูล ในขณะที่ทีม HR สามารถดูคอลัมน์ทั้งหมดของชุดข้อมูลเดียวกันได้
โครงการขนาดใหญ่อาจมีผู้เช่าหลายราย กลุ่มหลายร้อยกลุ่ม และผู้ใช้หลายพันรายในบัญชี QuickSight บัญชีเดียว ทีมผู้นำข้อมูลต้องการปรับใช้โปรโตคอลเดียวสำหรับการสร้างและรับรองความถูกต้องของผู้ใช้ เพื่อลดต้นทุนการบำรุงรักษาและความเสี่ยงด้านความปลอดภัย สถาปัตยกรรมและเวิร์กโฟลว์ที่อธิบายไว้ในโพสต์นี้ช่วยให้ผู้นำข้อมูลบรรลุเป้าหมายนี้
นอกจากนี้ เพื่อหลีกเลี่ยงข้อผิดพลาดของมนุษย์ในการทำงานประจำวัน เราต้องการให้อนุญาตและเพิกถอนการอนุญาตด้านความปลอดภัยเหล่านี้โดยอัตโนมัติ และเหมาะสมกับโครงสร้างพื้นฐาน CI/CD รายละเอียดจะอธิบายภายหลังในโพสต์นี้
ภาพรวมสถาปัตยกรรม
ไดอะแกรมต่อไปนี้แสดงสถาปัตยกรรมบัญชี QuickSight ของโซลูชันนี้
- ผู้เขียนสร้างแดชบอร์ดและอัปเดต AWS Systems Manager Parameter Store เพื่อเผยแพร่แดชบอร์ดไปยังกลุ่มต่างๆ
- แอดมินอนุมัติคำขอจากผู้เขียน
- ผู้ดูแลระบบอัปเดตการจัดการผู้ใช้ (บทบาท เนมสเปซ) โดยแก้ไข AWS Systems ManagerParameter Store
- DevOps ปรับใช้การอัปเดตด้วย AWS CDK
*กลุ่ม: กลุ่มสิทธิ์การเข้าถึงวัตถุควบคุมเจ้าของ/ผู้ดูของวัตถุ กลุ่มเซ็กเมนต์ข้อมูลรวมกับ RLS/CLS ควบคุมการเข้าถึงข้อมูล
*ชุดข้อมูล: มีข้อมูลทั้งหมด จำกัดด้วยการรักษาความปลอดภัยระดับแถว (RLS) และความปลอดภัยระดับคอลัมน์ (CLS)
ไดอะแกรมต่อไปนี้แสดงเวิร์กโฟลว์การรับรองความถูกต้องของสถาปัตยกรรม:
*เข้าสู่ระบบ QuickSight ครั้งแรก: หากผู้ใช้ QuickSight ไม่ได้ลงทะเบียนก่อนเข้าสู่ระบบครั้งแรก ผู้อ่านจะถูกสร้างขึ้นและผู้อ่านนี้สามารถดูได้เฉพาะแดชบอร์ดหน้า Landing Page ซึ่งแชร์กับผู้ใช้ทั้งหมดของบัญชีนี้ หน้า Landing Page แสดงรายการรายงานที่ผู้ใช้รายนี้ดูได้
ไดอะแกรมต่อไปนี้แสดงเวิร์กโฟลว์การอนุญาตของสถาปัตยกรรม
รายละเอียดไดอะแกรมการให้สิทธิ์:
- ข้อมูลผู้ใช้ (แผนก ทีม ที่ตั้งทางภูมิศาสตร์) ถูกจัดเก็บไว้ใน Amazon Redshift, Amazon Athena หรือฐานข้อมูลอื่นๆ เมื่อรวมกับการทำแผนที่ผู้ใช้กลุ่ม ฐานข้อมูล RLS ถูกสร้างขึ้นสำหรับการควบคุมการเข้าถึงข้อมูล
- การกำหนดสิทธิ์รายชั่วโมง:
- ตามชื่อกลุ่ม-พนักงาน (ผู้ใช้) การทำแผนที่ (membership.csv) และการทำแผนที่บทบาทกลุ่ม (/qs/console/roles) ฟังก์ชัน AWS Lambda จะสร้างกลุ่ม การลงทะเบียน ผู้ใช้ กำหนดสมาชิกกลุ่ม ลบการเป็นสมาชิกกลุ่ม ส่งเสริมผู้อ่าน ผู้เขียนหรือผู้ดูแลระบบ และลบผู้ใช้หากพวกเขาถูกลดระดับจากผู้เขียนหรือผู้ดูแลระบบเป็นผู้อ่าน
- ตามการแมป group-dashboard ใน /qs/config/access ฟังก์ชัน AWS Lambda จะอัปเดตสิทธิ์ของแดชบอร์ดไปยังกลุ่ม QuickSight
- ตามการแมปเนมสเปซกลุ่มใน members.csv ฟังก์ชัน AWS Lambda จะสร้างกลุ่ม QuickSight ในเนมสเปซที่ระบุ
- พารามิเตอร์ตัวอย่างของการอนุญาตการเข้าถึงออบเจ็กต์และเซ็กเมนต์ข้อมูล:
- พารามิเตอร์ตัวอย่างบทบาทของผู้ใช้ QuickSight:
- ตัวอย่างข้อมูลของสมาชิก.csv:
ในโซลูชันนี้ เนมสเปซแบบกำหนดเองจะถูกปรับใช้เพื่อรองรับการเช่าหลายรายการ NS default
เนมสเปซมีไว้สำหรับผู้ใช้ภายในของบริษัท (เราเรียกว่า OkTank) OkTank สร้าง 3rd-Party
เนมสเปซสำหรับผู้ใช้ภายนอก หากเราต้องรองรับผู้เช่ามากขึ้น เราก็สามารถสร้างเนมสเปซที่กำหนดเองได้มากขึ้น โดยค่าเริ่มต้น เราจำกัดเนมสเปซไว้ที่ 100 รายการต่อบัญชี AWS หากต้องการเพิ่มขีดจำกัดนี้ โปรดติดต่อทีมผลิตภัณฑ์ QuickSight สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเช่าหลายรายการ โปรดดูที่ ฝังการวิเคราะห์ผู้เช่าหลายรายในแอปพลิเคชันด้วย Amazon QuickSight.
ในแต่ละเนมสเปซ เราสร้างกลุ่มประเภทต่างๆ ตัวอย่างเช่น ใน default
เนมสเปซ เราสร้าง BI-Admin
และ BI-Developer
กลุ่มสำหรับ admin
และ author
ผู้ใช้ สำหรับ reader
เราปรับใช้กลุ่ม QuickSight สองประเภทเพื่อควบคุมสิทธิ์การเข้าถึงสินทรัพย์และการเข้าถึงข้อมูล: กลุ่มสิทธิ์การเข้าถึงออบเจ็กต์และกลุ่มเซ็กเมนต์ข้อมูล
ตารางต่อไปนี้สรุปวิธีที่กลุ่มสิทธิ์การเข้าถึงวัตถุควบคุมสิทธิ์
ชื่อกลุ่ม | namespace | การอนุญาต | หมายเหตุ / รายละเอียดเพิ่มเติม |
critical |
ค่าเริ่มต้น | ดูแดชบอร์ดทั้งสอง (ประกอบด้วยข้อมูลที่สำคัญและข้อมูลที่เป็นความลับสูง) | |
highlyconfidential |
ค่าเริ่มต้น | ดูเฉพาะแดชบอร์ดการขายที่มีความลับสูงเท่านั้น | |
BI-Admin |
ค่าเริ่มต้น | บริหารจัดการบัญชีและแก้ไขทรัพย์สินทั้งหมด | ผู้ใช้ใน BI-Admin กลุ่มได้รับมอบหมายให้ Admin บทบาทของผู้ใช้ QuickSight |
BI-Developer |
ค่าเริ่มต้น | แก้ไขทรัพย์สินทั้งหมด | ผู้ใช้ใน BI-Developer กลุ่มได้รับมอบหมายบทบาทผู้ใช้ผู้เขียน QuickSight |
Power-reader |
ค่าเริ่มต้น | ดูทรัพย์สินทั้งหมดและสร้างการวิเคราะห์เฉพาะกิจเพื่อเรียกใช้รายงานการวิเคราะห์แบบบริการตนเอง |
ผู้ใช้ใน อย่างไรก็ตาม กลุ่มนี้ไม่สามารถบันทึกหรือแชร์รายงานเฉพาะกิจได้ |
3rd-party |
เนมสเปซที่ไม่ใช่ค่าเริ่มต้น (3rd-party เนมสเปซ เป็นต้น) |
แชร์ได้เฉพาะผู้อ่าน (3rd-party-reader กลุ่มตัวอย่าง) ในเนมสเปซเดียวกัน |
ในเนมสเปซที่ไม่ใช่ค่าเริ่มต้น เรายังสามารถสร้างกลุ่มสิทธิ์การเข้าถึงออบเจ็กต์อื่นๆ ซึ่งคล้ายกับกลุ่มที่สำคัญในเนมสเปซเริ่มต้น |
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับกลุ่ม QuickSight ผู้ใช้ และบทบาทของผู้ใช้ โปรดดูที่ การจัดการการเข้าถึงของผู้ใช้ภายใน Amazon QuickSight, การจัดเตรียมผู้ใช้สำหรับ Amazon QuickSightและ การใช้แดชบอร์ดการดูแลระบบสำหรับมุมมองแบบรวมศูนย์ของอ็อบเจ็กต์ Amazon QuickSight.
กลุ่มประเภทที่สอง (กลุ่มส่วนข้อมูล) รวมกับ ความปลอดภัยระดับแถว ชุดข้อมูลและ ความปลอดภัยระดับคอลัมน์ควบคุมการเข้าถึงข้อมูลตามที่อธิบายไว้ในตารางต่อไปนี้
ชื่อกลุ่ม | namespace | การอนุญาต | ขอบเขต |
USA |
ค่าเริ่มต้น | ดูเฉพาะข้อมูลของสหรัฐอเมริกาบนแดชบอร์ดใด ๆ | ระดับแถว |
GBR |
ค่าเริ่มต้น | ดูเฉพาะข้อมูลสหราชอาณาจักรบนแดชบอร์ดใด ๆ | ระดับแถว |
All countries |
ค่าเริ่มต้น | ดูข้อมูลของทุกประเทศบนแดชบอร์ดใด ๆ | ระดับแถว |
non-PII |
ค่าเริ่มต้น | ดูหมายเลขประกันสังคม รายได้ต่อปี และคอลัมน์อื่นๆ ของข้อมูล PII ไม่ได้ | ระดับคอลัมน์ |
PII |
ค่าเริ่มต้น | สามารถดูคอลัมน์ทั้งหมดรวมถึงข้อมูล PII | ระดับคอลัมน์ |
เราสามารถตั้งค่ากลุ่มที่คล้ายกันในเนมสเปซที่ไม่ใช่ค่าเริ่มต้น
กลุ่มต่างๆ เหล่านี้สามารถทับซ้อนกันได้ ตัวอย่างเช่น หากผู้ใช้อยู่ในกลุ่ม USA
, Critical
และ PII
พวกเขาสามารถดูข้อมูลของสหรัฐอเมริกาบนแดชบอร์ดทั้งสองพร้อมคอลัมน์ทั้งหมด แผนภาพเวนน์ต่อไปนี้แสดงความสัมพันธ์ระหว่างกลุ่มเหล่านี้
โดยสรุป เราสามารถกำหนดสถาปัตยกรรมความปลอดภัยแบบหลายแง่มุมได้โดยการรวมคุณสมบัติ QuickSight รวมถึงเนมสเปซ กลุ่ม ผู้ใช้ RLS และ CLS การกำหนดค่าที่เกี่ยวข้องทั้งหมดจะถูกบันทึกไว้ใน Parameter Store รายชื่อผู้ใช้ QuickSight และข้อมูลการแมปผู้ใช้กลุ่มอยู่ใน บริการจัดเก็บข้อมูลอย่างง่ายของ Amazon บัคเก็ต (Amazon S3) เป็นไฟล์ CSV (ชื่อ membership.csv
). ไฟล์ CSV นี้อาจเป็นผลลัพธ์ของการสืบค้น LDAP หลาย AWS แลมบ์ดา ฟังก์ชันต่างๆ ถูกกำหนดให้ทำงานเป็นรายชั่วโมง (คุณยังสามารถเรียกใช้ฟังก์ชันเหล่านี้ได้ตามต้องการ เช่น รายวัน รายสัปดาห์ หรือรายละเอียดเวลาใดก็ได้ที่เหมาะกับความต้องการของคุณ) เพื่ออ่านพารามิเตอร์และ membership.csv
. ตามการกำหนดค่าที่กำหนดไว้ ฟังก์ชัน Lambda จะสร้าง อัปเดต หรือลบกลุ่ม ผู้ใช้ และสิทธิ์การเข้าถึงสินทรัพย์
เมื่อการกำหนดค่าความปลอดภัยที่จำเป็นเสร็จสมบูรณ์ ฟังก์ชัน Lambda จะเรียกใช้ QuickSight API เพื่อรับข้อมูลที่อัปเดตและบันทึกผลลัพธ์ในบัคเก็ต S3 เป็นไฟล์ CSV ทีมผู้ดูแลระบบ BI สามารถสร้างชุดข้อมูลด้วยไฟล์เหล่านี้และแสดงภาพผลลัพธ์ด้วยแดชบอร์ด ดูข้อมูลเพิ่มเติมได้ที่ การใช้แดชบอร์ดการดูแลระบบสำหรับมุมมองแบบรวมศูนย์ของอ็อบเจ็กต์ Amazon QuickSight และ การสร้างคอนโซลการดูแลระบบใน Amazon QuickSight เพื่อวิเคราะห์ตัววัดการใช้งาน.
นอกจากนี้ ข้อผิดพลาดของฟังก์ชัน Lambda และเหตุการณ์การลบผู้ใช้จะถูกเก็บไว้ในบัคเก็ต S3 นี้เพื่อให้ทีมผู้ดูแลระบบตรวจสอบ
อัตโนมัติ
ไดอะแกรมต่อไปนี้แสดงขั้นตอนการทำงานโดยรวมของฟังก์ชัน Lambda
เราใช้วิธีการตั้งโปรแกรมได้เพื่อสร้างและกำหนดค่ากลุ่มและผู้ใช้โดยอัตโนมัติ สำหรับคำขอลงทะเบียนผู้ใช้เฉพาะกิจ (เช่น ผู้ใช้ไม่ได้บันทึกใน membership.csv
แต่เนื่องจากเวลาแฝง) ตราบใดที่ผู้ใช้สามารถพิสูจน์ตัวตนได้ พวกเขาสามารถสันนิษฐานได้ว่า AWS Identity และการจัดการการเข้าถึง (IAM) บทบาท quicksight-fed-user
เพื่อจัดเตรียมตนเองในฐานะผู้อ่าน QuickSight ผู้อ่านที่จัดเตรียมตัวเองนี้สามารถดูได้เฉพาะแดชบอร์ดหน้า Landing Page ซึ่งมีรายการแดชบอร์ดและกลุ่มที่เกี่ยวข้อง ตามการแมปแดชบอร์ด-กลุ่ม ผู้อ่านใหม่นี้สามารถสมัครเป็นสมาชิกของกลุ่มที่กำหนดเพื่อเข้าถึงแดชบอร์ดได้ หากเจ้าของกลุ่มอนุมัติแอปพลิเคชัน ฟังก์ชัน Lambda รายชั่วโมงจะเพิ่มผู้ใช้ใหม่ในกลุ่มในครั้งถัดไปที่เรียกใช้
ไปป์ไลน์ CI/CD เริ่มต้นจาก AWS CDK ผู้ดูแลระบบ BI และผู้เขียนสามารถอัปเดตพารามิเตอร์ตัวจัดการระบบเพื่อเผยแพร่แดชบอร์ดใหม่หรือสินทรัพย์ QuickSight อื่นๆ ในกอง AWS CDK granular_access_stack.py
. ผู้ดูแลระบบ BI สามารถอัปเดตพารามิเตอร์ตัวจัดการระบบในสแต็กเดียวกันเพื่อสร้าง อัปเดต หรือลบเนมสเปซ กลุ่ม หรือผู้ใช้ จากนั้นทีม DevOps จะปรับใช้กอง AWS CDK ที่อัปเดตเพื่อใช้การเปลี่ยนแปลงเหล่านี้กับพารามิเตอร์ตัวจัดการระบบหรือทรัพยากร AWS อื่นๆ ฟังก์ชัน Lambda จะถูกเรียกใช้ทุกชั่วโมงเพื่อเรียก API เพื่อใช้การเปลี่ยนแปลงกับบัญชี QuickSight ที่เกี่ยวข้อง
ขนาด
ฟังก์ชัน Lambda ถูกจำกัดโดยรันไทม์สูงสุด 15 นาที เพื่อเอาชนะข้อจำกัดนี้ เราสามารถแปลงฟังก์ชันแลมบ์ดาเป็น AWS กาว สคริปต์เชลล์ Python ที่มีขั้นตอนระดับสูงดังต่อไปนี้:
- ดาวน์โหลด โบโต3 ไฟล์ล้อจาก pypi.org.
- อัปโหลดไฟล์ wheel ลงในบัคเก็ต S3
- ดาวน์โหลด ฟังก์ชั่นแลมบ์ดา และรวมเป็นสคริปต์ Python เดียวและสร้างสคริปต์เชลล์ AWS Glue Python
- เพิ่มเส้นทาง S3 ของไฟล์ล้อ Boto3 ลงในเส้นทางไลบรารี Python หากคุณมีหลายไฟล์ที่จะเพิ่ม ให้คั่นด้วยเครื่องหมายจุลภาค
- กำหนดเวลาให้งาน AWS Glue นี้ทำงานทุกวัน
สำหรับข้อมูลเพิ่มเติมโปรดดูที่ โปรแกรม AWS Glue ETL Scripts ใน Python และ การใช้ Python Libraries กับ AWS Glue.
เบื้องต้น
คุณต้องมีข้อกำหนดเบื้องต้นต่อไปนี้เพื่อใช้โซลูชันนี้:
- บัญชี QuickSight Enterprise
- ความรู้พื้นฐานของ Python
- ความรู้พื้นฐานของSQL
- ความรู้พื้นฐานของBI
สร้างทรัพยากร
สร้างทรัพยากรของคุณโดยดาวน์โหลดกอง AWS CDK จาก repo GitHub.
ตัว Vortex Indicator ได้ถูกนำเสนอลงในนิตยสาร granular_access
โฟลเดอร์ ให้รันคำสั่ง cdk deploy granular-access
เพื่อปรับใช้ทรัพยากร ดูข้อมูลเพิ่มเติมได้ที่ เวิร์กชอปแนะนำ AWS CDK: Python Workshop.
ปรับใช้โซลูชัน
เมื่อคุณปรับใช้กอง AWS CDK จะสร้างฟังก์ชัน Lambda ห้าฟังก์ชัน ดังที่แสดงในภาพหน้าจอต่อไปนี้
สแต็คยังสร้างแหล่งข้อมูลสนับสนุนเพิ่มเติมในบัญชีของคุณ
พื้นที่ granular_user_governance
ฟังก์ชันถูกทริกเกอร์โดย อเมซอน คลาวด์วอตช์ กฎเหตุการณ์ qs-gc-everyhour
. ข้อมูลของกลุ่มและผู้ใช้ถูกกำหนดไว้ในไฟล์ membership.csv
. ชื่อบัคเก็ต S3 ถูกเก็บไว้ในที่เก็บพารามิเตอร์ /qs/config/groups
. แผนภาพต่อไปนี้แสดงผังงานของฟังก์ชันนี้
- กำหนดปลายทางของ
granular_user_governance
ไปยังฟังก์ชันอื่นของแลมบ์ดาdowngrade_user
มีsource=Asynchronous invocation
และcondition=On Success
.
ไดอะแกรมต่อไปนี้เป็นแผนผังลำดับงานของฟังก์ชันนี้
เพื่อหลีกเลี่ยงการทำลายการเข้าถึงที่สำคัญในทรัพย์สิน QuickSight ที่ควบคุมโดยผู้ดูแลระบบหรือผู้เขียน เราลดระดับผู้ดูแลระบบหรือผู้เขียนโดยลบผู้ดูแลระบบหรือผู้ใช้ผู้เขียนและสร้างผู้ใช้ผู้อ่านใหม่ด้วยฟังก์ชัน Lambda downgrade_user
. granular_user_governance
ฟังก์ชั่นจัดการดาวน์เกรดผู้ดูแลระบบเป็นผู้แต่งหรืออัปเกรดผู้เขียนเป็นผู้ดูแลระบบ
- กำหนดปลายทางของ
downgrade_user
สู่ฟังก์ชันแลมบ์ดาgranular_access_assets_govenance
กับsource=Asynchronous invocation
และcondition=On Success
.
แผนภาพต่อไปนี้แสดงผังงานของฟังก์ชันนี้
- กำหนดปลายทางของ
downgrade_user
สู่ฟังก์ชันแลมบ์ดาcheck_team_members
กับsource=Asynchronous invocation
และcondition=On Failure
.
พื้นที่ check_team_members
ฟังก์ชันเพียงแค่เรียกใช้ QuickSight API เพื่อรับข้อมูลเนมสเปซ กลุ่ม ผู้ใช้ และทรัพย์สิน และบันทึกผลลัพธ์ในบัคเก็ต S3 คีย์ S3 คือ monitoring/quicksight/group_membership/group_membership.csv
และ monitoring/quicksight/object_access/object_access.csv
.
นอกจากไฟล์เอาท์พุตสองไฟล์ของขั้นตอนก่อนหน้า บันทึกข้อผิดพลาดและบันทึกการลบผู้ใช้ (บันทึกของ downgrade_user
) จะถูกบันทึกไว้ใน monitoring/quicksight
โฟลเดอร์
- กำหนดปลายทางของ
granular_access_assets_govenance
สู่ฟังก์ชันแลมบ์ดาcheck_team_members
กับsource=Asynchronous invocation
และcondition=On Success
orcondition=On Failure
.
สร้างชุดข้อมูลความปลอดภัยระดับแถว
ในขั้นตอนสุดท้าย เราสร้างชุดข้อมูล RLS ซึ่งช่วยให้คุณสามารถเปลี่ยนเรกคอร์ดแดชบอร์ดตามผู้ใช้ที่ดูแดชบอร์ดได้
QuickSight รองรับ RLS โดยใช้ชุดข้อมูลที่จัดการโดยระบบซึ่งเลือกย่อยเรคคอร์ดจากชุดข้อมูลแดชบอร์ด กลไกนี้อนุญาตให้ผู้ดูแลระบบจัดเตรียมชุดข้อมูลการกรอง (ชุดข้อมูล RLS) ด้วย username
or groupname
คอลัมน์ซึ่งจะถูกกรองโดยอัตโนมัติไปยังผู้ใช้ที่เข้าสู่ระบบ ตัวอย่างเช่น ผู้ใช้ชื่อ YingWang
อยู่ในกลุ่ม QuickSight BI
ดังนั้นแถวทั้งหมดของชุดข้อมูล RLS ที่สอดคล้องกับ username YingWang
หรือชื่อกลุ่ม BI
ถูกกรอง แถวที่ยังคงอยู่ใน RLS หลังจากใช้ชื่อผู้ใช้และตัวกรองชื่อกลุ่มจะถูกใช้เพื่อกรองชุดข้อมูลแดชบอร์ดเพิ่มเติมโดยจับคู่คอลัมน์ที่มีชื่อเดียวกัน สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการรักษาความปลอดภัยระดับแถว โปรดดูที่ การใช้ Row-Level Security (RLS) เพื่อจำกัดการเข้าถึงชุดข้อมูล.
ในโซลูชันนี้ เราส่งออกข้อมูลผู้ใช้ตัวอย่างไปยังไฟล์ membership.csv
ซึ่งจัดเก็บไว้ในบัคเก็ต S3 ในไฟล์นี้ เราจัดเตรียมกลุ่มตัวอย่างสำหรับคำนิยามชุดข้อมูล RLS กลุ่มเหล่านี้คือกลุ่มเซ็กเมนต์ข้อมูล ตามที่อธิบายไว้ในการออกแบบสถาปัตยกรรมโดยรวม ภาพหน้าจอต่อไปนี้แสดงบางกลุ่มและผู้ใช้ในกลุ่มเหล่านั้น
พื้นที่ granular_user_governance
ฟังก์ชั่นสร้างกลุ่มเหล่านี้และเพิ่มผู้ใช้ที่เกี่ยวข้องให้เป็นสมาชิกของกลุ่มเหล่านี้
เราจะสร้างชุดข้อมูล RLS ได้อย่างไร สมมุติว่าเรามีโต๊ะชื่อ employee_information
ในฐานข้อมูลทรัพยากรบุคคลขององค์กรของเรา ภาพหน้าจอต่อไปนี้แสดงข้อมูลตัวอย่างบางส่วน
อยู่บนพื้นฐานของ employee_information
ตาราง เราสร้างมุมมองที่เรียกว่า rls
สำหรับชุดข้อมูล RLS ดูรหัส SQL ต่อไปนี้:
ภาพหน้าจอต่อไปนี้แสดงข้อมูลตัวอย่างของเรา
ตอนนี้เรามีตารางพร้อมแล้ว เราสามารถสร้างชุดข้อมูล RLS ด้วย SQL ที่กำหนดเองดังต่อไปนี้:
ภาพหน้าจอต่อไปนี้แสดงข้อมูลตัวอย่างของเรา
สำหรับกลุ่ม quicksight-fed-all-countries
, เราตั้งค่า username
, country
และ city
เป็นโมฆะซึ่งหมายความว่าผู้ใช้ทั้งหมดในกลุ่มนี้สามารถดูข้อมูลของทุกประเทศได้
สำหรับระดับประเทศ เฉพาะกฎความปลอดภัยที่กำหนดไว้ใน groupname
และประเทศ columns
ใช้สำหรับกรอง NS username
และ city
คอลัมน์ถูกตั้งค่าเป็นโมฆะ ผู้ใช้ใน quicksight-fed-usa
กลุ่มสามารถดูข้อมูลของสหรัฐอเมริกาและผู้ใช้ใน quicksight-fed-gbr
กลุ่มสามารถดูข้อมูล GBR
สำหรับผู้ใช้แต่ละคนด้วย groupname
ตั้งค่าเป็น null พวกเขาสามารถดูเฉพาะประเทศและเมืองที่กำหนดให้กับชื่อผู้ใช้เท่านั้น ตัวอย่างเช่น, TerryRigaud
สามารถดูข้อมูลของ Austin ในสหรัฐอเมริกาเท่านั้น
ใน QuickSight กฎหลายข้อในชุดข้อมูล RLS จะรวมกันกับ OR
ด้วยกฎ RLS แบบหลายแง่มุมเหล่านี้ เราสามารถกำหนดรูปแบบการเข้าถึงข้อมูลที่ครอบคลุมได้
ทำความสะอาด
เพื่อหลีกเลี่ยงค่าใช้จ่ายในอนาคต ให้ลบทรัพยากรที่คุณสร้างขึ้นโดยใช้คำสั่งต่อไปนี้:
สรุป
โพสต์นี้กล่าวถึงวิธีที่ผู้ดูแลระบบ BI สามารถออกแบบและทำให้การรับรองความถูกต้อง QuickSight และการควบคุมการเข้าถึงแบบละเอียดของการอนุญาตเป็นไปโดยอัตโนมัติ เราได้รวมคุณสมบัติการรักษาความปลอดภัย QuickSight เช่น การรักษาความปลอดภัยระดับแถวและคอลัมน์ กลุ่ม และเนมสเปซเพื่อมอบโซลูชันที่ครอบคลุม การจัดการการเปลี่ยนแปลงเหล่านี้ผ่าน “BIOps” ช่วยให้มั่นใจถึงกลไกที่แข็งแกร่งและปรับขนาดได้สำหรับการจัดการความปลอดภัย QuickSight หากต้องการเรียนรู้เพิ่มเติม ลงชื่อสมัครใช้การสาธิต QuickSight.
เกี่ยวกับผู้เขียน
หญิงวัง เป็นวิศวกรการแสดงข้อมูลอาวุโสที่มี Data & Analytics Global Specialty Practice ใน AWS Professional Services
อามีร์ บาร์ ออ เป็นหัวหน้าสถาปนิกข้อมูลของ AWS Professional Services หลังจาก 20 ปีในการเป็นผู้นำองค์กรซอฟต์แวร์และพัฒนาแพลตฟอร์มและผลิตภัณฑ์สำหรับการวิเคราะห์ข้อมูล ตอนนี้เขากำลังแบ่งปันประสบการณ์ของเขากับลูกค้าองค์กรขนาดใหญ่และช่วยให้พวกเขาปรับขนาดการวิเคราะห์ข้อมูลในระบบคลาวด์
- "
- &
- 100
- เข้า
- การจัดการการเข้าถึง
- ลงชื่อเข้าใช้
- กิจกรรม
- Ad
- เพิ่มเติม
- ผู้ดูแลระบบ
- ทั้งหมด
- อเมซอน
- การวิเคราะห์
- การวิเคราะห์
- APIs
- การใช้งาน
- การใช้งาน
- สถาปัตยกรรม
- สินทรัพย์
- สินทรัพย์
- ออสติน
- การยืนยันตัวตน
- การอนุญาต
- อัตโนมัติ
- AWS
- AWS แลมบ์ดา
- ที่ดีที่สุด
- ปฏิบัติที่ดีที่สุด
- ชายแดน
- สร้าง
- การก่อสร้าง
- ธุรกิจ
- ระบบธุรกิจอัจฉริยะ
- โทรศัพท์
- กรณี
- เปลี่ยนแปลง
- โหลด
- เมือง
- การจัดหมวดหมู่
- เมฆ
- รหัส
- ร่วมกัน
- บริษัท
- เนื้อหา
- ประเทศ
- การสร้าง
- ลูกค้า
- หน้าปัด
- ข้อมูล
- การเข้าถึงข้อมูล
- วิเคราะห์ข้อมูล
- การจัดการข้อมูล
- การสร้างภาพข้อมูล
- ฐานข้อมูล
- ฐานข้อมูล
- ความต้องการ
- ออกแบบ
- ทำลาย
- รายละเอียด
- นักพัฒนา
- พัฒนาการ
- DevOps
- โดเมน
- วิศวกร
- Enterprise
- ลูกค้าองค์กร
- เหตุการณ์
- เหตุการณ์
- ผู้บริหารงาน
- ส่งออก
- คุณสมบัติ
- ฟิลเตอร์
- ชื่อจริง
- ครั้งแรก
- พอดี
- กรอบ
- ฟังก์ชัน
- อนาคต
- เหตุการณ์ที่
- ทุน
- บัญชีกลุ่ม
- สรุป ความน่าเชื่อถือของ Olymp Trade?
- hr
- HTTPS
- ร้อย
- AMI
- เอกลักษณ์
- รวมทั้ง
- เงินได้
- เพิ่ม
- ข้อมูล
- โครงสร้างพื้นฐาน
- บูรณาการ
- Intelligence
- IT
- การสัมภาษณ์
- ร่วม
- คีย์
- ความรู้
- หน้าที่เชื่อมโยง
- ใหญ่
- LDAP
- ชั้นนำ
- เรียนรู้
- ชั้น
- ห้องสมุด
- ถูก จำกัด
- Line
- รายการ
- ที่ตั้ง
- นาน
- การจัดการ
- สมาชิก
- ชื่อ
- ตัวเลข
- ใบสั่ง
- อื่นๆ
- ผลิตภัณฑ์อื่นๆ
- เจ้าของ
- รหัสผ่าน
- แบบแผน
- PII
- แพลตฟอร์ม
- นโยบาย
- หลัก
- ผลิตภัณฑ์
- ผลิตภัณฑ์
- โครงการ
- โครงการ
- สาธารณะ
- หลาม
- ผู้อ่าน
- ผู้อ่าน
- บันทึก
- ลด
- ลงทะเบียน
- ความสัมพันธ์
- รายงาน
- ความต้องการ
- แหล่งข้อมูล
- ผลสอบ
- ทบทวน
- ความเสี่ยง
- กฎระเบียบ
- วิ่ง
- วิ่ง
- ขาย
- ขนาด
- ความปลอดภัย
- บริการตัวเอง
- บริการ
- ชุด
- Share
- หุ้น
- เปลือก
- ง่าย
- So
- สังคม
- ซอฟต์แวร์
- SQL
- การเก็บรักษา
- จัดเก็บ
- สนับสนุน
- รองรับ
- ระบบ
- เวลา
- Uk
- สหภาพ
- บันทึก
- การปรับปรุง
- us
- สหรัฐอเมริกา
- ผู้ใช้
- รายละเอียด
- การสร้างภาพ
- รายสัปดาห์
- ล้อ
- WHO
- ภายใน
- เวิร์กโฟลว์
- ปี