logologo
เริ่มต้น
คู่มือ
การพัฒนา
ปลั๊กอิน
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
เริ่มต้น
คู่มือ
การพัฒนา
ปลั๊กอิน
API
logologo
ภาพรวม

แหล่งข้อมูล

การจัดการแหล่งข้อมูล
แหล่งข้อมูลหลัก

แหล่งข้อมูลภายนอก (ฐานข้อมูล)

บทนำ
MySQL ภายนอก
MariaDB ภายนอก
PostgreSQL ภายนอก
MSSQL ภายนอก
Oracle ภายนอก
เปรียบเทียบฐานข้อมูลหลักและภายนอก
แหล่งข้อมูล REST API
แหล่งข้อมูล KingbaseES

ตารางข้อมูล

ภาพรวม
ตารางทั่วไป
ตารางสืบทอด
ตารางไฟล์
ตารางแบบต้นไม้
ตารางปฏิทิน
ตารางความคิดเห็น
ตารางนิพจน์
ตาราง SQL
วิวฐานข้อมูล

ฟิลด์ตารางข้อมูล

ภาพรวม
การตรวจสอบฟิลด์

ประเภทพื้นฐาน

ข้อความบรรทัดเดียว
ข้อความหลายบรรทัด
หมายเลขโทรศัพท์
อีเมล
URL
จำนวนเต็ม
ตัวเลข
เปอร์เซ็นต์
รหัสผ่าน
สี
ไอคอน

ประเภทการเลือก

บูลีน
ดรอปดาวน์ (เลือกเดี่ยว)
ดรอปดาวน์ (เลือกหลายรายการ)
ปุ่มตัวเลือก
ช่องทำเครื่องหมาย

มัลติมีเดีย

Markdown
Markdown(Vditor)
Rich Text
ไฟล์แนบ (ความสัมพันธ์)
ไฟล์แนบ (URL)

วันที่และเวลา

ภาพรวม
วันที่และเวลา (มีโซนเวลา)
วันที่และเวลา (ไม่มีโซนเวลา)
Unix Timestamp
วันที่ (ไม่มีเวลา)
เวลา

รูปทรงเรขาคณิต

จุด
เส้น
วงกลม
รูปหลายเหลี่ยม

ประเภทขั้นสูง

UUID
Nano ID
การเรียงลำดับ
สูตรคำนวณ
รหัสอัตโนมัติ
JSON
ตัวเลือกตารางข้อมูล
การเข้ารหัส

ข้อมูลระบบ

วันที่สร้าง
วันที่แก้ไขล่าสุด
สร้างโดย
แก้ไขล่าสุดโดย
เนมสเปซ
Table OID

ประเภทความสัมพันธ์

ภาพรวม
หนึ่งต่อหนึ่ง
หนึ่งต่อหลาย
หลายต่อหนึ่ง
หลายต่อหลาย
หลายต่อหลาย (อาร์เรย์)

การพัฒนา

ภาพรวม
Previous Pageตัวเลือกตารางข้อมูล
Next Pageวันที่สร้าง
TIP

เอกสารนี้แปลโดย AI หากมีข้อมูลที่ไม่ถูกต้อง โปรดดูเวอร์ชันภาษาอังกฤษ

#การเข้ารหัส

#บทนำ

ข้อมูลธุรกิจที่เป็นส่วนตัวบางอย่าง เช่น เบอร์โทรศัพท์ลูกค้า, ที่อยู่อีเมล, หมายเลขบัตรต่างๆ สามารถเข้ารหัสได้ครับ/ค่ะ หลังจากเข้ารหัสแล้ว ข้อมูลจะถูกจัดเก็บในฐานข้อมูลในรูปแบบของข้อความที่เข้ารหัส (ciphertext)

20251104192513

#วิธีการเข้ารหัส

WARNING

ปลั๊กอินจะสร้างคีย์แอปพลิเคชัน (application key) โดยอัตโนมัติ ซึ่งจะถูกจัดเก็บไว้ในไดเรกทอรี /storage/apps/main/encryption-field-keys ครับ/ค่ะ

ไฟล์คีย์แอปพลิเคชันจะมีชื่อเป็น ID ของคีย์ และมีนามสกุลไฟล์เป็น .key กรุณาอย่าเปลี่ยนชื่อไฟล์โดยไม่จำเป็นครับ/ค่ะ

