แชร์ไฟล์ Compose ของ VPN อยู่หรือเปล่า? ลบความลับออกจากสำเนาที่เรนเดอร์แล้ว
คีย์ส่วนตัวอาจอยู่ใน YAML ในค่าของ env หรือในเอาต์พุตที่แก้ไขแล้วซึ่งไม่มีใครดู ตรวจสอบสำเนาที่คุณแนบจริง
ทุกครั้งที่คุณแชร์ไฟล์ Compose จะมีอาร์ติแฟกต์สองชิ้น: ชิ้นที่คุณเขียน และชิ้นที่เครื่องมือเรนเดอร์หลังแทนที่ตัวแปร ชิ้นที่สองมักอ่อนไหวกว่าชิ้นแรก และเป็นชิ้นที่ผู้คนวางในรายงานปัญหโดยไม่เคยอ่าน การตรวจเฉพาะไฟล์ต้นทางคือการตรวจเอกสารผิดฉบับ
เปรียบเทียบว่าแต่ละสำเนาบรรจุอะไรได้บ้างก่อนตัดสินใจว่าจะลบอะไร
โมเดลที่เรนเดอร์แล้วเป็นเอกสารอีกฉบับหนึ่ง
Compose แก้ตัวแปรสภาพแวดล้อม รวมไฟล์โอเวอร์ไรด์ และสร้างการกำหนดค่าที่มีผลซึ่งผู้อ่านแยกไม่ออกจากค่าที่เขียนด้วยมืออีกต่อไป การอ้างอิงเช่นชื่อตัวแปรในต้นทางกลายเป็นโทเคนของบัญชีเองในเอาต์พุต โครงสร้างที่ทำให้ไฟล์มีประโยชน์ต่อการวินิจฉัยยังคงอยู่หลังการแปลงนั้น และทุกสิ่งที่ไม่มีทางควรอยู่ในไฟล์ก็ยังคงอยู่เช่นกัน
เรนเดอร์ไฟล์ด้วยตัวเองก่อนแนบ และถือว่าเอาต์พุตนั้นคืออาร์ติแฟกต์ที่กำลังตรวจ หากเรนเดอร์ไม่ได้ก็ไม่รู้ว่ากำลังจะเผยแพร่อะไร
ความลับอยู่ในที่มากกว่าช่องคีย์
เริ่มจากสิ่งที่ชัดเจน: คีย์ส่วนตัว คีย์ที่แชร์ล่วงหน้า โทเคน รหัสผ่าน และ URL การเชื่อมต่อที่ฝังข้อมูลรับรอง จากนั้นดูทุกสิ่งที่ไฟล์ชี้ไป เพราะการอ้างอิงไม่ใช่การลบ ไฟล์ env ที่เมานต์ในเซอร์วิส ไฟล์กำหนดค่าที่ผูกจากโฮสต์ ป้ายที่พาโทเคน และอาร์กิวเมนต์คำสั่งที่มีรหัสผ่าน ล้วนเดินทางไปกับการติดตั้งแม้ YAML ดูสะอาด คีย์ที่วางในตัวแปรที่ตั้งชื่อให้อุ่นใจก็ยังเป็นคีย์
พาธของโฮสต์และชื่อเซอร์วิสรั่วข้อมูลอีกชนิดหนึ่ง ชื่อไดเรกทอรีบ้าน ชื่อโฮสต์ภายใน หรือช่วงเครือข่ายสามารถระบุบุคคลหรือองค์กรได้โดยไม่ต้องมีข้อมูลรับรองแม้แต่รายการเดียว และบริบทนั้นก็ควรลบด้วยเหตุผลเดียวกัน
การประกาศความลับไม่ใช่ตัวความลับ
ออบเจกต์ความลับของ Compose แยกการประกาศออกจากวัสดุ: เซอร์วิสได้รับพาธหรือเป้าหมาย และเนื้อหาอยู่ที่อื่น การเก็บการประกาศไว้พร้อมแทนที่วัสดุมักเป็นการแลกเปลี่ยนที่ถูกต้อง เพราะผู้ตรวจต้องเห็นว่ามีความลับและมันถูกเมานต์อย่างไร สิ่งที่ไม่ควรอยู่รอดคือเนื้อหาเอง
ป้ายและคอมเมนต์สมควรได้รับการปฏิบัติแบบเดียวกัน คอมเมนต์ที่บอกว่าพาธไหนในตู้เก็บคีย์โปรดักชันบอกผู้โจมตีว่าควรมองที่ใดแม้จะไม่มีคีย์อยู่เลย
รักษารูปทรงไว้ให้ไฟล์ยังวินิจฉัยได้
การลบที่ตัดโหมดเครือข่าย เวอร์ชันอิมเมจ หรือการตั้งค่าความสามารถออก ทำให้ได้ไฟล์ที่ไม่มีใครดีบักได้ แทนที่ค่าที่อ่อนไหวแล้วเก็บความสัมพันธ์ไว้: เซอร์วิสใดเมานต์อะไร เข้าร่วมเครือข่ายใด ต้องใช้อุปกรณ์ใด นี่คือส่วนที่ผู้อ่านใช้เพื่อ อธิบายเส้นทางที่หายไปหรืออุปกรณ์ที่ไม่พร้อมใช้งาน นี่ก็เป็นเวอร์ชันที่เพื่อนร่วมงานนำไปเทียบกับการติดตั้งที่ใช้งานได้ของตัวเอง
docker compose -f compose.yaml config > rendered.yaml
grep -nE 'PRIVATE_KEY|PASSWORD|TOKEN|PSK|PrivateKey|passphrase' rendered.yaml
wc -l rendered.yaml
อย่าติดตั้งสำเนาที่ลบข้อมูลแล้วราวกับเป็นต้นฉบับที่ใช้งานได้ มันคือคำอธิบาย และคำอธิบายที่ถูกแก้ให้ดูปลอดภัยจะล้มเหลวในลักษณะที่ดูเหมือนข้อบกพร่องของการกำหนดค่า
หากวัสดุถูกเปิดเผย ให้เปลี่ยนมัน
การลบไฟล์แนบไม่ได้ลบสำเนาที่คนอื่นทำไปแล้ว และมิเรอร์กับแคชก็เก็บสำเนาของตัวเอง ใช้กระบวนการเพิกถอนและเปลี่ยนของผู้ออกสำหรับทุกสิ่งที่รั่วไหล แล้วอัปเดตการติดตั้ง ลำดับสำคัญ เพราะเปลี่ยนก่อนแล้วเพิกถอนทีหลังจะทิ้งช่วงเวลาที่มีข้อมูลรับรองที่ใช้ได้สองชุด
ในกระทู้สนับสนุน เริ่มด้วยข้อผิดพลาดที่แน่นอน เวอร์ชันอิมเมจ โหมดเครือข่าย และการตั้งค่าที่ไม่ใช่ความลับหนึ่งรายการที่สำคัญ การรวมกันนี้อธิบายอุปกรณ์ที่หายไปหรือเส้นทางที่พังได้บ่อยกว่าคีย์มาก