mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-08 09:27:50 +00:00
misc: setup audit logs for oidc identity
This commit is contained in:
@@ -71,6 +71,11 @@ export enum EventType {
|
|||||||
UPDATE_IDENTITY_KUBENETES_AUTH = "update-identity-kubernetes-auth",
|
UPDATE_IDENTITY_KUBENETES_AUTH = "update-identity-kubernetes-auth",
|
||||||
GET_IDENTITY_KUBERNETES_AUTH = "get-identity-kubernetes-auth",
|
GET_IDENTITY_KUBERNETES_AUTH = "get-identity-kubernetes-auth",
|
||||||
REVOKE_IDENTITY_KUBERNETES_AUTH = "revoke-identity-kubernetes-auth",
|
REVOKE_IDENTITY_KUBERNETES_AUTH = "revoke-identity-kubernetes-auth",
|
||||||
|
LOGIN_IDENTITY_OIDC_AUTH = "login-identity-oidc-auth",
|
||||||
|
ADD_IDENTITY_OIDC_AUTH = "add-identity-oidc-auth",
|
||||||
|
UPDATE_IDENTITY_OIDC_AUTH = "update-identity-oidc-auth",
|
||||||
|
GET_IDENTITY_OIDC_AUTH = "get-identity-oidc-auth",
|
||||||
|
REVOKE_IDENTITY_OIDC_AUTH = "revoke-identity-oidc-auth",
|
||||||
CREATE_IDENTITY_UNIVERSAL_AUTH_CLIENT_SECRET = "create-identity-universal-auth-client-secret",
|
CREATE_IDENTITY_UNIVERSAL_AUTH_CLIENT_SECRET = "create-identity-universal-auth-client-secret",
|
||||||
REVOKE_IDENTITY_UNIVERSAL_AUTH_CLIENT_SECRET = "revoke-identity-universal-auth-client-secret",
|
REVOKE_IDENTITY_UNIVERSAL_AUTH_CLIENT_SECRET = "revoke-identity-universal-auth-client-secret",
|
||||||
GET_IDENTITY_UNIVERSAL_AUTH_CLIENT_SECRETS = "get-identity-universal-auth-client-secret",
|
GET_IDENTITY_UNIVERSAL_AUTH_CLIENT_SECRETS = "get-identity-universal-auth-client-secret",
|
||||||
@@ -682,6 +687,63 @@ interface GetIdentityAzureAuthEvent {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface LoginIdentityOidcAuthEvent {
|
||||||
|
type: EventType.LOGIN_IDENTITY_OIDC_AUTH;
|
||||||
|
metadata: {
|
||||||
|
identityId: string;
|
||||||
|
identityOidcAuthId: string;
|
||||||
|
identityAccessTokenId: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
interface AddIdentityOidcAuthEvent {
|
||||||
|
type: EventType.ADD_IDENTITY_OIDC_AUTH;
|
||||||
|
metadata: {
|
||||||
|
identityId: string;
|
||||||
|
oidcDiscoveryUrl: string;
|
||||||
|
caCert: string;
|
||||||
|
boundIssuer: string;
|
||||||
|
boundAudiences: string;
|
||||||
|
boundClaims: Record<string, string>;
|
||||||
|
boundSubject: string;
|
||||||
|
accessTokenTTL: number;
|
||||||
|
accessTokenMaxTTL: number;
|
||||||
|
accessTokenNumUsesLimit: number;
|
||||||
|
accessTokenTrustedIps: Array<TIdentityTrustedIp>;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
interface DeleteIdentityOidcAuthEvent {
|
||||||
|
type: EventType.REVOKE_IDENTITY_OIDC_AUTH;
|
||||||
|
metadata: {
|
||||||
|
identityId: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
interface UpdateIdentityOidcAuthEvent {
|
||||||
|
type: EventType.UPDATE_IDENTITY_OIDC_AUTH;
|
||||||
|
metadata: {
|
||||||
|
identityId: string;
|
||||||
|
oidcDiscoveryUrl?: string;
|
||||||
|
caCert?: string;
|
||||||
|
boundIssuer?: string;
|
||||||
|
boundAudiences?: string;
|
||||||
|
boundClaims?: Record<string, string>;
|
||||||
|
boundSubject?: string;
|
||||||
|
accessTokenTTL?: number;
|
||||||
|
accessTokenMaxTTL?: number;
|
||||||
|
accessTokenNumUsesLimit?: number;
|
||||||
|
accessTokenTrustedIps?: Array<TIdentityTrustedIp>;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
interface GetIdentityOidcAuthEvent {
|
||||||
|
type: EventType.GET_IDENTITY_OIDC_AUTH;
|
||||||
|
metadata: {
|
||||||
|
identityId: string;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
interface CreateEnvironmentEvent {
|
interface CreateEnvironmentEvent {
|
||||||
type: EventType.CREATE_ENVIRONMENT;
|
type: EventType.CREATE_ENVIRONMENT;
|
||||||
metadata: {
|
metadata: {
|
||||||
@@ -1078,6 +1140,11 @@ export type Event =
|
|||||||
| DeleteIdentityAzureAuthEvent
|
| DeleteIdentityAzureAuthEvent
|
||||||
| UpdateIdentityAzureAuthEvent
|
| UpdateIdentityAzureAuthEvent
|
||||||
| GetIdentityAzureAuthEvent
|
| GetIdentityAzureAuthEvent
|
||||||
|
| LoginIdentityOidcAuthEvent
|
||||||
|
| AddIdentityOidcAuthEvent
|
||||||
|
| DeleteIdentityOidcAuthEvent
|
||||||
|
| UpdateIdentityOidcAuthEvent
|
||||||
|
| GetIdentityOidcAuthEvent
|
||||||
| CreateEnvironmentEvent
|
| CreateEnvironmentEvent
|
||||||
| UpdateEnvironmentEvent
|
| UpdateEnvironmentEvent
|
||||||
| DeleteEnvironmentEvent
|
| DeleteEnvironmentEvent
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
|
|
||||||
import { IdentityOidcAuthsSchema } from "@app/db/schemas";
|
import { IdentityOidcAuthsSchema } from "@app/db/schemas";
|
||||||
|
import { EventType } from "@app/ee/services/audit-log/audit-log-types";
|
||||||
import { readLimit, writeLimit } from "@app/server/config/rateLimiter";
|
import { readLimit, writeLimit } from "@app/server/config/rateLimiter";
|
||||||
import { verifyAuth } from "@app/server/plugins/auth/verify-auth";
|
import { verifyAuth } from "@app/server/plugins/auth/verify-auth";
|
||||||
import { AuthMode } from "@app/services/auth/auth-type";
|
import { AuthMode } from "@app/services/auth/auth-type";
|
||||||
|
import { TIdentityTrustedIp } from "@app/services/identity/identity-types";
|
||||||
import { validateOidcAuthAudiencesField } from "@app/services/identity-oidc-auth/identity-oidc-auth-validators";
|
import { validateOidcAuthAudiencesField } from "@app/services/identity-oidc-auth/identity-oidc-auth-validators";
|
||||||
|
|
||||||
const IdentityOidcAuthResponseSchema = IdentityOidcAuthsSchema.omit({
|
const IdentityOidcAuthResponseSchema = IdentityOidcAuthsSchema.omit({
|
||||||
@@ -79,6 +81,27 @@ export const registerIdentityOidcAuthRouter = async (server: FastifyZodProvider)
|
|||||||
identityId: req.params.identityId
|
identityId: req.params.identityId
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await server.services.auditLog.createAuditLog({
|
||||||
|
...req.auditLogInfo,
|
||||||
|
orgId: identityOidcAuth.orgId,
|
||||||
|
event: {
|
||||||
|
type: EventType.ADD_IDENTITY_OIDC_AUTH,
|
||||||
|
metadata: {
|
||||||
|
identityId: identityOidcAuth.identityId,
|
||||||
|
oidcDiscoveryUrl: identityOidcAuth.oidcDiscoveryUrl,
|
||||||
|
caCert: identityOidcAuth.caCert,
|
||||||
|
boundIssuer: identityOidcAuth.boundIssuer,
|
||||||
|
boundAudiences: identityOidcAuth.boundAudiences,
|
||||||
|
boundClaims: identityOidcAuth.boundClaims as Record<string, string>,
|
||||||
|
boundSubject: identityOidcAuth.boundSubject as string,
|
||||||
|
accessTokenTTL: identityOidcAuth.accessTokenTTL,
|
||||||
|
accessTokenMaxTTL: identityOidcAuth.accessTokenMaxTTL,
|
||||||
|
accessTokenTrustedIps: identityOidcAuth.accessTokenTrustedIps as TIdentityTrustedIp[],
|
||||||
|
accessTokenNumUsesLimit: identityOidcAuth.accessTokenNumUsesLimit
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
identityOidcAuth
|
identityOidcAuth
|
||||||
};
|
};
|
||||||
@@ -151,6 +174,27 @@ export const registerIdentityOidcAuthRouter = async (server: FastifyZodProvider)
|
|||||||
identityId: req.params.identityId
|
identityId: req.params.identityId
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await server.services.auditLog.createAuditLog({
|
||||||
|
...req.auditLogInfo,
|
||||||
|
orgId: identityOidcAuth.orgId,
|
||||||
|
event: {
|
||||||
|
type: EventType.UPDATE_IDENTITY_OIDC_AUTH,
|
||||||
|
metadata: {
|
||||||
|
identityId: identityOidcAuth.identityId,
|
||||||
|
oidcDiscoveryUrl: identityOidcAuth.oidcDiscoveryUrl,
|
||||||
|
caCert: identityOidcAuth.caCert,
|
||||||
|
boundIssuer: identityOidcAuth.boundIssuer,
|
||||||
|
boundAudiences: identityOidcAuth.boundAudiences,
|
||||||
|
boundClaims: identityOidcAuth.boundClaims as Record<string, string>,
|
||||||
|
boundSubject: identityOidcAuth.boundSubject as string,
|
||||||
|
accessTokenTTL: identityOidcAuth.accessTokenTTL,
|
||||||
|
accessTokenMaxTTL: identityOidcAuth.accessTokenMaxTTL,
|
||||||
|
accessTokenTrustedIps: identityOidcAuth.accessTokenTrustedIps as TIdentityTrustedIp[],
|
||||||
|
accessTokenNumUsesLimit: identityOidcAuth.accessTokenNumUsesLimit
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return { identityOidcAuth };
|
return { identityOidcAuth };
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -187,6 +231,17 @@ export const registerIdentityOidcAuthRouter = async (server: FastifyZodProvider)
|
|||||||
actorAuthMethod: req.permission.authMethod
|
actorAuthMethod: req.permission.authMethod
|
||||||
});
|
});
|
||||||
|
|
||||||
|
await server.services.auditLog.createAuditLog({
|
||||||
|
...req.auditLogInfo,
|
||||||
|
orgId: identityOidcAuth.orgId,
|
||||||
|
event: {
|
||||||
|
type: EventType.GET_IDENTITY_OIDC_AUTH,
|
||||||
|
metadata: {
|
||||||
|
identityId: identityOidcAuth.identityId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return { identityOidcAuth };
|
return { identityOidcAuth };
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user