คู่มือนี้อธิบายวิธีการเข้ารหัสและถอดรหัสโดยใช้ Google Workspace Client-side Encryption API
คุณต้องเพิ่มบริการผู้ให้บริการข้อมูลประจำตัว (IdP) ที่ผู้ใช้แชร์ไฟล์ที่เข้ารหัสใช้ลงในรายการที่อนุญาต โดยปกติแล้ว คุณจะดูรายละเอียด IdP ที่จำเป็นได้ในไฟล์ .well-known ที่พร้อมใช้งานแบบสาธารณะ หรือติดต่อผู้ดูแลระบบ Google Workspace ขององค์กรเพื่อขอรายละเอียด IdP
เข้ารหัสข้อมูล
เมื่อผู้ใช้ Google Workspace ขอให้บันทึกหรือจัดเก็บข้อมูลที่เข้ารหัสฝั่งไคลเอ็นต์ (CSE) Google Workspace จะส่งคำขอ
wrap ไปยัง URL ปลายทางของบริการรายการควบคุมการเข้าถึงคีย์ (KACLS) เพื่อทำการเข้ารหัส นอกเหนือจากการตรวจสอบความปลอดภัยที่ไม่บังคับ เช่น การตรวจสอบขอบเขตและการตรวจสอบตามการอ้างสิทธิ์ JWT แล้ว KACLS ของคุณต้องทำตามขั้นตอนต่อไปนี้
ตรวจสอบผู้ใช้ที่ส่งคำขอ
- ตรวจสอบทั้งโทเค็น การตรวจสอบสิทธิ์และโทเค็น การให้สิทธิ์
- ตรวจสอบว่าโทเค็นการให้สิทธิ์และโทเค็นการตรวจสอบสิทธิ์เป็นของผู้ใช้คนเดียวกันโดยทำการจับคู่การอ้างสิทธิ์อีเมลแบบไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
- เมื่อโทเค็นการตรวจสอบสิทธิ์มีการอ้างสิทธิ์
google_emailที่ไม่บังคับ คุณต้องเปรียบเทียบกับการอ้างสิทธิ์อีเมลในโทเค็นการให้สิทธิ์โดยใช้วิธีแบบไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ อย่าใช้การอ้างสิทธิ์อีเมลภายในโทเค็นการตรวจสอบสิทธิ์สำหรับการเปรียบเทียบนี้ - ในสถานการณ์ที่โทเค็นการตรวจสอบสิทธิ์ไม่มีการอ้างสิทธิ์
google_emailที่ไม่บังคับ คุณควรเปรียบเทียบการอ้างสิทธิ์อีเมลภายในโทเค็นการตรวจสอบสิทธิ์กับการอ้างสิทธิ์อีเมลในโทเค็นการให้สิทธิ์โดยใช้วิธีแบบไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ - ในสถานการณ์ที่ Google ออกโทเค็นการให้สิทธิ์สำหรับอีเมลที่ไม่ได้เชื่อมโยงกับบัญชี Google จะต้องมีการอ้างสิทธิ์
email_typeซึ่งเป็นส่วนสำคัญของฟีเจอร์การเข้าถึงของผู้มาเยือน โดยให้ข้อมูลที่เป็นประโยชน์แก่ KACLS เพื่อบังคับใช้มาตรการรักษาความปลอดภัยเพิ่มเติมกับผู้ใช้ภายนอก- ตัวอย่างวิธีที่ KACLS ใช้ข้อมูลนี้ได้มีดังนี้
- กำหนดข้อกำหนดการบันทึกเพิ่มเติม
- จำกัดผู้ออกโทเค็นการตรวจสอบสิทธิ์ไว้ที่ IdP ของผู้มาเยือนโดยเฉพาะ
- กำหนดให้มีการอ้างสิทธิ์เพิ่มเติมในโทเค็นการตรวจสอบสิทธิ์
- หากลูกค้าไม่ได้กำหนดค่าการเข้าถึงของผู้มาเยือน ระบบจะปฏิเสธคำขอทั้งหมดที่ตั้งค่า
email_typeเป็นgoogle-visitorหรือcustomer-idpและควรยอมรับคำขอที่มีemail_typeเป็นgoogleหรือไม่มีการตั้งค่าemail_typeต่อไป
- เมื่อโทเค็นการตรวจสอบสิทธิ์มีการอ้างสิทธิ์
delegated_toที่ไม่บังคับ โทเค็นดังกล่าวต้องมีการอ้างสิทธิ์resource_nameด้วย และคุณต้องเปรียบเทียบการอ้างสิทธิ์ทั้ง 2 รายการนี้กับการอ้างสิทธิ์delegated_toและresource_nameในโทเค็นการให้สิทธิ์ โดยควรเปรียบเทียบการอ้างสิทธิ์delegated_toโดยใช้วิธีแบบไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ และresource_nameในโทเค็นควรตรงกับresource_nameของการดำเนินการ - ตรวจสอบว่าการอ้างสิทธิ์
roleในโทเค็นการให้สิทธิ์คือwriterหรือupgrader - ตรวจสอบว่าการอ้างสิทธิ์
kacls_urlในโทเค็นการให้สิทธิ์ตรงกับ URL KACLS ปัจจุบัน การตรวจสอบนี้ช่วยให้ตรวจพบเซิร์ฟเวอร์ man-in-the-middle ที่อาจมีการกำหนดค่าโดยผู้ไม่หวังดีภายในองค์กรหรือผู้ดูแลระบบโดเมนที่ทุจริต - ทำการตรวจสอบขอบเขตโดยใช้ทั้งการอ้างสิทธิ์การตรวจสอบสิทธิ์และการให้สิทธิ์
เข้ารหัสส่วนต่อไปนี้โดยใช้อัลกอริทึมการเข้ารหัสที่ผ่านการตรวจสอบสิทธิ์
- คีย์การเข้ารหัสข้อมูล (DEK)
- ค่า
resource_nameและperimeter_idจากโทเค็นการให้สิทธิ์ - ข้อมูลที่ละเอียดอ่อนเพิ่มเติม
บันทึกการดำเนินการ รวมถึงผู้ใช้ที่เริ่มการดำเนินการ
resource_nameและเหตุผลที่ส่งในคำขอส่งคืนออบเจ็กต์ไบนารีแบบทึบแสงเพื่อให้ Google Workspace จัดเก็บไว้ข้างๆ ออบเจ็กต์ที่เข้ารหัสและส่งตามที่เป็นในภายหลังในการดำเนินการแกะคีย์ หรือแสดงการตอบกลับข้อผิดพลาดที่มีโครงสร้าง
- ออบเจ็กต์ไบนารีควรมี DEK ที่เข้ารหัสไว้เพียงสำเนาเดียว และคุณสามารถจัดเก็บข้อมูลเฉพาะการติดตั้งใช้งานไว้ในออบเจ็กต์นี้ได้
ถอดรหัสข้อมูล
เมื่อผู้ใช้ Google Workspace ขอเปิดข้อมูลที่เข้ารหัสฝั่งไคลเอ็นต์
(CSE) Google Workspace จะส่งคำขอ
unwrap ไปยัง URL ปลายทางของ KACLS
เพื่อทำการถอดรหัส นอกเหนือจากการตรวจสอบความปลอดภัยที่ไม่บังคับ เช่น การตรวจสอบขอบเขตและการตรวจสอบตามการอ้างสิทธิ์ JWT แล้ว KACLS ของคุณต้องทำตามขั้นตอนต่อไปนี้
ตรวจสอบผู้ใช้ที่ส่งคำขอ
- ตรวจสอบทั้งโทเค็น การตรวจสอบสิทธิ์และโทเค็น การให้สิทธิ์
- ตรวจสอบว่าโทเค็นการให้สิทธิ์และโทเค็นการตรวจสอบสิทธิ์เป็นของผู้ใช้คนเดียวกันโดยทำการจับคู่การอ้างสิทธิ์อีเมลแบบไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
- เมื่อโทเค็นการตรวจสอบสิทธิ์มีการอ้างสิทธิ์
google_emailที่ไม่บังคับ คุณต้องเปรียบเทียบกับการอ้างสิทธิ์อีเมลในโทเค็นการให้สิทธิ์โดยใช้วิธีแบบไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ อย่าใช้การอ้างสิทธิ์อีเมลภายในโทเค็นการตรวจสอบสิทธิ์สำหรับการเปรียบเทียบนี้ - ในสถานการณ์ที่โทเค็นการตรวจสอบสิทธิ์ไม่มีการอ้างสิทธิ์
google_emailที่ไม่บังคับ คุณควรเปรียบเทียบการอ้างสิทธิ์อีเมลภายในโทเค็นการตรวจสอบสิทธิ์กับการอ้างสิทธิ์อีเมลในโทเค็นการให้สิทธิ์โดยใช้วิธีแบบไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ - ในสถานการณ์ที่ Google ออกโทเค็นการให้สิทธิ์สำหรับอีเมลที่ไม่ได้เชื่อมโยงกับบัญชี Google จะต้องมีการอ้างสิทธิ์
email_typeซึ่งเป็นส่วนสำคัญของฟีเจอร์การเข้าถึงของผู้มาเยือน โดยให้ข้อมูลที่เป็นประโยชน์แก่ KACLS เพื่อบังคับใช้มาตรการรักษาความปลอดภัยเพิ่มเติมกับผู้ใช้ภายนอก- ตัวอย่างวิธีที่ KACLS ใช้ข้อมูลนี้ได้มีดังนี้
- กำหนดข้อกำหนดการบันทึกเพิ่มเติม
- จำกัดผู้ออกโทเค็นการตรวจสอบสิทธิ์ไว้ที่ IdP ของผู้มาเยือนโดยเฉพาะ
- กำหนดให้มีการอ้างสิทธิ์เพิ่มเติมในโทเค็นการตรวจสอบสิทธิ์
- หากลูกค้าไม่ได้กำหนดค่าการเข้าถึงของผู้มาเยือน ระบบจะปฏิเสธคำขอทั้งหมดที่ตั้งค่า
email_typeเป็นgoogle-visitorหรือcustomer-idpและควรยอมรับคำขอที่มีemail_typeเป็นgoogleหรือไม่มีการตั้งค่าemail_typeต่อไป
- เมื่อโทเค็นการตรวจสอบสิทธิ์มีการอ้างสิทธิ์
delegated_toที่ไม่บังคับ โทเค็นดังกล่าวต้องมีการอ้างสิทธิ์resource_nameด้วย และคุณต้องเปรียบเทียบการอ้างสิทธิ์ทั้ง 2 รายการนี้กับการอ้างสิทธิ์delegated_toและresource_nameในโทเค็นการให้สิทธิ์ โดยควรเปรียบเทียบการอ้างสิทธิ์delegated_toโดยใช้วิธีแบบไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ และresource_nameในโทเค็นควรตรงกับresource_nameของการดำเนินการ - ตรวจสอบว่าการอ้างสิทธิ์
roleในโทเค็นการให้สิทธิ์คือreaderหรือwriter - ตรวจสอบว่าการอ้างสิทธิ์
kacls_urlในโทเค็นการให้สิทธิ์ตรงกับ URL KACLS ปัจจุบัน ซึ่งช่วยให้ตรวจพบเซิร์ฟเวอร์ man-in-the-middle ที่อาจมีการกำหนดค่าโดยผู้ไม่หวังดีภายในองค์กรหรือผู้ดูแลระบบโดเมนที่ทุจริต
ถอดรหัสส่วนต่อไปนี้โดยใช้อัลกอริทึมการเข้ารหัสที่ผ่านการตรวจสอบสิทธิ์
- คีย์การเข้ารหัสข้อมูล (DEK)
- ค่า
resource_nameและperimeter_idจากโทเค็นการให้สิทธิ์ - ข้อมูลที่ละเอียดอ่อนเพิ่มเติม
ตรวจสอบว่า
resource_nameในโทเค็นการให้สิทธิ์และ Blob ที่ถอดรหัสแล้วตรงกันทำการตรวจสอบขอบเขตโดยใช้ทั้งการอ้างสิทธิ์การตรวจสอบสิทธิ์และการให้สิทธิ์
บันทึกการดำเนินการ รวมถึงผู้ใช้ที่เริ่มการดำเนินการ
resource_nameและเหตุผลที่ส่งในคำขอส่งคืน DEK ที่แกะแล้วหรือการตอบกลับข้อผิดพลาดที่มีโครงสร้าง