Google Cloud Platform | 使用 Terraform 的分层防火墙策略自动化
【本文由Cloud Ace整理发布,更多内容请访问Cloud Ace 官网】
防火墙规则是 Google Cloud 中网络安全的重要组成部分。Google Cloud 中的防火墙大致可分为两种类型;网络防火墙策略和分层防火墙策略。 虽然网络防火墙直接与 VPC 相关联以允许/拒绝流量,但分层防火墙可以被视为使用资源层次结构在整个组织中创建和执行策略的策略引擎。可以在组织级别或文件夹级别实施分层策略。与网络防火墙规则一样,分层防火墙策略规则可以允许或拒绝流量,还可以将评估委托给较低级别的策略或网络防火墙规则本身(使用 go_next)。较低级别的规则不能覆盖资源层次结构中较高位置的规则。这使组织范围内的管理员可以在一个地方管理关键的防火墙规则。
那么,现在让我们考虑几个使用分层防火墙策略的场景。1.减少网络防火墙的数量示例:假设在 xyz.com 中根据其业务部门获得了 6 个共享 VPC。拒绝 SSH 访问公司中的任何虚拟机是一种安全策略,即拒绝 TCP 端口 22 流量。对于网络防火墙,需要在 6 个地方(每个共享 VPC)执行此规则。每个网段越来越多的细粒度网络防火墙规则意味着更多的接触点,即意味着更多的漂移和事故机会。安全管理员忙于手持,几乎总是成为即使是简单的防火墙更改的瓶颈。借助分层防火墙策略,安全管理员可以创建通用/单一策略来拒绝 TCP 端口 22 流量并将其强制执行到 xyz.com 组织。或者从策略中明确定位一个/多个共享 VPC。这样,单个策略就可以定义更广泛的流量控制态势。
2. 使用集中策略管理关键防火墙规则,并在 VPC 级别安全地委派非关键控制示例:在 xyz.com 上,SSH 到 GCE 是被严格禁止的,并且是不可协商的。审计师需要这个。允许/拒绝到端口 443 的 TCP 流量取决于流量要到达的共享 VPC。在这种情况下,安全管理员可以创建一个策略来拒绝 TCP 端口 22 流量并将该策略强制执行到 xyz.com。另一个策略是为 TCP 端口 443 流量创建“go_next”并在下一个较低级别决定是否允许此流量。然后,使用网络防火墙规则在共享 VPC 级别允许/拒绝 443 流量。
通过这种方式,安全管理员可以在更高级别进行更广泛的控制,以强制执行流量控制策略并在可能的情况下进行委派。在一个地方管理最关键的防火墙规则的能力也使项目级管理员(例如,项目所有者、编辑或安全管理员)不必跟上不断变化的组织范围的政策。
通过分层防火墙策略,安全管理员可以集中实施、管理和观察流量控制模式。
创建、配置和实施分层防火墙策略
分层防火墙策略有 3 个主要组成部分;规则、政策和协会。
从广义上讲,“规则”是一种决策结构,用于声明是否应允许、拒绝或将流量委托给下一级进行决策。“策略”是规则的集合,即一个或多个规则可以与策略相关联。“关联”说明政策在谷歌云资源层次结构中的执行点。
这些概念在产品页面上有广泛的解释。
规则、策略和关联的简单可视化看起来像
分层防火墙策略的基础架构即代码 (Terraform)
需要将3 个Terraform 资源拼接在一起以构建和实施分层防火墙策略。
#1 政策Terraform 资源– google_compute_firewall_policy
在这个模块中,最重要的参数是“parent”参数。分层防火墙策略,如项目,由文件夹或组织资源作为父级。请记住,这不是执行或关联策略的文件夹。它只是一个拥有您正在创建的策略的文件夹。使用文件夹来拥有分层防火墙策略,还简化了 IAM 来管理谁可以创建/修改这些策略,即只需将 IAM 分配给该文件夹。
对于扩展环境,建议创建一个单独的“firewall-policy”文件夹来托管所有分层防火墙策略。
样本
/*
Create a Policy
*/
resource "google_compute_firewall_policy" "base-fw-policy" {
parent = "folders/<folder-id>"
short_name = "base-fw-policy"
description = "A Firewall Policy Example"
}
您可以使用以下命令获取“firewall-policy”文件夹的文件夹 IDgcloud resource-manager folders list --organization=<your organization ID> --filter='<name of the folder>'
例如,如果您的防火墙策略文件夹名为“firewall-policy”,则使用gcloud resource-manager folders list --organization=<your organization ID> --filter='firewall-policy'
#2 规则Terraform 资源– google_compute_firewall_policy_rule此资源定义中的大多数参数都非常明显,但有几个参数需要特别考虑。
disabled
– 表示是否禁用防火墙策略规则。设置为 true 时,不会强制执行防火墙策略规则,流量的行为就好像它不存在一样。如果未指定,将启用防火墙策略规则。enable_logging
– 强烈建议启用防火墙日志记录,以获得许多未来的运营优势。要启用它,请传递true
给此参数。target_resources
– 当您想要针对此规则的某些共享 VPC 时,此参数会派上用场。您需要传递共享 VPC 的 URI 路径。顶部获取 VPC 的 URI 使用此命令
gcloud config set project <Host Project ID>
gcloud compute networks list --uri
样本
下面是一些示例 Terraform 代码,用于创建优先级为 9000 的防火墙策略规则,以拒绝来自 35.235.240.0/20 CIDR 块的 TCP 端口 22 流量(用于身份感知代理)
/*
Create a Firewall rule #1
*/
resource "google_compute_firewall_policy_rule" "base-fw-rule-1" {
firewall_policy = google_compute_firewall_policy.base-fw-policy.id
description = "Firewall Rule #1 in base firewall policy"
priority = 9000
enable_logging = true
action = "deny"
direction = "INGRESS"
disabled = false
match {
layer4_configs {
ip_protocol = "tcp"
ports = [22]
}
src_ip_ranges = ["35.235.240.0/20"]
}
target_resources = ["https://www.googleapis.com/compute/v1/projects/<PROJECT
-ID>/global/networks/<VPC-NAME>"]
}
#3 关联Terraform 资源– google_compute_firewall_policy_association在attachment_target
传递要执行此策略的文件夹 ID 中,即此文件夹下的所有内容(所有项目)都将获得此策略。对于共享 VPC,目标文件夹应该是您的宿主项目的父文件夹。样本
/*
Associate the policy
*/
resource "google_compute_firewall_policy_association" "associate-base-fw-policy" {
firewall_policy = google_compute_firewall_policy.base-fw-policy.id
attachment_target = "folders/<Folder ID>"
name = "Associate Base Firewall Policy with dummy-folder"
}
执行这些策略后,您可以在“VPC 网络-> 防火墙”下的控制台上看到它,如下所示。在防火墙策略文件夹中,将显示创建的分层防火墙策略。请记住,每个策略都有 4 个默认防火墙规则,因此即使您在策略中创建单个规则,规则计数也将为 5,如下面的面板所示。进入策略以查看您创建的规则和策略的关联(显示在 2 个面板中)。
概括
分层防火墙策略简化了在整个 Google Cloud 环境中实施一致的流量控制策略的复杂过程。借助本文中展示的 Terraform 模块和自动化,它使安全管理员能够使用策略引擎和已知的基础架构即代码平台构建护栏。
Google Cloud Platform | 使用 Terraform 的分层防火墙策略自动化的更多相关文章
- 用Google Cloud Platform搭建***服务教程
之前FQ一直用的是***,天有不测风云,前几天发现ss服务挂了.更可怕的是ping都ping不通,多方打听,***中文社区已经炸开锅了,原因就是IP被封了.需要付费更换IP.然后到现在还是没有给我更换 ...
- 使用Google Cloud Platform构建机器学习项目-宠物识别
宠物识别我们使用到了tensorflow object-detection API (https://github.com/tensorflow/models/tree/master/researc ...
- Google Cloud Platform 续
Google Cloud Platform 创建新实例 地区:australia-southeast1-a 机器类型:1个vCPU n1-standard-1 系统:Ubuntu 16.04 LTS ...
- 使用Gardener在Google Cloud Platform上创建Kubernetes集群
Gardener是一个开源项目,github地址: https://github.com/gardener/gardener/ 使用Gardener,我们可以在几分钟之内在GCP, AWS, Azur ...
- 如何取消 Google Cloud Platform 试用 & 关闭 GCP 帐号 & 删除信用卡 & 取消订阅
如何取消 Google Cloud Platform 试用 & 关闭 GCP 帐号 & 删除信用卡 & 取消订阅 关闭您的 Google Cloud Platform 帐号 s ...
- 对Google cloud platform 做了点研究
Google也推出了云计算基础服务, 加上微软Azure,亚马逊AWS, 都齐活了. 下面是研究了一下对其的一个初步了解. 计算: Compute Engine IaaS平台,提供VM,操作灵 ...
- Google Cloud Platform
一个离我们很遥远,很遥远的公司.作为全球三大公有云厂商之一,在国内根本听不到他的声音.其实吧,听到了也没用,因为在国内没法用!AWS还在纠结的落地过程中挣扎,GCP基本上就当不存在吧. 抛开这些乌烟瘴 ...
- Google Cloud服务免费申请试用以及使用教程
简介 Google Cloud Platform lets you build and host applications and websites, store data, and analyze ...
- google cloud storage products
https://cloud.google.com/products/storage/ BigTable Cloud Bigtable 是 Google 面向大数据领域的 NoSQL 数据库服务.它也是 ...
随机推荐
- day02-HTML02
4.HTML 4.3HTML基本标签 4.3.9表格(table)标签 基本语法: <table border="边框宽度" cellspacing="空隙大小&q ...
- jquery的toggle()函数,显示/隐藏交替
<!DOCTYPE html> <html lang="en"> <head> <script src="jquery.js&q ...
- 前后端分离项目(九):实现"添加"功能(后端接口)
好家伙,来了来了,"查"已经完成了,现在是"增" 前端的视图已经做好了,现在我们来完善后端 后端目录结构 完整代码在前后端分离项目(五):数据分页查询(后端 ...
- onps栈移植说明(2)——编译器及os适配层移植
2. 字节对齐及基础数据类型定义 协议栈源码(码云/github)port/include/port/datatype.h中根据目标系统架构(16位 or 32位)及所使用的编译器定义基础数据类型及字 ...
- 强连通分量与tarjan算法初步运用
模板题:B3609 [图论与代数结构 701] 强连通分量 题目描述 给定一张 n 个点 m 条边的有向图,求出其所有的强连通分量. 注意,本题可能存在重边和自环. 输入格式 第一行两个正整数 n , ...
- 基于python的数学建模---最小二乘拟合
import numpy as np import matplotlib.pyplot as plt from scipy.optimize import leastsq from matplotli ...
- 【Android】Configuration中的locale已过时
Configuration中有很多属性的设置,在编译时提示错误说locale已过时这个是设置语言的 使用最新的方法如下 configuration.setLocale(locale);
- JDK 8 Stream 流 用 法
import com.entity.Person;import org.junit.Test;import java.util.*;import java.util.function.Function ...
- 关于windows7打不开hlp文件的解决方法
前言 其实也不是打不开,而是打开后是这样的. 也就是相当于打不开. 解决方案 安装对应架构版本补丁,重启电脑即可. 下载地址 包含64位和32位. 有能力的还望下载这个 下载地址 给我留点积分,感谢!
- 求10以内所有偶数和-Java
public class Demo{ //求10以内所有偶数和 public static void main (String[] args){ int sum = 0; for(int i = 0; ...