@@ -199,21 +199,21 @@ public class IndexAuthorizationReadWriteIntTests {
199199 static TestSecurityConfig .User LIMITED_USER_B_HIDDEN_MANAGE_INDEX_ALIAS = new TestSecurityConfig .User (
200200 "limited_user_B_hidden_manage_index_alias"
201201 )//
202- .description ("index_b*, index_hidden*, alias_bwx* with manage privs" )//
202+ .description ("index_b*, index_hidden*, alias_bwx* with manage privs, index_a* read only " )//
203203 .roles (
204204 //
205205 new Role ("r1" )//
206206 .clusterPermissions ("cluster_composite_ops" , "cluster_monitor" )//
207207 .indexPermissions ("read" , "indices_monitor" , "indices:admin/refresh*" )
208- .on ("index_b*" , "index_hidden*" )//
208+ .on ("index_a*" , " index_b*" , "index_hidden*" )//
209209 .indexPermissions ("write" )
210210 .on ("index_bw*" , "index_hidden*" )//
211211 .indexPermissions ("manage" )
212212 .on ("index_bw*" , "index_hidden*" )//
213213 .indexPermissions ("manage_aliases" )
214214 .on ("alias_bwx*" )
215215 )//
216- .indexMatcher ("read" , limitedTo (index_br1 , index_br2 , index_bw1 , index_bw2 , index_bwx1 , index_bwx2 , index_hidden ))//
216+ .indexMatcher ("read" , limitedTo (index_ar1 , index_ar2 , index_aw1 , index_aw2 , index_br1 , index_br2 , index_bw1 , index_bw2 , index_bwx1 , index_bwx2 , index_hidden ))//
217217 .indexMatcher ("write" , limitedTo (index_bw1 , index_bw2 , index_bwx1 , index_bwx2 , index_hidden ))//
218218 .indexMatcher ("create_index" , limitedTo (index_bw1 , index_bw2 , index_bwx1 , index_bwx2 , index_hidden ))//
219219 .indexMatcher ("manage_index" , limitedTo (index_bw1 , index_bw2 , index_bwx1 , index_bwx2 , alias_bwx , index_hidden ))//
@@ -1271,6 +1271,50 @@ public void closeIndex_openIndex() throws Exception {
12711271 }
12721272 }
12731273
1274+ @ Test
1275+ public void rollover_explicitTargetIndex () throws Exception {
1276+ try (TestRestClient restClient = cluster .getRestClient (user )) {
1277+ createInitialTestObjects (alias_bwx .on (index_bw1 , index_bw2 ));
1278+
1279+ HttpResponse httpResponse = restClient .postJson ("_aliases" , """
1280+ {
1281+ "actions": [
1282+ { "remove": { "index": "*", "alias": "alias_bwx" } }
1283+ ]
1284+ }""" );
1285+
1286+ if (clusterConfig .legacyPrivilegeEvaluation ) {
1287+ // This is only allowed if we have privileges for all indices, even if not all indices are member of alias_bwx
1288+ if (user .indexMatcher ("manage_alias" )
1289+ .coversAll (
1290+ index_ar1 ,
1291+ index_ar2 ,
1292+ index_aw1 ,
1293+ index_aw2 ,
1294+ index_br1 ,
1295+ index_br2 ,
1296+ index_bw1 ,
1297+ index_bw1 ,
1298+ index_cr1 ,
1299+ index_cw1
1300+ )) {
1301+ assertThat (httpResponse , isOk ());
1302+ } else {
1303+ assertThat (httpResponse , isForbidden ());
1304+ }
1305+ } else {
1306+ if (user .indexMatcher ("manage_alias" ).coversAll (alias_bwx )) {
1307+ assertThat (httpResponse , isOk ());
1308+ } else {
1309+ assertThat (httpResponse , isForbidden ());
1310+ }
1311+ }
1312+
1313+ } finally {
1314+ delete (alias_bwx );
1315+ }
1316+ }
1317+
12741318 @ After
12751319 public void refresh () {
12761320 cluster .getInternalNodeClient ().admin ().indices ().refresh (new RefreshRequest ("*" )).actionGet ();
0 commit comments