‫เอาล่ะตอนนี้เราได้ผ่านความลับและคุณสมบัติและวิธีการทำงานและสิ่งที่เราลองมาดูการใช้งานจริง
‫ดังนั้นสิ่งที่ฉันมีที่นี่คือฉันได้ตั้งค่า swarm 3 โหนดของเราเหมือนก่อน
‫ฉันอยู่ในไดเรกทอรีตัวอย่าง
‫1 ความลับที่คุณจะเห็นใน repo
‫และทั้งหมดที่ฉันมีก็คือไฟล์ข้อความเดียว และในไฟล์ข้อความนั้นเป็นเพียงชื่อผู้ใช้ที่เรียบง่ายไม่ใช่รหัสผ่านจริงๆ
‫มีสองวิธีที่เราสามารถสร้างความลับภายใน Swarm ได้
‫และหนึ่งในนั้นคือการให้ไฟล์และอีกอันหนึ่งคือการส่งค่าที่บรรทัดคำสั่ง
‫ดังนั้นให้ใช้ไฟล์ก่อน นักเทียบท่าลับสร้าง แล้วฉันจะต้องให้ชื่อในฐานข้อมูลลับ
‫และฉันจะเรียกมันว่าผู้ใช้ psql
‫ไม่จำเป็นต้องใช้ชื่อเดียวกับไฟล์แน่นอน แต่ฉันจะเรียกมันว่า
‫แล้ว ... มันแยกรหัสกลับมาเหมือนที่ทำกับวัตถุอื่น และให้สร้างอีกอันหนึ่ง ลองใส่รหัสผ่านจริง
‫และในครั้งนี้เราจะทำการสะท้อนจากบรรทัดคำสั่ง
‫หากคุณเห็นสิ่งที่ฉันทำฉันพิมพ์รหัสผ่านจริงในบรรทัดคำสั่งด้วยเสียงสะท้อนและสะท้อนในคำสั่งการสร้าง
‫และสังเกตว่าเส้นประที่ส่วนท้ายเพราะมันบอกให้สั่งให้อ่านจากอินพุตมาตรฐาน นี่คือสิ่งที่เราให้กับคำสั่ง echo
‫ตอนนี้ฉันควรจะบอกว่าทั้งสองอย่างนี้มีข้อเสีย
‫อันแรกคุณจริง ๆ แล้วคุณเก็บรหัสผ่านบนฮาร์ดไดรฟ์ของเซิร์ฟเวอร์บนโฮสต์
‫และเราไม่ต้องการทำเช่นนั้น
‫ดังนั้นบางทีคุณอาจจะใช้ API ระยะไกลจากบรรทัดคำสั่งท้องถิ่นบนเครื่องของคุณ จากนั้นส่งผ่านไฟล์ต่างๆ
‫และในอันที่สองมันจะเข้าสู่ประวัติของไฟล์ Bash ของเราสำหรับผู้ใช้รูทของเรา
‫ดังนั้นในทางเทคนิคแล้วถ้าใครสามารถรูทพวกเขาสามารถเอารหัสผ่านนี้ออกมาได้
‫เมื่อคุณจัดการกับระบบการผลิตของคุณเองคุณจะต้องมองหาวิธีต่างๆในการจัดการกับปัญหาด้านความปลอดภัยที่อาจเกิดขึ้น
‫ดังนั้นสิ่งที่เรามีที่นี่คือ ... ตอนนี้ถ้าฉันทำเคล็ดลับนักเทียบท่าคุณสามารถเห็นว่าฉันมีทั้งคู่อยู่ในนั้น
‫ตอนนี้ฉันสามารถตรวจสอบได้ แต่ฉันจะไม่เห็นรหัสผ่านหรือความลับที่แท้จริง
‫ดังนั้นขอผมทำแค่ผู้ใช้
‫มันจะไม่ให้ข้อมูลกับเราใช่ไหม เพราะถ้ามันเป็นเรื่องง่ายที่จะได้รับข้อมูลมันจะไม่เป็นความลับนั้นจริงๆ
‫ขวา?
‫ดังนั้นเป้าหมายที่นี่คือเมื่อคุณใส่ความลับในระบบมันจะถูกเก็บไว้ในฐานข้อมูล
‫และสิ่งเดียวที่จะสามารถเข้าถึงความลับที่ถอดรหัสได้นั้นคือคอนเทนเนอร์และบริการที่เรากำหนดให้
‫ลองทำกันตอนนี้
‫ฉันจะสร้างบริการด้วยตนเอง
‫สร้างบริการนักเทียบท่า ฉันจะเรียกมันว่า psql และเราจะทำแผนที่ความลับของมัน
‫โดยพื้นฐานแล้วเรากำลังบอกคำสั่งสร้างนี้ใช้ความลับนี้เรียกว่าชื่อนี้โดยเฉพาะ ...
‫ฉันสามารถใช้รหัสลับ ... และกำหนดให้กับบริการนี้เพื่อให้คอนเทนเนอร์ทั้งหมดในบริการนี้จะเห็นความลับนี้
‫เอาล่ะ
‫จากนั้นให้ผู้ใช้อยู่ในนั้นจากนั้นฉันต้องทำรหัสผ่านอีกครั้ง
‫ถูก
‫ดังนั้นนี่แมปความลับกับบริการเพื่อให้พวกเขาแสดงเป็นไฟล์ที่อยู่ในภาชนะ
‫แต่ไม่ได้บอกฐานข้อมูล postgres
‫ว่าเรากำลังสร้างจากรูปภาพนี้วิธีใช้ความลับ
‫ดังนั้นโดยปกติเราต้องทำอะไรบางอย่างกับการกำหนดค่าของภาพ
‫และในกรณีนี้รูปภาพอย่างเป็นทางการจาก Docker Hub
‫ได้ตัดสินตามมาตรฐานที่คุณใช้ตัวแปรสภาพแวดล้อม แต่แทนที่จะส่งผ่านบางอย่างเช่นรหัสผ่าน postgres ซึ่งยากที่จะใช้กับไฟล์
‫เราต้องเอาไฟล์ลงในตัวแปรสภาพแวดล้อมและนั่นเป็นความเจ็บปวดเล็กน้อย
‫ดังนั้นพวกเขามีมาตรฐานที่ถ้าคุณระบุไฟล์ ... และนี่จะเป็นเส้นทาง ... ดังนั้นมันจะเป็นความลับวิ่งแล้วชื่อใช่มั้ย
‫psql pass ชื่อของความลับ
‫ถ้าฉันทำอย่างนั้นจริง ๆ แล้วในการเริ่มต้นของรูปภาพที่จะค้นหาตัวแปรสภาพแวดล้อมนี้จะถูกกรอก
‫และถ้าเป็นก็จะดึงไฟล์นั้นและเก็บไว้ในตัวแปรสภาพแวดล้อม เนื้อหาจริงของไฟล์นั้น
‫นี่คือวิธีง่ายๆในการใช้ความลับเหล่านี้ที่อยู่ในไฟล์
‫แต่หมายความว่าภาพที่คุณใช้ต้องมีมาตรฐานนี้อยู่
‫เรายังสามารถทำสิ่งเดียวกันสำหรับผู้ใช้
‫หวังว่านี่จะสมเหตุสมผลสำหรับคุณ
‫เมื่อฉันสร้างบริการมันจะทำสิ่งปกติเมื่อมันออกคำขอการกำหนดเวลาสำหรับคอนเทนเนอร์ใหม่
‫มันจะสร้างฐานข้อมูล Postgres
‫หนึ่งฐานและจะส่งผ่านตัวแปรสภาพแวดล้อมสำหรับที่ตั้งของความลับทั้งสองนั้น
‫จากนั้นก็จะทำการแมปในเทมเพลตมันจะแมปในลักษณะที่เป็นไฟล์
‫แต่อีกครั้งมันเป็นเพียงระบบไฟล์ RAM หรือ tmpfs
‫ไปดูสิ่งที่เราเห็นกันในนั้น
‫ดังนั้นฉันจึงเป็นนักเทียบท่า ps psql และนั่นควรบอกเราว่าโหนดนั้นทำงานอยู่
‫ตกลงมันทำงานบนโหนดนี้
‫ลองทำ exec เพื่อดูว่าเราสามารถมองเห็นอะไรในตู้คอนเทนเนอร์
‫นักเทียบท่า exec -it
‫และจากนั้นชื่อคอนเทนเนอร์เฉพาะสำหรับบริการนั้นและทุบตี
‫เอาล่ะ
‫ตอนนี้เราน่าจะสามารถทำ ls ในการใช้ความลับและคุณจะเห็นว่าเราได้รับไฟล์สองไฟล์
‫และถ้าฉันทำ cat กับผู้ใช้ psql เราจะเห็นค่า มันได้ผล
‫และถ้าเราดูบันทึกของ psql เราก็รู้ว่ามันใช้งานได้จริง เพราะถ้ามันไม่ได้ ...
‫หากไม่มีไฟล์เหล่านั้นฐานข้อมูลจริงจะสร้างใหม่เองและไม่สามารถทำงานได้เพราะไม่มีรหัสผ่านและชื่อผู้ใช้ในการสร้างฐานข้อมูล
‫ถ้าคุณใช้บริการ docker ps อีกครั้งสิ่งที่คุณจะเห็นว่ามันทำงานไม่ถูกต้องในสถานการณ์ฐานข้อมูลหรือไม่ฐานข้อมูลอาจล้มเหลวจริง
‫ๆ และมันจะทำการรีสตาร์ทต่อไปและคุณจะเห็นว่ามีการสร้างคอนเทนเนอร์ใหม่ที่นี่
‫ดังนั้นตอนนี้ที่เราได้กำหนดให้มันจริงเราสามารถใช้การปรับปรุงบริการนักเทียบท่าเพื่อลบความลับ
‫ดังนั้นการปรับปรุงบริการนักเทียบท่า --secret-rm
‫นอกจากนี้ยังมีการเพิ่มความลับ
‫แต่ถ้าฉันลบหนึ่งในความลับเหล่านี้สิ่งที่จะเกิดขึ้นจริงก็คือมันจะปรับใช้ภาชนะ เพราะความลับเป็นส่วนหนึ่งของการออกแบบบริการที่ไม่เปลี่ยนแปลง
‫หากมีสิ่งใดในคอนเทนเนอร์ที่ต้องเปลี่ยนสำหรับบริการเซอร์วิสจะไม่เข้าไปและเปลี่ยนแปลงบางสิ่งภายในคอนเทนเนอร์
‫มันจะหยุดภาชนะจริงและปรับใช้ใหม่
‫เห็นได้ชัดว่ามันไม่เหมาะสำหรับฐานข้อมูล ดังนั้นเราจะต้องคิดแผนใหม่สำหรับวิธีที่เราจะอัปเดตรหัสผ่านฐานข้อมูล
‫และนั่นคือสิ่งที่เราสามารถพูดถึงในภายหลัง
‫ในตอนนี้ฉันแค่อยากให้คุณรู้ว่าคุณสามารถลบมันออกและเพิ่มมันเข้าไปในบริการที่มีอยู่เดิมได้
‫มันจะสร้างภาชนะขึ้นมาใหม่เมื่อคุณทำมัน