[feature] Add authorization to all functions in ReportServer
Feature Area
There are two API-server endpoints that still miss authorization - ReportWorkflow and ReportScheduledWorkflow. This is a security issue. Each endpoint should validate that the user has permission to call them.
persistent-agent service calls these endpoints. Once authorization is enabled, the persistent-agent need to authorize itself by providing user information in the request headers.
This issue is a related/ follow-up issue to PR https://github.com/kubeflow/pipelines/pull/7819
/area backend
What feature would you like to see?
What is the use case or pain point?
Is there a workaround currently?
no. A security issue exists in the current implementation.
Love this idea? Give it a 👍.
cc: @juliusvonkohout
/assign @difince
For the next KFP meeting ;-)
Hello @difince , the ReportWorkflow and ReportScheduledWorkflow are used by single persistent-agent instance for monitoring the status of workflow. persistent-agent itself cannot and shouldn't authenticate as a user.
/assign @chensun
Thank you @zijianjoy for your feedback. How services are supposed to authenticate themself then? Any suggestion? I guess this reflects on the implementation of https://github.com/kubeflow/pipelines/pull/7819 as well ?
Hello @difince , the
ReportWorkflowandReportScheduledWorkfloware used by single persistent-agent instance for monitoring the status of workflow. persistent-agent itself cannot and shouldn't authenticate as a user. /assign @chensun
By default every kubeflow user can hijack them, since these endpoints are unauthenticated. So first they need ANY kind of authentication.
Thank you @zijianjoy for your feedback. How services are supposed to authenticate themself then? Any suggestion? I guess this reflects on the implementation of #7819 as well ?
@chensun (@zijianjoy college at google) already approved #7819 so i do not think that it is affected. Readartifact etc. is really called by users for a proper reason. Reportworkflow might only be abused for no reason.
Fixed by #9699 The persistence agent authenticates itself via a service account token, meanwhile, the pipeline API server has enabled authentication and authorization logic.