วิธีสร้าง TLS ลับใน Kubernetes

Withi Srang Tls Lab Ni Kubernetes



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

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

โพสต์นี้จะแสดงให้เห็นว่า:







ความลับของ Kubernetes คืออะไร?

ข้อมูลลับเป็นหนึ่งในทรัพยากรของ Kubernetes ที่ใช้ในการจัดเก็บข้อมูลที่เป็นความลับ เช่น ข้อมูลรับรองการเข้าสู่ระบบของผู้ใช้ คีย์ ใบรับรอง หรือโทเค็น สามารถสร้างความลับทีละรายการและเชื่อมต่อกับพ็อดได้ จะป้องกันไม่ให้นักพัฒนาให้ข้อมูลที่เป็นความลับในรูปแบบโค้ดและยังให้การรักษาความปลอดภัยอีกชั้นหนึ่งอีกด้วย คุณสามารถสร้างและใช้ความลับประเภทต่างๆ ได้ ความลับที่ใช้กันมากที่สุดคือ:



ความลับทั่วไป: ข้อมูลลับทั่วไปใช้เพื่อจัดเก็บข้อมูลพื้นฐาน เช่น รหัสผ่าน โทเค็น คีย์ API คีย์ OAuth และอื่นๆ



ข้อมูลลับ TLS: ข้อมูลลับ TLS ใช้เพื่อจัดเก็บคีย์ส่วนตัวและใบรับรองที่ลงนามโดย CA เพื่อให้มั่นใจในความปลอดภัยของแอปพลิเคชันที่ทำงานภายใน Kubernetes และเพื่อความปลอดภัยในการสื่อสารภายในคลัสเตอร์ ผู้ใช้มักจะต้องสร้างและฝังความลับ TLS ลงในพ็อด





รีจิสทรีนักเทียบท่า: มันถูกใช้เพื่อจัดเก็บข้อมูลรับรองรีจิสทรีนักเทียบท่าเพื่อให้สามารถดึงรูปภาพจากรีจิสทรีได้อย่างง่ายดาย

วิชาบังคับก่อน: สร้างคีย์ส่วนตัวและใบรับรอง

หากต้องการสร้างใบรับรองและคีย์ส่วนตัวเพื่อปรับปรุงความปลอดภัย ให้ใช้ OpenSSL ที่สร้าง CSR (คำขอลงนามใบรับรอง) และคีย์ส่วนตัว จากนั้นใช้ CSR เพื่อสร้างใบรับรองที่ลงนามด้วยตนเองหรือใบรับรอง CA



หากต้องการใช้คำสั่ง OpenSSL บน Windows ผู้ใช้จำเป็นต้องติดตั้ง Git เพื่อจุดประสงค์นี้ให้ทำตามลิงค์ของเรา” ติดตั้งคอมไพล์บน Windows ' บทความ.

หลังจากติดตั้ง git แล้ว ให้ทำตามคำแนะนำด้านล่างเพื่อสร้างคีย์ส่วนตัวและใบรับรองที่ลงนาม

ขั้นตอนที่ 1: เปิด Git Bash Terminal

ทำการค้นหา “ คอมไพล์ทุบตี ” ในเมนู Start และเปิดเทอร์มินัล:

หากต้องการตรวจสอบไดเร็กทอรีปัจจุบันให้ใช้คำสั่ง “ นโยบายความเป็นส่วนตัว ' สั่งการ:

นโยบายความเป็นส่วนตัว

ขณะนี้ เรากำลังทำงานในไดเรกทอรี %USERPROFILE%:

ขั้นตอนที่ 2: สร้างไดเรกทอรีใหม่

สร้างไดเร็กทอรีใหม่เพื่อบันทึกใบรับรองและคีย์ส่วนตัว:

mkdir ใบรับรอง

นำทางไปยังไดเร็กทอรีที่สร้างขึ้นใหม่โดยใช้ปุ่ม “ ซีดี ' สั่งการ:

ซีดี ใบรับรอง

ขั้นตอนที่ 3: สร้างคีย์ส่วนตัว

ตอนนี้ให้สร้างคีย์ส่วนตัวผ่านคำสั่งที่กำหนด ที่นี่คีย์ส่วนตัวที่สร้างขึ้นจะถูกบันทึกไว้ใน “ mycert.คีย์ ”:

openssl genpkey -อัลกอริทึม อาร์เอสเอ -ออก mycert.คีย์

ขั้นตอนที่ 4: สร้าง CSR

หากต้องการสร้าง CSR (คำขอบริการใบรับรอง) เพื่อรับใบรับรองที่ลงนาม ให้ใช้คำสั่งที่กำหนด:

คำขอ openssl -ใหม่ -สำคัญ mycert.คีย์ -ออก mycert.csr

ขั้นตอนที่ 5: สร้างใบรับรอง

สุดท้ายนี้ ใช้คีย์ส่วนตัวที่สร้างขึ้นและ CSR สร้างใบรับรองและบันทึกไว้ใน ' mycert.crt ' ไฟล์. เพื่อจุดประสงค์นี้ ให้ดำเนินการคำสั่งด้านล่าง:

