|
85 | 85 | import org.elasticsearch.common.util.concurrent.ThreadContext; |
86 | 86 | import org.elasticsearch.index.IndexNotFoundException; |
87 | 87 | import org.elasticsearch.index.shard.ShardId; |
| 88 | +import org.elasticsearch.license.XPackLicenseState; |
88 | 89 | import org.elasticsearch.test.ESTestCase; |
89 | 90 | import org.elasticsearch.threadpool.ThreadPool; |
90 | 91 | import org.elasticsearch.transport.TransportActionProxy; |
|
144 | 145 | import java.util.Set; |
145 | 146 | import java.util.UUID; |
146 | 147 | import java.util.concurrent.CountDownLatch; |
147 | | -import java.util.function.Function; |
148 | 148 | import java.util.function.Predicate; |
149 | 149 |
|
150 | 150 | import static java.util.Arrays.asList; |
@@ -233,7 +233,7 @@ public void setup() { |
233 | 233 | roleMap.put(ReservedRolesStore.SUPERUSER_ROLE_DESCRIPTOR.getName(), ReservedRolesStore.SUPERUSER_ROLE_DESCRIPTOR); |
234 | 234 | authorizationService = new AuthorizationService(settings, rolesStore, clusterService, |
235 | 235 | auditTrail, new DefaultAuthenticationFailureHandler(Collections.emptyMap()), threadPool, new AnonymousUser(settings), null, |
236 | | - Collections.emptySet()); |
| 236 | + Collections.emptySet(), new XPackLicenseState(settings)); |
237 | 237 | } |
238 | 238 |
|
239 | 239 | private void authorize(Authentication authentication, String action, TransportRequest request) { |
@@ -659,7 +659,8 @@ public void testDenialForAnonymousUser() { |
659 | 659 | Settings settings = Settings.builder().put(AnonymousUser.ROLES_SETTING.getKey(), "a_all").build(); |
660 | 660 | final AnonymousUser anonymousUser = new AnonymousUser(settings); |
661 | 661 | authorizationService = new AuthorizationService(settings, rolesStore, clusterService, auditTrail, |
662 | | - new DefaultAuthenticationFailureHandler(Collections.emptyMap()), threadPool, anonymousUser, null, Collections.emptySet()); |
| 662 | + new DefaultAuthenticationFailureHandler(Collections.emptyMap()), threadPool, anonymousUser, null, Collections.emptySet(), |
| 663 | + new XPackLicenseState(settings)); |
663 | 664 |
|
664 | 665 | RoleDescriptor role = new RoleDescriptor("a_all", null, |
665 | 666 | new IndicesPrivileges[] { IndicesPrivileges.builder().indices("a").privileges("all").build() }, null); |
@@ -687,7 +688,7 @@ public void testDenialForAnonymousUserAuthorizationExceptionDisabled() { |
687 | 688 | final Authentication authentication = createAuthentication(new AnonymousUser(settings)); |
688 | 689 | authorizationService = new AuthorizationService(settings, rolesStore, clusterService, auditTrail, |
689 | 690 | new DefaultAuthenticationFailureHandler(Collections.emptyMap()), threadPool, new AnonymousUser(settings), null, |
690 | | - Collections.emptySet()); |
| 691 | + Collections.emptySet(), new XPackLicenseState(settings)); |
691 | 692 |
|
692 | 693 | RoleDescriptor role = new RoleDescriptor("a_all", null, |
693 | 694 | new IndicesPrivileges[]{IndicesPrivileges.builder().indices("a").privileges("all").build()}, null); |
@@ -1391,36 +1392,60 @@ public void getUserPrivileges(Authentication authentication, AuthorizationInfo a |
1391 | 1392 | } |
1392 | 1393 | }; |
1393 | 1394 |
|
| 1395 | + XPackLicenseState licenseState = mock(XPackLicenseState.class); |
| 1396 | + when(licenseState.isAuthorizationEngineAllowed()).thenReturn(true); |
1394 | 1397 | authorizationService = new AuthorizationService(Settings.EMPTY, rolesStore, clusterService, |
1395 | 1398 | auditTrail, new DefaultAuthenticationFailureHandler(Collections.emptyMap()), threadPool, new AnonymousUser(Settings.EMPTY), |
1396 | | - engine, Collections.emptySet()); |
| 1399 | + engine, Collections.emptySet(), licenseState); |
1397 | 1400 | Authentication authentication = createAuthentication(new User("test user", "a_all")); |
1398 | 1401 | assertEquals(engine, authorizationService.getAuthorizationEngine(authentication)); |
| 1402 | + when(licenseState.isAuthorizationEngineAllowed()).thenReturn(false); |
| 1403 | + assertThat(authorizationService.getAuthorizationEngine(authentication), instanceOf(RBACEngine.class)); |
1399 | 1404 |
|
| 1405 | + when(licenseState.isAuthorizationEngineAllowed()).thenReturn(true); |
1400 | 1406 | authentication = createAuthentication(new User("runas", new String[] { "runas_role" }, new User("runner", "runner_role"))); |
1401 | 1407 | assertEquals(engine, authorizationService.getAuthorizationEngine(authentication)); |
1402 | 1408 | assertEquals(engine, authorizationService.getRunAsAuthorizationEngine(authentication)); |
| 1409 | + when(licenseState.isAuthorizationEngineAllowed()).thenReturn(false); |
| 1410 | + assertThat(authorizationService.getAuthorizationEngine(authentication), instanceOf(RBACEngine.class)); |
| 1411 | + assertThat(authorizationService.getRunAsAuthorizationEngine(authentication), instanceOf(RBACEngine.class)); |
1403 | 1412 |
|
| 1413 | + when(licenseState.isAuthorizationEngineAllowed()).thenReturn(true); |
1404 | 1414 | authentication = createAuthentication(new User("runas", new String[] { "runas_role" }, new ElasticUser(true))); |
1405 | 1415 | assertEquals(engine, authorizationService.getAuthorizationEngine(authentication)); |
1406 | 1416 | assertNotEquals(engine, authorizationService.getRunAsAuthorizationEngine(authentication)); |
1407 | 1417 | assertThat(authorizationService.getRunAsAuthorizationEngine(authentication), instanceOf(RBACEngine.class)); |
| 1418 | + when(licenseState.isAuthorizationEngineAllowed()).thenReturn(false); |
| 1419 | + assertThat(authorizationService.getAuthorizationEngine(authentication), instanceOf(RBACEngine.class)); |
| 1420 | + assertThat(authorizationService.getRunAsAuthorizationEngine(authentication), instanceOf(RBACEngine.class)); |
1408 | 1421 |
|
| 1422 | + when(licenseState.isAuthorizationEngineAllowed()).thenReturn(true); |
1409 | 1423 | authentication = createAuthentication(new User("elastic", new String[] { "superuser" }, new User("runner", "runner_role"))); |
1410 | 1424 | assertNotEquals(engine, authorizationService.getAuthorizationEngine(authentication)); |
1411 | 1425 | assertThat(authorizationService.getAuthorizationEngine(authentication), instanceOf(RBACEngine.class)); |
1412 | 1426 | assertEquals(engine, authorizationService.getRunAsAuthorizationEngine(authentication)); |
| 1427 | + when(licenseState.isAuthorizationEngineAllowed()).thenReturn(false); |
| 1428 | + assertThat(authorizationService.getAuthorizationEngine(authentication), instanceOf(RBACEngine.class)); |
| 1429 | + assertThat(authorizationService.getRunAsAuthorizationEngine(authentication), instanceOf(RBACEngine.class)); |
1413 | 1430 |
|
| 1431 | + when(licenseState.isAuthorizationEngineAllowed()).thenReturn(true); |
1414 | 1432 | authentication = createAuthentication(new User("kibana", new String[] { "kibana_system" }, new ElasticUser(true))); |
1415 | 1433 | assertNotEquals(engine, authorizationService.getAuthorizationEngine(authentication)); |
1416 | 1434 | assertThat(authorizationService.getAuthorizationEngine(authentication), instanceOf(RBACEngine.class)); |
1417 | 1435 | assertNotEquals(engine, authorizationService.getRunAsAuthorizationEngine(authentication)); |
1418 | 1436 | assertThat(authorizationService.getRunAsAuthorizationEngine(authentication), instanceOf(RBACEngine.class)); |
| 1437 | + when(licenseState.isAuthorizationEngineAllowed()).thenReturn(false); |
| 1438 | + assertThat(authorizationService.getAuthorizationEngine(authentication), instanceOf(RBACEngine.class)); |
| 1439 | + assertThat(authorizationService.getRunAsAuthorizationEngine(authentication), instanceOf(RBACEngine.class)); |
1419 | 1440 |
|
| 1441 | + when(licenseState.isAuthorizationEngineAllowed()).thenReturn(true); |
1420 | 1442 | authentication = createAuthentication(randomFrom(XPackUser.INSTANCE, XPackSecurityUser.INSTANCE, |
1421 | 1443 | new ElasticUser(true), new KibanaUser(true))); |
1422 | 1444 | assertNotEquals(engine, authorizationService.getRunAsAuthorizationEngine(authentication)); |
1423 | 1445 | assertThat(authorizationService.getRunAsAuthorizationEngine(authentication), instanceOf(RBACEngine.class)); |
| 1446 | + when(licenseState.isAuthorizationEngineAllowed()).thenReturn(false); |
| 1447 | + assertThat(authorizationService.getAuthorizationEngine(authentication), instanceOf(RBACEngine.class)); |
| 1448 | + assertThat(authorizationService.getRunAsAuthorizationEngine(authentication), instanceOf(RBACEngine.class)); |
1424 | 1449 | } |
1425 | 1450 |
|
1426 | 1451 | static AuthorizationInfo authzInfoRoles(String[] expectedRoles) { |
|
0 commit comments