โปรดเก็บไฟล์คีย์แอปพลิเคชันไว้ให้ปลอดภัย หากไฟล์คีย์แอปพลิเคชันสูญหาย ข้อมูลที่เข้ารหัสจะไม่สามารถถอดรหัสได้ครับ/ค่ะ

หากเป็นแอปพลิเคชันย่อยที่เปิดใช้งานปลั๊กอินนี้ ไดเรกทอรีเริ่มต้นสำหรับการจัดเก็บคีย์คือ /storage/apps/${ชื่อแอปพลิเคชันย่อย}/encryption-field-keys ครับ/ค่ะ

#หลักการทำงาน

ใช้วิธีการเข้ารหัสแบบ Envelope Encryption ครับ/ค่ะ

20251118151339

#ขั้นตอนการสร้างคีย์

  1. เมื่อสร้างฟิลด์ที่เข้ารหัสเป็นครั้งแรก ระบบจะสร้างคีย์แอปพลิเคชันขนาด 32 บิตโดยอัตโนมัติ และบันทึกในรูปแบบ Base64 ไปยังไดเรกทอรีจัดเก็บเริ่มต้นครับ/ค่ะ
  2. ทุกครั้งที่สร้างฟิลด์ที่เข้ารหัสใหม่ จะมีการสร้างคีย์ฟิลด์ (field key) แบบสุ่มขนาด 32 บิตสำหรับฟิลด์นั้น จากนั้นจะใช้คีย์แอปพลิเคชันและเวกเตอร์การเข้ารหัสฟิลด์ (field encryption vector) ขนาด 16 บิตที่สร้างขึ้นแบบสุ่ม เพื่อเข้ารหัสคีย์ฟิลด์นั้น (ด้วยอัลกอริทึมการเข้ารหัส AES) แล้วบันทึกไว้ในฟิลด์ options ของตาราง fields ครับ/ค่ะ

#ขั้นตอนการเข้ารหัสฟิลด์

  1. ทุกครั้งที่เขียนข้อมูลลงในฟิลด์ที่เข้ารหัส ระบบจะดึงคีย์ฟิลด์ที่เข้ารหัสและเวกเตอร์การเข้ารหัสฟิลด์จากฟิลด์ options ของตาราง fields ก่อนครับ/ค่ะ
  2. ใช้คีย์แอปพลิเคชันและเวกเตอร์การเข้ารหัสฟิลด์เพื่อถอดรหัสคีย์ฟิลด์ที่ถูกเข้ารหัสไว้ จากนั้นใช้คีย์ฟิลด์และเวกเตอร์การเข้ารหัสข้อมูล (data encryption vector) ขนาด 16 บิตที่สร้างขึ้นแบบสุ่ม เพื่อเข้ารหัสข้อมูล (ด้วยอัลกอริทึมการเข้ารหัส AES) ครับ/ค่ะ
  3. ใช้คีย์ฟิลด์ที่ถอดรหัสแล้วลงนามข้อมูล (ด้วยอัลกอริทึมแฮช HMAC-SHA256) แล้วแปลงเป็นสตริงด้วยการเข้ารหัส Base64 (โดยลายเซ็นข้อมูล (data signature) ที่สร้างขึ้นนี้จะใช้สำหรับการค้นหาข้อมูลในภายหลัง) ครับ/ค่ะ
  4. นำเวกเตอร์การเข้ารหัสข้อมูลขนาด 16 บิตและข้อความที่เข้ารหัส (ciphertext) มาต่อกันแบบไบนารี แล้วแปลงเป็นสตริงด้วยการเข้ารหัส Base64 ครับ/ค่ะ
  5. นำสตริงลายเซ็นข้อมูลที่เข้ารหัส Base64 และสตริงข้อความที่เข้ารหัสที่ต่อกันแล้ว มาต่อกันอีกครั้งโดยคั่นด้วยเครื่องหมาย . ครับ/ค่ะ
  6. บันทึกสตริงที่ต่อกันเสร็จสมบูรณ์ลงในฐานข้อมูลครับ/ค่ะ

#ตัวแปรสภาพแวดล้อม

