在托管式控制平面上启用可选功能
借助托管式 Cloud Service Mesh,您可以通过自定义集群中的 ConfigMap 资源来启用可选的网格功能。您可以配置安全加固功能,例如无发行版的代理映像、通过出站流量政策限制外部出站流量,以及自定义跟踪记录采样,同时让 Google 管理控制平面维护和升级。
功能可用情况因控制平面实现和发布渠道而异。如需了解详情,请参阅使用 Istio API 支持的功能(托管式控制平面)和在集群内控制平面上启用可选功能。
Distroless 代理映像
直接加入的集群(直接加入到托管式
TRAFFIC_DIRECTOR控制平面的集群):仅支持distroless映像类型。您无法更改此设置。不支持default图片。已迁移的集群(从
ISTIOD迁移到TRAFFIC_DIRECTOR控制平面的集群):映像类型默认设置为default映像(包含调试二进制文件)。您可以自行明确选择启用distroless图片,以提高安全性。
建议使用 Distroless 映像类型,以提高安全性。最佳做法是将容器运行时的内容限制为仅包含必要的软件包。此方法可提高常见漏洞和披露 (CVE) 扫描程序的安全性和信噪比。Istio 提供基于 Distroless 基础映像的代理映像。
Distroless 映像不包含代理以外的任何二进制文件。
因此,无法使用 exec shell 或使用容器中的 curl、ping 或其他调试实用程序。不过,您可以使用临时容器附加到正在运行的工作负载 Pod,以便检查 Pod 并运行自定义命令。例如,请参阅收集 Cloud Service Mesh 日志。
以下配置可为整个 Cloud Service Mesh 启用 Distroless 映像。映像类型更改要求每个 pod 重启并重新注入才能生效。
apiVersion: v1
kind: ConfigMap
metadata:
name: istio-release-channel
namespace: istio-system
data:
mesh: |-
defaultConfig:
image:
imageType: distroless
您可以使用以下 Pod 注解替换 imageType。请注意,对于具有托管式 TRAFFIC_DIRECTOR 控制平面的集群,仅支持 distroless 作为显式替换值(不允许使用 debug 或其他非 distroless 映像类型)。
sidecar.istio.io/proxyImageType: distroless
使用注解更改部署的映像类型后,应重启部署。如需恢复为默认映像,请从 MeshConfig 中移除 sidecar.istio.io/proxyImageType 注解或 imageType 字段,然后重启部署。
kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME
由于它不需要调试基础映像,因此大多数代理调试类型应使用 gcloud beta container fleet mesh debug proxy-status / proxy-config (详细信息)。
出站流量政策
默认情况下,outboundTrafficPolicy 设置为 ALLOW_ANY。在此模式下,允许发送到任何外部服务的所有流量。如需控制流量并将流量限制为仅定义了服务条目的外部服务,您可以将默认行为 ALLOW_ANY 更改为 REGISTRY_ONLY。
以下配置会将
outboundTrafficPolicy配置为REGISTRY_ONLY:apiVersion: v1 kind: ConfigMap metadata: name: istio-release-channel namespace: istio-system data: mesh: |- outboundTrafficPolicy: mode: REGISTRY_ONLY其中,release-channel 是您的发布渠道(
asm-managed、asm-managed-stable或asm-managed-rapid)。您可以使用以下命令在 configmap 中进行之前的必要配置更改:
kubectl edit configmap istio-release-channel -n istio-system -o yaml
运行以下命令以查看 configmap:
kubectl get configmap istio-release-channel -n istio-system -o yaml
如需验证
outboundTrafficPolicy是否已启用REGISTRY_ONLY,请确保mesh:部分中显示以下行。... apiVersion: v1 data: mesh: | outboundTrafficPolicy: mode: REGISTRY_ONLY ...
最终用户身份验证
您可以为基于浏览器的最终用户身份验证和对已部署工作负载的访问权限控制配置托管式 Cloud Service Mesh 用户身份验证。如需了解详情,请参阅配置 Cloud Service Mesh 用户身份验证。
为您的工作负载配置最低的 TLS 版本
如果您使用托管式 TRAFFIC_DIRECTOR 控制平面实现直接加入 Cloud Service Mesh,则无法更改此设置。
您可以使用 minProtocolVersion 字段指定工作负载中 TLS 连接的最低 TLS 版本。如需详细了解如何设置最低 TLS 版本并检查工作负载的 TLS 配置,请参阅 Istio 工作负载最低 TLS 版本配置。
下面的示例显示将工作负载的最低 TLS 版本设置为 1.3 的 ConfigMap:
apiVersion: v1
kind: ConfigMap
metadata:
name: istio-release-channel
namespace: istio-system
data:
mesh: |-
meshMTLS:
minProtocolVersion: TLSV1_3