Skip to content
New issue

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

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

Already on GitHub? # to your account

Authentication and Authorization #793

Merged
merged 18 commits into from
Jun 23, 2020
Merged

Authentication and Authorization #793

merged 18 commits into from
Jun 23, 2020

Conversation

dr3s
Copy link
Collaborator

@dr3s dr3s commented Jun 11, 2020

What this PR does / why we need it:

First implementation of auth for Feast (related to #504 minimal implementation).

  1. Adds authentication to Feast Core (with support for different implementations). Currently any JWT bearer token through gRPC metadata.
  2. Adds authorization to Feast Core (with support for different implementations). Currently only supports Ory Keto. A follow up PR will add an HTTP authorization adapter.
  3. Adds authentication to Python SDK/CLI. Two implementations included: users can enable authentication client side and Feast will send their Google Open ID credentials as gRPC metadata to Core, or they can provide client credentials and OAuth2 provider and the JWT will be fetched for them.
  4. Refactored the Python SDK/CLI SSL/TLS handling.
  5. Prevents unauthorized creation or modification of feature sets in projects that a user does not have membership in.

Limitations

Does not handle user or role management in authorization provider (creating projects, adding members, removing members, listing members).

Which issue(s) this PR fixes:

Related to #504, but doesn't close the card. This is a minimal implementation. Replaces #554

Does this PR introduce a user-facing change?:

Yes, documentation will be needed:

  • The Python Client SDK has a constructor now to pass authentication configuration.
  • The Core Service API requires GRPC metadata when authentication is enabled.
  • Configuration for Core has been extended to enable authentication and authorization.

@dr3s
Copy link
Collaborator Author

dr3s commented Jun 11, 2020

/retest

@dr3s dr3s changed the title WIP: Authentication and Authorization [WIP] Authentication and Authorization Jun 11, 2020
@dr3s dr3s changed the title [WIP] Authentication and Authorization Authentication and Authorization Jun 15, 2020
@dr3s dr3s self-assigned this Jun 15, 2020
@woop
Copy link
Member

woop commented Jun 23, 2020

/test test-end-to-end-auth

@woop
Copy link
Member

woop commented Jun 23, 2020

/test test-end-to-end-auth

@pyalex
Copy link
Collaborator

pyalex commented Jun 23, 2020

/lgtm

@feast-ci-bot
Copy link
Collaborator

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: dr3s, pyalex

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@pyalex pyalex merged commit 74bcd3f into feast-dev:master Jun 23, 2020
@feast-ci-bot
Copy link
Collaborator

@dr3s: Updated the config configmap in namespace default at cluster default using the following files:

  • key config.yaml using file .prow/config.yaml

In response to this:

What this PR does / why we need it:

First implementation of auth for Feast (related to #504 minimal implementation).

  1. Adds authentication to Feast Core (with support for different implementations). Currently any JWT bearer token through gRPC metadata.
  2. Adds authorization to Feast Core (with support for different implementations). Currently only supports Ory Keto. A follow up PR will add an HTTP authorization adapter.
  3. Adds authentication to Python SDK/CLI. Two implementations included: users can enable authentication client side and Feast will send their Google Open ID credentials as gRPC metadata to Core, or they can provide client credentials and OAuth2 provider and the JWT will be fetched for them.
  4. Refactored the Python SDK/CLI SSL/TLS handling.
  5. Prevents unauthorized creation or modification of feature sets in projects that a user does not have membership in.

Limitations

Does not handle user or role management in authorization provider (creating projects, adding members, removing members, listing members).

Which issue(s) this PR fixes:

Related to #504, but doesn't close the card. This is a minimal implementation. Replaces #554

Does this PR introduce a user-facing change?:

Yes, documentation will be needed:

  • The Python Client SDK has a constructor now to pass authentication configuration.
  • The Core Service API requires GRPC metadata when authentication is enabled.
  • Configuration for Core has been extended to enable authentication and authorization.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants