本頁面提供操作說明,協助您在 Google Distributed Cloud (GDC) 實體隔離環境中,設定明確拒絕專案網路政策。
明確拒絕規則可讓您限制不同專案或 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欄位中明確指定來源對等互連,輸出Deny規則則必須在to欄位中明確指定目的地對等互連。您無法將對等互連欄位留空,藉此選取所有來源或目的地。不得省略from或to區塊,也不得留空,否則政策會遭到拒絕。 - IP 封鎖拒絕規則和基礎架構流量:如果您在輸出
ipBlocks規則中使用ipBlocks,系統就無法插入安全規則。Deny由於ipBlocks規則可以選取叢集節點 (請參閱「使用 IP 區塊指定叢集節點」),因此廣泛的出站Deny規則可能會封鎖基礎架構流量。請仔細設定輸出Deny政策的 IP 區塊。