Skip to content

Commit f077a65

Browse files
authored
TFP-5952 omlegging til egen tilgang (#1412)
* TFP-5952 omlegging til egen tilgang * Fjerne unødvendig domene * Fjerne gammel skjerming-klient
1 parent 64ddad3 commit f077a65

19 files changed

+81
-246
lines changed

felles/abac/src/main/java/no/nav/vedtak/sikkerhet/abac/AbacAuditlogger.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ private Set<CefField> createDefaultAbacFields(String userId, BeskyttetRessursAtt
9999
Set<CefField> fields = new HashSet<>();
100100
fields.add(new CefField(EVENT_TIME, System.currentTimeMillis()));
101101
fields.add(new CefField(REQUEST, beskyttetRessursAttributter.getServicePath()));
102-
fields.add(new CefField(ABAC_RESOURCE_TYPE, abacResourceType));
102+
fields.add(new CefField(ABAC_RESOURCE_TYPE, abacResourceType.getResourceTypeAttribute()));
103103
fields.add(new CefField(ABAC_ACTION, abacAction));
104104

105105
if (userId != null) {

felles/abac/src/main/java/no/nav/vedtak/sikkerhet/abac/BeskyttetRessurs.java

+5-13
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import jakarta.enterprise.util.Nonbinding;
1010
import jakarta.interceptor.InterceptorBinding;
1111
import jakarta.ws.rs.NameBinding;
12+
1213
import no.nav.vedtak.sikkerhet.abac.beskyttet.ActionType;
1314
import no.nav.vedtak.sikkerhet.abac.beskyttet.AvailabilityType;
1415
import no.nav.vedtak.sikkerhet.abac.beskyttet.ResourceType;
@@ -19,25 +20,16 @@
1920
@Target({ElementType.TYPE, ElementType.METHOD})
2021
@NameBinding
2122
public @interface BeskyttetRessurs {
22-
@Nonbinding ActionType actionType() default ActionType.DUMMY;
2323

2424
/**
25-
* Tre alternativ for å spesifisere resource
26-
* - String resource - brukes typisk for andre domener enn de som er tilgjengelig under ResourceType
27-
* - ResourceType - velg fra en enum - NB kun foreldrepenger, ikke duplo eller k9
28-
* - String property - for å hente verdi fra en property, se under
25+
* Handling
2926
*/
30-
@Nonbinding String resource() default "";
31-
32-
@Nonbinding ResourceType resourceType() default ResourceType.DUMMY;
27+
@Nonbinding ActionType actionType() default ActionType.DUMMY;
3328

3429
/**
35-
* Property hvor resource kan slås opp fra.
36-
* Først og fremst for biblioteker der resource er forskjellig mellom applikasjoner.
37-
* Property angis som java property (eks: "abac.rolle").
38-
* Dersom ikke tilgjengelig som property tolkes det som Env variabel på upper case (eks. "ABAC_ROLLE").
30+
* Handling skal utføres på ressurs
3931
*/
40-
@Nonbinding String property() default "";
32+
@Nonbinding ResourceType resourceType() default ResourceType.DUMMY;
4133

4234
/**
4335
* For å angi om tjeneste skal kunne kalles fra andre namespace

felles/abac/src/main/java/no/nav/vedtak/sikkerhet/abac/BeskyttetRessursInterceptor.java

+4-8
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import no.nav.vedtak.sikkerhet.abac.internal.BeskyttetRessursAttributter;
2525
import no.nav.vedtak.sikkerhet.kontekst.IdentType;
2626

27-
@BeskyttetRessurs(actionType = ActionType.DUMMY, resource = "")
27+
@BeskyttetRessurs(actionType = ActionType.DUMMY, resourceType = ResourceType.DUMMY)
2828
@Interceptor
2929
@Priority(Interceptor.Priority.APPLICATION + 11)
3030
@Dependent
@@ -171,13 +171,9 @@ private static String utledAction(Class<?> clazz, Method method) {
171171
return ActionUthenter.action(clazz, method);
172172
}
173173

174-
private static String finnResource(BeskyttetRessurs beskyttetRessurs) {
175-
if (!beskyttetRessurs.property().isEmpty() && ENV.getProperty(beskyttetRessurs.property()) != null) {
176-
return ENV.getProperty(beskyttetRessurs.property());
177-
} else if (!ResourceType.DUMMY.equals(beskyttetRessurs.resourceType())) {
178-
return beskyttetRessurs.resourceType().getResourceTypeAttribute();
179-
} else if (!beskyttetRessurs.resource().isEmpty()) {
180-
return beskyttetRessurs.resource();
174+
private static ResourceType finnResource(BeskyttetRessurs beskyttetRessurs) {
175+
if (!ResourceType.DUMMY.equals(beskyttetRessurs.resourceType())) {
176+
return beskyttetRessurs.resourceType();
181177
}
182178
return null;
183179
}

felles/abac/src/main/java/no/nav/vedtak/sikkerhet/abac/PdpRequestBuilder.java

-4
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,6 @@
1212
*/
1313
public interface PdpRequestBuilder {
1414

15-
default String abacDomene() {
16-
return "foreldrepenger";
17-
}
18-
1915
AppRessursData lagAppRessursData(AbacDataAttributter dataAttributter);
2016

2117
// Trenger egentlig bare sette BEHANDLING_STATUS + FAGSAK_STATUS i tilfelle FAGSAK / UPDATE for skrivetilgangs-sjekk

felles/abac/src/main/java/no/nav/vedtak/sikkerhet/abac/PepImpl.java

+3-38
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
package no.nav.vedtak.sikkerhet.abac;
22

3-
import static no.nav.vedtak.sikkerhet.abac.AbacResultat.AVSLÅTT_ANNEN_ÅRSAK;
4-
import static no.nav.vedtak.sikkerhet.abac.AbacResultat.GODKJENT;
5-
63
import java.util.HashSet;
74
import java.util.LinkedHashSet;
8-
import java.util.Objects;
95
import java.util.stream.Collectors;
106

117
import jakarta.enterprise.context.ApplicationScoped;
@@ -19,12 +15,10 @@
1915
import no.nav.vedtak.sikkerhet.abac.internal.BeskyttetRessursAttributter;
2016
import no.nav.vedtak.sikkerhet.abac.pdp.AppRessursData;
2117
import no.nav.vedtak.sikkerhet.abac.policy.EksternBrukerPolicies;
22-
import no.nav.vedtak.sikkerhet.abac.policy.ForeldrepengerAttributter;
2318
import no.nav.vedtak.sikkerhet.abac.policy.InternBrukerPolicies;
2419
import no.nav.vedtak.sikkerhet.abac.policy.SystemressursPolicies;
2520
import no.nav.vedtak.sikkerhet.abac.policy.Tilgangsvurdering;
2621
import no.nav.vedtak.sikkerhet.kontekst.AnsattGruppe;
27-
import no.nav.vedtak.sikkerhet.kontekst.IdentType;
2822
import no.nav.vedtak.sikkerhet.tilgang.AnsattGruppeKlient;
2923
import no.nav.vedtak.sikkerhet.tilgang.PopulasjonKlient;
3024

@@ -37,9 +31,7 @@
3731
public class PepImpl implements Pep {
3832

3933
private static final Logger LOG = LoggerFactory.getLogger(PepImpl.class);
40-
private static final String PIP = ForeldrepengerAttributter.RESOURCE_TYPE_INTERNAL_PIP;
4134

42-
private PdpKlient pdpKlient;
4335
private PopulasjonKlient populasjonKlient;
4436
private AnsattGruppeKlient ansattGruppeKlient;
4537
private PdpRequestBuilder pdpRequestBuilder;
@@ -50,8 +42,7 @@ public class PepImpl implements Pep {
5042
}
5143

5244
@Inject
53-
public PepImpl(PdpKlient pdpKlient, PopulasjonKlient populasjonKlient, AnsattGruppeKlient ansattGruppeKlient, PdpRequestBuilder pdpRequestBuilder) {
54-
this.pdpKlient = pdpKlient;
45+
public PepImpl(PopulasjonKlient populasjonKlient, AnsattGruppeKlient ansattGruppeKlient, PdpRequestBuilder pdpRequestBuilder) {
5546
this.populasjonKlient = populasjonKlient;
5647
this.ansattGruppeKlient = ansattGruppeKlient;
5748
this.pdpRequestBuilder = pdpRequestBuilder;
@@ -61,36 +52,10 @@ public PepImpl(PdpKlient pdpKlient, PopulasjonKlient populasjonKlient, AnsattGru
6152
public Tilgangsbeslutning vurderTilgang(BeskyttetRessursAttributter beskyttetRessursAttributter) {
6253
var appRessurser = pdpRequestBuilder.lagAppRessursData(beskyttetRessursAttributter.getDataAttributter());
6354

64-
if (IdentType.Systemressurs.equals(beskyttetRessursAttributter.getIdentType())) {
65-
var pdpResultat = vurderLokalTilgang(beskyttetRessursAttributter, appRessurser);
66-
sammenlignOgLogg(beskyttetRessursAttributter, appRessurser, pdpResultat.beslutningKode());
67-
return pdpResultat;
68-
} else if (PIP.equals(beskyttetRessursAttributter.getResourceType())) { // pip tilgang bør vurderes kun lokalt
69-
return new Tilgangsbeslutning(AVSLÅTT_ANNEN_ÅRSAK, beskyttetRessursAttributter, appRessurser);
70-
} else {
71-
var pdpResultat = pdpKlient.forespørTilgang(beskyttetRessursAttributter, pdpRequestBuilder.abacDomene(), appRessurser);
72-
sammenlignOgLogg(beskyttetRessursAttributter, appRessurser, pdpResultat.beslutningKode());
73-
return pdpResultat;
74-
}
75-
}
76-
77-
protected Tilgangsbeslutning vurderLokalTilgang(BeskyttetRessursAttributter beskyttetRessursAttributter, AppRessursData appRessursData) {
78-
var harTilgang = SystemressursPolicies.riktigClusterNamespacePreAuth(beskyttetRessursAttributter.getBrukerId(), beskyttetRessursAttributter.getAvailabilityType());
79-
return new Tilgangsbeslutning(harTilgang ? GODKJENT : AVSLÅTT_ANNEN_ÅRSAK, beskyttetRessursAttributter, appRessursData);
55+
var vurdering = forespørTilgang(beskyttetRessursAttributter, appRessurser);
56+
return new Tilgangsbeslutning(vurdering.tilgangResultat(), beskyttetRessursAttributter, appRessurser);
8057
}
8158

82-
private void sammenlignOgLogg(BeskyttetRessursAttributter beskyttetRessursAttributter, AppRessursData appRessursData, AbacResultat resultat) {
83-
try {
84-
var lokalt = forespørTilgang(beskyttetRessursAttributter, appRessursData);
85-
if (!Objects.equals(lokalt.tilgangResultat(), resultat)) {
86-
var metode = beskyttetRessursAttributter.getServicePath();
87-
LOG.info("FPEGENTILGANG: ulikt svar - abac {} tilgang {} - årsak {} - metode {}", resultat, lokalt.tilgangResultat(), lokalt.årsak(), metode);
88-
}
89-
} catch (Exception e) {
90-
var metode = beskyttetRessursAttributter.getServicePath();
91-
LOG.info("FPEGENTILGANG: feil for metode {}", metode, e);
92-
}
93-
}
9459

9560
// Skal kunne kalles fra evt subklasser av PepImpl
9661
protected Tilgangsvurdering forespørTilgang(BeskyttetRessursAttributter beskyttetRessursAttributter, AppRessursData appRessursData) {

felles/abac/src/main/java/no/nav/vedtak/sikkerhet/abac/internal/BeskyttetRessursAttributter.java

+2-7
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public class BeskyttetRessursAttributter {
2121
private IdentType identType;
2222
private Set<AnsattGruppe> ansattGrupper = new LinkedHashSet<>();
2323
private ActionType actionType;
24-
private String resourceType;
24+
private ResourceType resourceType;
2525
private AvailabilityType availabilityType;
2626
private Token token;
2727
private String pepId;
@@ -56,7 +56,7 @@ public ActionType getActionType() {
5656
return actionType;
5757
}
5858

59-
public String getResourceType() {
59+
public ResourceType getResourceType() {
6060
return resourceType;
6161
}
6262

@@ -125,11 +125,6 @@ public Builder medAvailabilityType(AvailabilityType availabilityType) {
125125
}
126126

127127
public Builder medResourceType(ResourceType resourceType) {
128-
pdpRequest.resourceType = resourceType.getResourceTypeAttribute();
129-
return this;
130-
}
131-
132-
public Builder medResourceType(String resourceType) {
133128
pdpRequest.resourceType = resourceType;
134129
return this;
135130
}

felles/abac/src/main/java/no/nav/vedtak/sikkerhet/abac/policy/EksternBrukerPolicies.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.Optional;
55

66
import no.nav.vedtak.sikkerhet.abac.beskyttet.ActionType;
7+
import no.nav.vedtak.sikkerhet.abac.beskyttet.ResourceType;
78
import no.nav.vedtak.sikkerhet.abac.internal.BeskyttetRessursAttributter;
89
import no.nav.vedtak.sikkerhet.abac.pdp.AppRessursData;
910
import no.nav.vedtak.sikkerhet.abac.pdp.ForeldrepengerDataKeys;
@@ -31,9 +32,9 @@ public static Tilgangsvurdering vurderTilgang(BeskyttetRessursAttributter beskyt
3132

3233
return switch (beskyttetRessursAttributter.getResourceType()) {
3334
case null -> Tilgangsvurdering.avslåGenerell("ikke angitt ressurs");
34-
case ForeldrepengerAttributter.RESOURCE_TYPE_FP_APPLIKASJON -> applikasjonPolicy(beskyttetRessursAttributter, appRessursData);
35-
case ForeldrepengerAttributter.RESOURCE_TYPE_FP_FAGSAK -> fagsakPolicy(beskyttetRessursAttributter, appRessursData);
36-
case ForeldrepengerAttributter.RESOURCE_TYPE_FP_UTTAKSPLAN -> uttaksplanPolicy(beskyttetRessursAttributter, appRessursData);
35+
case ResourceType.APPLIKASJON -> applikasjonPolicy(beskyttetRessursAttributter, appRessursData);
36+
case ResourceType.FAGSAK -> fagsakPolicy(beskyttetRessursAttributter, appRessursData);
37+
case ResourceType.UTTAKSPLAN -> uttaksplanPolicy(beskyttetRessursAttributter, appRessursData);
3738
default -> Tilgangsvurdering.avslåGenerell("EksternBruker har ikke tilgang til ressurs");
3839
};
3940
}

felles/abac/src/main/java/no/nav/vedtak/sikkerhet/abac/policy/InternBrukerPolicies.java

+8-7
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.Set;
66

77
import no.nav.vedtak.sikkerhet.abac.beskyttet.ActionType;
8+
import no.nav.vedtak.sikkerhet.abac.beskyttet.ResourceType;
89
import no.nav.vedtak.sikkerhet.abac.internal.BeskyttetRessursAttributter;
910
import no.nav.vedtak.sikkerhet.abac.pdp.AppRessursData;
1011
import no.nav.vedtak.sikkerhet.abac.pdp.ForeldrepengerDataKeys;
@@ -30,13 +31,13 @@ public static Tilgangsvurdering vurderTilgang(BeskyttetRessursAttributter beskyt
3031

3132
return switch (beskyttetRessursAttributter.getResourceType()) {
3233
case null -> Tilgangsvurdering.avslåGenerell("ikke angitt ressurs");
33-
case ForeldrepengerAttributter.RESOURCE_TYPE_FP_APPLIKASJON -> applikasjonPolicy(beskyttetRessursAttributter, appRessursData);
34-
case ForeldrepengerAttributter.RESOURCE_TYPE_FP_DRIFT -> driftPolicy(beskyttetRessursAttributter);
35-
case ForeldrepengerAttributter.RESOURCE_TYPE_FP_FAGSAK -> fagsakPolicy(beskyttetRessursAttributter, appRessursData);
36-
case ForeldrepengerAttributter.RESOURCE_TYPE_FP_VENTEFRIST -> ventefristPolicy(beskyttetRessursAttributter);
37-
case ForeldrepengerAttributter.RESOURCE_TYPE_FP_AVDELINGENHET -> avdelingEnhetPolicy(appRessursData);
38-
case ForeldrepengerAttributter.RESOURCE_TYPE_FP_OPPGAVESTYRING -> oppgavestyrerPolicy();
39-
case ForeldrepengerAttributter.RESOURCE_TYPE_FP_RISIKOKLASSIFISERING -> erVeilederEllerSaksbehandler(beskyttetRessursAttributter);
34+
case ResourceType.APPLIKASJON -> applikasjonPolicy(beskyttetRessursAttributter, appRessursData);
35+
case ResourceType.DRIFT -> driftPolicy(beskyttetRessursAttributter);
36+
case ResourceType.FAGSAK -> fagsakPolicy(beskyttetRessursAttributter, appRessursData);
37+
case ResourceType.VENTEFRIST -> ventefristPolicy(beskyttetRessursAttributter);
38+
case ResourceType.OPPGAVESTYRING_AVDELINGENHET -> avdelingEnhetPolicy(appRessursData);
39+
case ResourceType.OPPGAVESTYRING -> oppgavestyrerPolicy();
40+
case ResourceType.RISIKOKLASSIFISERING -> erVeilederEllerSaksbehandler(beskyttetRessursAttributter);
4041
default -> Tilgangsvurdering.avslåGenerell("InternBruker har ikke tilgang til ressurs " + beskyttetRessursAttributter.getResourceType());
4142
};
4243
}

felles/abac/src/main/java/no/nav/vedtak/sikkerhet/abac/policy/SystemressursPolicies.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import no.nav.foreldrepenger.konfig.Environment;
88
import no.nav.vedtak.sikkerhet.abac.beskyttet.ActionType;
99
import no.nav.vedtak.sikkerhet.abac.beskyttet.AvailabilityType;
10+
import no.nav.vedtak.sikkerhet.abac.beskyttet.ResourceType;
1011
import no.nav.vedtak.sikkerhet.abac.internal.BeskyttetRessursAttributter;
1112
import no.nav.vedtak.sikkerhet.abac.pdp.AppRessursData;
1213
import no.nav.vedtak.sikkerhet.abac.pdp.ForeldrepengerDataKeys;
@@ -27,7 +28,7 @@ public class SystemressursPolicies {
2728
private static final String PRE_AUTHORIZED = ENV.getProperty(AzureProperty.AZURE_APP_PRE_AUTHORIZED_APPS.name());
2829
private static final Cluster RESIDENT_CLUSTER = ENV.getCluster();
2930
private static final String RESIDENT_NAMESPACE = ENV.namespace();
30-
private static final Set<String> IKKE_TILLATT_RESOURCE_TYPE = Set.of(ForeldrepengerAttributter.RESOURCE_TYPE_FP_UTTAKSPLAN);
31+
private static final Set<ResourceType> IKKE_TILLATT_RESOURCE_TYPE = Set.of(ResourceType.UTTAKSPLAN);
3132

3233
private SystemressursPolicies() {
3334
// Hindre instans
@@ -68,7 +69,7 @@ private static boolean erISammeNamespace(String[] elementer, AvailabilityType av
6869
}
6970

7071
private static boolean skriveBeskyttet(BeskyttetRessursAttributter beskyttetRessursAttributter, AppRessursData appRessursData) {
71-
if (Objects.equals(ForeldrepengerAttributter.RESOURCE_TYPE_FP_FAGSAK, beskyttetRessursAttributter.getResourceType())) {
72+
if (Objects.equals(ResourceType.FAGSAK, beskyttetRessursAttributter.getResourceType())) {
7273
var behandlingStatus = appRessursData.getResource(ForeldrepengerDataKeys.BEHANDLING_STATUS);
7374
var fagsakStatus = appRessursData.getResource(ForeldrepengerDataKeys.FAGSAK_STATUS);
7475
// Denne er utforskende. Vi trenger oppdatere behandling i tilstand IVED. Potensielt også AVSLU pga brevkvittering

felles/abac/src/main/java/no/nav/vedtak/sikkerhet/pdp/XacmlRequestMapper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ private static XacmlRequest.Attributes resourceInfo(BeskyttetRessursAttributter
5151

5252
attributes.add(new XacmlRequest.AttributeAssignment(NavFellesAttributter.RESOURCE_FELLES_DOMENE, domene));
5353
attributes.add(
54-
new XacmlRequest.AttributeAssignment(NavFellesAttributter.RESOURCE_FELLES_RESOURCE_TYPE, beskyttetRessursAttributter.getResourceType()));
54+
new XacmlRequest.AttributeAssignment(NavFellesAttributter.RESOURCE_FELLES_RESOURCE_TYPE, beskyttetRessursAttributter.getResourceType().getResourceTypeAttribute()));
5555

5656
appRessursData.getResources()
5757
.values()

0 commit comments

Comments
 (0)