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

เลือกชั้นจากตัวระบุที่ชั้นนั้นมองเห็นได้จริง แล้วจึงเลือกจากไคลเอนต์ที่ชั้นนั้นครอบคลุม การเริ่มจากคำสั่งไฟร์วอลล์ที่คุณรู้อยู่แล้วคือทางที่กฎจะลงเอยด้วยการไม่บล็อกอะไรเลย หรือบล็อกมากเกินไป

ชื่อไม่ใช่ตัวตนที่ทุกชั้นตรวจสอบได้

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

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

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

แต่ละชั้นระบุอะไรได้บ้าง

อ่านตารางจากคอลัมน์กลางออกไปด้านนอก ตัวระบุที่ชั้นมองเห็นได้เป็นตัวกำหนดนโยบายที่ชั้นนั้นบังคับใช้ได้อย่างซื่อตรง

LayerIdentifier it seesWhat it cannot see
Packet filteraddress, protocol, portthe name, or which other services share that address
DNS policythe queried name and the answer handed backconnections made by clients that ignore the resolver
Managed browsersupported URL patterns on managed profilesnon-browser clients, or unmanaged devices
CONNECT proxyhost and port for tunnelled requeststhe path inside an encrypted request

ชั้นหนึ่งเป็นส่วนหนึ่งของนโยบายก็ต่อเมื่อตัวระบุที่ชั้นนั้นเห็นตรงกับตัวระบุที่คุณกำกับ ตารางยังอธิบายว่าเหตุใดกฎที่เขียนในชั้นหนึ่งจึงไม่ค่อยย้ายไปอีกชั้นโดยไม่ตัดสินใจใหม่ว่ามันปกป้องอะไร

จุดที่กฎที่เห็นได้ชัดล้มเหลว

กฎที่อยู่ถูกต้องพอดีสำหรับบริการที่มีที่อยู่เฉพาะที่คุณควบคุม และความเป็นเจ้าของนั้นควรเขียนไว้ในนโยบาย มันผิดพอดีสำหรับทุกสิ่งหลังที่อยู่ส่งเนื้อหาที่ใช้ร่วมกัน ซึ่งกฎเดียวกันไปแตะบริการที่ไม่เกี่ยวข้อง และคำตอบ DNS ที่รีเฟรชแล้วไม่ได้เปลี่ยนกฎให้เป็นการอนุญาตตามชื่อโฮสต์

นโยบายเบราว์เซอร์ที่จัดการแสดงข้อจำกัดเว็บได้ตรงกว่าบัญชีที่อยู่ที่คัดลอกมา แต่ใช้กับเบราว์เซอร์และโปรไฟล์ที่ระบบจัดการกำกับอยู่

กฎเบราว์เซอร์นั้นไม่ได้ทำอะไรกับไคลเอนต์เสียงที่ส่ง UDP ไปยังโฮสต์อื่น และรูปแบบของมันถูกกำหนดโดยผลิตภัณฑ์นั้น ไม่ใช่โดยธรรมเนียมไวลด์การ์ดที่ยืมมาจากที่อื่น พร็อกซี CONNECT ก็ได้รับโฮสต์และพอร์ตสำหรับคำขอที่ส่งผ่านอุโมงค์ และอ่านเส้นทางภายในเซสชันที่เข้ารหัสไม่ได้ ออกแบบกฎโดยยึดสิ่งที่โพรโทคอลเปิดเผย แล้วเขียนไว้ว่ามันปล่อยอะไรไว้โดยไม่ครอบคลุม เพราะช่องว่างนั้นคือที่มาของคำขอถัดไป

เลือกตามไคลเอนต์ ไม่ใช่ตามคำสั่ง

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

สำหรับบริการที่คุณดำเนินการ การอนุญาตในแอปพลิเคชันแข็งแกร่งกว่าขอบเขตเครือข่ายใด ๆ เพราะมันตามบัญชีไม่ใช่ตามเส้นทาง เส้นทาง VPN คือการเข้าถึงได้เท่านั้น การส่งแพ็กเก็ตไปถึงบริการได้ไม่ใช่สิทธิ์ในการใช้บริการนั้น เมื่อตัวระบุที่สำคัญคือผู้ใช้หรือสิทธิ์ของช่อง ให้บังคับใช้ที่นั่นและถือกฎเครือข่ายเป็นชั้นที่สอง

เขียนกฎในแง่ของทรัพยากร

นโยบายที่ป้องกันได้ระบุทรัพยากร ตัวตน แอปพลิเคชันในขอบเขต และเส้นทางที่พาพวกมันไป รวมถึงตระกูลที่อยู่ทั้งสองที่ใช้อยู่ และระบุด้วยว่าเกิดอะไรขึ้นกับโครงสร้างพื้นฐานร่วมที่กฎจะกระทบโดยบังเอิญ

ถ้อยคำนั้นก่อให้เกิดการตัดสินใจที่ใครบางคนตรวจสอบย้อนหลังได้ กฎที่ให้เหตุผลด้วยที่อยู่ที่แปลงแล้วของวันนี้ก่อให้เกิดเหตุการณ์เมื่อที่อยู่เปลี่ยนครั้งแรก และจะไม่มีใครอธิบายได้ว่าการบล็อกเคยถูกต้องได้อย่างไร

บทความที่เกี่ยวข้อง