ความเป็นส่วนตัว
AM แยกข้อมูลที่ระบุตัวบุคคล (PII) ออกจากข้อมูลยืนยันตัวตน จึงลบ PII ของผู้ใช้ได้โดยยังคงข้อมูลอ้างอิงที่จำเป็นต่อ audit trail และการปฏิบัติตามข้อกฎหมาย
เมื่อผู้ใช้ใช้สิทธิ์ในการถูกลืม ให้ลบข้อมูลตัวตน แต่ไม่ลบความสามารถในการพิสูจน์การมีอยู่ของผู้ใช้
การแยกข้อมูล
┌─────────────────────────────────────────┐
│ User │
│ ┌─────────────────┐ ┌──────────────┐ │
│ │ Identity │ │ Credentials │ │
│ │ (Deletable) │ │ (Required) │ │
│ │ │ │ │ │
│ │ - given_name │ │ - email │ │
│ │ - family_name │ │ - password │ │
│ │ - display_name │ │ - verified │ │
│ │ - avatar_url │ │ │ │
│ │ - locale │ │ │ │
│ │ - timezone │ │ │ │
│ │ - external_id │ │ │ │
│ └─────────────────┘ └──────────────┘ │
└─────────────────────────────────────────┘
Identity Operations
| Operation | Endpoint | วัตถุประสงค์ |
|---|---|---|
| Get | GET /api/users/:user_id/identity | ดึงข้อมูล PII |
| Update | PATCH /api/users/:user_id/identity | ปรับข้อมูล PII |
| Delete | DELETE /api/users/:user_id/identity | ลบข้อมูล PII ทั้งหมด |
| Recreate | POST /api/users/:user_id/identity | สร้างคืนหลังการลบ |
สิทธิ์ในการลบข้อมูล (GDPR มาตรา 17)
ลบข้อมูลตัวตน โดยคงข้อมูลต่อไปนี้ไว้:
- User ID (สำหรับบันทึก audit)
- Credentials (อีเมล + password hash)
- ประวัติการชำระเงิน (เพื่อเก็บตามข้อกฎหมาย)
- สมาชิกภาพบัญชี (เพื่อควบคุมการเข้าถึง)
ข้อมูลที่ถูกลบ
| ถูกลบ | คงไว้ |
|---|---|
| given_name | user.id |
| family_name | user.application_id |
| display_name | user.status |
| avatar_url | memberships |
| preferred_language | credentials |
| locale | payment records |
| timezone | audit logs |
| external_id |
การเก็บข้อมูลเท่าที่จำเป็น
ฟิลด์ identity เป็นแบบ optional เก็บเฉพาะที่จำเป็น:
- ผู้ใช้ล้างค่าฟิลด์ได้ตลอดเวลา
- identity ว่างถือว่าใช้งานได้
- ข้อมูลน้อยลง = ความรับผิดน้อยลง
credentials จะถูกจัดการแยกผ่าน user credentials endpoints
ที่เกี่ยวข้อง
- User Identity - ทรัพยากรข้อมูลตัวตน
- ผู้ใช้ - การจัดการผู้ใช้
- User - ทรัพยากรผู้ใช้