-
Notifications
You must be signed in to change notification settings - Fork 8.3k
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
[Fleet] Remove superuser requirement to access Fleet #108252
Comments
Pinging @elastic/fleet (Team:Fleet) |
@mostlyjason @dborodyansky I've updated the issue description to note all of the small UI elements that need to be adjusted when the user does not have access to appropriate actions. Currently I'm proposing that we simply disable each element, but I do wonder if we should do something more to explain why the button is disabled. For the buttons, I think we can do the same thing that we're doing on the "Add " integration CTA: However for the dropdown menus, I wonder if a tooltip is even possible or could be confusing. Any suggestions here? For example, we need to prevent the user from clicking "Delete integration" here: |
@joshdover Does the privilege limitation apply only to "delete", not "edit". If both, then hiding the [...] menu entirely would be expected. |
Good point on that one, agreed we should hide the entire list, bad example on my part. How about this one where the "Add Agent" option will be available? Note that when there are already agents enrolled, the other "Add Agent" CTA button is not visible. |
Hiding unavailable actions within the menu seems appropriate in this case. There are some guidelines in the works which recommend hiding controls within tables for which a user may not have privileges. |
We have performed testing today around this feature and found two below bugs.
Further, we are in progress of test content creation for this ticket at TestRail and will share links for test cases created by tomorrow. Thanks |
We should probably hide this as non-superusers may not have access to the Cloud console, but I also know that is changing recently with the addition of more user roles on Cloud. @mostlyjason we could probably use your input here. |
I think we should show it to both since we don't know whether the signed in user in kibana has access to the cloud console or not. It doesn't matter if they are a superuser in Kibana since Elastic Cloud has separate privileges. If they sign into Elasticsearch directly using user/pass or SSO, they may not be signed into Elastic Cloud. After the link they can sign in with Elastic Cloud if needed or ask a cloud admin for help. |
Hi All We have executed below feature run, on this PR at testrail for created testcases: We will retest the failed testcases on BC4 and add the results once, reported issues are fixed. Thanks |
@zez3 Fleet does not currently support Spaces so to make this explicit, we require that when you grant access to Fleet, you do so across all Spaces. This does not mean that you need to give access to all features across all Spaces, only for Fleet. In the screenshot above, you have not granted access to Fleet, it's still checked as None on the right. You will also need to grant access to Integrations. It should look like this: |
I understand this and would accept this workaround but...
the None(ViewOnly) is read only("feature_fleet.read"), I saw(#125836) an open issue for renaming this to Read. I don't need nor want to allow write (All) permission to my users. I need for them to see that the agent that they just installed is alive and it has a policy assigned. here are my current permisions
The Integrations looks good as read-only. |
Got it, thanks for explaining what you're looking for. We do not yet support a read-only mode for Fleet, that is a separate feature that we are prioritizing (we don't have a public tracking issue for this right now). You are right that the privilege name shows up as So to summarize:
|
One blocker for many users using Fleet and Integrations is the requirement for the superuser role. This requires users to have broad permissions in order to use Fleet and Integrations which is a security problem. We should remove this requirement and rely on users having the Kibana privilege to access "Fleet and Integrations" (potentially with a built-in role).
Blockers:
Implementation scope
user's authorization to Fleet.
fleet-*
should use internal ES client #116182requireAllSpaces: true
on all and readdisabled: true
on readprivilegesTooltip
that explains that "All Spaces" is required for Fleet access.fleet-*
indices) will need to start using the internal ES client. You should be able to piggy back off [Fleet] Add scoped AgentService #119017 and reuse that service within our own code. If needed to cut scope, just switching to the internal ES client and adding the authz checks should be sufficient. @nchaulet would you be able to help here?UX changes
For all disabled buttons, a tooltip should also be added that indicates the user needs additional permissions. An example:
Make UI adjustments for when user has "All" Fleet but "None" for integrations
Make UI adjustments for when user has "All" Fleet but only "Read" for integrations
When end users and
kibana_system
try to set up fleet server and they don't already have a fleet server set up:- [x]
app/fleet/agents
should show this callout:- [x] In the
Add agents
fly out, underEnroll Fleet
tab, the same message should be displayed- [x] if these users have already a fleet server these two areas should stay the same
Notes
Preserving BWC with users granted access to Integrations app in 7.16
This is required to avoid breaking read access to
Integrations
since we allowed users with "read" to this privilegeto be able to view the integrations app even if they did not have superuser, starting in 7.16. Since there is no
existing mechanism to update the privileges stored in existing user roles, we should be careful change the privilege
id
field in a way that won't break these existing roles:
name
property) the existing combined privilege with theid: 'fleet'
toIntegrations
and use this privilege to drive access to Integrations going forward. The id should not change.id: 'fleetv2'
.and hide this detail behind the
FleetAuthz
abstraction.The text was updated successfully, but these errors were encountered: