คู่มือนี้อธิบายวิธีการเข้ารหัสและถอดรหัสโดยใช้ 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
การอ้างสิทธิ์ ซึ่งเป็นส่วนสำคัญของฟีเจอร์การเข้าถึงของผู้มาเยือน โดยให้ข้อมูลที่มีประโยชน์แก่ KACL เพื่อบังคับใช้มาตรการรักษาความปลอดภัยเพิ่มเติมกับผู้ใช้ภายนอก- ตัวอย่างวิธีที่ 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 ปัจจุบัน การตรวจสอบนี้ช่วยให้ตรวจพบเซิร์ฟเวอร์ที่อาจเป็น การดักฟังข้อมูลที่กำหนดค่าโดยผู้ไม่หวังดีหรือผู้ดูแลระบบโดเมนที่ไม่ประสงค์ดี - ทำการตรวจสอบขอบเขตโดยใช้ทั้งการตรวจสอบสิทธิ์และการให้สิทธิ์ การอ้างสิทธิ์
เข้ารหัสส่วนต่อไปนี้โดยใช้อัลกอริทึมการเข้ารหัสที่ผ่านการตรวจสอบสิทธิ์
- คีย์การเข้ารหัสข้อมูล (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
การอ้างสิทธิ์ ซึ่งเป็นส่วนสำคัญของฟีเจอร์การเข้าถึงของผู้มาเยือน โดยให้ข้อมูลที่มีประโยชน์แก่ KACL เพื่อบังคับใช้มาตรการรักษาความปลอดภัยเพิ่มเติมกับผู้ใช้ภายนอก- ตัวอย่างวิธีที่ 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 ที่ไม่ได้ห่อหรือการตอบกลับข้อผิดพลาดที่มีโครงสร้าง