Fixes #8313 Deprecate botPrincipals from open metadata configuration (#8314)

This commit is contained in:
Suresh Srinivas 2022-10-21 20:49:41 -07:00 committed by GitHub
parent 268d1171f1
commit 0d75eb9ff2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 18 additions and 61 deletions

View File

@ -137,7 +137,6 @@ authorizerConfiguration:
containerRequestFilter: ${AUTHORIZER_REQUEST_FILTER:-org.openmetadata.service.security.JwtFilter} containerRequestFilter: ${AUTHORIZER_REQUEST_FILTER:-org.openmetadata.service.security.JwtFilter}
adminPrincipals: ${AUTHORIZER_ADMIN_PRINCIPALS:-[admin]} adminPrincipals: ${AUTHORIZER_ADMIN_PRINCIPALS:-[admin]}
allowedEmailRegistrationDomains: ${AUTHORIZER_ALLOWED_REGISTRATION_DOMAIN:-["all"]} allowedEmailRegistrationDomains: ${AUTHORIZER_ALLOWED_REGISTRATION_DOMAIN:-["all"]}
botPrincipals: ${AUTHORIZER_INGESTION_PRINCIPALS:-[ingestion-bot]}
principalDomain: ${AUTHORIZER_PRINCIPAL_DOMAIN:-"openmetadata.org"} principalDomain: ${AUTHORIZER_PRINCIPAL_DOMAIN:-"openmetadata.org"}
enforcePrincipalDomain: ${AUTHORIZER_ENFORCE_PRINCIPAL_DOMAIN:-false} enforcePrincipalDomain: ${AUTHORIZER_ENFORCE_PRINCIPAL_DOMAIN:-false}
enableSecureSocketConnection : ${AUTHORIZER_ENABLE_SECURE_SOCKET:-false} enableSecureSocketConnection : ${AUTHORIZER_ENABLE_SECURE_SOCKET:-false}

View File

@ -27,7 +27,6 @@ This page list all the supported helm values for OpenMetadata Helm Charts.
| global.authorizer.enforcePrincipalDomain | bool | `false` | | global.authorizer.enforcePrincipalDomain | bool | `false` |
| global.authorizer.enableSecureSocketConnection | bool | `false` | | global.authorizer.enableSecureSocketConnection | bool | `false` |
| global.authorizer.initialAdmins | list | `[admin]` | | global.authorizer.initialAdmins | list | `[admin]` |
| global.authorizer.botPrincipals | list | `[ingestion-bot]` |
| global.authorizer.principalDomain | string | `open-metadata.org` | | global.authorizer.principalDomain | string | `open-metadata.org` |
| global.airflow.auth.password.secretRef | string | `airflow-secrets` | | global.airflow.auth.password.secretRef | string | `airflow-secrets` |
| global.airflow.auth.password.secretKey | string | `openmetadata-airflow-password` | | global.airflow.auth.password.secretKey | string | `openmetadata-airflow-password` |

View File

@ -33,8 +33,6 @@ authorizerConfiguration:
adminPrincipals: adminPrincipals:
- "user1" - "user1"
- "user2" - "user2"
botPrincipals:
- "ingestion-bot"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
``` ```

View File

@ -18,8 +18,6 @@ global:
initialAdmins: initialAdmins:
- "user1" - "user1"
- "user2" - "user2"
botPrincipals:
- "<service_application_client_id>"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
authentication: authentication:
provider: "google" provider: "google"

View File

@ -31,8 +31,6 @@ authorizerConfiguration:
adminPrincipals: adminPrincipals:
- "user1" - "user1"
- "user2" - "user2"
botPrincipals:
- "ingestion-bot"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
``` ```

View File

@ -19,8 +19,6 @@ global:
containerRequestFilter: "org.openmetadata.service.security.JwtFilter" containerRequestFilter: "org.openmetadata.service.security.JwtFilter"
initialAdmins: initialAdmins:
- "suresh" - "suresh"
botPrincipals:
- "<client_id>"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
authentication: authentication:
provider: "auth0" provider: "auth0"

View File

@ -33,8 +33,6 @@ authorizerConfiguration:
adminPrincipals: adminPrincipals:
- "user1" - "user1"
- "user2" - "user2"
botPrincipals:
- "ingestion-bot"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
``` ```

View File

