☸️ چگونه می توان از کنترلر ورودی Kubernetes برای تأیید اعتبار برنامه پیکربندی کرد – امنیت اطلاعات تیم

Kubernetes Ingress مسیریابی مجدد را در این دوره از کانتینر کردن تعریف کرد و با تمام این روش های مسیریابی ، فکر "روتر من قانون من است" واقعی به نظر می رسد.

ما از nginx-ingress به عنوان سرویس مسیریابی برای برنامه های خود استفاده می کنیم.

چیزهای بیشتری وجود دارد.

یکی از ویژگی های مهم پیکربندی احراز هویت برای برنامه ما است.

از آنجا که همه ترافیک ها از ورود به خدمات ما عبور می کند ، پیکربندی احراز هویت منطقی است.

همانطور که در مخزن ذکر شد ، انواع مختلفی از تأیید اعتبار موجود است ، از جمله:

  • احراز هویت اساسی (اصلی)
  • تأیید اعتبار.
  • احراز هویت خارجی
  • احراز هویت خارجی Oauth

در این راهنما ، با استفاده از تکنیک اصلی تأیید اعتبار Ingress ، احراز هویت را پیکربندی می کنیم.

پیش نیازها

  • دسترسی به خوشه کاری kubernetes [
  • درک اصطلاحات کوبنتز مانند برای غلافها ، استقرارها ، سرویسها ، پیکربندیها ، اینگها و حاشیه نویسی

ابتدا بیایید با اجرای دستور زیر ، منابع را برای مثال از Ingress ایجاد کنیم.

 $  kubectl ایجاد  -f  https: // raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
namespace  "ingress-nginx"  ایجاد شده است
استقرار  "پیش فرض-صفحه-پس زمینه"  ایجاد شده است
سرویس  "پیش فرض-صفحه-پس زمینه"  ایجاد شده است
پیکربندی  "nginx-configuration"  ایجاد شده است
configmap  "tcp-service"  ایجاد شده است
configmap  "خدمات udp"  ایجاد شده است
serviceaccount  "nginx-ingress-serviceaccount"  ایجاد شد
clusterrole  "nginx-ingress-clusterrole"  ایجاد
نقش  "nginx-ingress-role"  ایجاد کرد
rolebinding  "nginx-ingress-role-nisa-binding"  ایجاد
clusterrolebinding  "nginx-ingress-clusterrole-nisa-binding"  ایجاد
استقرار  "nginx-ingress-Controller"  ایجاد شده 

اکنون که منابع ورودی ایجاد شده اند ، ما برای دسترسی به آن به یک سرویس نیاز داریم.

برای ایجاد سرویس از مانیفست زیر استفاده کنید:

 apiVersion [19659020]:   v1 
 kind :   service 
 metadata : 
   حاشیه نویسی : 
     service.beta.kubernetes.io/aws-load-balancer -backend-protokol :   tcp 
   label : 
     k8s-addon :   ingress-nginx.addons.k8s.io  name :   ingress-nginx 
   namespace :   ingress-nginx 
 spec : 
   externalTrafficPolicy :   خوشه 
  ] بنادر 
   ] -   name :   https 
     port :   443 
     protokol :   TCP [19659034] مقصد TCP 
     targetPort :   http 
   انتخاب : 
     برنامه :   ingress-nginx 
   نوع :   LoadBalancer 

حالا بیایید انتهای ELB را بدست آوریم و آنرا به بعضی از نامهای دامنه وصل کنیم.

 $ kubectl   -f  ingress-service.yml
سرویس ingress-nginx ایجاد شد

 $  kubectl  -n  ingress-nginx get svc ingress-nginx  -o  wide
نام NAME CLUSTER-IP EXTERNAL-IP PORT  ( S )  SEGECTOR AGE
ingress-nginx 100.71.250.56 abcghccf8540698e8bff782799ca8h04-1234567890.us-east-2.elb.amazonaws.com 80: 30032 / TCP، 443: 30108 / TCP 10s  برنامه  = [1945905] بیایید استقرار و خدمات را برای برنامه نمونه کیبانای خود ایجاد کنیم. 

برای اجرای کیبانا ما به الاستیک جستجو نیاز داریم.

این مانیفست برای نمونه نمونه است.

 --- 
 apiVersion :   extensions / v1beta1 
 نوع :   استقرار 
 ابرداده : 
   برچسب ها : 
     app :   kibana 
   name ]  ] kibana 
   namespace :   ingress-nginx 
 spec ]  replicas :   1 
   قالب : 
     metadata [196590] ]: 
       labels : 
         app :   kibana 
     spec [19659020]: 
       ظروف : 
        -   تصویر [196590201]:   kibana: آخرین 
          نام :   kibana 
  ] بنادر : [19659137] -   bowlPort :   5601 
 --- 
 apiVersion :   v1 
 kind :   service 
 metata 19659020]: 
   حاشیه نویسی : 
   برچسب ها : 
     برنامه :   kibana 
   name :   kibana 
  ] namespace [196590] :   ingress-nginx 

 spec : 
   بنادر : 
   -   name ]:   kibana 
     port ]:   5601 
     targetPort :   5601 
   selector  app  app  app :   kibana 
 ---  apiVersion ]   پسوندها / v1beta1 
 نوع :   استقرار 
 ابرداده : 
   برچسب ها : 
     برنامه :   elasticsearch 
   name :   elasticsearch 
   namespace :   ingress-nginx 
 spec : 
   replicas ]  1 
   استراتژی : 
     نوع :   قالب RollingUpdate 
   قالب : 
     ابرداده : 
       برچسب ها : 
         ]:   elasticsearch 
     spec : 
       ظروف : 
        -   تصویر :   elasticsearch: آخرین 
   نام ] ] بنادر elasticsearch 
          پورت ها : 
            -   kontتپورت ::   5601 
 --- 
 apiVersion :  v] 
] [] ]:   Service 
 metadata : 
   حاشیه نویسی : برچسب ها : 
     برنامه :   elasticsearch 
   name :   elasticsearch 
   فضای نام :   ingress-nginx 
 sp ec : 
   ports : 
   -   name ]:   elasticsearch 
     port ]:   9200 
     targetPort : [19659021] 9200 
   انتخاب کننده : 
     برنامه :   elasticsearch 

برنامه را ایجاد کنید.

 kubectl اعمال  -f  kibana.yml
استقرار  "kibana"  ایجاد شده است
خدمات  "kibana"  ایجاد شده است
استقرار  "elasticsearch"  ایجاد شده است
service  "elasticsearch"  ایجاد شده 

اکنون که منابع برنامه و بازی را ایجاد کردیم ، زمان آن رسیده که خود Ingress را ایجاد کرده و به برنامه دسترسی پیدا کنید.

از مانیفست زیر استفاده کنید:

 apiVersion :   extensions / v1beta1 
 kind :   Ingress 
 metadata : 
   حاشیه نویسی : 
   نام : 
   kibana-ingress 
   ] namespace :   ingress-nginx 
 spec : 
   قوانین : 
     -  میزبان :   logstest.myapp-staging.com 
       http : 
         paths : 
           -   path :   / 
             backend : 
               serviceName ]:  ] kibana 
               servicePort :   5601 
 $ kubectl   -n  ingress-ngi nx create  -f  ingress.yml
ingress  "kibana-ingress"  ایجاد شد. 

اکنون که برنامه ما در حال اجراست ، وقتی می توانیم با استفاده از آدرس http://logstest.myapp-staging.com به داشبورد کیبانا دسترسی پیدا کنیم ، ما به نوار ابزار Kibana ما دسترسی مستقیم داریم و هرکسی که این URL دارد می تواند به سیاههها دسترسی پیدا کند.

اکنون اجازه دهید تأیید اعتبار اولیه را با استفاده از htpasswd تنظیم کنیم.

دستورات زیر را دنبال کنید تا یک راز اعتبار را ایجاد کنید.

بیایید یک پرونده مجوز را با نام کاربری و رمزعبور ایجاد کنیم.

 $  htpasswd  -c  auth kibanaadmin
گذرواژه جدید: 
گذرواژه جدید:
دوباره رمزعبور جدید را تایپ کنید:
افزودن گذرواژه  برای  کاربر kibanaadmin 

از یادداشتهای زیر در مانیفست ما استفاده کنید:

 kubectl -n ingress-nginx edit ingress kibana ingress 

یادداشتهای زیر را وارد کنید:

 nginxberes .. .io / auth-type: basic
nginx.ingress.kubernetes.io/auth-secret: basic-auth
nginx.ingress.kubernetes.io/auth-realm: "احراز هویت كیبانا لازم است - kibanaadmin"

اکنون که Ingress به روز شده است ، دوباره به آن URL بروید و از شما خواسته می شود تأیید اعتبار کنید.