7171import org .opensearch .action .search .SearchAction ;
7272import org .opensearch .action .search .SearchRequest ;
7373import org .opensearch .action .search .SearchScrollAction ;
74+ import org .opensearch .action .support .ActionRequestMetadata ;
7475import org .opensearch .action .support .IndicesOptions ;
7576import org .opensearch .action .termvectors .MultiTermVectorsAction ;
7677import org .opensearch .action .update .UpdateAction ;
7980import org .opensearch .cluster .metadata .IndexMetadata ;
8081import org .opensearch .cluster .metadata .IndexNameExpressionResolver ;
8182import org .opensearch .cluster .metadata .Metadata ;
83+ import org .opensearch .cluster .metadata .ResolvedIndices ;
8284import org .opensearch .cluster .service .ClusterService ;
8385import org .opensearch .common .settings .Settings ;
8486import org .opensearch .common .util .concurrent .ThreadContext ;
@@ -296,13 +298,14 @@ private void setUserInfoInThreadContext(User user, Set<String> mappedRoles) {
296298 }
297299
298300 public PrivilegesEvaluationContext createContext (User user , String action ) {
299- return createContext (user , action , null , null , null );
301+ return createContext (user , action , null , ActionRequestMetadata . empty (), null , null );
300302 }
301303
302304 public PrivilegesEvaluationContext createContext (
303305 User user ,
304306 String action0 ,
305307 ActionRequest request ,
308+ ActionRequestMetadata <?, ?> actionRequestMetadata ,
306309 Task task ,
307310 Set <String > injectedRoles
308311 ) {
@@ -313,7 +316,7 @@ public PrivilegesEvaluationContext createContext(
313316 TransportAddress caller = threadContext .getTransient (ConfigConstants .OPENDISTRO_SECURITY_REMOTE_ADDRESS );
314317 ImmutableSet <String > mappedRoles = ImmutableSet .copyOf ((injectedRoles == null ) ? mapRoles (user , caller ) : injectedRoles );
315318
316- return new PrivilegesEvaluationContext (user , mappedRoles , action0 , request , task , irr , resolver , clusterStateSupplier );
319+ return new PrivilegesEvaluationContext (user , mappedRoles , action0 , request , actionRequestMetadata , task , irr , resolver , clusterStateSupplier );
317320 }
318321
319322 public PrivilegesEvaluatorResponse evaluate (PrivilegesEvaluationContext context ) {
@@ -393,10 +396,10 @@ public PrivilegesEvaluatorResponse evaluate(PrivilegesEvaluationContext context)
393396 return presponse ;
394397 }
395398
396- final Resolved requestedResolved = context .getResolvedRequest ();
399+ ResolvedIndices resolvedIndices = context .getResolvedRequest ();
397400
398401 if (isDebugEnabled ) {
399- log .debug ("RequestedResolved : {}" , requestedResolved );
402+ log .debug ("RequestedResolved : {}" , resolvedIndices );
400403 }
401404
402405 // check snapshot/restore requests
@@ -405,13 +408,13 @@ public PrivilegesEvaluatorResponse evaluate(PrivilegesEvaluationContext context)
405408 }
406409
407410 // Security index access
408- if (systemIndexAccessEvaluator .evaluate (request , task , action0 , requestedResolved , presponse , context , actionPrivileges , user )
411+ if (systemIndexAccessEvaluator .evaluate (request , task , action0 , resolvedIndices , presponse , context , actionPrivileges , user )
409412 .isComplete ()) {
410413 return presponse ;
411414 }
412415
413416 // Protected index access
414- if (protectedIndexAccessEvaluator .evaluate (request , task , action0 , requestedResolved , presponse , mappedRoles ).isComplete ()) {
417+ if (protectedIndexAccessEvaluator .evaluate (request , task , action0 , resolvedIndices , presponse , mappedRoles ).isComplete ()) {
415418 return presponse ;
416419 }
417420
@@ -440,7 +443,7 @@ public PrivilegesEvaluatorResponse evaluate(PrivilegesEvaluationContext context)
440443 log .info (
441444 "No cluster-level perm match for {} {} [Action [{}]] [RolesChecked {}]. No permissions for {}" ,
442445 user ,
443- requestedResolved ,
446+ resolvedIndices ,
444447 action0 ,
445448 mappedRoles ,
446449 presponse .getMissingPrivileges ()
@@ -460,7 +463,7 @@ public PrivilegesEvaluatorResponse evaluate(PrivilegesEvaluationContext context)
460463 action0 ,
461464 user ,
462465 dcm ,
463- requestedResolved ,
466+ resolvedIndices ,
464467 context ,
465468 this .tenantPrivileges .get ()
466469 );
@@ -495,7 +498,7 @@ public PrivilegesEvaluatorResponse evaluate(PrivilegesEvaluationContext context)
495498 }
496499
497500 // term aggregations
498- if (termsAggregationEvaluator .evaluate (requestedResolved , request , context , actionPrivileges , presponse ).isComplete ()) {
501+ if (termsAggregationEvaluator .evaluate (resolvedIndices , request , context , actionPrivileges , presponse ).isComplete ()) {
499502 return presponse ;
500503 }
501504
@@ -510,7 +513,7 @@ public PrivilegesEvaluatorResponse evaluate(PrivilegesEvaluationContext context)
510513 }
511514
512515 if (isDebugEnabled ) {
513- log .debug ("Requested resolved index types: {}" , requestedResolved );
516+ log .debug ("Requested resolved index types: {}" , resolvedIndices );
514517 log .debug ("Security roles: {}" , mappedRoles );
515518 }
516519
@@ -523,7 +526,7 @@ public PrivilegesEvaluatorResponse evaluate(PrivilegesEvaluationContext context)
523526 action0 ,
524527 user ,
525528 dcm ,
526- requestedResolved ,
529+ resolvedIndices ,
527530 context ,
528531 this .tenantPrivileges .get ()
529532 );
@@ -546,7 +549,7 @@ public PrivilegesEvaluatorResponse evaluate(PrivilegesEvaluationContext context)
546549
547550 boolean dnfofPossible = dnfofEnabled && DNFOF_MATCHER .test (action0 );
548551
549- presponse = actionPrivileges .hasIndexPrivilege (context , allIndexPermsRequired , requestedResolved );
552+ presponse = actionPrivileges .hasIndexPrivilege (context , allIndexPermsRequired , resolvedIndices );
550553
551554 if (presponse .isPartiallyOk ()) {
552555 if (dnfofPossible ) {
@@ -571,7 +574,7 @@ public PrivilegesEvaluatorResponse evaluate(PrivilegesEvaluationContext context)
571574 }
572575
573576 if (presponse .isAllowed ()) {
574- if (checkFilteredAliases (requestedResolved , action0 , isDebugEnabled )) {
577+ if (checkFilteredAliases (resolvedIndices , action0 , isDebugEnabled )) {
575578 presponse .allowed = false ;
576579 return presponse ;
577580 }
@@ -584,7 +587,7 @@ public PrivilegesEvaluatorResponse evaluate(PrivilegesEvaluationContext context)
584587 "No {}-level perm match for {} {}: {} [Action [{}]] [RolesChecked {}]" ,
585588 "index" ,
586589 user ,
587- requestedResolved ,
590+ resolvedIndices ,
588591 presponse .getReason (),
589592 action0 ,
590593 mappedRoles
0 commit comments