@ -30,8 +30,6 @@ global:
initialAdmins: initialAdmins:
- "user1" - "user1"
- "user2" - "user2"
botPrincipals:
- "<object-id-for-azure-service-application-enterprise-application>"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
authentication: authentication:
provider: "azure" provider: "azure"
@ -62,8 +60,6 @@ global:
initialAdmins: initialAdmins:
- "user1" - "user1"
- "user2" - "user2"
botPrincipals:
- "ingestion-bot"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
authentication: authentication:
provider: "azure" provider: "azure"

View File

@ -36,8 +36,6 @@ authorizerConfiguration:
adminPrincipals: adminPrincipals:
- "user1" - "user1"
- "user2" - "user2"
botPrincipals:
- "ingestion-bot"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
``` ```

View File

@ -20,8 +20,6 @@ global:
initialAdmins: initialAdmins:
- "user1" - "user1"
- "user2" - "user2"
botPrincipals:
- "<service_application_client_id>"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
authentication: authentication:
provider: "custom-oidc" provider: "custom-oidc"
@ -50,8 +48,6 @@ global:
initialAdmins: initialAdmins:
- "user1" - "user1"
- "user2" - "user2"
botPrincipals:
- "<service_application_client_id>"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
authentication: authentication:
provider: "custom-oidc" provider: "custom-oidc"

View File

@ -31,8 +31,6 @@ authorizerConfiguration:
adminPrincipals: adminPrincipals:
- "user1" - "user1"
- "user2" - "user2"
botPrincipals:
- "ingestion-bot"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
``` ```

View File

@ -20,8 +20,6 @@ global:
initialAdmins: initialAdmins:
- "user1" - "user1"
- "user2" - "user2"
botPrincipals:
- "<service_application_client_id>"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
authentication: authentication:
provider: "google" provider: "google"

View File

@ -36,9 +36,6 @@ authorizerConfiguration:
containerRequestFilter: "org.openmetadata.service.security.JwtFilter" containerRequestFilter: "org.openmetadata.service.security.JwtFilter"
adminPrincipals: adminPrincipals:
- "admin-user" - "admin-user"
botPrincipals:
- "ingestion-bot"
- "service-account-open-metadata"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
``` ```

View File

@ -26,9 +26,6 @@ global:
containerRequestFilter: "org.openmetadata.service.security.JwtFilter" containerRequestFilter: "org.openmetadata.service.security.JwtFilter"
initialAdmins: initialAdmins:
- "admin-user" - "admin-user"
botPrincipals:
- "ingestion-bot"
- "service-account-open-metadata"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
authentication: authentication:
provider: "custom-oidc" provider: "custom-oidc"
@ -57,9 +54,6 @@ global:
containerRequestFilter: "org.openmetadata.service.security.JwtFilter" containerRequestFilter: "org.openmetadata.service.security.JwtFilter"
initialAdmins: initialAdmins:
- "admin-user" - "admin-user"
botPrincipals:
- "ingestion-bot"
- "service-account-open-metadata"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
authentication: authentication:
provider: "custom-oidc" provider: "custom-oidc"

View File

@ -22,7 +22,6 @@ authenticationConfiguration:
Then, Then,
- Update `authorizerConfiguration` to add login names of the admin users in `adminPrincipals` section as shown below. - Update `authorizerConfiguration` to add login names of the admin users in `adminPrincipals` section as shown below.
- Update the `principalDomain` to your company domain name. - Update the `principalDomain` to your company domain name.
- update the `botPrincipals`, add the Ingestion Client ID for the Service application. This can be found in Okta -> Applications -> Applications, Refer to Step 3 for `Creating Service Application`.
```yaml ```yaml
authorizerConfiguration: authorizerConfiguration:
@ -32,9 +31,6 @@ authorizerConfiguration:
adminPrincipals: adminPrincipals:
- "user1" - "user1"
- "user2" - "user2"
botPrincipals:
- "ingestion-bot"
- "<service_application_client_id>"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
``` ```

View File

