istio.io/content/uk/docs/tasks/security/tls-configuration/workload-min-tls-version/index.md

4.9 KiB
Raw Blame History

title description weight keywords aliases owner test
Конфігурація мінімальної версії TLS для робочих навантажень Istio Показує, як налаштувати мінімальну версію TLS для робочих навантажень Istio. 90
security
TLS
/docs/tasks/security/workload-min-tls-version/
istio/wg-security-maintainers yes

Ця задача показує, як налаштувати мінімальну версію 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.

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

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

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

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

    {{< text bash >}} $ 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 {{< /text >}}

  • Перевірте, що curl успішно спілкується з httpbin, використовуючи наступну команду:

    {{< text bash >}} 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 {{< /text >}}

{{< warning >}} Якщо ви не бачите очікуваного результату, повторіть спробу через кілька секунд. Кешування і затримка поширення можуть спричинити деяку затримку. {{< /warning >}}

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

{{< text bash >}} 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" {{< /text >}}

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

{{< text plain >}} TLSv1.3 {{< /text >}}

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

{{< text bash >}} 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)" {{< /text >}}

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

{{< text plain >}} Cipher is (NONE) {{< /text >}}

Очищення

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

{{< text bash >}} $ kubectl delete -f samples/httpbin/httpbin.yaml -n foo $ kubectl delete -f samples/curl/curl.yaml -n foo {{< /text >}}

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

{{< text bash >}} $ istioctl uninstall --purge -y {{< /text >}}

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

{{< text bash >}} $ kubectl delete ns foo istio-system {{< /text >}}