Search in sources :

Example 1 with AuditAccessPoint

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;
}
Also used : AuditEntity(io.gravitee.am.reporter.api.audit.model.AuditEntity) Audit(io.gravitee.am.reporter.api.audit.model.Audit) AuditOutcome(io.gravitee.am.reporter.api.audit.model.AuditOutcome) AuditAccessPoint(io.gravitee.am.reporter.api.audit.model.AuditAccessPoint)

Example 2 with AuditAccessPoint

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);
}
Also used : TransactionalOperator(org.springframework.transaction.reactive.TransactionalOperator) LocalDateTime(java.time.LocalDateTime) AuditEntity(io.gravitee.am.reporter.api.audit.model.AuditEntity) DatabaseClient(org.springframework.r2dbc.core.DatabaseClient) AuditOutcome(io.gravitee.am.reporter.api.audit.model.AuditOutcome) AuditAccessPoint(io.gravitee.am.reporter.api.audit.model.AuditAccessPoint)

Example 3 with AuditAccessPoint

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;
}
Also used : AuditEntity(io.gravitee.am.reporter.api.audit.model.AuditEntity) AuditOutcome(io.gravitee.am.reporter.api.audit.model.AuditOutcome) AuditEntityMongo(io.gravitee.am.reporter.mongodb.audit.model.AuditEntityMongo) AuditMongo(io.gravitee.am.reporter.mongodb.audit.model.AuditMongo) AuditAccessPoint(io.gravitee.am.reporter.api.audit.model.AuditAccessPoint) AuditAccessPointMongo(io.gravitee.am.reporter.mongodb.audit.model.AuditAccessPointMongo) AuditOutcomeMongo(io.gravitee.am.reporter.mongodb.audit.model.AuditOutcomeMongo)

Example 4 with AuditAccessPoint

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;
}
Also used : AuditEntity(io.gravitee.am.reporter.api.audit.model.AuditEntity) Audit(io.gravitee.am.reporter.api.audit.model.Audit) AuditAccessPoint(io.gravitee.am.reporter.api.audit.model.AuditAccessPoint)

Example 5 with AuditAccessPoint

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());
}
Also used : AuditAccessPoint(io.gravitee.am.reporter.api.audit.model.AuditAccessPoint) AuditAccessPointDto(io.gravitee.am.reporter.kafka.dto.AuditAccessPointDto) Test(org.junit.Test)

Aggregations

AuditAccessPoint (io.gravitee.am.reporter.api.audit.model.AuditAccessPoint)12 AuditEntity (io.gravitee.am.reporter.api.audit.model.AuditEntity)9 AuditOutcome (io.gravitee.am.reporter.api.audit.model.AuditOutcome)7 Audit (io.gravitee.am.reporter.api.audit.model.Audit)6 AuditAccessPointDto (io.gravitee.am.reporter.kafka.dto.AuditAccessPointDto)2 AuditAccessPointMongo (io.gravitee.am.reporter.mongodb.audit.model.AuditAccessPointMongo)2 AuditEntityMongo (io.gravitee.am.reporter.mongodb.audit.model.AuditEntityMongo)2 AuditOutcomeMongo (io.gravitee.am.reporter.mongodb.audit.model.AuditOutcomeMongo)2 Test (org.junit.Test)2 ArrayNode (com.fasterxml.jackson.databind.node.ArrayNode)1 ContainerNode (com.fasterxml.jackson.databind.node.ContainerNode)1 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)1 AuditMessageValueDto (io.gravitee.am.reporter.kafka.dto.AuditMessageValueDto)1 AuditMongo (io.gravitee.am.reporter.mongodb.audit.model.AuditMongo)1 LocalDateTime (java.time.LocalDateTime)1 DatabaseClient (org.springframework.r2dbc.core.DatabaseClient)1 TransactionalOperator (org.springframework.transaction.reactive.TransactionalOperator)1