@ -10,7 +10,6 @@ Check the Helm information [here](https://artifacthub.io/packages/search?repo=op
Once the `Client Id` and `Client Secret` are generated, see the snippet below for an example of where to Once the `Client Id` and `Client Secret` are generated, see the snippet below for an example of where to
place the client id value and update the authorizer configurations in the `values.yaml`. place the client id value and update the authorizer configurations in the `values.yaml`.
Note: Make sure to add the Ingestion Client ID for the Service application in `botPrincipals`.
This can be found in Okta -> Applications -> Applications, Refer to Step 3 for `Creating Service Application`. This can be found in Okta -> Applications -> Applications, Refer to Step 3 for `Creating Service Application`.
### Before 0.12.1 ### Before 0.12.1
@ -23,9 +22,6 @@ global:
initialAdmins: initialAdmins:
- "user1" - "user1"
- "user2" - "user2"
botPrincipals:
- ingestion-bot
- "<service_application_client_id>"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
authentication: authentication:
provider: "okta" provider: "okta"

View File

@ -36,8 +36,6 @@ authorizerConfiguration:
adminPrincipals: adminPrincipals:
- "user1" - "user1"
- "user2" - "user2"
botPrincipals:
- "ingestion-bot"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
``` ```

View File

@ -20,8 +20,6 @@ global:
containerRequestFilter: "org.openmetadata.service.security.JwtFilter" containerRequestFilter: "org.openmetadata.service.security.JwtFilter"
initialAdmins: initialAdmins:
- "suresh" - "suresh"
botPrincipals:
- "ingestion-bot"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
authentication: authentication:
provider: "custom-oidc" provider: "custom-oidc"
@ -50,8 +48,6 @@ global:
containerRequestFilter: "org.openmetadata.service.security.JwtFilter" containerRequestFilter: "org.openmetadata.service.security.JwtFilter"
initialAdmins: initialAdmins:
- "suresh" - "suresh"
botPrincipals:
- "ingestion-bot"
principalDomain: "open-metadata.org" principalDomain: "open-metadata.org"
authentication: authentication:
provider: "custom-oidc" provider: "custom-oidc"

View File

@ -40,6 +40,7 @@ import java.lang.reflect.InvocationTargetException;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.EnumSet; import java.util.EnumSet;
import java.util.Optional; import java.util.Optional;
import javax.naming.ConfigurationException;
import javax.servlet.DispatcherType; import javax.servlet.DispatcherType;
import javax.servlet.FilterRegistration; import javax.servlet.FilterRegistration;
import javax.servlet.ServletException; import javax.servlet.ServletException;
@ -94,7 +95,9 @@ public class OpenMetadataApplication extends Application<OpenMetadataApplication
@Override @Override
public void run(OpenMetadataApplicationConfig catalogConfig, Environment environment) public void run(OpenMetadataApplicationConfig catalogConfig, Environment environment)
throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException,
InvocationTargetException, IOException { InvocationTargetException, IOException, ConfigurationException {
validateConfiguration(catalogConfig);
// init email Util for handling // init email Util for handling
if (catalogConfig.getSmtpSettings() != null && catalogConfig.getSmtpSettings().getEnableSmtpServer()) { if (catalogConfig.getSmtpSettings() != null && catalogConfig.getSmtpSettings().getEnableSmtpServer()) {
EmailUtil.EmailUtilBuilder.build(catalogConfig.getSmtpSettings()); EmailUtil.EmailUtilBuilder.build(catalogConfig.getSmtpSettings());
@ -156,7 +159,7 @@ public class OpenMetadataApplication extends Application<OpenMetadataApplication
FilterRegistration.Dynamic micrometerFilter = FilterRegistration.Dynamic micrometerFilter =
environment.servlets().addFilter("MicrometerHttpFilter", new MicrometerHttpFilter()); environment.servlets().addFilter("MicrometerHttpFilter", new MicrometerHttpFilter());
micrometerFilter.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*"); micrometerFilter.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*");
intializeWebsockets(catalogConfig, environment); initializeWebsockets(catalogConfig, environment);
} }
private Jdbi createAndSetupJDBI(Environment environment, DataSourceFactory dbFactory) { private Jdbi createAndSetupJDBI(Environment environment, DataSourceFactory dbFactory) {
@ -227,6 +230,14 @@ public class OpenMetadataApplication extends Application<OpenMetadataApplication
} }
} }
private void validateConfiguration(OpenMetadataApplicationConfig catalogConfig) throws ConfigurationException {
if (catalogConfig.getAuthorizerConfiguration().getBotPrincipals() != null) {
throw new ConfigurationException(
"'botPrincipals' configuration is deprecated. Please remove it from "
+ "'openmetadata.yaml and restart the server");
}
}
private void registerAuthorizer(OpenMetadataApplicationConfig catalogConfig, Environment environment) private void registerAuthorizer(OpenMetadataApplicationConfig catalogConfig, Environment environment)
throws NoSuchMethodException, ClassNotFoundException, IllegalAccessException, InvocationTargetException, throws NoSuchMethodException, ClassNotFoundException, IllegalAccessException, InvocationTargetException,
InstantiationException { InstantiationException {
@ -280,7 +291,7 @@ public class OpenMetadataApplication extends Application<OpenMetadataApplication
environment.getApplicationContext().setErrorHandler(eph); environment.getApplicationContext().setErrorHandler(eph);
} }
private void intializeWebsockets(OpenMetadataApplicationConfig catalogConfig, Environment environment) { private void initializeWebsockets(OpenMetadataApplicationConfig catalogConfig, Environment environment) {
SocketAddressFilter socketAddressFilter; SocketAddressFilter socketAddressFilter;
String pathSpec = "/api/v1/push/feed/*"; String pathSpec = "/api/v1/push/feed/*";
if (catalogConfig.getAuthorizerConfiguration() != null) { if (catalogConfig.getAuthorizerConfiguration() != null) {

View File

@ -73,7 +73,6 @@ class ConfigResourceTest extends OpenMetadataApplicationTest {
assertEquals(config.getAuthorizerConfiguration().getClassName(), auth.getClassName()); assertEquals(config.getAuthorizerConfiguration().getClassName(), auth.getClassName());
assertEquals(config.getAuthorizerConfiguration().getPrincipalDomain(), auth.getPrincipalDomain()); assertEquals(config.getAuthorizerConfiguration().getPrincipalDomain(), auth.getPrincipalDomain());
assertEquals(config.getAuthorizerConfiguration().getAdminPrincipals(), auth.getAdminPrincipals()); assertEquals(config.getAuthorizerConfiguration().getAdminPrincipals(), auth.getAdminPrincipals());
assertEquals(config.getAuthorizerConfiguration().getBotPrincipals(), auth.getBotPrincipals());
assertEquals(config.getAuthorizerConfiguration().getContainerRequestFilter(), auth.getContainerRequestFilter()); assertEquals(config.getAuthorizerConfiguration().getContainerRequestFilter(), auth.getContainerRequestFilter());
assertEquals( assertEquals(
config.getAuthorizerConfiguration().getEnableSecureSocketConnection(), auth.getEnableSecureSocketConnection()); config.getAuthorizerConfiguration().getEnableSecureSocketConnection(), auth.getEnableSecureSocketConnection());

View File

@ -132,8 +132,6 @@ authorizerConfiguration:
containerRequestFilter: "org.openmetadata.service.security.CatalogOpenIdAuthorizationRequestFilter" containerRequestFilter: "org.openmetadata.service.security.CatalogOpenIdAuthorizationRequestFilter"
adminPrincipals: adminPrincipals:
- "admin" - "admin"
botPrincipals:
- "ingestion-bot"
# Added only for test purposes and not for production setup # Added only for test purposes and not for production setup
testPrincipals: testPrincipals:
- "test" - "test"

View File

@ -23,12 +23,13 @@
"uniqueItems": true "uniqueItems": true
}, },
"botPrincipals": { "botPrincipals": {
"description": "List of unique bot principals", "description": "**@Deprecated** List of unique bot principals",
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
}, },
"uniqueItems": true "uniqueItems": true,
"default": null
}, },
"testPrincipals": { "testPrincipals": {
"description": "List of unique principals used as test users. **NOTE THIS IS ONLY FOR TEST SETUP AND NOT TO BE USED IN PRODUCTION SETUP**", "description": "List of unique principals used as test users. **NOTE THIS IS ONLY FOR TEST SETUP AND NOT TO BE USED IN PRODUCTION SETUP**",
@ -59,6 +60,6 @@
"type": "boolean" "type": "boolean"
} }
}, },
"required": ["className", "containerRequestFilter", "adminPrincipals", "botPrincipals", "principalDomain", "enforcePrincipalDomain", "enableSecureSocketConnection"], "required": ["className", "containerRequestFilter", "adminPrincipals", "principalDomain", "enforcePrincipalDomain", "enableSecureSocketConnection"],
"additionalProperties": false "additionalProperties": false
} }

View File

@ -4,8 +4,5 @@
"adminPrincipals": [ "adminPrincipals": [
"admin" "admin"
], ],
"botPrincipals": [
"ingestion-bot"
],
"principalDomain": "" "principalDomain": ""
} }