Skip to content
Snippets Groups Projects
Commit e82d1505 authored by brinn's avatar brinn
Browse files

change: choose a secure creator-minimal-role (INSTANCE_OBSERVER) if no...

change: choose a secure creator-minimal-role (INSTANCE_OBSERVER) if no data-space is set to avoid circumvention of authorization settings by insecure configuration

SVN: 17896
parent 7a85f717
No related branches found
No related tags found
No related merge requests found
...@@ -76,7 +76,11 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS ...@@ -76,7 +76,11 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS
private static final String CREATOR_MINIMAL_ROLE_KEY = "creator-minimal-role"; private static final String CREATOR_MINIMAL_ROLE_KEY = "creator-minimal-role";
private static final String DEFAULT_CREATOR_MINIMAL_ROLE = RoleWithHierarchy.SPACE_POWER_USER.name(); private static final String DEFAULT_CREATOR_MINIMAL_ROLE_SPACE =
RoleWithHierarchy.SPACE_POWER_USER.name();
private static final String DEFAULT_CREATOR_MINIMAL_ROLE_INSTANCE =
RoleWithHierarchy.INSTANCE_OBSERVER.name();
private static final String DATA_SPACE_KEY = "data-space"; private static final String DATA_SPACE_KEY = "data-space";
...@@ -303,11 +307,11 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS ...@@ -303,11 +307,11 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS
new SimpleDatabaseConfigurationContext(databaseProperties); new SimpleDatabaseConfigurationContext(databaseProperties);
final String label = final String label =
PropertyUtils.getMandatoryProperty(databaseProperties, LABEL_PROPERTY_KEY); PropertyUtils.getMandatoryProperty(databaseProperties, LABEL_PROPERTY_KEY);
final String creatorMinimalRoleString =
PropertyUtils.getProperty(databaseProperties, CREATOR_MINIMAL_ROLE_KEY,
DEFAULT_CREATOR_MINIMAL_ROLE);
final String dataSpaceOrNullString = final String dataSpaceOrNullString =
PropertyUtils.getProperty(databaseProperties, DATA_SPACE_KEY); PropertyUtils.getProperty(databaseProperties, DATA_SPACE_KEY);
final String creatorMinimalRoleString =
PropertyUtils.getProperty(databaseProperties, CREATOR_MINIMAL_ROLE_KEY,
getDefaultRoleForDataSource(dataSpaceOrNullString));
if (labels.contains(label)) if (labels.contains(label))
{ {
...@@ -331,7 +335,8 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS ...@@ -331,7 +335,8 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS
} }
try try
{ {
final RoleWithHierarchy creatorMinimalRole = RoleWithHierarchy.valueOf(creatorMinimalRoleString); final RoleWithHierarchy creatorMinimalRole =
RoleWithHierarchy.valueOf(creatorMinimalRoleString);
definitions.put(databaseKey, new DatabaseDefinition(configurationContext, definitions.put(databaseKey, new DatabaseDefinition(configurationContext,
databaseKey, label, creatorMinimalRole, dataSpaceOrNull)); databaseKey, label, creatorMinimalRole, dataSpaceOrNull));
} catch (IllegalArgumentException ex) } catch (IllegalArgumentException ex)
...@@ -344,4 +349,15 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS ...@@ -344,4 +349,15 @@ public class QueryServer extends AbstractServer<IQueryServer> implements IQueryS
} }
QueryAccessController.initialize(definitions); QueryAccessController.initialize(definitions);
} }
private String getDefaultRoleForDataSource(final String dataSpaceOrNull)
{
if (dataSpaceOrNull == null) // database contains data for the whole instance
{
return DEFAULT_CREATOR_MINIMAL_ROLE_INSTANCE;
} else
{
return DEFAULT_CREATOR_MINIMAL_ROLE_SPACE;
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment