Skip to content

Commit 552f572

Browse files
committed
fix(policy): grant Trigger to default bot + steward policies for /trigger authz
1 parent 78457cc commit 552f572

11 files changed

Lines changed: 95 additions & 6 deletions

File tree

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.openmetadata.service.migration.mysql.v1129;
2+
3+
import static org.openmetadata.service.migration.utils.v1129.MigrationUtil.addTriggerOperationToDefaultPolicies;
4+
5+
import lombok.SneakyThrows;
6+
import org.openmetadata.service.migration.api.MigrationProcessImpl;
7+
import org.openmetadata.service.migration.utils.MigrationFile;
8+
9+
public class Migration extends MigrationProcessImpl {
10+
11+
public Migration(MigrationFile migrationFile) {
12+
super(migrationFile);
13+
}
14+
15+
@Override
16+
@SneakyThrows
17+
public void runDataMigration() {
18+
addTriggerOperationToDefaultPolicies(collectionDAO);
19+
}
20+
}

openmetadata-service/src/main/java/org/openmetadata/service/migration/mysql/v1130/Migration.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.openmetadata.service.migration.mysql.v1130;
22

3+
import static org.openmetadata.service.migration.utils.v1129.MigrationUtil.addTriggerOperationToDefaultPolicies;
4+
35
import lombok.SneakyThrows;
46
import lombok.extern.slf4j.Slf4j;
57
import org.openmetadata.service.migration.api.MigrationProcessImpl;
@@ -31,5 +33,6 @@ public void runDataMigration() {
3133
LOG.error("v1130 glossaryTerm version relatedTerms transform failed; re-run to retry.", e);
3234
}
3335
MigrationUtil.addTableColumnSearchSettings();
36+
addTriggerOperationToDefaultPolicies(collectionDAO);
3437
}
3538
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.openmetadata.service.migration.postgres.v1129;
2+
3+
import static org.openmetadata.service.migration.utils.v1129.MigrationUtil.addTriggerOperationToDefaultPolicies;
4+
5+
import lombok.SneakyThrows;
6+
import org.openmetadata.service.migration.api.MigrationProcessImpl;
7+
import org.openmetadata.service.migration.utils.MigrationFile;
8+
9+
public class Migration extends MigrationProcessImpl {
10+
11+
public Migration(MigrationFile migrationFile) {
12+
super(migrationFile);
13+
}
14+
15+
@Override
16+
@SneakyThrows
17+
public void runDataMigration() {
18+
addTriggerOperationToDefaultPolicies(collectionDAO);
19+
}
20+
}

openmetadata-service/src/main/java/org/openmetadata/service/migration/postgres/v1130/Migration.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.openmetadata.service.migration.postgres.v1130;
22

