From 1f73ea6d6a64060377afdfd36fda218af6ac5e17 Mon Sep 17 00:00:00 2001
From: Mike Thomas <78363703+mike-j-thomas@users.noreply.github.com>
Date: Tue, 14 Nov 2023 02:43:18 +0900
Subject: [PATCH] Guide for which API endpoints to expose (#15118)
Added a guide for which API endpoints to expose and fixed an associated
broken link. See https://github.com/fleetdm/fleet/issues/15115 for
context.
# Checklist for submitter
If some of the following don't apply, delete the relevant line.
- [x] Manual QA for all new/changed functionality
---
...points-to-expose-to-the-public-internet.md | 45 +++++++++++++++++++
.../fleet-server-configuration.md | 2 +-
2 files changed, 46 insertions(+), 1 deletion(-)
create mode 100644 articles/what-api-endpoints-to-expose-to-the-public-internet.md
diff --git a/articles/what-api-endpoints-to-expose-to-the-public-internet.md b/articles/what-api-endpoints-to-expose-to-the-public-internet.md
new file mode 100644
index 0000000000..96c5e535b7
--- /dev/null
+++ b/articles/what-api-endpoints-to-expose-to-the-public-internet.md
@@ -0,0 +1,45 @@
+# Which API endpoints to expose to the public internet?
+
+This guide details which API endpoints to make publicly accessible.
+
+## Managing hosts that can travel outside VPN or intranet
+
+If you would like to manage hosts that can travel outside your VPN or intranet, we recommend only exposing the osquery endpoints to the public internet:
+
+- `/api/osquery`
+- `/api/v1/osquery`
+
+## Using Fleet Desktop on remote devices
+
+If you are using Fleet Desktop and want it to work on remote devices, the bare minimum API to expose is `/api/latest/fleet/device/*/desktop`. This minimal endpoint will only provide the number of failing policies.
+
+For full Fleet Desktop and scripts functionality, `/api/fleet/orbit/*` and`/api/fleet/device/ping` must also be exposed.
+
+## Using fleetctl CLI from outsite of your network
+
+If you would like to use the fleetctl CLI from outside of your network, the following endpoints will also need to be exposed for `fleetctl`:
+
+- `/api/setup`
+- `/api/v1/setup`
+- `/api/latest/fleet/*`
+- `/api/v1/fleet/*`
+
+## Using Fleet's MDM features
+
+If you would like to use Fleet's MDM features, the following endpoints need to be exposed:
+
+- `/mdm/apple/scep` to allow hosts to obtain a SCEP certificate.
+- `/mdm/apple/mdm` to allow hosts to reach the server using the MDM protocol.
+- `/api/mdm/apple/enroll` to allow DEP-enrolled devices to get an enrollment profile.
+- `/api/*/fleet/device/*/mdm/apple/manual_enrollment_profile` to allow manually enrolled devices to
+ download an enrollment profile.
+
+> The `/mdm/apple/scep` and `/mdm/apple/mdm` endpoints are outside of the `/api` path because they
+> are not RESTful and are not intended for use by API clients or browsers.
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/Configuration/fleet-server-configuration.md b/docs/Configuration/fleet-server-configuration.md
index e13b3822e4..313060ee75 100644
--- a/docs/Configuration/fleet-server-configuration.md
+++ b/docs/Configuration/fleet-server-configuration.md
@@ -2738,7 +2738,7 @@ packaging:
## Mobile device management (MDM)
-> MDM features require some endpoints to be publicly accessible outside your VPN or intranet, for more details see [What API endpoints should I expose to the public internet?](https://fleetdm.com/docs/get-started/faq#what-api-endpoints-should-i-expose-to-the-public-internet)
+> MDM features require some endpoints to be publicly accessible. For more details, see the guide, [Which API endpoints to expose to the public internet?](https://fleetdm.com/guides/what-api-endpoints-to-expose-to-the-public-internet)
This section is a reference for the configuration required to turn on MDM features in production.