Post

Azure Policy-val Key Vault belső tűzfalának ellenőrzése

Private endpoint használata adhat “hamis” biztonságtudatot, hogy kívülről úgysem érik el a különböző erőforrásainkat. Véletlenül, vagy szándékosan, de van rá lehetőség, hogy kívülről elérhetővé tegyük, többek között a Key Vault-ot azzal, hogy a belső (Key Vault-on belüli) tűzfalon felveszünk kisebb/nagyobb IP tartományokat, ezzel engedélyezve a publikus hozzáférést. Ezt a lehetőséget pl. szabályokkal auditálhatjuk, vagy akár korlátozhatjuk is, mondjuk csak bizonyos publikus IP-ket engedélyezzük pl. telephelyünk IP-jét. Ennek megoldására írtam egy kisebb egyéni szabályt (custom policy-t), mellyel megoldható/ellenőrizhető ezen lehetséges probléma…

Előfeltételek

A környezet létrehozásához a következőre van szükség:

  • Azure előfizetés amibe van pár $ (Policy maga ingyenes, csak amit ellenőrzünk vele, annak van költsége)

Policy létrehozása

Custom policy-t írni nem a legegyszerűbb dolog, főleg ha bonyolultabb dolgot szeretnénk elérni, de szerencsére több száz beépített van és mások által megosztott policy-t felhasználni se nehéz, hozzuk is létre ezt a custom policy-t.
img-description
img-description
img-description
Milyen információk is kellenek:

  • Hol jöjjön létre maga a definíció, tehát legmagasabb szint, ahol ki lehet ajánlani magát a policy-t
  • Megjelenítési neve
  • Milyen kategóriában soroljuk
  • Maga a kód, ahova be kell illeszteni a következőt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
{
  "mode": "All",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "microsoft.keyvault/vaults"
        },
        {
          "count": {
            "field": "Microsoft.KeyVault/vaults/networkAcls.ipRules[*]",
            "where": {
              "count": {
                "value": "[parameters('approvedIPs')]",
                "name": "approvedPrefix",
                "where": {
                  "value": "[ipRangeContains(current('approvedPrefix'), current('Microsoft.KeyVault/vaults/networkAcls.ipRules[*].value'))]",
                  "equals": true
                }
              },
              "equals": 0
            }
          },
          "greater": 0
        }
      ]
    },
    "then": {
      "effect": "[parameters('effect')]"
    }
  },
  "parameters": {
    "effect": {
      "type": "String",
      "metadata": {
        "displayName": "Effect",
        "description": "Enable or disable the execution of the policy"
      },
      "allowedValues": [
        "Audit",
        "Disabled",
        "Deny"
      ],
      "defaultValue": "Deny"
    },
    "approvedIps": {
      "type": "Array",
      "metadata": {
        "displayName": "approvedIps",
        "description": "list of approved external IP addresses"
      },
      "defaultValue": []
    }
  }
}

Policy hozzárendelése

Miután létrejött a policy, ki is ajánlhatjuk a kívánt szinten. Amennyiben lehetséges én mindig a Managament Group szintet javaslom.

img-description
img-description
img-description
Itt határozhatjuk meg, hogy milyen hatása lesz magának a szabálynak

  • Deny esetén el sem lehet menteni azt a beállítást, ahol olyan IP-t akarunk elhelyezni, ami nincs a listában
  • Audit módban csak a Compliance report-ban fog pirosan világítani, de alkalmazható a nem kívánt beállítás

img-description

Miután létrehoztuk, akár 30 perc is kellhet, hogy kifejtse hatását :)

Végeredmény

Ha mindent jól csináltunk, a következő nem engedélyzett IP felvétel alkalmával ezzel fog találkozni a felhasználó: img-description

Természetesen van lehetőség bővebb “hibaüzenet” megadására is, hogy egyértelmű legyen a felhasználónak, mi is a gond, de itt most nem ez volt a célkeresztben…

This post is licensed under CC BY 4.0 by the author.