mirror of
https://github.com/open-metadata/OpenMetadata.git
synced 2025-10-12 09:18:20 +00:00
This commit is contained in:
parent
268d1171f1
commit
0d75eb9ff2
@ -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}
|
||||||
|
@ -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` |
|
||||||
|
@ -33,8 +33,6 @@ authorizerConfiguration:
|
|||||||
adminPrincipals:
|
adminPrincipals:
|
||||||
- "user1"
|
- "user1"
|
||||||
- "user2"
|
- "user2"
|
||||||
botPrincipals:
|
|
||||||
- "ingestion-bot"
|
|
||||||
principalDomain: "open-metadata.org"
|
principalDomain: "open-metadata.org"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -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"
|
||||||
|
@ -31,8 +31,6 @@ authorizerConfiguration:
|
|||||||
adminPrincipals:
|
adminPrincipals:
|
||||||
- "user1"
|
- "user1"
|
||||||
- "user2"
|
- "user2"
|
||||||
botPrincipals:
|
|
||||||
- "ingestion-bot"
|
|
||||||
principalDomain: "open-metadata.org"
|
principalDomain: "open-metadata.org"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -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"
|
||||||
|
@ -33,8 +33,6 @@ authorizerConfiguration:
|
|||||||
adminPrincipals:
|
adminPrincipals:
|
||||||
- "user1"
|
- "user1"
|
||||||
- "user2"
|
- "user2"
|
||||||
botPrincipals:
|
|
||||||
- "ingestion-bot"
|
|
||||||
principalDomain: "open-metadata.org"
|
principalDomain: "open-metadata.org"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -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"
|
||||||
|
@ -36,8 +36,6 @@ authorizerConfiguration:
|
|||||||
adminPrincipals:
|
adminPrincipals:
|
||||||
- "user1"
|
- "user1"
|
||||||
- "user2"
|
- "user2"
|
||||||
botPrincipals:
|
|
||||||
- "ingestion-bot"
|
|
||||||
principalDomain: "open-metadata.org"
|
principalDomain: "open-metadata.org"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -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"
|
||||||
|
@ -31,8 +31,6 @@ authorizerConfiguration:
|
|||||||
adminPrincipals:
|
adminPrincipals:
|
||||||
- "user1"
|
- "user1"
|
||||||
- "user2"
|
- "user2"
|
||||||
botPrincipals:
|
|
||||||
- "ingestion-bot"
|
|
||||||
principalDomain: "open-metadata.org"
|
principalDomain: "open-metadata.org"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -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"
|
||||||
|
@ -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"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -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"
|
||||||
|
@ -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"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -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"
|
||||||
|
@ -36,8 +36,6 @@ authorizerConfiguration:
|
|||||||
adminPrincipals:
|
adminPrincipals:
|
||||||
- "user1"
|
- "user1"
|
||||||
- "user2"
|
- "user2"
|
||||||
botPrincipals:
|
|
||||||
- "ingestion-bot"
|
|
||||||
principalDomain: "open-metadata.org"
|
principalDomain: "open-metadata.org"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -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"
|
||||||
|
@ -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) {
|
||||||
|
@ -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());
|
||||||
|
@ -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"
|
||||||
|
@ -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
|
||||||
}
|
}
|
@ -4,8 +4,5 @@
|
|||||||
"adminPrincipals": [
|
"adminPrincipals": [
|
||||||
"admin"
|
"admin"
|
||||||
],
|
],
|
||||||
"botPrincipals": [
|
|
||||||
"ingestion-bot"
|
|
||||||
],
|
|
||||||
"principalDomain": ""
|
"principalDomain": ""
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user