From a416491ecc50d0a914bef8323ebdcf4a551df0cf Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Wed, 16 Nov 2022 12:29:16 -0500 Subject: [PATCH] public/private spec (#20, #88) --- docs/images/zrok_frontends_v0.3.drawio | 2 +- docs/images/zrok_frontends_v0.3.png | Bin 20910 -> 24041 bytes docs/v0.3_public_private_sharing.md | 15 +++++++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/images/zrok_frontends_v0.3.drawio b/docs/images/zrok_frontends_v0.3.drawio index 8260edc2..562270a3 100755 --- a/docs/images/zrok_frontends_v0.3.drawio +++ b/docs/images/zrok_frontends_v0.3.drawio @@ -1 +1 @@ -7Vxtc9o4EP41fLmZMtjyC3wsJE2vl3YyTW+uuS83ClawLsKisnjLr69sS/hFDtgMOA6QYSbSWlpbu89q1w82HTCarm4YnPlfqYdIx+x5qw646pim0QN98S+SrBOJYw8SwYRhTw5KBff4BamZUjrHHgpzAzmlhONZXjimQYDGPCeDjNFlftgTJfmzzuAEaYL7MSS69B/scT+R9u1eKv+M8MSXZ7Z78sAUqrFSEPrQo8uMCFx3wIhRypPWdDVCJLKdMksy79MrRzfXxVDAq0zoLz6Mfjm3o7/Cu/BfOL9f4OH/H6SWBSRzud4/ujjovjD63MVUXjhfK2MwOg88FCk0OmC49DFH9zM4jo4uhfuFzOdTIg/rF6jOhhhHq4xIXvANolPE2VoMkUfNvpyyVmZPusvUE4YCip/xgiVlUDp/stGcGkg0pI1q2Ato9tJshALvY4Q70RsTGIZ4LGwRcsi4Ls5YKzVtT/SEydj6Z9Tp2qr7IEfGnatVduTVWvY8GPob/6AV5hkdovegJol2qiHqKAWvOi2kczZGW0zjyOCEbIL4bsghLxd3OgQyPrZLXKxkDBHI8SIfrWV+l2e4o1isbIMwAJwcwkzDzqtI1i1nZcOroMg28lAVG11eUWIYTVEMw82y90empSHzjuEF5EgIPzEaCFi2LpyB+9bxbDcVz3uE4r57wP4hbFUMYadVIWybr6CqbggD4HYHZm/zVwho1+06VqMx7WjovA4WWATzFMkTZoEqCoxZ1PTRCk5oIJAwQwyLa0Asld4pkbk74p/wCqmKLOqHSdPcCrIau4Fb2HrNkt3A3IKbg+8Gfd3eMx9NEYNiqkPE6YePTLQmUeuUXGFZg5a5YvAO0pllWy1LZ+pkra1Pmy1JBxXzWb9V+cwZ5IMRgAJcquYztxjV/YKiI6cvw9yNRrVTcvgYiRIgyo0ucr64recQB/G+acR9QuAsxPHoZISPiXcL13TOlR7VO0SQ22bOhsqE2RDvOw1ujEaFW9CcUb9HMT30KcMvkS2JNFvR0OESTwkM0GcEvYJoSD0Vi5zOZIugJy6bj5RzOpUdJm3QK3WWx+jshwrHXpzYCBlRQiP/BmJbj1JlhMfYbPZQfIQhR9F2YYuVjUTfSPviEw1nfESDkDOIYy8jGPIlCsv9vx2ou1Gxy++mfSy/6zd4KK1A/sN6OlQoEMvnGJLvaMxhMImjLLOvl6VJyaXB1G9UmOaJxNnBx56HgnLX1YNH7GjErhco8Xd0OZDgSRDlIBTExVJlF4K9XGj067lQakttWV8dJGJhgahkhlFGDY+y8eq3td/+vr09DYQcHhCrgvcyHnUOio8q2g4Lj1+3P59HI+d++M18GYLZd2y/fFUM3CVhNJEw1nk3N5E/Sp2u12IBnKJT3RK24f7cUkSpLfQqcjZ/JOKm7wKIM0sR5Ruczr9oyMgQCdJxFeiCLFmQ4Q520AXq26zMrCPQBcb7/ArLUNnotdv8qnyB4RQUFYmHI/MFZgX26r3xBcB9a8Jgs4QLYXCw+m+D1BYTBsrNF8Jge1jUrAZrunBXNVhBXQPp3tTLQcME1mkg5PCAWBW8l/GoW5Ln98dHFW1NwEPnHi8ppLkU8gYUQvkl67TiKXMI20PhkjaEMfQHVM6OZ64BiLNLG+7utHEAEsFtF4uweUp9F4sggdMSFsF08zeutrEniwDMvCLLaZhF0J/i2l6stJFFcAqcTgtohAqM4KUGrFkD9ivj4s2KPqCTchcaoSQsLvWgwIpONQ4GjnsaCDk8IM6tHgQ6I3lJIc2lkLbQCEAnG8+ORtiEwiVtCGPo9OLZ0Qg1AHF2aaPeS3rNPovgHotGqPrugqo3WkIj2IMCjbDvywuOVaARjvfywjMGN3/Oez8+ToP7L97i5ubuy0PJm/HHAJ15PO6qAIidKNz2hFS1J2LeCnOW+s0FRZYUGaeqmLPsgqIiB7Y35kQ3/aWHZHj6cxng+jc= \ No newline at end of file +7Vxbc9soFP41ftmZeix0sx9rJ023m3YyTXe22ZcdYhGLDRYqwrf8+kUS6IZiy17bUWxnMhM4QkfifN/hwAGlY46myxsGQ/8r9RDpgJ637JhXHQAMqw/En1iykhLg2KlkwrAnZbngHr8gKexJ6Qx7KCo15JQSjsOycEyDAI15SQYZo4tysydKyk8N4QRpgvsxJLr0L+xxP5X27V4u/4zwxJdPtnvywhSqtlIQ+dCji4LIvO6YI0YpT0vT5QiR2HjKLOl9n165mr0XQwFvckN//mH0y7kd/RHdRX/D2f0cD//9ILXMIZnJ/v7WxUH3hdHnLqbyxflKGYPRWeChWKHRMYcLH3N0H8JxfHUh8Bcyn0+JvKy/oHoaYhwtCyL5wjeIThFnK9FEXgV9ectKmT2tLnIkDEUUv4CCJWVQgj/JNOcGEgVpoy3sZWr20myEAu9jzDtRGxMYRXgsbBFxyLguLlgrN21P1ITJ2OpnXOnaqvogWyaVq2Wx5dVK1jwY+Rk+aIl5QYeoPaibRDnXEFeUgldBi+iMjdEa0zjSOSGbIL6Zcsgr+Z1OgQLGdg3ESsYQgRzPy95ah7t8wh3FomcZw0zTKTEMGHZZRdpveVfRvSqKbKNM1WycU4pSw2iKEhpm3d6dmZbGzDuG55AjIfzEaCBo2Tp3Nt239mf7WP68gyvuOgbs7sJWQxd2WuXCNniFVdu6sGm63QHoZT8Vh3bdrmMd1acdjZ3XwRwLZ54i+cAiUcUEI4yLPlrCCQ0EE0LEsHgHxHLpnRKBzR7/hJdIzcjiepQWwVqSbTEauJWhF9SMBmANb/Y+GvR1e4c+miIGxa0OEY8fPjJRmsSlU4LCsgYtg2LwDsKZZVstC2fqYa2dnx53SjpoGM/6rYpnzqDsjKZZoUvTeOZWvbpfUXTg8GWAzWxUIyWHj7EoJaIc6GLwxbKeQxwk46aR1AmBYYST1mkLHxPvFq7ojCs9qrYPJ7dByYbKhEUX7ztHHBiNBkvQklG/xz499CnDL7EtiTRb1dDRAk8JDNBnBL2KaEg95YuchrJE0BOXxUfKOZ3KCpM26NWC5TEa/lDu2EsCGyEjSmiMbyCG9ThUxnxMzGYPxa8w5CgeLmzRs5GoG3ld/MbNGR/RIOIM4gRlBCO+QFE9/uuJupkVm3AH9qFw1xd4KJ+B/IP1cKhYILrPMSTf0ZjDYJJ4WWFcrwuTMpcGc9yoMM0TSaKDjz0PBfXQbUePBGjErucoxTt+HUjwJIhjEAqSyVJjCM2dIDT620EoteW23F4dJKJjgZjJDOOIGh1k4NWXtd/+vL09DYbsnxDLCnoFRJ298qOJtv3S49ftz+fRyLkffgMvQzP8ju2XryoDdwkYxwgYqzLMx4gftaDrc7EATtGpDgnreH9uIaLWFvosMpw9ErHouxDizEJE7QAHGiQS3tvSzXTfeu2WdeGydttbKM6Y2uK1m4L5snZb7xZbBuYtIdwUmBuoO8bIq0dmA5jWaTBk/4RYVtArIOrWpGh350cTbcegh54GuoSQ44WQN1jN1b+ynuE55eXcele4hA1hDP2swNml/LYgxNmFDXdz2ChsDEvkGmz/dgqbv72um20Gb9j/VccT09vUXvC+93+zA8ObNoAlcVqyAQzc8sLVNnbcADZBWZHlHHcDGOgHatZPVtqYRXCMshFbkEbQD8dc5oD/dw7Yb8yLN5v0mXpS7pJGqHGLy3xQcEVPNQ4GjnsaDNk/Ic5tPmjqGclLCDleCGlLGsHUk41nl0bIXOESNoQx9PTi2aURtiDE2YWN7b6X2jWNsFsWwT1UGqHpMXI132hJGsEeVNIIu54jd6xKGuFw58ifsXnz+6z34+M0uP/izW9u7r481HykfAjSgTfLXa07m/LOPqe11OfvKllSzTg15ZxlVxRVc2A7c05U84/u0+b5vy4wr/8D \ No newline at end of file diff --git a/docs/images/zrok_frontends_v0.3.png b/docs/images/zrok_frontends_v0.3.png index 2d2c739138eb007c9a6c23ec37224be664595dc0..1e6811751c30648e723b4611c61749408b414176 100755 GIT binary patch literal 24041 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

eO{tzhOpbGN%2O^ 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 diff --git a/docs/v0.3_public_private_sharing.md b/docs/v0.3_public_private_sharing.md index a851b956..cccaa72f 100644 --- a/docs/v0.3_public_private_sharing.md +++ b/docs/v0.3_public_private_sharing.md @@ -14,3 +14,18 @@ The `*.in.zrok.io` frontend is a "public" frontend, available to all `zrok` user The other two "private" frontends are configured with an `environment_id` and no `name` label (the lack of a `name` label signifies that these are "private" frontends). The ephemeral environment is allocated when a `zrok` frontend request is made without an account on behalf of a private share. +## Share Modes + +_Note: In `v0.3`, the `tunnel` and `untunnel` concepts get renamed to `share` and `unshare`._ + +### Public Sharing + +In `v0.2`, `zrok` only offered a "public" sharing mode. The public sharing mode will allow any configured `frontend` instances to send traffic to any `backend`. The policy and permission model was very simple and flat. A `v0.2` deployment considers any available `frontend` instance to be allowed to send traffic to configured services. The frontends are controlled by identity within the underlying Ziti network. + +In `v0.3`, `zrok` will offer both a "public" and a "private" sharing mode. When `v0.3` configures the policies for a service, a publicly-shared service will have policies created that allow whichever selected public `frontend` instances to access the shared `backend`. A `v0.3` deployment will have a collection of multi-tenant, high-capacity `frontend` instances available to be selected from. The `zrok` CLI will default to selecting the `public` `frontend` instances. + +### Private Sharing + +`v0.3` introduces a "private" sharing mode. When provisioning a service for private sharing, `zrok` will not create any policies for the service, until a request for a frontend binding is created for the service (through the `zrok serve` command). + +The `v0.3` `zrok` service will support both identified users (the `zrok` user has a provisioned `environment`), as well as ephemeral users (the `zrok` controller will create an "ephemeral environment" for these users).