Конфігурація мінімальної версії TLS для робочих навантажень Istio

Ця задача показує, як налаштувати мінімальну версію TLS для робочих навантажень Istio. Максимальна версія TLS для робочих навантажень Istio — 1.3.

Конфігурація мінімальної версії TLS для робочих навантажень Istio

  • Встановіть Istio через istioctl з налаштованою мінімальною версією TLS. Власний ресурс IstioOperator, що використовується для конфігурації Istio в команді istioctl install, містить поле для мінімальної версії TLS для робочих навантажень Istio. Поле minProtocolVersion визначає мінімальну версію TLS для TLS-зʼєднань між робочими навантаженнями Istio. У наступному прикладі, мінімальна версія TLS для робочих навантажень Istio налаштована на 1.3.

    $ cat <<EOF > ./istio.yaml
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        meshMTLS:
          minProtocolVersion: TLSV1_3
    EOF
    $ istioctl install -f ./istio.yaml

Перевірка конфігурації TLS робочих навантажень Istio

Після конфігурації мінімальної версії TLS для робочих навантажень Istio, ви можете перевірити, що мінімальна версія TLS налаштована і працює як очікується.

  • Розгорніть два робочих навантаження: httpbin та curl. Розгорніть їх в одному просторі імен, наприклад, foo. Обидва робочих навантаження працюють з проксі Envoy попереду.

    ZipZip
    $ kubectl create ns foo
    $ kubectl apply -f <(istioctl kube-inject -f @samples/httpbin/httpbin.yaml@) -n foo
    $ kubectl apply -f <(istioctl kube-inject -f @samples/curl/curl.yaml@) -n foo
  • Перевірте, що curl успішно спілкується з httpbin, використовуючи наступну команду:

    $ kubectl exec "$(kubectl get pod -l app=curl -n foo -o jsonpath={.items..metadata.name})" -c curl -n foo -- curl http://httpbin.foo:8000/ip -sS -o /dev/null -w "%{http_code}\n"
    200

У цьому прикладі мінімальна версія TLS була налаштована на 1.3. Щоб перевірити, що TLS 1.3 дозволено, виконайте наступну команду:

$ kubectl exec "$(kubectl get pod -l app=curl -n foo -o jsonpath={.items..metadata.name})" -c istio-proxy -n foo -- openssl s_client -alpn istio -tls1_3 -connect httpbin.foo:8000 | grep "TLSv1.3"

Вивід повинен містити:

TLSv1.3

Щоб перевірити, що TLS 1.2 не дозволено, виконайте наступну команду:

$ kubectl exec "$(kubectl get pod -l app=curl -n foo -o jsonpath={.items..metadata.name})" -c istio-proxy -n foo -- openssl s_client -alpn istio -tls1_2 -connect httpbin.foo:8000 | grep "Cipher is (NONE)"

Вивід повинен містити:

Cipher is (NONE)

Очищення

Видаліть застосунки curl і httpbin з простору імен foo:

$ kubectl delete -f samples/httpbin/httpbin.yaml -n foo
$ kubectl delete -f samples/curl/curl.yaml -n foo

Видаліть Istio з кластера:

$ istioctl uninstall --purge -y

Щоб видалити простори імен foo та istio-system:

$ kubectl delete ns foo istio-system
Чи була ця інформація корисною?
Чи є у вас пропозиції щодо покращення?

Дякуємо за ваш відгук!