本页面介绍了如何在 Google Distributed Cloud (GDC) air-gapped 中配置显式拒绝项目网络政策。
借助明确的拒绝规则,您可以限制不同项目或 CIDR 范围中的工作负载和服务之间的连接。在项目网络政策中,显式 Deny 规则的优先级绝对高于 Allow 规则。
准备工作
如需配置明确拒绝项目网络政策,您必须具备以下条件:
- 必要的身份和访问权限角色。如需管理特定项目的政策,您需要拥有
project-networkpolicy-admin角色。对于需要管理跨所有可用区的政策的多可用区环境,您需要拥有global-project-networkpolicy-admin角色。如需了解详情,请参阅准备预定义角色和访问权限。 - 现有项目。如需了解详情,请参阅创建项目。
- 对于出站网络政策,您还必须为项目停用数据渗漏防护。
创建拒绝网络策略
您可以定义入站或出站拒绝政策来限制通信。
创建入站拒绝政策
如需阻止来自组织内其他项目中的工作负载的入站流量,您必须配置具有 Deny 操作的入站流量政策。
以下政策会阻止 PROJECT_1 项目中的工作负载接收来自 PROJECT_2 项目中工作负载的连接。
应用政策:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT_1
name: deny-ingress-from-PROJECT_2
spec:
policyType: Ingress
subject:
subjectType: UserWorkload
ingress:
- action: Deny
from:
- projectSelector:
projects:
matchNames:
- PROJECT_2
EOF
替换以下内容:
GLOBAL_API_SERVER:全局 API 服务器的 kubeconfig 路径。如需了解详情,请参阅全球和可用区级 API 服务器。PROJECT_1:您要应用政策的项目的命名空间。PROJECT_2:应拒绝流量的项目的命名空间。
创建出站流量拒绝政策
如需阻止项目中的工作负载向组织内另一个项目中的工作负载发送出站流量,您必须配置具有 Deny 操作的出站政策。
以下政策会阻止 PROJECT_1 项目中的工作负载发起与 PROJECT_2 项目中的工作负载的连接。
应用政策:
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: networking.global.gdc.goog/v1
kind: ProjectNetworkPolicy
metadata:
namespace: PROJECT_1
name: deny-egress-to-PROJECT_2
spec:
policyType: Egress
subject:
subjectType: UserWorkload
egress:
- action: Deny
to:
- projectSelector:
projects:
matchNames:
- PROJECT_2
EOF
替换以下内容:
GLOBAL_API_SERVER:全局 API 服务器的 kubeconfig 路径。PROJECT_1:您要应用政策的项目的命名空间。PROJECT_2:应拒绝流量的项目所对应的命名空间。
关键限制和安全功能
为防止意外错误配置并保护平台流量,项目网络政策会针对拒绝规则强制执行以下安全检查:
- 出站安全规则:对于出站政策,系统会自动注入规则以排除系统命名空间和非项目命名空间。这样可确保出站
Deny规则不会意外阻止与基本平台基础设施服务(例如 API 服务器或 DNS)的通信。 - 必需的对等规范:入站
Deny规则必须在from字段中明确指定来源对等方。您无法通过将来源对等方留空来选择所有来源。不允许省略from块或将其留空,否则系统会拒绝该政策。 - IPBlock 拒绝规则和基础架构流量:如果您在出站
Deny规则中使用ipBlock,则无法注入安全规则。启用允许使用 IP 块选择节点的功能后(请参阅节点选择和规模注意事项),广泛的出站流量Deny规则可能会阻止基础架构流量。为出站Deny政策仔细配置 IP 块。