Post

Private Endpoint tiltása más tenant-ok felé

Az előző post-ban azt írtam le, hogy is lehet automatizálni a DNS regisztrációt külső Private Endpoint-os kapcsolódás esetén is. Most viszont, hogy tudom megakadályozni azt, hogy egyáltalán létrejöjjön ilyen, hiszen ezen megközelítéssel gyönyörűen ki tudunk vinni belső információkat, vagy be tudunk hozni akár kártékony kódokat is anélkül, hogy azzal a tűzfalat érintenénk, vagy felkeltenénk az ITSec figyelmét. A jó hír az, hogy ez a féle Private Endpoint nagyon ritkán jön fel, hiszen sokan nem is tudják hogy van rá lehetőség, így nem is számolnak vele. A rossz hír, hogy ha valaki tudja, akkor nagyon könnyen ki tudja használni. Semmi gond, itt az Azure Policy, majd megoldjuk vele, hiszen csak egy egyszerű Deny Policy kell, ami megakadályozza az ilyen Private Endpoint-ok létrehozását. Kis keresés után már találtam is gyári megoldást, így nem kell újra feltalálnunk azt a bizonyost, de azért bemásolom ide is :)

Forrás: https://github.com/Azure/data-management-zone/blob/main/infra/Policies/PolicyDefinitions/PrivateEndpoint/params.policyDefinition.Deny-PrivateEndpoint-PrivateLinkServiceConnections.json

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
{
 "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
 "contentVersion": "1.0.0.0",
 "parameters": {
  "policyName": {
   "value": "Deny-PrivateEndpoint-PrivateLinkServiceConnections"
  },
  "policyDescription": {
   "value": "Deny private endpoints to resources outside of the aad tenant and subscription."
  },
  "policyMode": {
   "value": "Indexed"
  },
  "policyParameters": {
   "value": {
    "effect": {
     "type": "String",
     "metadata": {
      "displayName": "Effect",
      "description": "Enable or disable the execution of the policy"
     },
     "allowedValues": [
      "Audit",
      "Disabled",
      "Deny"
     ],
     "defaultValue": "Deny"
    }
   }
  },
  "policyDefinition": {
   "value": {
    "if": {
     "allOf": [
      {
       "field": "type",
       "equals": "Microsoft.Network/privateEndpoints"
      },
      {
       "anyOf": [
        {
         "count": {
          "field": "Microsoft.Network/privateEndpoints/manualprivateLinkServiceConnections[*]",
          "where": {
           "allOf": [
            {
             "field": "Microsoft.Network/privateEndpoints/manualprivateLinkServiceConnections[*].privateLinkServiceId",
             "notEquals": ""
            },
            {
             "value": "[split(concat(first(field('Microsoft.Network/privateEndpoints/manualprivateLinkServiceConnections[*].privateLinkServiceId')), '//'), '/')[2]]",
             "notEquals": "[subscription().subscriptionId]"
            }
           ]
          }
         },
         "greaterOrEquals": 1
        },
        {
         "count": {
          "field": "Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*]",
          "where": {
           "allOf": [
            {
             "field": "Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*].privateLinkServiceId",
             "notEquals": ""
            },
            {
             "value": "[split(concat(first(field('Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*].privateLinkServiceId')), '//'), '/')[2]]",
             "notEquals": "[subscription().subscriptionId]"
            }
           ]
          }
         },
         "greaterOrEquals": 1
        }
       ]
      }
     ]
    },
    "then": {
     "effect": "[parameters('effect')]"
    }
   }
  },
  "policyMetadata": {
   "value": {
    "version": "1.0.0",
    "category": "Network",
    "preview": false,
    "deprecated": false
   }
  }
 }
}

Ezzel könnyen korlátozhatjuk a Private Endpoint létrehozását, így csak az adott előfizetésen belül lehet létrehozni Private Endpoint kapcsolatot. Ha mégis szükség van külső Private Endpoint kapcsolatra, akkor pedig jöhet a kivételkezelés vagy egy tömbös megoldás.

Fontos, hogy néhány Azure Resource, mint pl. az Azure Data Factory, igazából egy másik tenant-ban van, így ezeket az erőforrásokat is érinti majd ez a fajta korlátozás.

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