Skip to content

Commit 1c44cbd

Browse files
committed
Merge branch 'develop' of github.com:POSSIBLE-X/possible-x-edc-extension
2 parents 44f3f79 + c098970 commit 1c44cbd

File tree

4 files changed

+41
-10
lines changed

4 files changed

+41
-10
lines changed

deployment/helm/possible-x-edc/templates/db_stateful_set.yaml

+8-1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ spec:
1616
labels:
1717
app: {{ include "possible-x-edc.fullname" . }}-postgres
1818
spec:
19+
securityContext:
20+
runAsUser: 999
21+
runAsGroup: 0
1922
containers:
2023
- name: postgres
2124
image: "{{ .Values.persistence.db.image.repository }}:{{ .Values.persistence.db.image.tag }}"
@@ -24,6 +27,10 @@ spec:
2427
- containerPort: 5432
2528
name: postgres
2629
env:
30+
- name: PGDATA
31+
value: /var/lib/postgresql/root/data
32+
- name: PGROOT
33+
value: /var/lib/postgresql/root
2734
- name: POSTGRES_DB
2835
value: "{{ .Values.persistence.db.databaseName }}"
2936
- name: POSTGRES_USER
@@ -35,7 +42,7 @@ spec:
3542
key: POSTGRES_PASSWORD
3643
volumeMounts:
3744
- name: {{ include "possible-x-edc.fullname" . }}-postgres-storage
38-
mountPath: /var/lib/postgresql
45+
mountPath: /var/lib/postgresql/root
3946
volumeClaimTemplates:
4047
- metadata:
4148
name: {{ include "possible-x-edc.fullname" . }}-postgres-storage

deployment/pg_admin/pg_admin.yaml

+16-3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ spec:
1818
command: ["/bin/sh", "-c"]
1919
args:
2020
- |
21+
touch /config/pgpass
22+
echo "possible-x-portal-postgres.edc-dev:*:*:admin:$PORTAL_POSTGRES_PASSWORD" >> /config/pgpass
23+
echo "*:*:*:*:$POSTGRES_PASSWORD" >> /config/pgpass
2124
echo '{
2225
"Servers": {
2326
"1": {
@@ -27,7 +30,7 @@ spec:
2730
"Port": 5432,
2831
"MaintenanceDB": "edc",
2932
"Username": "admin",
30-
"Password": "'$POSTGRES_PASSWORD'",
33+
"PassFile": "/pgadmin4/pgpass",
3134
"SSLMode": "prefer",
3235
"ConnectNow": true
3336
},
@@ -38,7 +41,7 @@ spec:
3841
"Port": 5432,
3942
"MaintenanceDB": "edc",
4043
"Username": "admin",
41-
"Password": "'$POSTGRES_PASSWORD'",
44+
"PassFile": "/pgadmin4/pgpass",
4245
"SSLMode": "prefer",
4346
"ConnectNow": true
4447
},
@@ -49,12 +52,16 @@ spec:
4952
"Port": 5432,
5053
"MaintenanceDB": "portal",
5154
"Username": "admin",
52-
"Password": "'$PORTAL_POSTGRES_PASSWORD'",
55+
"PassFile": "/pgadmin4/pgpass",
5356
"SSLMode": "prefer",
5457
"ConnectNow": true
5558
}
5659
}
5760
}' > /config/servers.json
61+
chmod 600 /config/pgpass
62+
chown 5050:0 /config/pgpass
63+
chown 5050:0 /config/servers.json
64+
5865
env:
5966
- name: POSTGRES_PASSWORD
6067
valueFrom:
@@ -72,6 +79,7 @@ spec:
7279
containers:
7380
- name: pgadmin
7481
image: dpage/pgadmin4:latest
82+
resources: {}
7583
ports:
7684
- containerPort: 80
7785
env:
@@ -81,6 +89,8 @@ spec:
8189
value: "False"
8290
- name: PGADMIN_DEFAULT_EMAIL
8391
value: "admin@possible-x.de" # Set your admin email
92+
- name: PGPASSFILE
93+
value: /pgadmin4/pgpass
8494
- name: PGADMIN_DEFAULT_PASSWORD
8595
valueFrom:
8696
secretKeyRef:
@@ -90,6 +100,9 @@ spec:
90100
- name: config-volume
91101
mountPath: /pgadmin4/servers.json
92102
subPath: servers.json
103+
- name: config-volume
104+
mountPath: /pgadmin4/pgpass
105+
subPath: pgpass
93106
volumes:
94107
- name: config-volume
95108
emptyDir: {}