หากต้องการระบุคีย์แอปพลิเคชันเอง สามารถใช้ตัวแปรสภาพแวดล้อม ENCRYPTION_FIELD_KEY_PATH ได้ครับ/ค่ะ ปลั๊กอินจะโหลดไฟล์จากพาธที่ระบุนี้เพื่อใช้เป็นคีย์แอปพลิเคชัน

ข้อกำหนดสำหรับรูปแบบไฟล์คีย์แอปพลิเคชัน:

  1. นามสกุลไฟล์ต้องเป็น .key ครับ/ค่ะ
  2. ชื่อไฟล์จะถูกใช้เป็น Key ID ควรใช้ UUID เพื่อให้แน่ใจว่าเป็นค่าที่ไม่ซ้ำกันครับ/ค่ะ
  3. เนื้อหาไฟล์ต้องเป็นข้อมูลไบนารีขนาด 32 บิตที่เข้ารหัส Base64 ครับ/ค่ะ
ENCRYPTION_FIELD_KEY_PATH=/path/to/my/app-keys/270263524860909922913.key

#การตั้งค่าฟิลด์

20240802173721

#ผลกระทบต่อการกรองข้อมูลหลังจากเข้ารหัส

ฟิลด์ที่เข้ารหัสแล้วจะรองรับการกรองข้อมูลเฉพาะเงื่อนไขต่อไปนี้เท่านั้น: เท่ากับ, ไม่เท่ากับ, มีอยู่, ไม่มีอยู่ ครับ/ค่ะ

20240802174042

วิธีการกรองข้อมูล:

  1. ดึงคีย์ฟิลด์ของฟิลด์ที่เข้ารหัส แล้วใช้คีย์แอปพลิเคชันถอดรหัสคีย์ฟิลด์ครับ/ค่ะ
  2. ใช้คีย์ฟิลด์ลงนามข้อความค้นหาที่ผู้ใช้ป้อน (ด้วยอัลกอริทึมแฮช HMAC-SHA256) ครับ/ค่ะ
  3. นำข้อความค้นหาที่ลงนามแล้วมาต่อกับตัวคั่น . แล้วทำการค้นหาแบบ Prefix Match ในฐานข้อมูลสำหรับฟิลด์ที่เข้ารหัสครับ/ค่ะ

#การหมุนเวียนคีย์

WARNING

ก่อนใช้คำสั่ง nocobase key-rotation สำหรับการหมุนเวียนคีย์ โปรดตรวจสอบให้แน่ใจว่าแอปพลิเคชันได้โหลดปลั๊กอินนี้แล้วครับ/ค่ะ

เมื่อย้ายแอปพลิเคชันไปยังสภาพแวดล้อมใหม่ หากไม่ต้องการใช้คีย์แอปพลิเคชันตัวเดิมที่ใช้ในสภาพแวดล้อมเก่า สามารถใช้คำสั่ง nocobase key-rotation เพื่อเปลี่ยนคีย์แอปพลิเคชันได้ครับ/ค่ะ

การรันคำสั่งหมุนเวียนคีย์จำเป็นต้องระบุคีย์แอปพลิเคชันของสภาพแวดล้อมเก่า หลังจากรันคำสั่งแล้ว จะมีการสร้างคีย์แอปพลิเคชันใหม่ขึ้นมา และจะถูกจัดเก็บในรูปแบบ Base64 ไปยังไดเรกทอรีจัดเก็บเริ่มต้น เพื่อใช้แทนคีย์เก่าครับ/ค่ะ

# --key-path ใช้สำหรับระบุไฟล์คีย์แอปพลิเคชันของสภาพแวดล้อมเก่าที่ตรงกับข้อมูลที่เข้ารหัสในฐานข้อมูล
 yarn nocobase key-rotation --key-path /path/to/old-app-keys/270263524860909922913.key

หากเป็นการเปลี่ยนคีย์แอปพลิเคชันของแอปพลิเคชันย่อย จำเป็นต้องเพิ่มพารามิเตอร์ --app-name เพื่อระบุ name ของแอปพลิเคชันย่อยครับ/ค่ะ

 yarn nocobase key-rotation --app-name a_w0r211vv0az --key-path /path/to/old-app-keys/270263524860909922913.key