Limiter les connexions de points de terminaison privés interlocataires dans Azure
Les clients utilisent de plus en plus des points de terminaison privés dans leurs locataires pour se connecter à leurs services PaaS (platform as a service) Azure de façon privée et en toute sécurité. Les points de terminaison privés peuvent se connecter aux services entre les locataires Microsoft Entra. Pour la sécurité et la conformité, il peut être nécessaire de bloquer les connexions entre locataires Microsoft Entra sur vos points de terminaison privés. Ce guide présente les options de configuration recommandées pour limiter ou empêcher les connexions de points de terminaison privés interlocataires. Ces options vous aident à créer des contrôles de protection contre la fuite de données (DLP) dans votre environnement Azure.
Présentation des points de terminaison privés
Utilisez des points de terminaison privés pour contrôler le trafic au sein de votre environnement Azure à l’aide d’un périmètre réseau existant. Toutefois, il existe des scénarios dans lesquels vous devez conserver les connexions de points de terminaison privés uniquement dans le locataire Microsoft Entra de l’entreprise. Les exemples suivants montrent des connexions susceptibles de créer des risques de sécurité.
- Connexion A : un administrateur non autorisé crée des points de terminaison privés sur le réseau virtuel du client. Ces points de terminaison établissent une liaison avec des services hébergés en dehors de l’environnement du client, comme un autre locataire Microsoft Entra.
- Connexion B : un administrateur non autorisé crée des points de terminaison privés dans d’autres locataires Microsoft Entra, qui établissent une liaison avec des services hébergés dans le locataire Microsoft Entra du client.
Figure 1 : illustration de scénarios interlocataires de points de terminaison privés.
Pour les deux scénarios, vous spécifiez l’ID de ressource du service et approuvez manuellement la connexion de point de terminaison privé. Les utilisateurs ont également besoin d’un accès au contrôle d’accès en fonction du rôle (RBAC) pour exécuter ces actions.
Les connexions C et D de la figure 1 illustrent les scénarios que les clients souhaitent généralement autoriser. Les connexions de point de terminaison privé sont conservées dans le locataire Microsoft Entra de l’entreprise. Ils ne représentent pas de risque de sécurité. Ces deux scénarios ne sont donc pas couverts dans cet article.
Les informations suivantes fournissent des options pour empêcher l’approvisionnement de points de terminaison privés entre locataires Microsoft Entra.
Refuser des points de terminaison privés liés à des services dans d’autres locataires
Scénario 1 : un administrateur non autorisé requiert les droits suivants dans un abonnement dans le locataire Microsoft Entra du client.
- Droits Microsoft.Network/virtualNetworks/Join/action sur un sous-réseau avec PrivateEndpointNetworkPolicies défini sur Désactivé.
- Accès Microsoft.Network/privateEndpoints/write à un groupe de ressources dans l’environnement du client.
Avec ces droits, un administrateur non autorisé peut créer un point de terminaison privé dans le locataire Microsoft Entra du client. Ce point de terminaison privé établit une liaison avec un service dans un abonnement distinct et un locataire Microsoft Entra. La figure 1 illustre ce scénario en tant que connexion A.
Pour ce scénario, l’utilisateur configure un abonnement Azure et un locataire Microsoft Entra externe. Ensuite, il crée un point de terminaison privé dans l’environnement du client en spécifiant manuellement l’ID de ressource du service. Enfin, l’administrateur non autorisé approuve le point de terminaison privé sur le service lié qui est hébergé dans le locataire Microsoft Entra externe pour autoriser le trafic sur la connexion.
Une fois que l’administrateur non autorisé a approuvé la connexion de point de terminaison privé, des données d’entreprise peuvent être copiées du réseau virtuel d’entreprise vers un service Azure sur un locataire Microsoft Entra externe. Ce risque de sécurité ne peut se produire que si l’accès a été accordé à l’aide d’un RBAC Azure.
Atténuation des risques pour le scénario 1
Utilisez la stratégie Azure suivante pour bloquer automatiquement la possibilité de créer un point de terminaison privé dans le locataire Microsoft Entra de l’entreprise lié à un service Azure externe.
"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": "Deny"
}
Cette stratégie refuse tous les points de terminaison privés créés en dehors de l’abonnement du service lié, telles les connexions A et D. La stratégie offre également la possibilité d’utiliser manualPrivateLinkServiceConnections
et privateLinkServiceConnections
.
Vous pouvez mettre à jour cette stratégie de façon à ce que des points de terminaison privés ne soient créés que dans un certain ensemble d’abonnements. Vous pouvez apporter cette modification en ajoutant un paramètre list
et utiliser la construction "notIn": "[parameters('allowedSubscriptions')]"
. Mais cette approche n’est pas recommandée, car elle implique la nécessité de maintenir en permanence la liste d’abonnements pour cette stratégie. Chaque fois qu’un abonnement est créé dans votre locataire, l’ID d’abonnement doit être ajouté au paramètre.
À la place, attribuez la stratégie au groupe d’administration de niveau supérieur, puis utilisez des exemptions le cas échéant.
Considérations relatives au scénario 1
Cette stratégie bloque la possibilité de créer des points de terminaison privés se trouvant dans un abonnement différent de celui du service lui-même. Si ces points de terminaison sont requis pour certains cas d’usage, utilisez des exemptions de stratégie. Créez d’autres stratégies pour Data Factory et Azure Synapse afin de vous assurer que les points de terminaison privés managés hébergés sur le réseau virtuel managé ne puissent se connecter qu’aux services hébergés dans votre locataire Microsoft Entra.
Refuser les connexions à partir de points de terminaison privés créés dans d’autres locataires
Scénario 2 : Un administrateur non autorisé requiert un accès en écriture sur le service dans l’environnement du client pour lequel un point de terminaison privé doit être créé.
Avec ces droits, un administrateur non autorisé peut créer un point de terminaison privé dans un abonnement et un locataire Microsoft Entra externe. Ce point de terminaison est lié à un service dans le locataire Microsoft Entra du client. La figure 1 illustre ce scénario en tant que connexion B.
Dans ce scénario, l’administrateur non autorisé doit d’abord configurer un abonnement Azure et un locataire Microsoft Entra externe. Ensuite, il crée un point de terminaison privé dans son environnement en spécifiant manuellement l’ID de ressource et l’ID de groupe du service dans le locataire Microsoft Entra de l’entreprise. Enfin, il approuve le point de terminaison privé sur le service lié afin d’autoriser le trafic sur la connexion entre locataires Microsoft Entra.
Après que l’administrateur non autorisé ou le propriétaire du service a approuvé le point de terminaison privé, les données sont accessibles à partir du réseau virtuel externe.
Atténuation des risques pour le scénario 2
Utilisez des stratégies spécifiques du service pour éviter ce scénario dans le locataire du client. Les connexions de points de terminaison privés sont des sous-ressources des services concernés, qui s’affichent dans leur section Propriétés. Refusez les connexions non conformes en utilisant la définition de stratégie suivante :
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Storage/storageAccounts/privateEndpointConnections"
},
{
"field": "Microsoft.Storage/storageAccounts/privateEndpointConnections/privateLinkServiceConnectionState.status",
"equals": "Approved"
},
{
"anyOf": [
{
"field": "Microsoft.Storage/storageAccounts/privateEndpointConnections/privateEndpoint.id",
"exists": false
},
{
"value": "[split(concat(field('Microsoft.Storage/storageAccounts/privateEndpointConnections/privateEndpoint.id'), '//'), '/')[2]]",
"notEquals": "[subscription().subscriptionId]"
}
]
}
]
},
"then": {
"effect": "Deny"
}
Cette stratégie montre un exemple pour le service Stockage Azure. Reproduisez la même définition de stratégie pour d'autres services tels que Key Vault, Azure AI Services et SQL Server.
Pour faciliter la gestion, regroupez les stratégies spécifiques du service dans une initiative. La stratégie refuse l’approbation de connexions de points de terminaison privés à des points de terminaison privés hébergés en dehors de l’abonnement du service concerné. Elle ne refuse pas le rejet ou la suppression de connexions de points de terminaison privés, qui est le comportement que les clients souhaitent. Les flux de travail d’approbation automatique, tels que la connexion C, ne sont pas affectés par cette stratégie.
Mais cette méthode a pour effet de bloquer l’approbation des connexions de points de terminaison privés conformes au sein du portail. Ce blocage se produit parce que l’interface utilisateur du portail n’envoie pas l’ID de ressource du point de terminaison privé connecté dans sa charge utile. Nous vous recommandons d’utiliser Azure Resource Manager, Azure PowerShell ou Azure CLI pour approuver la connexion de point de terminaison privé.
En outre, attribuez la stratégie au groupe d’administration de niveau supérieur et utilisez des exemptions le cas échéant.
Considérations relatives au scénario 2
Azure Synapse Analytics et Azure Data Factory offrent des réseaux virtuels managés et des points de terminaison privés managés. En raison de ces nouvelles fonctionnalités, la stratégie bloque l’utilisation sécurisée et privée de ces services.
Nous vous recommandons d’utiliser un effet d’Audit au lieu d’un effet de Refus dans la définition de stratégie que vous utilisez dans l’Atténuation des risques pour le scénario 2. Ce changement vous aide à suivre les points de terminaison privés créés dans des abonnements et des locataires distincts. Vous pouvez également utiliser des exemptions de stratégie pour les étendues de plateforme de données concernées.
Azure Data Factory
Pour maîtriser le scénario 1 sur le réseau virtuel managé d’Azure Data Factory, utilisez la définition de stratégie suivante :
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.DataFactory/factories/managedVirtualNetworks/managedPrivateEndpoints"
},
{
"anyOf": [
{
"field": "Microsoft.DataFactory/factories/managedVirtualNetworks/managedPrivateEndpoints/privateLinkResourceId",
"exists": false
},
{
"value": "[split(field('Microsoft.DataFactory/factories/managedVirtualNetworks/managedPrivateEndpoints/privateLinkResourceId'), '/')[2]]",
"notEquals": "[subscription().subscriptionId]"
}
]
}
]
},
"then": {
"effect": "[parameters('effect')]"
}
Cette stratégie refuse les points de terminaison privés managés qui sont liés aux services, qui sont hébergés en dehors de l’abonnement de la fabrique Data Factory. Vous pouvez modifier cette stratégie afin d’autoriser les connexions aux services hébergés dans un ensemble d’abonnements en ajoutant un paramètre list
et en utilisant la construction "notIn": "[parameters('allowedSubscriptions')]"
. Nous recommandons cette modification pour l’étendue de plateforme de données dans le locataire ou les environnements où des services avec des réseaux virtuels managés et des points de terminaison privés managés sont largement utilisés.
Nous vous recommandons d’attribuer cette stratégie au groupe d’administration de niveau supérieur, et d’utiliser des exemptions le cas échéant. Pour la plateforme de données, apportez ces modifications et attribuez la stratégie à l’ensemble des abonnements de plateforme de données.
Azure Synapse
Azure Synapse utilise également des réseaux virtuels managés. Nous vous recommandons d’appliquer une stratégie similaire à la stratégie Data Factory pour le scénario 1. Azure Synapse ne fournit pas d’alias de stratégie pour les points de terminaison privés managés. Mais il existe une fonctionnalité de prévention de l’exfiltration de données applicable aux espaces de travail à l’aide de la stratégie suivante :
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Synapse/workspaces"
},
{
"anyOf": [
{
"field": "Microsoft.Synapse/workspaces/managedVirtualNetworkSettings.preventDataExfiltration",
"exists": false
},
{
"field": "Microsoft.Synapse/workspaces/managedVirtualNetworkSettings.preventDataExfiltration",
"notEquals": true
},
{
"count": {
"field": "Microsoft.Synapse/workspaces/managedVirtualNetworkSettings.allowedAadTenantIdsForLinking[*]",
"where": {
"field": "Microsoft.Synapse/workspaces/managedVirtualNetworkSettings.allowedAadTenantIdsForLinking[*]",
"notEquals": "[subscription().tenantId]"
}
},
"greaterOrEquals": 1
}
]
}
]
},
"then": {
"effect": "Deny"
}
Cette stratégie applique l’utilisation de la fonctionnalité d’exfiltration de données d’Azure Synapse. Avec Azure Synapse, vous pouvez refuser tout point de terminaison privé provenant d’un service hébergé en dehors du locataire du client. Vous pouvez également refuser tout point de terminaison privé hébergé en dehors d’un ensemble spécifié d’ID de locataire. Cette stratégie autorise uniquement la création de points de terminaison privés managés liés à des services, qui sont hébergés dans le locataire du client.
Ces stratégies sont désormais intégrées.
Les espaces de travail Azure Synapse doivent autoriser le trafic de données sortant uniquement vers des cibles approuvées.
ID de définition :
/providers/Microsoft.Authorization/policyDefinitions/3484ce98-c0c5-4c83-994b-c5ac24785218
Les points de terminaison privés managés Azure Synapse doivent se connecter uniquement à des ressources de locataires Microsoft Entra approuvés.
ID de définition :
/providers/Microsoft.Authorization/policyDefinitions/3a003702-13d2-4679-941b-937e58c443f0
Nous vous recommandons d’attribuer la stratégie au groupe d’administration de niveau supérieur, et d’utiliser des exemptions le cas échéant.
Étapes suivantes
Il est important de comprendre les modèles de connectivité recommandés pour la connectivité entrante et sortante à partir et en direction de l’Internet public. L’article suivant passe en revue les considérations et recommandations en matière de conception, ainsi que le contenu dont la lecture est recommandée.