Skip to content

Commit 3cccbfc

Browse files
committed
Flytte attributtnavn til logger
1 parent ac92e55 commit 3cccbfc

File tree

2 files changed

+42
-18
lines changed

2 files changed

+42
-18
lines changed

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

+36-12
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
import no.nav.vedtak.log.audit.Auditlogger;
3636
import no.nav.vedtak.log.audit.CefField;
3737
import no.nav.vedtak.log.audit.EventClassId;
38+
import no.nav.vedtak.sikkerhet.abac.beskyttet.ActionType;
39+
import no.nav.vedtak.sikkerhet.abac.beskyttet.ResourceType;
3840
import no.nav.vedtak.sikkerhet.abac.internal.BeskyttetRessursAttributter;
3941
import no.nav.vedtak.sikkerhet.abac.pdp.AppRessursData;
4042
import no.nav.vedtak.sikkerhet.kontekst.IdentType;
@@ -63,19 +65,23 @@ public void loggUtfall(AbacResultat utfall, BeskyttetRessursAttributter beskytte
6365
LOG.info("ABAC AVSLAG SYSTEMBRUKER {} tjeneste {}", beskyttetRessursAttributter.getBrukerId(), beskyttetRessursAttributter.getServicePath());
6466
}
6567
} else if (beskyttetRessursAttributter.isSporingslogg()) {
66-
logg(beskyttetRessursAttributter, appRessursData, utfall.fikkTilgang() ? Access.GRANTED : Access.DENIED);
68+
try {
69+
logg(beskyttetRessursAttributter, appRessursData, utfall.fikkTilgang() ? Access.GRANTED : Access.DENIED);
70+
} catch (Exception e) {
71+
LOG.warn("ABAC AUDITLOG FAILURE ident {} tjeneste {}", beskyttetRessursAttributter.getIdentType(), beskyttetRessursAttributter.getServicePath(), e);
72+
}
73+
6774
}
6875
}
6976

