Skip to content

Commit

Permalink
Fix Risk score Insufficient privileges warning missing cluster privil…
Browse files Browse the repository at this point in the history
…eges
  • Loading branch information
machadoum committed Feb 27, 2025
1 parent 2f0bad7 commit c4b91f5
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ const EntityAnalyticsRiskScoresComponent = <T extends EntityType>({
setUpdatedAt(Date.now());
}, [isTableLoading, isKpiLoading]); // Update the time when data loads

const privileges = useMissingRiskEnginePrivileges(['read']);
const privileges = useMissingRiskEnginePrivileges({ readonly: true });

if (!isAuthorized) {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ const RiskDetailsTabBodyComponent: React.FC<
[setContributorsToggleStatus]
);

const privileges = useMissingRiskEnginePrivileges();
const privileges = useMissingRiskEnginePrivileges({ readonly: true });

const RiskScoreUpsell = useUpsellingComponent('entity_analytics_panel');
if (RiskScoreUpsell) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ export const UserRiskScoreQueryTabBody = ({

const timerange = useMemo(() => ({ from, to }), [from, to]);

const privileges = useMissingRiskEnginePrivileges();
const privileges = useMissingRiskEnginePrivileges({ readonly: true });

const { data, inspect, isInspected, hasEngineBeenInstalled, loading, refetch, totalCount } =
useRiskScore({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,14 @@ export type RiskEngineMissingPrivilegesResponse =
hasAllRequiredPrivileges: false;
};

interface UseMissingRiskEnginePrivilegesParams {
/**
* If `true`, only read privileges are required.
*/
readonly: boolean;
}
export const useMissingRiskEnginePrivileges = (
required: NonEmptyArray<RiskEngineIndexPrivilege> = ['read', 'write']
{ readonly }: UseMissingRiskEnginePrivilegesParams = { readonly: false }
): RiskEngineMissingPrivilegesResponse => {
const { data: privilegesResponse, isLoading } = useRiskEnginePrivileges();

Expand All @@ -41,14 +47,21 @@ export const useMissingRiskEnginePrivileges = (
};
}

const requiredIndexPrivileges: NonEmptyArray<RiskEngineIndexPrivilege> = readonly
? ['read']
: ['read', 'write'];

const { indexPrivileges, clusterPrivileges } = getMissingRiskEnginePrivileges(
privilegesResponse.privileges,
required
requiredIndexPrivileges
);

// privilegesResponse.has_all_required` is slightly misleading, it checks if it has *all* default required privileges.
// Here we check if there are no missing privileges of the provided set of required privileges
if (indexPrivileges.every(([_, missingPrivileges]) => missingPrivileges.length === 0)) {
if (
indexPrivileges.every(([_, missingPrivileges]) => missingPrivileges.length === 0) &&
(readonly || clusterPrivileges.length === 0) // cluster privileges check is required for write operations
) {
return {
isLoading: false,
hasAllRequiredPrivileges: true,
Expand All @@ -63,5 +76,5 @@ export const useMissingRiskEnginePrivileges = (
clusterPrivileges,
},
};
}, [isLoading, privilegesResponse, required]);
}, [isLoading, privilegesResponse, readonly]);
};
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ export const HostRiskScoreQueryTabBody = ({
}, [toggleStatus]);
const timerange = useMemo(() => ({ from, to }), [from, to]);

const privileges = useMissingRiskEnginePrivileges();
const privileges = useMissingRiskEnginePrivileges({ readonly: true });
const { data, inspect, isInspected, hasEngineBeenInstalled, loading, refetch, totalCount } =
useRiskScore({
filterQuery,
Expand Down

0 comments on commit c4b91f5

Please sign in to comment.