add http custom respone headers and configuration in ingress nginx kubernetes

0
488

halo sobat sekolahlinux, kali ini saya akan memberitahu how to add http custom respone headers and configuration in ingress nginx kubernetes, hal ini biasanya diperlukan untuk meningkatkan level security pada web kita, agar menjadi lebih aman

kalau konfigurasinya ada di level blok “server” pertama sobat harus menambahkan annotation nginx.ingress.kubernetes.io/server-snippet lalu tinggal tambahkan value custom header yg diinginkan, contohnya seperti dibawah

kubernetes.io/ingress.class: "ingress-sekolahlinux"
nginx.ingress.kubernetes.io/server-snippet: |
  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
  add_header Referrer-Policy "strict-origin";
  add_header X-Content-Type-Options "nosniff" always;
  add_header X-Xss-Protection "1; mode=block" always;
  add_header X-Frame-Options "SAMEORIGIN" always;
  add_header Permissions-Policy "geolocation=();midi=();notifications=();push=();sync-xhr=();microphone=();camera=();magnetometer=();gyroscope=();speaker=(self);vibrate=();fullscreen=(self);payment=();";
  add_header Content-Security-Policy "default-src 'self'; style-src 'self' 'unsafe-inline' https://www.googleadservices.com; img-src 'self' https://www.google.com https://googleads.g.doubleclick.net; script-src-elem 'self' 'unsafe-inline' https://www.google.com https://www.googleadservices.com https://www.googletagmanager.com https://googleads.g.doubleclick.net https://www.gstatic.com; frame-src 'self' 'unsafe-inline' https://www.google.com;";

lalu jika konfigurasinya sobat ingin ada di level nginx global configuration sobat bisa tambahkan di configmap, namun sebelumnya sobat perlu tahu dulu dimana configmap yang harus dirubah, atau biasanya nginx-ingress belum membuatkan configmapnya, jadi sobat harus membuat configmap tersebut, namun sobat juga tidak bisa sembarangan membuat configmap tersebut, nama serta lokasi namespace dari configmap tersebut harus sesuai dengan konfigurasi yang ada pada nginx ingress controller, untuk melihatnya kamu bisa menjalankan perintah dibawah

kubectl edit pods ingress-sekolahlinux-nginx-ingress-controller-xxxxx-xxxx -n nginx-ingress

maka didalamnya kamu akan melihat konfigurasi seperti dibawah:

spec:
  containers:
  - args:
    - /nginx-ingress-controller
    - --default-backend-service=nginx-ingress/ingress-sekolahlinux-nginx-ingress-default-backend
    - --election-id=ingress-controller-leader
    - --ingress-class=ingress-sekolahlinux
    - --configmap=nginx-ingress/ingress-sekolahlinux-nginx-ingress-controller

kita bisa lihat diatas nama configmap nya adalah ingress-sekolahlinux-nginx-ingress-controller dan berada di namespace nginx-ingress, jika sobat belum menemukan configmap tersebut maka sobat bisa membuatnya file yaml secara manual kurang lebih isinya seperti dibawah:

apiVersion: v1
kind: ConfigMap
metadata:
  name: ingress-sekolahlinux-nginx-ingress-controller
  namespace: nginx-ingress
data:
  enable-vts-status: "false"
  gzip-level: "6"
  proxy-body-size: 25m
  server-tokens: "false"
  ssl-ciphers: ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
  ssl-early-data: "true"
  ssl-protocols: TLSv1.1 TLSv1.2 TLSv1.3
  use-forwarded-headers: "true"
  use-gzip: "true"

untuk detail konfigurasi apa saja yang bisa di implementasi pada web nginx-ingress sobat bisa mengunjungi link dibawah ini:

LEAVE A REPLY

Please enter your comment!
Please enter your name here