Post

Private Endpoint DNS regisztráció külső Tenant kapcsolatokhoz

A központi Private DNS zone-ba regisztráló Azure Policy Landing Zona-ban kötelező elem, hiszen senkinek nincs joga a központi DNS zónába regisztrálni és ez így van jól. De mi van, ha a szervezetünkön kívülre mutató erőforráshoz szeretnénk egy Private Endpoint-ot létrehozni.

Nézzük meg egy példán keresztül: “A” szervezet nagyon zárkózott, a lehető legkevesebb dolgot szeretnék a publikus interneten keresztül megosztani. “B” szervezetnél van valami, amit szeretne “A” szervezet elérni. Szerencsére mindketten Azure felhasználók, így a Private Link megoldás tökéletes erre a feladatra. Két külön tenant között is működik, mintha egy világban lennének, de van egy kis csavar benne. A háttérben kicsit máshogy néz ki az a Private Endpoint, amit létrehozunk.

Azure Policy

Bizony másik tömbbe kerültek azok az információk, mint amire az Azure Policy eddig figyelt, így soha nem fogja nekünk azokat beregisztrálni. Szerencsére van megoldás, hogy ezt a problémát megoldjuk és nem is kell hozzá nagy módosítás.

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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
{
  "mode": "All",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Network/privateEndpoints"
        },
        {
          "anyOf": [
            {
              "count": {
                "field": "Microsoft.Network/privateEndpoints/manualPrivateLinkServiceConnections[*].groupIds[*]",
                "where": {
                  "field": "Microsoft.Network/privateEndpoints/manualPrivateLinkServiceConnections[*].groupIds[*]",
                  "equals": "blob"
                }
              },
              "greaterOrEquals": 1
            },
            {
              "count": {
                "field": "Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*].groupIds[*]",
                "where": {
                  "field": "Microsoft.Network/privateEndpoints/privateLinkServiceConnections[*].groupIds[*]",
                  "equals": "blob"
                }
              },
              "greaterOrEquals": 1
            }
          ]
        }
      ]
    },
    "then": {
      "effect": "[parameters('effect')]",
      "details": {
        "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups",
        "roleDefinitionIds": [
          "/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7"
        ],
        "deployment": {
          "properties": {
            "mode": "incremental",
            "template": {
              "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
              "contentVersion": "1.0.0.0",
              "parameters": {
                "privateDnsZoneId": {
                  "type": "string"
                },
                "privateEndpointName": {
                  "type": "string"
                },
                "location": {
                  "type": "string"
                }
              },
              "resources": [
                {
                  "name": "[concat(parameters('privateEndpointName'), '/deployedByPolicy')]",
                  "type": "Microsoft.Network/privateEndpoints/privateDnsZoneGroups",
                  "apiVersion": "2020-03-01",
                  "location": "[parameters('location')]",
                  "properties": {
                    "privateDnsZoneConfigs": [
                      {
                        "name": "privateDnsZone",
                        "properties": {
                          "privateDnsZoneId": "[parameters('privateDnsZoneId')]"
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "parameters": {
              "privateDnsZoneId": {
                "value": "[parameters('privateDnsZoneId')]"
              },
              "privateEndpointName": {
                "value": "[field('name')]"
              },
              "location": {
                "value": "[field('location')]"
              }
            }
          }
        }
      }
    }
  },
  "parameters": {
    "privateDnsZoneId": {
      "type": "String",
      "metadata": {
        "displayName": "Configure a private DNS Zone ID for blob groupID",
        "description": "Configure private DNS zone group to override the DNS resolution for a blob groupID private endpoint.",
        "strongType": "Microsoft.Network/privateDnsZones",
        "assignPermissions": true
      }
    },
    "effect": {
      "type": "String",
      "metadata": {
        "displayName": "Effect",
        "description": "Enable or disable the execution of the policy"
      },
      "allowedValues": [
        "DeployIfNotExists",
        "Disabled"
      ],
      "defaultValue": "DeployIfNotExists"
    }
  }
}

Persze kérdéses mennyire biztonságos külső tenant-ban engedni az ilyen összekapcsolást, de ez már egy másik történet.

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