如何使用列表为google_compute_security_policy定义规则

时间:2019-07-11 21:55:50

标签: google-cloud-platform terraform terraform-provider-gcp google-cloud-armor

https://www.terraform.io/docs/providers/google/r/compute_security_policy.html

规则嵌入google_compute_security_policy资源

云盔甲有一个愚蠢的限制,一条规则中最多只能允许5个IP,我想将其列入白名单的IP约为15个

我希望这是动态的,而不必手动将其分解为google_compute_security_policy中静态定义的3条规则

我想要一个terraform var,它是所有15个IP的列表。然后,在该变量上循环,仅创建15条规则,然后将其应用于google_compute_security_policy资源。

这样可能吗?

2 个答案:

答案 0 :(得分:1)

您可以使用内置的here函数:

  

chunklist将单个列表分成固定大小的块,并返回列表列表。

因此,在您的情况下,我们将遵循以下原则:

resource "google_compute_security_policy" "default" {

  dynamic "rule" {
    for_each = chunklist(var.my_ip_array, 5)

    content {
      action   = "allow"
      priority = rule.key+1

      match {
        versioned_expr = "SRC_IPS_V1"

        config {
          src_ip_ranges = rule.value
        }
      }
    }
  }

答案 1 :(得分:0)

根据官方GCP文档https://cloud.google.com/armor/docs/security-policy-concepts#limits,Cloud Armor的硬限制为5个IP地址或IP地址范围,无法对其进行更改。

您可以尝试在同一计算安全策略内的3个不同规则上拆分这15个IP,以绕过此限制。