TLS การเข้าสู่เครือข่าย และสิทธิ์ SQL ตอบคำถามที่แตกต่างกัน
การเข้ารหัสการเชื่อมต่อ การอนุญาตต้นทาง และการให้ตารางเป็นสามการตัดสินใจ จงพิจารณาตามลำดับก่อนถามว่า TLS แทน VPN ได้หรือไม่
มีคนเสนอให้มอบการเข้าสู่ระบบ PostgreSQL แก่ลูกค้า เพื่อให้ใบเบิกค่าใช้จ่ายเดินทางแบบเข้ารหัสตั้งแต่ต้นจนจบ ผู้ดูแลฐานข้อมูลต้องการเซสชัน SQL จริง และอีกคนเสนอแบบฟอร์มเว็บแทน ทั้งสองข้อเสนอแก้ปัญหาผิด เพราะไม่มีข้อใดเริ่มจากปฏิบัติการที่ลูกค้าทำจริง พิจารณาสามการตัดสินใจตามลำดับ แล้วคำถามว่า TLS แทน VPN ได้หรือไม่จะตอบตัวเอง
เริ่มจากปฏิบัติการที่ลูกค้าต้องการ
เขียนว่าลูกค้าต้องบรรลุอะไร การยื่นใบเบิก การอ่านแถวหนึ่งของรายงาน และการเรียกใช้คำสั่งชั่วคราวเป็นสามปฏิบัติการที่แตกต่างกันโดยมีโปรไฟล์ความเสี่ยงที่แตกต่างกันสามแบบ
จากนั้นเขียนว่าใครเป็นผู้ส่งคำขอ ลูกค้า เจ้าหน้าที่สนับสนุน และผู้ดูแลไม่สามารถแลกเปลี่ยนกันได้แม้จะแตะตารางเดียวกัน ความแตกต่างนี้กำหนดว่าลูกค้าควรเห็นภาษาเรียกค้นมากเพียงใด
คำตอบทั้งสองกำหนดอินเทอร์เฟซ ทุกอย่างหลังจากนั้นคือการนำไปใช้ และการถกเถียงเรื่องการเข้ารหัสส่วนใหญ่เป็นการถกเถียงว่าเลือกอินเทอร์เฟซใด
สามการควบคุม สามการตัดสินใจ
TLS ที่ผ่านการพิสูจน์ตัวตนปกป้องการเชื่อมต่อและกำหนดว่าจะยอมรับอัตลักษณ์ TLS ใด การเข้าสู่เครือข่ายกำหนดว่าต้นทางใดเข้าถึงผู้รับฟังได้บ้าง การอนุญาตในฐานข้อมูลกำหนดว่าบทบาทใช้สิทธิ์กับวัตถุและการกระทำใดได้
ไม่มีข้อใดในสามข้อแทนที่กันและกัน ซึ่งตารางแสดงให้เห็นชัดเจน
| Control | What it decides | What it leaves open |
|---|---|---|
| Authenticated TLS | Connection protection and which TLS identities are accepted | Which tables a database user may touch |
| Restricted network entry | Which sources reach the listener | Whether an authenticated user should run a given statement |
| Database authorization | Which objects and actions a role may use | Whether the connection arrived by an approved path |
อ่านแถวที่คุณพึ่งพาก่อนจะลบแถวอื่น การออกแบบเหล่านี้ส่วนใหญ่ล้มเหลวเพราะควบคุมถูกสันนิษฐานแทนที่จะกำหนดค่า
SQL โดยตรงทำให้ นโยบายของฐานข้อมูลยังคงรับผิดชอบ
ด้วยการเชื่อมต่อโดยตรงที่ได้รับอนุมัติ ให้คงทั้งการตรวจสอบอัตลักษณ์ของบริการและนโยบายการเข้าถึงที่ตั้งใจไว้ การเปิด TLS ทำให้การเชื่อมต่อที่เข้ารหัสพร้อมใช้ แต่ไม่ปฏิเสธการเชื่อมต่อที่ไม่เข้ารหัส เว้นแต่การกำหนดค่าการเข้าถึงจะกำหนดผ่านรายการ hostssl
ความแตกต่างนี้ควรตรวจสอบในการกำหนดค่าที่ทำงานอยู่ ไม่ใช่ในแม่แบบ เซิร์ฟเวอร์ที่ให้ TLS และยอมรับข้อความธรรมดาไม่ใช่การออกแบบที่คนส่วนใหญ่คิดว่าตนติดตั้งไว้ อ่านกฎการเข้าถึงและดูว่ารายการใดกำหนดสิ่งนี้จริง การตรวจครั้งเดียวนั้นแยกเซิร์ฟเวอร์ที่สามารถเข้ารหัสออกจากเซิร์ฟเวอร์ที่เข้ารหัสเท่านั้น
ใช้บทบาทที่มีเฉพาะสิทธิ์ที่งานต้องการ และทบทวนความเป็นเจ้าของ สมาชิกภาพที่สืบทอด และสิทธิ์ที่ให้อย่างกว้างขวาง แบบจำลองสิทธิ์ของ PostgreSQL เป็นขอบเขตอำนาจสำหรับวัตถุในฐานข้อมูล
VPN สามารถจำกัดว่าอุปกรณ์ใดเข้าถึงบริการก่อนการพิสูจน์ตัวตนในฐานข้อมูล และเกตเวย์การเข้าถึงก็ทำสิ่งที่คล้ายกันได้ ทั้งสองไม่ขจัดความจำเป็นในการดูแลองค์ประกอบที่เปิดเผย จัดการข้อมูลรับรอง และจำกัดการใช้ทรัพยากร
ใบรับรองไคลเอนต์เป็นข้อมูลรับรอง ไม่ใช่ ACL
ใบรับรองไคลเอนต์สามารถเพิ่มข้อกำหนด ณ เวลาที่เชื่อมต่อ การตั้งค่า clientcert สามารถกำหนดให้ต้องมีใบรับรองที่เชื่อถือได้ และในโหมดที่เข้มงวดกว่าคือความสัมพันธ์ระหว่างชื่อใบรับรองกับผู้ใช้ฐานข้อมูล
นั่นเป็นข้อมูลรับรองที่แข็งแรงกว่า มันไม่ใช่รายการอนุญาต และไม่ได้ทำให้เซิร์ฟเวอร์ล่องหน เพราะองค์ประกอบที่รับการเชื่อมต่อยังประมวลผลทราฟฟิกเครือข่ายและการจับมือ การถือใบรับรองเป็นรายการการเข้าถึงทำให้สิทธิ์จริงไม่ถูกแตะต้อง ยังมีแนวโน้มขยายการแจกจ่ายใบรับรอง ซึ่งก่อให้เกิดปัญหาถัดไป
ใบรับรองที่แข็งแรงซึ่งผูกกับบทบาทที่มีสิทธิ์มากเกินไปให้ผู้ดูแลที่ผ่านการพิสูจน์ตัวตนอย่างดี ตรวจบทบาทก่อนฉลองใบรับรอง
เลือกอินเทอร์เฟซที่แคบกว่าเมื่อเหมาะสม
สำหรับใบเบิกค่าใช้จ่าย ปลายทางของแอปพลิเคชันที่รับใบเบิก บังคับใช้กฎทางธุรกิจ และคืนผลลัพธ์ที่อนุญาตของผู้ใช้รายนั้นเป็นตัวแทนของปฏิบัติการได้ดีกว่าบัญชี SQL ทั่วไป
จากนั้นแอปพลิเคชันใช้อัตลักษณ์ฐานข้อมูลที่จำกัดของตนเอง และลูกค้าไม่เคยได้รับภาษาเรียกค้นเป็นคุณสมบัติ นั่นเป็นพื้นผิวที่เล็กกว่าด้วยวิธีผิดพลาดที่น้อยกว่า
นี่เป็นตัวเลือกการออกแบบ ไม่ใช่ข้ออ้างว่าโค้ดแอปพลิเคชันปลอดภัยกว่าโดยอัตโนมัติ โค้ดนั้นต้องพิสูจน์ตัวตนผู้เรียก อนุญาตทุกการกระทำ และตรวจสอบข้อมูลนำเข้า และสิทธิ์ในฐานข้อมูลของมันเองยังคงสำคัญ
SQL โดยตรงยังคงถูกต้องสำหรับผู้คนและเครื่องมือที่งานที่ได้รับอนุมัติต้องการสิ่งนี้ จำกัดการออกแบบนั้นด้วยบทบาท ขอบเขตเครือข่าย และขีดจำกัดการดำเนินงาน และปล่อยให้ไคลเอนต์อื่นคงอินเทอร์เฟซที่แคบกว่าไว้ การผสมประชากรทั้งสองในบทบาทเดียวคือจุดที่การถกเถียงเริ่มต้น