Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(adr): Microservice authentication using E2EE #935

Merged
merged 1 commit into from
Dec 4, 2023
Merged

feat(adr): Microservice authentication using E2EE #935

merged 1 commit into from
Dec 4, 2023

Conversation

bnevis-i
Copy link
Collaborator

@bnevis-i bnevis-i commented Jan 13, 2023

Signed-off-by: Bryon Nevis bryon.nevis@intel.com

PR Checklist

Please check if your PR fulfills the following requirements:

  • Changes have been rendered and validated locally using mkdocs-material (see edgex-docs README)

cc: @dovholuknf

@bnevis-i bnevis-i added the ADR Architecture Decision Record label Jan 13, 2023
@bnevis-i bnevis-i linked an issue Apr 26, 2023 that may be closed by this pull request
@bnevis-i bnevis-i marked this pull request as ready for review September 13, 2023 16:46
Copy link
Member

@lenny-goodell lenny-goodell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the TOBE diagram I expected to see the Remote EdgeX uService that is in the AS-IS but I don't see it. PLease add it.

Copy link
Member

@lenny-goodell lenny-goodell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The AS-IS diagram still has Kong which was replaced with Nginx. Need to be updated

OpenZiti focuses on being a transport-level solution,
controlling access to remove services.
It does not provide application-level security.
The use of an OpenZiti tunneler causes remote connections

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The use of an OpenZiti tunneler causes remote connections
appear to come from the tunneler instead of the true client.

missing a 'to' in there: "causes remote connections to appear to come from"

I'd also reword this maybe? For me, it's more about the inability of the tunneler to verify the original source of traffic (aka the true client). A tunneler-enabled solution to an http-based service would permit curl traffic, as well as browser traffic, etc. There's no way to know what the originating client was (unlike the fully application-embedded approach)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updates made. Please re-read these two paragraphs.

an NGINX API gateway as part of the solution.
Since NGINX intercepts all requests to the backend,
and does not itself integrate directly with OpenZiti,
NGINX would need to use an OpenZiti tunneler to forward

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd think they could also choose to use this nginx module https://github.com/openziti/ngx_http_ziti_module

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updates made. Please re-read these two paragraphs.

@bnevis-i
Copy link
Collaborator Author

The AS-IS diagram still has Kong which was replaced with Nginx. Need to be updated

The AS-IS is the EdgeX 2.x implementation and is a direct copy of https://docs.edgexfoundry.org/3.0/design/adr/security/0028-authentication/ AS-IS statement as this ADR was started in January.

docs_src/design/adr/security/tbd-authentication-e2ee.md Outdated Show resolved Hide resolved
docs_src/design/adr/security/tbd-authentication-e2ee.md Outdated Show resolved Hide resolved
docs_src/design/adr/security/tbd-authentication-e2ee.md Outdated Show resolved Hide resolved
However, to be fully functional,
and adopter must also run an OpenZiti controller,
one or more OpenZiti router components,
and zero or more OpenZiti tunnelers to support legacy applications.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please give example of the legacy applications that would need to be supported.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added "Examples of a legacy applications include curl clients and Postman running in a users' browsers."

and thus Vault must be available as a prerequisite
to the zero-trust network being available.
In EdgeX 3.0,
Vault is exposed behind a TLS-enabled NGINX API gateway (not shown),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From statement above, theAPI gateway is no longer needed. How does this impact this statement?

Copy link
Collaborator Author

@bnevis-i bnevis-i Sep 16, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good point. I was trying to say that Vault still needs to be TLS-enabled regardless. An API gateway is not the only option. I have rewritten as such:

As Vault security is paramount, secure network communication with Vault must be possible, even before the zero-trust network is brought up. A non-exhaustive list of options, at the option of the adopter, includes:

  • Vault is itself TLS-enabled
  • Vault resides behind TLS-enabled API gateway
  • Vault resides behind some kind of secure tunnel (e.g stunnel)
  • Vault is accessible via an encrypted VPN

docs_src/design/adr/security/tbd-authentication-e2ee.md Outdated Show resolved Hide resolved
docs_src/design/adr/security/tbd-authentication-e2ee.md Outdated Show resolved Hide resolved
docs_src/design/adr/security/tbd-authentication-e2ee.md Outdated Show resolved Hide resolved
@lenny-goodell
Copy link
Member

The AS-IS diagram still has Kong which was replaced with Nginx. Need to be updated

The AS-IS is the EdgeX 2.x implementation and is a direct copy of https://docs.edgexfoundry.org/3.0/design/adr/security/0028-authentication/ AS-IS statement as this ADR was started in January.

IMO, AS-IS need to reflect 3.0 otherwise it isn't As-IS, but As-Was ;-)

Signed-off-by: Bryon Nevis <bryon.nevis@intel.com>
Copy link
Member

@lenny-goodell lenny-goodell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@bnevis-i bnevis-i merged commit fb55e40 into edgexfoundry:main Dec 4, 2023
3 checks passed
@bnevis-i bnevis-i deleted the microservice-auth-e2ee branch December 4, 2023 14:56
edgex-jenkins added a commit that referenced this pull request Dec 4, 2023
Signed-off-by: edgex-jenkins <collab-it+edgex@linuxfoundation.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ADR Architecture Decision Record
Projects
None yet
Development

Successfully merging this pull request may close these issues.

ADR for Microservice authentication based on end-to-end encryption
3 participants