{"id":3090,"date":"2024-06-01T17:03:19","date_gmt":"2024-06-01T16:03:19","guid":{"rendered":"https:\/\/mortenknudsen.net\/?p=3090"},"modified":"2024-08-23T12:24:29","modified_gmt":"2024-08-23T11:24:29","slug":"entra-private-access-gsa-automatic-network-detection","status":"publish","type":"post","link":"https:\/\/mortenknudsen.net\/?p=3090","title":{"rendered":"Entra Private Access\/GSA &#8211; Automatic Network Detection"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">This blog covers a custom script solution for Intune, that can be used to automatically detect, if the Entra Private Access (GSA) client is connected to the internal network &#8211; or off-site. When the client is connected to the internal network, we don&#8217;t want to send the network traffic into the GSA tunnel through Microsoft &#8211; but use direct connectivity to the servers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Scripts can be used in Intune with the necessary scripts (detection, remediation, suspension). Scripts can serve as a workaround until Microsoft releases support for this in the Entra GSA client.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Update Aug 23, 2023 - Method #1 (Resolve_DNSName-Validate_Against_IP)\nI have added a parameter <strong>$FailoverTargetIP<\/strong> to method #1, which solves a problem, if the EPA client gets into a wrong state, which can result in DNS lookup not working against an internal DNS server. I have seen this, when EPA client was connected to an 802.1x environment with the EPA client ON, but network was blocking DNS traffic to DNS server as it was coming through the tunnel. Ping was working, but no DNS lookup. Initially it will try to do a DNS lookup. If it fails, it will fall over to do a ping against an internal IP for example the app-proxy server.\n\n$Mode                    = \"Resolve_DNSName-Validate_Against_IP\"\n$Target                   = \"GSA-TEST.xxxxxx\"\n$ExpectedResult   = \"172.22.0.1\"\n$FailoverTargetIP = \"172.22.0.11\"\n\n---------\n\nV2-Update - Entra GSA v2.0\nThis blog has been updated to include new features in Entra GSA v2.0 (released July 2024). My scripts has also been updated as promised and works with the new features.\n\nThe updated scripts will only work for Entra GSA client version 2.0+, which can be downloaded <a href=\"https:\/\/aka.ms\/gsawinlatest\" data-type=\"link\" data-id=\"https:\/\/aka.ms\/gsawinlatest\">here<\/a>. \n\nYou can always get the latest Entra GSA version using this link <strong><a href=\"https:\/\/aka.ms\/gsawinlatest\">https:\/\/aka.ms\/gsawinlatest<\/a><\/strong>\n\nYou can read about the changes later in this blog - <a href=\"#EntraGSAv2\" data-type=\"internal\" data-id=\"#EntraGSAv2\">click here for shortcut to section<\/a><\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"661\" height=\"258\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/07\/image.png\" alt=\"\" class=\"wp-image-3130\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/07\/image.png 661w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/07\/image-300x117.png 300w\" sizes=\"auto, (max-width: 661px) 100vw, 661px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>V2 changes:\n* Support for new reg-key in v2.0 \"\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Background<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">As part of the implementation of Entra Private Access, you define your internal networks in the Entra Private Access solution. Then the agent knows which networks \/ FQDNs to &#8220;tunnel&#8221; through the agent. This is very cool, when you are sitting home, at guest networks, hotels, etc. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But when you are sitting onsite close to the servers (internal network), you don&#8217;t want the traffic to go through the tunnel, but directly through the local network. Your users will appreciate you for this improvement \ud83d\ude42<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Solution<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">On <a href=\"https:\/\/github.com\/KnudsenMorten\/EntraGSA_InternalNetworkDetection_Performance\" data-type=\"link\" data-id=\"https:\/\/github.com\/KnudsenMorten\/EntraGSA_InternalNetworkDetection_Performance\">my Github, I have provided 3 scripts<\/a>, that can be used to solve this problem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">My script will be updated according to the below mentioned steps.<\/p>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><tbody><tr><td>Timing<\/td><td>Functionality<\/td><\/tr><tr><td>June 2024<\/td><td>Script (v1 script &#8211; can be found <a href=\"https:\/\/github.com\/KnudsenMorten\/EntraGSA_InternalNetworkDetection_Performance\/blob\/main\/EntraGSA_internal_network_intune_remediationscript_V1.ps1\" data-type=\"link\" data-id=\"https:\/\/github.com\/KnudsenMorten\/EntraGSA_InternalNetworkDetection_Performance\/blob\/main\/EntraGSA_internal_network_intune_remediationscript_V1.ps1\">here<\/a>) will stop\/start Windows service for Entra GSA client (3 services), which will impact all client functionality (Private Access, Internet Access)<\/td><\/tr><tr><td>July 2024<\/td><td>My current script (v2) has been adjusted. Now only Entra Private Access will be suspended\/started, so Entra Internet Access functionality is not impacted. You find the current (updated) remediation script <a href=\"https:\/\/github.com\/KnudsenMorten\/EntraGSA_InternalNetworkDetection_Performance\/blob\/main\/EntraGSA_internal_network_intune_remediationscript.ps1\" data-type=\"link\" data-id=\"https:\/\/github.com\/KnudsenMorten\/EntraGSA_InternalNetworkDetection_Performance\/blob\/main\/EntraGSA_internal_network_intune_remediationscript.ps1\">here<\/a><\/td><\/tr><tr><td>2H- 2024<\/td><td>Entra Private Access &#8220;Intelligent local access&#8221; feature built into product<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\" id=\"EntraGSAv2\">Support for Entra GSA v2.0 features (July 2024 release)<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Entra GSA client v2.0+ does now support 2 new reg-keys that allows more flexibility around stop\/start of Entra Private Access. My script (v2, current version) supports these features.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">V2 Feature &#8211; Stop\/Start Entra Private Access functionality dynamically using regkey<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can dynamically control the state of Entra Private Access functionality by setting the key <strong>IsPrivateAccessDisabledByUser<\/strong> in registry path <strong>HKCU\\Software\\Microsoft\\Global Secure Access Client<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"328\" height=\"88\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/07\/image-3.png\" alt=\"\" class=\"wp-image-3140\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/07\/image-3.png 328w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/07\/image-3-300x80.png 300w\" sizes=\"auto, (max-width: 328px) 100vw, 328px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><tbody><tr><td>Path<\/td><td>Key<\/td><td>Value (DWORD)<\/td><\/tr><tr><td>HKCU\\Software\\Microsoft\\Global Secure Access Client<\/td><td>IsPrivateAccessDisabledByUser<\/td><td>0 = Private Access is Active<br><br>1 = Private Access is Suspended<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">V2 Feature &#8211; Allow User to stop\/start Entra Private Access functionality manually<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You can allow a user to control Entra Private Access functionality by setting the key &#8216;<strong>HideDisablePrivateAccessButton<\/strong>&#8216; in the path <strong>HKLM\\Software\\Microsoft\\Global Secure Access Client<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"258\" height=\"150\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/07\/image-1.png\" alt=\"\" class=\"wp-image-3133\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"214\" height=\"142\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/07\/image-2.png\" alt=\"\" class=\"wp-image-3134\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<figure class=\"wp-block-table has-small-font-size\"><table><tbody><tr><td>Path<\/td><td>Key<\/td><td>Value (DWORD)<\/td><\/tr><tr><td>HKLM\\Software\\Microsoft\\Global Secure Access Client<\/td><td>HideDisablePrivateAccessButton<\/td><td>0 = User is allowed to start\/stop Entra Private Access<br><br>1 (or no key) = User is not allowed to control stop\/start<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">New detection features in v2 script<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Thank you for the questions and feedback to extend the detection method.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">v2 of my remediation script (<a href=\"https:\/\/github.com\/KnudsenMorten\/EntraGSA_InternalNetworkDetection_Performance\/blob\/main\/EntraGSA_internal_network_intune_remediationscript.ps1\" data-type=\"link\" data-id=\"https:\/\/github.com\/KnudsenMorten\/EntraGSA_InternalNetworkDetection_Performance\/blob\/main\/EntraGSA_internal_network_intune_remediationscript.ps1\">link to Github<\/a>) includes  3 methods for local network detection. . Hope the new features can support your needs. <\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>Method #1 - Resolve_DNSName-Validate_Against_IP - Local DNS Name lookup - result should respond to IP addr\nNOTE: Requires local DNS solution like Windows AD DNS, InfoBlox, Router DNS, etc.\n\n        $Mode                                = \"Resolve_DNSName-Validate_Against_IP\"\n        $Target                               = \"DC1.2linkit.local\"\n        $ExpectedResult               = \"10.1.0.5\"\n\n------------------------------------------------------------------------\n\nMethod #2A - Ping_DNSName-Resolve_DNSName_To_IP - IP address reverse lookup - result should respond to DNS hostname address - use specific DNS server\n\nNOTE: This DNS domain cannot be inside Private Access tunnel. Must be an external zone used locally\nReason: Entra Private Access treats any hosts names part of Private DNS-functionality as wildcards, so it will  respond with an internal tunnel IP when client is running\n\n        $Mode                                = \"Ping_DNSName-Resolve_DNSName_To_IP\"\n        $Target                               = \"10.1.0.5\"\n        $ExpectedResult               = \"DC1.2linkit.local\"\n        $DNSServerIP                    = \"10.1.0.5\"\n\n------------------------------------------------------------------------\n\nMethod #2B - Ping_DNSName-Resolve_DNSName_To_IP - IP address reverse lookup - result should respond to DNS hostname address - use DNS from IP\/DHCP settings on client\n\nNOTE: This DNS domain cannot be inside Private Access tunnel. Must be an external zone used locally\nReason: Entra Private Access treats any hosts names part of Private DNS-functionality as wildcards, so it will respond with an internal tunnel IP when client is running\n\n        $Mode                                = \"Ping_DNSName-Resolve_DNSName_To_IP\"\n        $Target                               = \"10.1.0.5\"\n        $ExpectedResult               = \"DC1.2linkit.local\"\n        $DNSServerIP                    = $null\n\n------------------------------------------------------------------------\n\nMethod #3 - Ping_IP-Validate_MACAddr_Against_ARP_Cache - Ping IP addr and validate MAC address matches the expected result\n\nNOTE: Method can typically only be used when device is on same subnet as target IP device fx. router (switched\nnetwork). This method can easily be extended into an array covering all local sites, but it must be manually maintained\n\n        $Mode                                = \"Ping_IP-Validate_MACAddr_Against_ARP_Cache\"\n        $Target                               = \"192.168.1.1\"\n        $ExpectedResult               = \"d2-21-f9-7e-82-86\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Requirement to use V2 features<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You need to update your Entra GSA client to v2.0+. You can always get the latest version using this link <strong><a href=\"https:\/\/aka.ms\/gsawinlatest\">https:\/\/aka.ms\/gsawinlatest<\/a><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The updated scripts part of this blog will only work with Entra GSA client version 2.0+ <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><br>Scenario: Computer is NOT connected to internal network &#8211; it can NOT do NSLOOKUP of DNS record<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"793\" height=\"170\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-5.png\" alt=\"\" class=\"wp-image-3093\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-5.png 793w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-5-300x64.png 300w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-5-768x165.png 768w\" sizes=\"auto, (max-width: 793px) 100vw, 793px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"965\" height=\"637\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-7.png\" alt=\"\" class=\"wp-image-3098\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-7.png 965w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-7-300x198.png 300w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-7-768x507.png 768w\" sizes=\"auto, (max-width: 965px) 100vw, 965px\" \/><figcaption class=\"wp-element-caption\">Screenshot shows script runs in testing mode every 2 sec $RerunTesting = $True. You can disable testing, by setting to $true and then it will run with the parameter you define in $RerunEveryMin<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Result: GSA client is started<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"246\" height=\"97\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-1.png\" alt=\"\" class=\"wp-image-3094\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Scenario: <strong>Computer is connected to internal network &#8211; it can do NSLOOKUP of DNS record<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"559\" height=\"164\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-2.png\" alt=\"\" class=\"wp-image-3092\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-2.png 559w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-2-300x88.png 300w\" sizes=\"auto, (max-width: 559px) 100vw, 559px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"864\" height=\"639\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-3.png\" alt=\"\" class=\"wp-image-3096\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-3.png 864w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-3-300x222.png 300w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-3-768x568.png 768w\" sizes=\"auto, (max-width: 864px) 100vw, 864px\" \/><figcaption class=\"wp-element-caption\">Screenshot shows script runs in testing mode every 2 sec $RerunTesting = $True. You can disable testing, by setting to $true and then it will run with the parameter you define in $RerunEveryMin<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Result: GSA is stopped<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"238\" height=\"75\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-4.png\" alt=\"\" class=\"wp-image-3095\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Suspension of behavior once in production<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Suspension of script-behavior is built into the remediation-script, in case of rogue network detection or user wants to override.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In advance, you can prepare the <a href=\"https:\/\/github.com\/KnudsenMorten\/EntraGSA_InternalNetworkDetection_Performance\/blob\/main\/EntraGSA_suspend_internal_network_Intune_detectionscript.ps1\">suspension-script<\/a> in Intune, so you quickly can activate it for a single user or multiple users. Basically it sets a reg-key. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"198\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-6-1024x198.png\" alt=\"\" class=\"wp-image-3097\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-6-1024x198.png 1024w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-6-300x58.png 300w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-6-768x148.png 768w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-6.png 1324w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"155\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-8-1024x155.png\" alt=\"\" class=\"wp-image-3099\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-8-1024x155.png 1024w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-8-300x46.png 300w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-8-768x117.png 768w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-8.png 1146w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Implementation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Using Intune Proactive Remediations, you can implement the <a href=\"https:\/\/github.com\/KnudsenMorten\/EntraGSA_InternalNetworkDetection_Performance\/blob\/main\/EntraGSA_internal_network_Intune_detectionscript.ps1\">detection<\/a> and <a href=\"https:\/\/github.com\/KnudsenMorten\/EntraGSA_InternalNetworkDetection_Performance\/blob\/main\/EntraGSA_internal_network_intune_remediationscript.ps1\">remediation<\/a> scripts. Of course you want to test it before uploading to Intune \ud83d\ude42<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Please adjust the following parameters in the remediation script:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>##################################\n# VARIABLES\n##################################\n\n$Internal_DNSRecord_Name = \"&lt;put in your DNS record here&gt;\"\n$Internal_DNSRecord_Expected_Response = \"&lt;put in the expected IPv4 address here&gt;\"\n\n$RerunEveryMin = 1\n\n$RerunNumberBeforeExiting = 59\n# When it hits the number, it forces script to Exit 1. It must be less than 1 hr, as remediation job kicks off hourly\n\n\n$RerunTesting = $False\n# If $true it will force script to run every 2 sec. If $False, if uses $RerunEveyMin<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Based on the values above, the script runs every 1 minute with 59 runs and then it terminates. The remediation script should run hourly. Feel free to fine-tune to your needs of how often you want the script to wait\/run. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>NOTE:\nThe updated V2 script must run in the context of the user, so below setting 'Run this script using the logged-on credentials' must be set to YES. <\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"518\" src=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-1024x518.png\" alt=\"\" class=\"wp-image-3091\" srcset=\"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-1024x518.png 1024w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-300x152.png 300w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-768x389.png 768w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image-1536x777.png 1536w, https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/05\/image.png 1959w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog covers a custom script solution for Intune, that can be used to automatically detect, if the Entra Private &#8230; <\/p>\n<p class=\"read-more-container\"><a title=\"Entra Private Access\/GSA &#8211; Automatic Network Detection\" class=\"read-more button\" href=\"https:\/\/mortenknudsen.net\/?p=3090#more-3090\" aria-label=\"Read more about Entra Private Access\/GSA &#8211; Automatic Network Detection\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":3134,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"ngg_post_thumbnail":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[161,158,163,133,134,132,1],"tags":[],"class_list":["post-3090","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-entra-id","category-entra-private-access","category-identity","category-microsoft-security","category-mvpbuzz","category-security","category-uncategorized","infinite-scroll-item","resize-featured-image"],"featured_image_src":"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/07\/image-2.png","author_info":{"display_name":"Morten Knudsen","author_link":"https:\/\/mortenknudsen.net\/?author=1"},"jetpack_featured_media_url":"https:\/\/mortenknudsen.net\/wp-content\/uploads\/2024\/07\/image-2.png","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/posts\/3090","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3090"}],"version-history":[{"count":21,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/posts\/3090\/revisions"}],"predecessor-version":[{"id":3225,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/posts\/3090\/revisions\/3225"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=\/wp\/v2\/media\/3134"}],"wp:attachment":[{"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3090"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3090"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mortenknudsen.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3090"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}