policy-extension/src/main/java/org/eclipse/edc/extension/possiblepolicy/ConnectorIdConstraintFunction.java

+14-5
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,18 @@
44
import org.eclipse.edc.policy.engine.spi.PolicyContext;
55
import org.eclipse.edc.policy.model.Operator;
66
import org.eclipse.edc.policy.model.Permission;
7+
import org.eclipse.edc.policy.model.Rule;
78
import org.eclipse.edc.spi.agent.ParticipantAgent;
89
import org.eclipse.edc.spi.monitor.Monitor;
910

11+
import java.util.Arrays;
1012
import java.util.Collection;
1113
import java.util.Map;
1214
import java.util.Objects;
1315

1416
import static java.lang.String.format;
1517

16-
public class ConnectorIdConstraintFunction implements AtomicConstraintFunction<Permission> {
18+
public class ConnectorIdConstraintFunction<R extends Rule> implements AtomicConstraintFunction<R> {
1719

1820
private final Monitor monitor;
1921

@@ -22,7 +24,13 @@ public ConnectorIdConstraintFunction(Monitor monitor) {
2224
}
2325

2426
@Override
25-
public boolean evaluate(Operator operator, Object rightValue, Permission rule, PolicyContext context) {
27+
public boolean evaluate(Operator operator, Object rightValue, R rule, PolicyContext context) {
28+
29+
if (!(rightValue instanceof String)) {
30+
context.reportProblem("Right-value expected to be String but was " + rightValue.getClass());
31+
return false;
32+
}
33+
2634
var contextData = context.getContextData(ParticipantAgent.class);
2735
if (contextData == null) {
2836
return false;
@@ -36,18 +44,19 @@ public boolean evaluate(Operator operator, Object rightValue, Permission rule, P
3644
monitor.info(format("Found attribute %s : %s", e.getKey(), e.getValue()));
3745
}
3846

39-
var clientIdClaim = contextData.getClaims().get("client_id");
47+
String clientIdClaim = (String) contextData.getClaims().get("client_id");
4048

4149
if (clientIdClaim == null) {
4250
return false;
4351
}
4452

45-
monitor.info(format("Evaluating constraint: connectorId %s %s %s", clientIdClaim, operator, rightValue.toString()));
53+
monitor.info(format("Evaluating constraint: connectorId %s %s %s", clientIdClaim, operator, rightValue));
4654

4755
return switch (operator) {
4856
case EQ -> Objects.equals(clientIdClaim, rightValue);
4957
case NEQ -> !Objects.equals(clientIdClaim, rightValue);
50-
case IN -> ((Collection<?>) rightValue).contains(clientIdClaim);
58+
case IN, IS_ANY_OF -> Arrays.asList(((String) rightValue).split(",")).contains(clientIdClaim);
59+
case IS_NONE_OF -> !Arrays.asList(((String) rightValue).split(",")).contains(clientIdClaim);
5160
default -> false;
5261
};
5362
}

policy-extension/src/main/java/org/eclipse/edc/extension/possiblepolicy/PossiblePolicyExtension.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.eclipse.edc.policy.engine.spi.PolicyEngine;
1919
import org.eclipse.edc.policy.engine.spi.RuleBindingRegistry;
2020
import org.eclipse.edc.policy.model.Permission;
21+
import org.eclipse.edc.policy.model.Prohibition;
2122
import org.eclipse.edc.runtime.metamodel.annotation.Extension;
2223
import org.eclipse.edc.runtime.metamodel.annotation.Inject;
2324
import org.eclipse.edc.spi.system.ServiceExtension;
@@ -48,6 +49,7 @@ public void initialize(ServiceExtensionContext context) {
4849

4950
ruleBindingRegistry.bind("use", ALL_SCOPES);
5051
ruleBindingRegistry.bind(CONNECTORID_CONSTRAINT_KEY, ALL_SCOPES);
51-
policyEngine.registerFunction(ALL_SCOPES, Permission.class, CONNECTORID_CONSTRAINT_KEY, new ConnectorIdConstraintFunction(monitor));
52+
policyEngine.registerFunction(ALL_SCOPES, Permission.class, CONNECTORID_CONSTRAINT_KEY, new ConnectorIdConstraintFunction<>(monitor));
53+
policyEngine.registerFunction(ALL_SCOPES, Prohibition.class, CONNECTORID_CONSTRAINT_KEY, new ConnectorIdConstraintFunction<>(monitor));
5254
}
5355
}

0 commit comments

Comments
 (0)