3+
import static org.openmetadata.service.migration.utils.v1129.MigrationUtil.addTriggerOperationToDefaultPolicies;
4+
35
import lombok.SneakyThrows;
46
import lombok.extern.slf4j.Slf4j;
57
import org.openmetadata.service.migration.api.MigrationProcessImpl;
@@ -31,5 +33,6 @@ public void runDataMigration() {
3133
LOG.error("v1130 glossaryTerm version relatedTerms transform failed; re-run to retry.", e);
3234
}
3335
MigrationUtil.addTableColumnSearchSettings();
36+
addTriggerOperationToDefaultPolicies(collectionDAO);
3437
}
3538
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package org.openmetadata.service.migration.utils.v1129;
2+
3+
import static org.openmetadata.service.migration.utils.v160.MigrationUtil.addOperationsToPolicyRule;
4+
5+
import java.util.List;
6+
import lombok.extern.slf4j.Slf4j;
7+
import org.openmetadata.schema.type.MetadataOperation;
8+
import org.openmetadata.service.jdbi3.CollectionDAO;
9+
10+
@Slf4j
11+
public class MigrationUtil {
12+
13+
private MigrationUtil() {}
14+
15+
/**
16+
* Retrofits default seeded policies that grant broad edit capability with the {@code Trigger}
17+
* operation, keeping pre-existing customer behavior intact after {@code /trigger} starts
18+
* enforcing authz (GH-27962).
19+
*
20+
* <p>Targets the rules whose resources are {@code "All"} and that already grant {@code EditAll}
21+
* (the broad-bot allow rules) plus {@code DataStewardPolicy} which grants {@code EditOwners} —
22+
* stewards can already reach trigger via the ownership-edit escalation path, so granting it
23+
* explicitly aligns the policy with the effective capability and improves the audit trail.
24+
*
25+
* <p>Each call is idempotent via {@link
26+
* org.openmetadata.service.migration.utils.v160.MigrationUtil#addOperationsToPolicyRule}.
27+
*/
28+
public static void addTriggerOperationToDefaultPolicies(CollectionDAO collectionDAO) {
29+
record PolicyRule(String policy, String rule) {}
30+
List<PolicyRule> targets =
31+
List.of(
32+
new PolicyRule("IngestionBotPolicy", "IngestionBotRule-Allow"),
33+
new PolicyRule("LineageBotPolicy", "LineageBotRule-Allow"),
34+
new PolicyRule("ProfilerBotPolicy", "ProfilerBotBotRule-Allow"),
35+
new PolicyRule("QualityBotPolicy", "QualityBotBotRule-Allow"),
36+
new PolicyRule("UsageBotPolicy", "UsageBotRule-Allow-Usage"),
37+
new PolicyRule("DataStewardPolicy", "DataStewardPolicy-EditRule"));
38+
for (PolicyRule t : targets) {
39+
addOperationsToPolicyRule(
40+
t.policy(), t.rule(), List.of(MetadataOperation.TRIGGER), collectionDAO);
41+
}
42+
}
43+
}

openmetadata-service/src/main/resources/json/data/policy/DataStewardPolicy.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
{
1111
"name": "DataStewardPolicy-EditRule",
1212
"resources" : ["all"],
13-
"operations": ["ViewAll", "EditDescription", "EditDisplayName", "EditLineage", "EditOwners", "EditTags", "EditTier", "EditGlossaryTerms", "EditCertification"],
13+
"operations": ["ViewAll", "EditDescription", "EditDisplayName", "EditLineage", "EditOwners", "EditTags", "EditTier", "EditGlossaryTerms", "EditCertification", "Trigger"],
1414
"effect": "allow"
1515
}
1616
]

openmetadata-service/src/main/resources/json/data/policy/IngestionBotPolicy.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"name": "IngestionBotRule-Allow",
1212
"description" : "Allow ingestion bots to create/update/delete data entities",
1313
"resources" : ["All"],
14-
"operations": ["Create", "BulkCreate", "BulkUpdate", "EditAll", "ViewAll", "Delete"],
14+
"operations": ["Create", "BulkCreate", "BulkUpdate", "EditAll", "ViewAll", "Delete", "Trigger"],
1515
"effect": "allow"
1616
},
1717
{

openmetadata-service/src/main/resources/json/data/policy/LineageBotPolicy.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"name": "LineageBotRule-Allow",
1919
"description" : "Allow creating and updating lineage",
2020
"resources" : ["All"],
21-
"operations": ["EditAll", "ViewAll"],
21+
"operations": ["EditAll", "ViewAll", "Trigger"],
2222
"effect": "allow"
2323
},
2424
{

openmetadata-service/src/main/resources/json/data/policy/ProfilerBotPolicy.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"name": "ProfilerBotBotRule-Allow",
1212
"description" : "Allow updating sample data, profile data, and tests for all the resources.",
1313
"resources" : ["All"],
14-
"operations": ["EditAll", "ViewAll"],
14+
"operations": ["EditAll", "ViewAll", "Trigger"],
1515
"effect": "allow"
1616
},
1717
{

openmetadata-service/src/main/resources/json/data/policy/QualityBotPolicy.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"name": "QualityBotBotRule-Allow",
1212
"description" : "Allow updating sample data, profile data, and tests for all the resources.",
1313
"resources" : ["All"],
14-
"operations": ["EditAll", "ViewAll"],
14+
"operations": ["EditAll", "ViewAll", "Trigger"],
1515
"effect": "allow"
1616
},
1717
{

0 commit comments

Comments
 (0)