7077
private void logg(BeskyttetRessursAttributter beskyttetRessursAttributter, AppRessursData appRessursData, Access access) {
7178
requireNonNull(beskyttetRessursAttributter);
7279
requireNonNull(beskyttetRessursAttributter.getDataAttributter());
7380

74-
String abacAction = requireNonNull(beskyttetRessursAttributter.getActionType().getEksternKode());
75-
var header = createHeader(abacAction, access);
81+
var header = createHeader(beskyttetRessursAttributter.getActionType(), access);
7682
var fields = createDefaultAbacFields(beskyttetRessursAttributter);
7783

78-
List<String> ids = getBerortBrukerId(appRessursData);
84+
List<String> ids = getBerortBrukerId(appRessursData); // TODO: Vurder å kun logge for hovedperson
7985
for (String aktorId : ids) {
8086
loggTilgangPerBerortAktoer(header, fields, aktorId);
8187
}
@@ -88,7 +94,7 @@ private void loggTilgangPerBerortAktoer(AuditdataHeader header, Set<CefField> fi
8894
auditlogger.logg(auditdata);
8995
}
9096

91-
private AuditdataHeader createHeader(String abacAction, Access access) {
97+
private AuditdataHeader createHeader(ActionType abacAction, Access access) {
9298
return new AuditdataHeader.Builder().medVendor(auditlogger.getDefaultVendor())
9399
.medProduct(auditlogger.getDefaultProduct())
94100
.medEventClassId(finnEventClassIdFra(abacAction))
@@ -98,13 +104,13 @@ private AuditdataHeader createHeader(String abacAction, Access access) {
98104
}
99105

100106
protected Set<CefField> createDefaultAbacFields(BeskyttetRessursAttributter beskyttetRessursAttributter) {
101-
var abacAction = requireNonNull(beskyttetRessursAttributter.getActionType().getEksternKode());
102-
var abacResourceType = requireNonNull(beskyttetRessursAttributter.getResourceType());
107+
var abacAction = requireNonNull(mapActionType(beskyttetRessursAttributter.getActionType()));
108+
var abacResourceType = requireNonNull(mapResourceType(beskyttetRessursAttributter.getResourceType()));
103109

104110
Set<CefField> fields = new HashSet<>();
105111
fields.add(new CefField(EVENT_TIME, System.currentTimeMillis()));
106112
fields.add(new CefField(REQUEST, beskyttetRessursAttributter.getServicePath()));
107-
fields.add(new CefField(ABAC_RESOURCE_TYPE, abacResourceType.getResourceTypeAttribute()));
113+
fields.add(new CefField(ABAC_RESOURCE_TYPE, abacResourceType));
108114
fields.add(new CefField(ABAC_ACTION, abacAction));
109115

110116
if (beskyttetRessursAttributter.getBrukerId() != null) {
@@ -141,15 +147,33 @@ private static Optional<String> getOneOfNew(AbacDataAttributter attributter, Aba
141147
return Optional.empty();
142148
}
143149

144-
private static EventClassId finnEventClassIdFra(String abacAction) {
150+
private static EventClassId finnEventClassIdFra(ActionType abacAction) {
145151
return switch (abacAction) {
146-
case "read" -> AUDIT_ACCESS; /* Fall-through */
147-
case "delete", "update" -> AUDIT_UPDATE;
148-
case "create" -> AUDIT_CREATE;
152+
case READ -> AUDIT_ACCESS; /* Fall-through */
153+
case DELETE, UPDATE -> AUDIT_UPDATE;
154+
case CREATE -> AUDIT_CREATE;
149155
default -> throw new IllegalArgumentException("Ukjent abacAction: " + abacAction);
150156
};
151157
}
152158

159+
private static String mapActionType(ActionType actionType) {
160+
return actionType == ActionType.DUMMY ? null : actionType.name().toLowerCase();
161+
}
162+
163+
// TODO: vurder å forkorte vekk abac.attributter.
164+
private static String mapResourceType(ResourceType resourceType) {
165+
return switch (resourceType) {
166+
case APPLIKASJON -> "no.nav.abac.attributter.foreldrepenger";
167+
case DRIFT -> "no.nav.abac.attributter.foreldrepenger.drift";
168+
case FAGSAK -> "no.nav.abac.attributter.foreldrepenger.fagsak";
169+
case VENTEFRIST -> "no.nav.abac.attributter.foreldrepenger.fagsak.ventefrist";
170+
case OPPGAVESTYRING_AVDELINGENHET -> "no.nav.abac.attributter.foreldrepenger.oppgavestyring.avdelingsenhet";
171+
case OPPGAVESTYRING -> "no.nav.abac.attributter.foreldrepenger.oppgavestyring";
172+
case UTTAKSPLAN -> "no.nav.abac.attributter.foreldrepenger.uttaksplan";
173+
case PIP, DUMMY -> throw new IllegalArgumentException("Ulovlig resourceType: " + resourceType);
174+
};
175+
}
176+
153177
/**
154178
* Standard hos NAV er at tilgang logges som "INFO" og avslag som "WARN". Merk
155179
* at dette avviker fra CEF-standarden.

felles/abac/src/test/java/no/nav/vedtak/sikkerhet/abac/AbacAuditLoggerTest.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class AbacAuditLoggerTest {
4949

5050
abacAuditlogger.loggUtfall(AbacResultat.GODKJENT, beskyttetRessursAttributter, appRessursData);
5151
assertGotPattern(auditlogger,
52-
"CEF:0|felles|felles-test|1.0|audit:create|ABAC Sporingslogg|INFO|act=create duid=00000000000 end=__NUMBERS__ request=/foo/aktoer_in requestContext=pip.tjeneste.kan.kun.kalles.av.pdp.servicebruker suid=A000000");
52+
"CEF:0|felles|felles-test|1.0|audit:create|ABAC Sporingslogg|INFO|act=create duid=00000000000 end=__NUMBERS__ request=/foo/aktoer_in requestContext=no.nav.abac.attributter.foreldrepenger.fagsak suid=A000000");
5353
}
5454

5555
@Test
@@ -65,7 +65,7 @@ class AbacAuditLoggerTest {
6565
abacAuditlogger.loggUtfall(AbacResultat.GODKJENT, beskyttetRessursAttributter, appRessursData);
6666

6767
assertGotPattern(auditlogger,
68-
"CEF:0|felles|felles-test|1.0|audit:create|ABAC Sporingslogg|INFO|act=create duid=00000000000 end=__NUMBERS__ flexString2=1234 flexString2Label=Behandling request=/foo/behandling_id_in requestContext=pip.tjeneste.kan.kun.kalles.av.pdp.servicebruker suid=A000000");
68+
"CEF:0|felles|felles-test|1.0|audit:create|ABAC Sporingslogg|INFO|act=create duid=00000000000 end=__NUMBERS__ flexString2=1234 flexString2Label=Behandling request=/foo/behandling_id_in requestContext=no.nav.abac.attributter.foreldrepenger.fagsak suid=A000000");
6969
}
7070

7171
@Test
@@ -96,7 +96,7 @@ class AbacAuditLoggerTest {
9696
abacAuditlogger.loggUtfall(AbacResultat.AVSLÅTT_KODE_6, beskyttetRessursAttributter, appRessursData);
9797

9898
assertGotPattern(auditlogger,
99-
"CEF:0|felles|felles-test|1.0|audit:create|ABAC Sporingslogg|WARN|act=create duid=00000000000 end=__NUMBERS__ request=/foo/aktoer_in requestContext=pip.tjeneste.kan.kun.kalles.av.pdp.servicebruker suid=A000000");
99+
"CEF:0|felles|felles-test|1.0|audit:create|ABAC Sporingslogg|WARN|act=create duid=00000000000 end=__NUMBERS__ request=/foo/aktoer_in requestContext=no.nav.abac.attributter.foreldrepenger.fagsak suid=A000000");
100100
}
101101

102102

@@ -144,19 +144,19 @@ private static String unquoteInReplacement(String s) {
144144
@Path("foo")
145145
static class RestClass {
146146

147-
@BeskyttetRessurs(actionType = ActionType.CREATE, resourceType = ResourceType.PIP)
147+
@BeskyttetRessurs(actionType = ActionType.CREATE, resourceType = ResourceType.FAGSAK)
148148
@Path("aktoer_in")
149149
public void aktoerIn(@SuppressWarnings("unused") AktørDto param) {
150150
// Test
151151
}
152152

153-
@BeskyttetRessurs(actionType = ActionType.CREATE, resourceType = ResourceType.PIP)
153+
@BeskyttetRessurs(actionType = ActionType.CREATE, resourceType = ResourceType.FAGSAK)
154154
@Path("behandling_id_in")
155155
public void behandlingIdIn(@SuppressWarnings("unused") BehandlingIdDto param) {
156156
// Test
157157
}
158158

159-
@BeskyttetRessurs(actionType = ActionType.CREATE, resourceType = ResourceType.PIP, sporingslogg = false)
159+
@BeskyttetRessurs(actionType = ActionType.CREATE, resourceType = ResourceType.FAGSAK, sporingslogg = false)
160160
@Path("uten_sporingslogg")
161161
public void utenSporingslogg(@SuppressWarnings("unused") BehandlingIdDto param) {
162162
// Test

0 commit comments

Comments
 (0)