openssl x509 -req -ใน mycert.csr -signkey mycert.คีย์ -ออก mycert.crt -วัน 365

หลังจากสร้างใบรับรอง TLS แล้ว ผู้ใช้สามารถสร้าง TLS ลับได้โดยทำตามส่วนด้านล่าง

จะสร้าง TLS ลับใน Kubernetes ได้อย่างไร

เพื่อให้มั่นใจถึงความปลอดภัยของแอปพลิเคชันและการสื่อสารที่ปลอดภัยภายในและภายนอกคลัสเตอร์ Kubernetes ใบรับรอง TLS (Transport Layer Security) จึงมีความสำคัญที่ใช้ในการเข้ารหัสข้อมูล ข้อมูลลับของ Kubernetes ช่วยให้เราสามารถฝังใบรับรอง TLS ด้วยพ็อดที่ทำงานผ่าน TLS ที่เป็นความลับ หากต้องการสร้าง TLS ลับใน Kubernetes ให้ทำตามคำแนะนำต่อไปนี้

ขั้นตอนที่ 1: เริ่มคลัสเตอร์ Minikube

ในการเริ่มต้นคลัสเตอร์ minikube ขั้นแรกให้เปิด Windows PowerShell ในฐานะผู้ดูแลระบบ หลังจากนั้นให้สร้างและรันคลัสเตอร์โดยใช้คำสั่ง “ มินิคิวบ์สตาร์ท ' สั่งการ:

มินิคิวบ์สตาร์ท

ขั้นตอนที่ 2: รับโหนด

เข้าถึงโหนด Kubernetes เพื่อตรวจสอบว่าคลัสเตอร์เริ่มทำงานหรือไม่:

minikube รับโหนด

ขั้นตอนที่ 3: สร้าง TLS ลับ

สร้างความลับ TLS ใน Kubernetes โดยใช้ “ kubectl สร้างความลับ –cert=<ใบรับรอง path-to-tls> –key= ' สั่งการ. ในที่นี้ประเภทลับอาจเป็น “ ทั่วไป , ' ไม่เป็นไร ', หรือ ' นักเทียบท่ารีจิสทรี '. ในการสร้างความลับ TLS เราได้ตั้งค่าประเภทความลับเป็น “tls”:

kubectl สร้างความลับ tls การสาธิตความลับ --ใบรับรอง =C:\Users\Dell\cert\mycert.crt --สำคัญ =C:\Users\Dell\cert\mycert.key

ขั้นตอนที่ 4: รับความลับ

เพื่อการยืนยัน ให้แสดงรายการความลับของ Kubernetes โดยใช้คำสั่งที่กำหนด:

kubectl ได้รับความลับ

ที่นี่คุณจะเห็นว่าเราได้สร้าง “ ความลับการสาธิต ” ซึ่งประกอบด้วย “ 2 ” ค่าข้อมูล:

ขั้นตอนที่ 5: อธิบายความลับ

หากต้องการดูวิธีการดูหรือจัดเก็บข้อมูลเป็นความลับ ให้อธิบายความลับโดยใช้เครื่องหมาย “ kubectl อธิบายความลับ ' สั่งการ:

kubectl อธิบายความลับการสาธิตความลับ

คุณสามารถดูค่าที่จัดเก็บเป็นไบต์และไม่สามารถดูได้โดยตรง ซึ่งต่างจาก Kubernetes ConfigMaps:

จะสร้าง TLS ลับผ่านไฟล์ Yaml ได้อย่างไร

หากต้องการสร้าง TLS ลับผ่านไฟล์ yaml ขั้นแรกให้สร้าง ' Secret.yml ” ให้เพิ่มไฟล์ ใบรับรองที่เข้ารหัส tls base64 ใน ' tls.crt ” และเพิ่ม คีย์เข้ารหัส base64 ใน ' tls.คีย์ '.

สำหรับการสาธิต ให้ทำตามขั้นตอนที่ระบุไว้

ขั้นตอนที่ 1: สร้างไฟล์ Yaml

สร้างไฟล์ชื่อ “ Secret.yml ” และวางรหัสที่กำหนด:

apiเวอร์ชัน : : เวอร์ชัน 1

ข้อมูล
: :

tls.crt
: : 'ใบรับรองที่เข้ารหัส base64'

tls.คีย์
: : 'คีย์เข้ารหัส base64'

ใจดี
: : ความลับ

ข้อมูลเมตา
: :

ชื่อ
: : mytls-ความลับ

เนมสเปซ
: : ค่าเริ่มต้น

พิมพ์
: : kubernetes.io/tls

ในตัวอย่างข้างต้น ให้แทนที่ค่าคีย์ “tls.crt” และ “tls.key” ด้วยใบรับรองและค่าคีย์เดิมของคุณ:

ขั้นตอนที่ 2: สร้างความลับ

ตอนนี้ใช้ไฟล์ yaml ลับผ่าน ' kubectl ใช้ -f ' สั่งการ:

สมัคร kubectl -ฉ Secret.yml

