World

วิธีเพิ่มการตรวจสอบสิทธิ์พื้นฐานของ HTTP ให้กับ Kubernetes NGINX Ingress

13 ต.ค. 2564 07:44 น. EDT | อ่าน 3 นาที Piotr Swat/Shutterstock.comNGINX Ingress เป็นตัวควบคุม Kubernetes ingress ยอดนิยมสำหรับกำหนดเส้นทางการรับส่งข้อมูลไปยังคลัสเตอร์ของคุณ ทรัพยากร Ingress มาตรฐานช่วยให้คุณจับคู่คำขอ HTTP กับบริการ Kubernetes ของคุณได้ ต่อไปนี้คือวิธีการปกป้องเส้นทางของคุณด้วย HTTP Basic Authentication การสร้างไฟล์ HTPasswd ตรวจสอบให้แน่ใจว่าคุณมีไฟล์ htpasswd พร้อมใช้งานก่อนที่คุณจะจัดการกับการกำหนดค่า Kubernetes คุณสามารถสร้างผู้ใช้รายเดียว htpasswd ในเทอร์มินัลของคุณ: apt install apache2-utils htpasswd -c auth example-user คุณจะได้รับแจ้งให้ป้อนรหัสผ่าน ไฟล์ใหม่ที่ชื่อว่า auth จะถูกสร้างขึ้นในไดเร็กทอรีการทำงานของคุณ ถัดไป คุณต้องเข้ารหัสสตริงข้อมูลรับรอง base64 เพื่อให้สามารถใช้เป็นค่าในความลับของ Kubernetes: cat auth | base64 คัดลอกสตริงที่เข้ารหัส base64 ไปยังคลิปบอร์ดของคุณ เราจะใช้ในส่วนถัดไปเพื่อสร้างข้อมูลลับของ Kubernetes ที่มีข้อมูลรับรองของคุณ การเพิ่ม Kubernetes Secret NGINX Ingress อ้างอิงไฟล์ htpasswd เป็นความลับของ Kubernetes เนื้อหาของไฟล์ต้องเก็บไว้ในคีย์การตรวจสอบสิทธิ์ของความลับทึบแสง Kubernetes ยังมีประเภทลับการตรวจสอบสิทธิ์พื้นฐานในตัว แต่ไม่เหมาะสำหรับ NGINX Ingress สร้างรายการลับใหม่และนำไปใช้กับคลัสเตอร์ของคุณด้วย Kubectl: apiVersion: v1 kind: Secret type: Opaque metadata: ชื่อ: htpasswd data: auth: เพิ่มไฟล์ htpasswd ที่เข้ารหัส base64 เป็นค่าของคีย์ auth การปรับเปลี่ยน Ingress ของคุณ NGINX Ingress รองรับคำอธิบายประกอบแบบกำหนดเองหลายอย่างที่ให้คุณแนบพฤติกรรมพิเศษกับทรัพยากร Ingress ของคุณ ในการใช้ HTTP Basic Authentication คุณต้องตั้งค่าคำอธิบายประกอบประเภทการตรวจสอบสิทธิ์และระบุข้อมูลอ้างอิงถึงความลับของคุณ apiVersion: networking.k8s.io/v1beta1 ชนิด: Ingress metadata: ชื่อ: example-ingress annotations: nginx.ingress.kubernetes.io/auth-type: พื้นฐาน nginx.ingress.kubernetes.io/auth-secret: htpasswd nginx.ingress .kubernetes.io/auth-realm: “ป้อนข้อมูลประจำตัวของคุณ” ข้อมูลจำเพาะ: กฎ: – โฮสต์: example.com http: เส้นทาง: – เส้นทาง: / แบ็กเอนด์: serviceName: example-service servicePort: 80 คำอธิบายประกอบสามรายการกำหนดค่า NGINX ให้ต้องมีการตรวจสอบสิทธิ์ ในทุกคำขอที่ตรงกับทรัพยากร Ingress ของคุณ ประเภทการรับรองความถูกต้องพื้นฐานใช้กับข้อมูลประจำตัวจากความลับ htpasswd ที่สร้างไว้ก่อนหน้านี้ คำอธิบายประกอบ auth-realm กำหนดข้อความที่แสดงต่อผู้ใช้เมื่อได้รับพร้อมท์ให้ป้อนข้อมูลประจำตัว คำขอที่ตรงกับ Ingress นี้จะกำหนดให้ผู้ใช้เข้าสู่ระบบก่อนที่จะดำเนินการต่อ คำถามในการตรวจสอบสิทธิ์จะแสดงเป็นกล่องโต้ตอบป๊อปอัปในเว็บเบราว์เซอร์ส่วนใหญ่ ป้อนชื่อผู้ใช้และรหัสผ่านที่ให้มากับคำสั่ง htpasswd เพื่อตรวจสอบตัวตนของคุณ แบบฟอร์มความลับทางเลือก ข้อมูลลับที่แสดงด้านบนใช้รูปแบบไฟล์รับรองความถูกต้อง ซึ่งหมายความว่ามีฟิลด์ auth ที่มีเอาต์พุตที่เข้ารหัส base64 จากคำสั่ง htpasswd NGINX Ingress ยังสนับสนุนรูปแบบอื่นที่เรียกว่า auth-map ในรูปแบบนี้ ฟิลด์การตรวจสอบความถูกต้องจะถูกแทนที่ด้วยชุดของคีย์ที่แต่ละคีย์ระบุรหัสผ่านสำหรับผู้ใช้แต่ละราย apiVersion: v1 type: Secret type: ทึบแสง metadata: ชื่อ: htpasswd data: user1: user2: เพิ่มชื่อผู้ใช้ของคุณลงในไฟล์ จากนั้นใช้ htpasswd เพื่อสร้าง hashed credentials ตรวจสอบเอาต์พุต htpasswd; จะมีรูปแบบดังนี้: ชื่อผู้ใช้: ใช้ส่วนรหัสผ่าน เข้ารหัสด้วยคำสั่ง base64 จากนั้นเพิ่มผลลัพธ์ไปยังข้อมูลลับ Kubernetes ของคุณ NGINX จะยอมรับการเข้าสู่ระบบจากชื่อผู้ใช้และรหัสผ่านที่ถูกต้องซึ่งกำหนดไว้เป็นความลับ วิธีนี้ช่วยให้ตั้งค่าบัญชีผู้ใช้หลายบัญชีได้ง่ายขึ้น และช่วยให้คุณเห็นได้ชัดเจนว่าใครมีสิทธิ์เข้าถึง การตรวจสอบสิทธิ์ขั้นสูงเพิ่มเติม NGINX Ingress สามารถรวมเข้ากับผู้ให้บริการตรวจสอบสิทธิ์ภายนอกได้ หากคุณต้องการการควบคุมเพิ่มเติม แต่ต้องการประสบการณ์การตั้งค่าที่ตรงไปตรงมาเช่นเดียวกัน การใช้ผู้ให้บริการตรวจสอบสิทธิ์ภายนอกจะเปลี่ยนเส้นทางผู้ใช้ไปยังไซต์นั้นก่อนที่พวกเขาจะสามารถเข้าถึงบริการที่อยู่เบื้องหลัง Ingress ของคุณ วิธีนี้ช่วยให้คุณบังคับใช้รูทีนการตรวจสอบสิทธิ์แบบเต็มโดยไม่ต้องแตะรหัสแบ็กเอนด์ของคุณ คำอธิบายประกอบ nginx.ingress.kubernetes.io/auth-url กำหนด URL ของบริการตรวจสอบสิทธิ์ภายนอกที่จะใช้ Kubernetes จะส่งต่อคำขอที่เข้ามาแต่ละรายการไปยังบริการ การเข้าถึงจะได้รับเฉพาะผู้ใช้เมื่อบริการส่งคืนรหัสสถานะ 200 OK ขั้นตอนปกติจะดำเนินต่อไปโดยการร้องขอไปยังบริการ Kubernetes ของคุณ เมื่อบริการตรวจสอบความถูกต้องระบุข้อผิดพลาด ผู้ใช้จะถูกเปลี่ยนเส้นทางไปยังหน้าที่ระบุโดย nginx.ingress.kubernetes.io/auth-signin URL สิ่งนี้จะได้รับ URL ดั้งเดิมเพื่อเปลี่ยนเส้นทางกลับไปหลังจากพยายามตรวจสอบสิทธิ์สำเร็จเป็นพารามิเตอร์ URL ที่กำหนดด้วยคำอธิบายประกอบ auth-signin-redirect-param คำอธิบายประกอบอื่นๆ ช่วยให้คุณปรับเปลี่ยนพฤติกรรมของ NGINX เมื่อสื่อสารกับแพลตฟอร์มการตรวจสอบสิทธิ์ คุณสามารถเปลี่ยนวิธี HTTP ที่ใช้ในการส่งคำขอตรวจสอบสิทธิ์ เพิ่มส่วนหัวเพิ่มเติม และตั้งค่าแคชสำหรับการตอบกลับการตรวจสอบสิทธิ์ อย่างหลังช่วยให้แน่ใจว่าคุณจะไม่โดนแพลตฟอร์มภายนอกอย่างต่อเนื่อง หากผู้ใช้ส่งคำขอหลายรายการไปยังบริการของคุณในช่วงเวลาสั้นๆ สรุป HTTP Basic Authentication เป็นวิธีที่ง่ายที่สุดในการปกป้องเว็บไซต์ เหมาะอย่างยิ่งสำหรับระบบภายในและไซต์การจัดเตรียมที่คุณทำงานกับรายชื่อผู้ใช้เพียงเล็กน้อย และไม่ต้องการการจัดการข้อมูลประจำตัวแบบรวมศูนย์ ใช้การตรวจสอบสิทธิ์ขั้นพื้นฐานกับ NGINX Ingress โดยให้ข้อมูลประจำตัวในความลับของ Kubernetes และตั้งค่าคำอธิบายประกอบบนทรัพยากร Ingress ของคุณ ในกรณีการใช้งานจริง คุณไม่ควรฮาร์ดโค้ดข้อมูลประจำตัวลงในรายการ Kubernetes ของคุณ ใช้ Helm หรือระบบ CI/CD เพื่อระบุค่าอย่างปลอดภัย ณ เวลาที่คุณใช้ทรัพยากรกับคลัสเตอร์ของคุณ

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button