77* HA Bootstrap Changes
88* Connect Events
99* SDK Events
10+ * Ziti Component Management Access (Experimental)
1011* Bug fixes and other HA work
1112
1213## New Router Metrics
@@ -211,6 +212,111 @@ events:
211212}
212213```
213214
215+ ## Ziti Component Management Access
216+
217+ This release contains an experimental feature allowing Ziti Administrators to allow access to management services for ziti components.
218+
219+ This initial release is focused on providing access to SSH, but other management tools could potentially use the same data pipe.
220+
221+ ### Why
222+
223+ Ideally one shouldn't use a system to manage itself. However, it can be nice to have a backup way to access a system, when things
224+ go wrong. This could also be a helpful tool for small installations.
225+
226+ Accessing controllers and routers via the management plane and control plane is bad from a separation of data concerns perspective,
227+ but good from minimizing requirements perspective. To access a Ziti SSH service, An SDK client needs access to the REST API, the
228+ edge router with a control channel connection and links to the public routers. With this solution, only the REST API and the control
229+ channel are needed.
230+
231+ ### Security
232+
233+ In order to access a component the following is required:
234+
235+ 1 . The user must be a Ziti administrator
236+ 2 . The user must be able to reach the Fabric Management API (which can be locked down)
237+ 3 . The feature must be enabled on the controller used for access
238+ 4 . The feature must be enabled on the destination component
239+ 5 . A destination must be configured on the destination component
240+ 6 . The destination must be to a port on 127.0.0.1. This can't be used to access external systems.
241+ 8 . The user must have access to the management component. If SSH, this would be an SSH key or other SSH credentials
242+ 9 . If using SSH, the SSH server only needs to listen on the loopback interface. So SSH doesn't need to be listening on the network
243+
244+ ** Warnings**
245+ 1 . If you do not intend to use the feature, do not enable it.
246+ 2 . If you enable the feature, follow best practices for good SSH hygiene (audit logs, locked down permissions, etc)
247+
248+ ### What's the Data Flow?
249+
250+ The path for accessing controllers is:
251+
252+ * Ziti CLI to
253+ * Controller Fabric Management API to
254+ * a network service listing on the loopback interface, such as SSH.
255+
256+ The path for accessing routers is:
257+
258+ * Ziti CLI to
259+ * Controller Fabric Management API to
260+ * a router via the control channel to
261+ * a network service listing on the loopback interface, such as SSH.
262+
263+ What does this look like?
264+
265+ Each controller you want to allow access through, must enable the feature.
266+
267+ Example controller config:
268+
269+ ```
270+ mgmt:
271+ pipe:
272+ enabled: true
273+ enableExperimentalFeature: true
274+ destination: 127.0.0.1:22
275+ ```
276+
277+ Note that if you want to allow access through the controller, but not to the controller itself, you can
278+ leave out the ` destination ` setting.
279+
280+ The router config is identical.
281+
282+ ```
283+ mgmt:
284+ pipe:
285+ enabled: true
286+ enableExperimentalFeature: true
287+ destination: 127.0.0.1:22
288+ ```
289+
290+ ### SSH Access
291+
292+ If your components are set up to point to an SSH server, you can access them as follows:
293+
294+
295+ ```
296+ ziti fabric ssh --key /path/to/keyfile ctrl_client
297+ ziti fabric ssh --key /path/to/keyfile ubuntu@ctrl_client
298+ ziti fabric ssh --key /path/to/keyfile -u ubuntu ctrl_client
299+ ```
300+
301+ Using the OpenSSH Client is also supported with the ` --proxy-mode ` flag. This also opens up access to ` scp ` .
302+
303+ ```
304+ ssh -i ~/.fablab/instances/smoketest/ssh_private_key.pem -o ProxyCommand='ziti fabric ssh router-east-1 --proxy-mode' ubuntu@router-east-1
305+ scp -i ~/.fablab/instances/smoketest/ssh_private_key.pem -o ProxyCommand='ziti fabric ssh ctrl1 --proxy-mode' ubuntu@ctrl1:./fablab/bin/ziti .
306+ ```
307+
308+ Note that you must have credentials to the host machine in addition to being a Ziti Administrator.
309+
310+ ### Alternate Access
311+
312+ You can use the proxy mode to get a pipe to whatever service you've got configured.
313+
314+ ` ziti fabric ssh ctrl1 --proxy-mode `
315+
316+ It's up to you to connect whatever your management client is to that local pipe. Right now it only supports
317+ proxy via the stdin/stdout of the process. Supporting TCP or Unix Domain Socket proxies wouldn't be difficult
318+ if there was use case for them.
319+
214320## Component Updates and Bug Fixes
215321
216322* github.com/openziti/channel/v3: [ v3.0.5 -> v3.0.7] ( https://github.com/openziti/channel/compare/v3.0.5...v3.0.7 )
@@ -231,6 +337,7 @@ events:
231337 * [ Issue #2468 ] ( https://github.com/openziti/ziti/issues/2468 ) - enrollment signing cert is not properly identified
232338
233339
340+
234341# Release 1.1.15
235342
236343## What's New
0 commit comments