ผลลัพธ์แสดงให้เห็นว่าเราได้สร้าง ' mytls-ความลับ ” โดยใช้ไฟล์ yaml:

หมายเหตุ: ดูใบรับรอง TLS และคีย์ส่วนตัว

หากต้องการดูใบรับรองที่เข้ารหัส base64 และใช้ในไฟล์ yaml ให้เรียกใช้คำสั่ง “ cat <ไฟล์เส้นทางสู่ใบรับรอง> | ฐาน64 ” คำสั่งในเทอร์มินัล git bash:

แมว mycert.crt | ฐาน64

หากต้องการดูคีย์ที่เข้ารหัส base64 ให้ใช้ “ cat <ไฟล์เส้นทางสู่คีย์> | ฐาน64 ' สั่งการ:

แมว mycert.คีย์ | ฐาน64

จะฝัง TLS ลับด้วย Kubernetes Pod ได้อย่างไร

หลังจากสร้าง TSL ลับแล้ว ผู้ใช้สามารถฝังมันเข้ากับพ็อด Kubernetes ได้ โดยทำตามคำแนะนำต่อไปนี้

ขั้นตอนที่ 1: สร้างไฟล์ Yaml

สร้างไฟล์ชื่อ “ pod.yml ” และวางข้อมูลโค้ดด้านล่างลงในไฟล์:

เวอร์ชัน api: v1

ชนิด: พ็อด

ข้อมูลเมตา:

ชื่อ: เดโมพ็อด

ข้อมูลจำเพาะ:

ภาชนะ:

- ชื่อ: html-cont

ภาพ: rafia098 / html-img: 1.0

envจาก:

- ความลับอ้างอิง:

ชื่อ: สาธิตความลับ

ในตัวอย่างข้างต้น:

  • ใจดี ” ระบุทรัพยากร Kubernetes ที่ผู้ใช้กำลังสร้าง
  • ชื่อ ” ปุ่มจะตั้งชื่อพ็อด
  • ตู้คอนเทนเนอร์ ” คีย์จะเก็บข้อมูลคอนเทนเนอร์
  • ชื่อ ” ใต้คีย์ “คอนเทนเนอร์” จะตั้งชื่อคอนเทนเนอร์
  • ภาพ ” คีย์จะให้แอปพลิเคชันหรืออิมเมจคอนเทนเนอร์เพื่อสร้างและเริ่มแอปพลิเคชันภายในคอนเทนเนอร์
  • envจาก ” จะตั้งค่าตัวแปรสภาพแวดล้อมจากทรัพยากร Kubernetes อื่น ๆ ที่นี่เพื่อฝัง TLS ลับไว้ในพ็อด” ความลับRef ” ใช้เพื่อให้ข้อมูลอ้างอิงที่เป็นความลับ หากต้องการฝัง TLS ลับข้างต้น ให้ระบุชื่อของข้อมูลลับในคีย์ 'ชื่อ'

ขั้นตอนที่ 2: สร้างหรืออัปเกรดพ็อด

จากนั้นเปิดโฟลเดอร์ที่ “ pod.yml ” ไฟล์ถูกสร้างขึ้น:

ซีดี C:\Users\Dell\Documents\Kubernetes\Secret

ใช้ไฟล์ yaml เพื่อสร้างหรือกำหนดค่าพ็อดใหม่โดยใช้คำสั่ง “ สมัคร kubectl ' สั่งการ:

สมัคร kubectl -ฉ pod.yml

ขั้นตอนที่ 3: เข้าถึง Kubernetes Pod

สำหรับการตรวจสอบ ให้แสดงรายการพ็อด Kubernetes:

kubectl รับพ็อด

ที่นี่คุณจะเห็นว่าเราได้สร้าง “ สาธิตพ็อด ” สำเร็จ:

ขั้นตอนที่ 4: อธิบายพ็อด

หากต้องการตรวจสอบว่าพ็อดฝัง TLS ลับไว้หรือไม่ ให้อธิบายพ็อดโดยใช้คำสั่งด้านล่าง:

kubectl อธิบาย pod demo-pod

ผลลัพธ์ด้านล่างแสดงให้เห็นว่าเราได้ฝังความลับ TLS ด้วยพ็อดสำเร็จแล้ว:

เราได้กล่าวถึงวิธีสร้าง TLS ลับและฝังไว้ด้วยแอปพลิเคชัน Kubernetes ที่ทำงานอยู่ในพ็อด

บทสรุป

หากต้องการสร้าง TLS ลับใน Kubernetes ขั้นแรกให้สร้างใบรับรองที่ลงนาม TLS และคีย์ส่วนตัว หลังจากนั้นให้เริ่มคลัสเตอร์ Kubernetes และเรียกใช้คำสั่ง “ kubectl สร้างความลับ –cert=<ใบรับรอง path-to-tls> –key= ' สั่งการ. ผู้ใช้ยังสามารถสร้าง TLS ลับโดยใช้รายการ yaml โพสต์นี้ได้อธิบายวิธีสร้าง TLS ที่เป็นความลับ และวิธีฝังข้อมูลลับด้วยแอปพลิเคชันหรือพ็อดที่ทำงานอยู่