use of io.gravitee.am.reporter.api.audit.model.AuditAccessPoint in project gravitee-access-management by gravitee-io.
the class FileAuditReporterTest method buildRandomAudit.
protected Audit buildRandomAudit(ReferenceType refType, String refId) {
String random = UUID.randomUUID().toString();
Audit reportable = new Audit();
reportable.setId(random);
reportable.setType("type" + random);
reportable.setTransactionId("transaction" + random);
reportable.setReferenceType(refType);
reportable.setReferenceId(refId);
reportable.setTimestamp(Instant.now());
AuditEntity target = new AuditEntity();
target.setReferenceType(ReferenceType.ORGANIZATION);
target.setReferenceId("org" + random);
target.setAlternativeId("altid" + random);
target.setType("type" + random);
target.setAttributes(Collections.singletonMap("key1", "value1"));
reportable.setTarget(target);
AuditEntity actor = new AuditEntity();
actor.setReferenceType(ReferenceType.ENVIRONMENT);
actor.setReferenceId("env" + random);
actor.setAlternativeId("altid" + random);
actor.setType("type" + random);
actor.setAttributes(Collections.singletonMap("key1", "value1"));
reportable.setActor(actor);
AuditOutcome outcome = new AuditOutcome();
outcome.setStatus("SUCCESS");
outcome.setMessage("Message" + random);
reportable.setOutcome(outcome);
AuditAccessPoint accessPoint = new AuditAccessPoint();
accessPoint.setId("id" + random);
accessPoint.setIpAddress("127.0.0.1");
accessPoint.setUserAgent("useragent" + random);
reportable.setAccessPoint(accessPoint);
return reportable;
}
use of io.gravitee.am.reporter.api.audit.model.AuditAccessPoint in project gravitee-access-management by gravitee-io.
the class JdbcAuditReporter method insertReport.
private Mono insertReport(Audit audit) {
TransactionalOperator trx = TransactionalOperator.create(tm);
DatabaseClient.GenericExecuteSpec insertSpec = template.getDatabaseClient().sql(INSERT_AUDIT_STATEMENT);
insertSpec = addQuotedField(insertSpec, COL_ID, audit.getId(), String.class);
insertSpec = addQuotedField(insertSpec, COL_TRANSACTION_ID, audit.getTransactionId(), String.class);
insertSpec = addQuotedField(insertSpec, COL_TYPE, audit.getType(), String.class);
insertSpec = addQuotedField(insertSpec, COL_REFERENCE_TYPE, audit.getReferenceType() == null ? null : audit.getReferenceType().name(), String.class);
insertSpec = addQuotedField(insertSpec, COL_REFERENCE_ID, audit.getReferenceId(), String.class);
insertSpec = addQuotedField(insertSpec, COL_TIMESTAMP, LocalDateTime.ofInstant(audit.timestamp(), ZoneId.of(ZoneOffset.UTC.getId())), LocalDateTime.class);
Mono<Integer> insertAction = insertSpec.fetch().rowsUpdated();
AuditEntity actor = audit.getActor();
if (actor != null) {
insertAction = insertAction.then(prepateInsertEntity(audit, actor, AUDIT_FIELD_ACTOR));
}
AuditEntity target = audit.getTarget();
if (target != null) {
insertAction = insertAction.then(prepateInsertEntity(audit, target, AUDIT_FIELD_TARGET));
}
AuditOutcome outcome = audit.getOutcome();
if (outcome != null) {
DatabaseClient.GenericExecuteSpec insertOutcomeSpec = template.getDatabaseClient().sql(INSERT_OUTCOMES_STATEMENT);
insertOutcomeSpec = addQuotedField(insertOutcomeSpec, COL_AUDIT_ID, audit.getId(), String.class);
insertOutcomeSpec = addQuotedField(insertOutcomeSpec, COL_STATUS, outcome.getStatus(), String.class);
insertOutcomeSpec = addQuotedField(insertOutcomeSpec, COL_MESSAGE, outcome.getMessage(), String.class);
insertAction = insertAction.then(insertOutcomeSpec.fetch().rowsUpdated());
}
AuditAccessPoint accessPoint = audit.getAccessPoint();
if (accessPoint != null) {
DatabaseClient.GenericExecuteSpec insertAccessPointSpec = template.getDatabaseClient().sql(INSERT_ACCESSPOINT_STATEMENT);
insertAccessPointSpec = addQuotedField(insertAccessPointSpec, COL_AUDIT_ID, audit.getId(), String.class);
insertAccessPointSpec = addQuotedField(insertAccessPointSpec, COL_ID, accessPoint.getId(), String.class);
insertAccessPointSpec = addQuotedField(insertAccessPointSpec, COL_ALTERNATIVE_ID, accessPoint.getAlternativeId(), String.class);
insertAccessPointSpec = addQuotedField(insertAccessPointSpec, COL_DISPLAY_NAME, accessPoint.getDisplayName(), String.class);
insertAccessPointSpec = addQuotedField(insertAccessPointSpec, COL_IP_ADDRESS, accessPoint.getIpAddress(), String.class);
insertAccessPointSpec = addQuotedField(insertAccessPointSpec, COL_USER_AGENT, accessPoint.getUserAgent(), String.class);
insertAction = insertAction.then(insertAccessPointSpec.fetch().rowsUpdated());
}
return insertAction.as(trx::transactional);
}
use of io.gravitee.am.reporter.api.audit.model.AuditAccessPoint in project gravitee-access-management by gravitee-io.
the class MongoAuditReporter method convert.
private AuditMongo convert(Audit audit) {
AuditMongo auditMongo = new AuditMongo();
auditMongo.setId(audit.getId());
auditMongo.setTransactionId(audit.getTransactionId());
auditMongo.setReferenceType(audit.getReferenceType());
auditMongo.setReferenceId(audit.getReferenceId());
auditMongo.setType(audit.getType());
auditMongo.setTimestamp(audit.timestamp());
// actor
if (audit.getActor() != null) {
AuditEntity actor = audit.getActor();
AuditEntityMongo actorMongo = new AuditEntityMongo();
actorMongo.setId(actor.getId());
actorMongo.setAlternativeId(actor.getAlternativeId());
actorMongo.setType(actor.getType());
actorMongo.setDisplayName(actor.getDisplayName());
actorMongo.setReferenceType(actor.getReferenceType() != null ? actor.getReferenceType().name() : null);
actorMongo.setReferenceId(actor.getReferenceId());
auditMongo.setActor(actorMongo);
}
// access point
if (audit.getAccessPoint() != null) {
AuditAccessPoint accessPoint = audit.getAccessPoint();
AuditAccessPointMongo accessPointMongo = new AuditAccessPointMongo();
accessPointMongo.setId(accessPoint.getId());
accessPointMongo.setAlternativeId(accessPoint.getAlternativeId());
accessPointMongo.setDisplayName(accessPoint.getDisplayName());
accessPointMongo.setIpAddress(accessPoint.getIpAddress());
accessPointMongo.setUserAgent(accessPoint.getUserAgent());
auditMongo.setAccessPoint(accessPointMongo);
}
// target
if (audit.getTarget() != null) {
AuditEntity target = audit.getTarget();
AuditEntityMongo targetMongo = new AuditEntityMongo();
targetMongo.setId(target.getId());
targetMongo.setType(target.getType());
targetMongo.setAlternativeId(target.getAlternativeId());
targetMongo.setDisplayName(target.getDisplayName());
targetMongo.setReferenceType(target.getReferenceType() != null ? target.getReferenceType().name() : null);
targetMongo.setReferenceId(target.getReferenceId());
auditMongo.setTarget(targetMongo);
}
// outcome
if (audit.getOutcome() != null) {
AuditOutcome result = audit.getOutcome();
AuditOutcomeMongo resultMongo = new AuditOutcomeMongo();
resultMongo.setStatus(result.getStatus());
resultMongo.setMessage(result.getMessage());
auditMongo.setOutcome(resultMongo);
}
return auditMongo;
}
use of io.gravitee.am.reporter.api.audit.model.AuditAccessPoint in project gravitee-access-management by gravitee-io.
the class FileAuditReporter method convert.
private AuditEntry convert(Reportable reportable) {
AuditEntry entry = new AuditEntry();
entry.setId(((Audit) reportable).getId());
entry.setReferenceId(((Audit) reportable).getReferenceId());
entry.setReferenceType(((Audit) reportable).getReferenceType());
entry.setTimestamp(reportable.timestamp());
entry.setTransactionId(((Audit) reportable).getTransactionId());
entry.setType(((Audit) reportable).getType());
// do not copy message part of the status
entry.setStatus(((Audit) reportable).getOutcome() != null ? ((Audit) reportable).getOutcome().getStatus() : null);
// copy access point and replace invalid IP
AuditAccessPoint accessPoint = ((Audit) reportable).getAccessPoint();
if (accessPoint != null) {
entry.setAccessPoint(new AuditAccessPoint(accessPoint));
if (accessPoint.getIpAddress() != null && !InetAddressValidator.getInstance().isValid(accessPoint.getIpAddress())) {
entry.getAccessPoint().setIpAddress("0.0.0.0");
}
}
AuditEntity actor = ((Audit) reportable).getActor();
if (actor != null) {
AuditEntity cloneOfActor = new AuditEntity(actor);
cloneOfActor.setAttributes(null);
entry.setActor(cloneOfActor);
}
AuditEntity target = ((Audit) reportable).getTarget();
if (target != null) {
AuditEntity cloneOfTarget = new AuditEntity(target);
cloneOfTarget.setAttributes(null);
entry.setTarget(cloneOfTarget);
}
// link event to the organization and to the environment
entry.setOrganizationId(context.getOrganizationId());
entry.setEnvironmentId(context.getEnvironmentId());
// add node information
if (node != null) {
entry.setNodeId(node.id());
entry.setNodeHostname(node.hostname());
}
return entry;
}
use of io.gravitee.am.reporter.api.audit.model.AuditAccessPoint in project gravitee-access-management by gravitee-io.
the class DtoMapperUTests method Should_MapAuditAccessPointIntoAuditAccessPointDto.
@Test
public void Should_MapAuditAccessPointIntoAuditAccessPointDto() {
DtoMapper mapper = new DtoMapper();
AuditAccessPoint auditAccessPoint = new AuditAccessPoint();
auditAccessPoint.setId("id");
auditAccessPoint.setAlternativeId("alternative id");
auditAccessPoint.setDisplayName("Display Name");
auditAccessPoint.setIpAddress("10.0.0.1");
auditAccessPoint.setUserAgent("Chrome");
AuditAccessPointDto dto = mapper.map(auditAccessPoint);
Assert.assertEquals("id", dto.getId());
Assert.assertEquals("alternative id", dto.getAlternativeId());
Assert.assertEquals("Display Name", dto.getDisplayName());
Assert.assertEquals("10.0.0.1", dto.getIpAddress());
Assert.assertEquals("Chrome", dto.getUserAgent());
}
Aggregations