pam: return metadata for pam access requests

This commit is contained in:
x032205
2025-11-04 21:29:05 -05:00
parent 1f38eed974
commit fc395bf661
2 changed files with 28 additions and 2 deletions
@@ -92,7 +92,8 @@ export const registerPamAccountRouter = async (server: FastifyZodProvider) => {
gatewayClientCertificate: z.string(), gatewayClientCertificate: z.string(),
gatewayClientPrivateKey: z.string(), gatewayClientPrivateKey: z.string(),
gatewayServerCertificateChain: z.string(), gatewayServerCertificateChain: z.string(),
relayHost: z.string() relayHost: z.string(),
metadata: z.record(z.string(), z.string()).optional()
}) })
} }
}, },
@@ -480,6 +480,30 @@ export const pamAccountServiceFactory = ({
throw new NotFoundError({ message: `Gateway connection details for gateway '${gatewayId}' not found.` }); throw new NotFoundError({ message: `Gateway connection details for gateway '${gatewayId}' not found.` });
} }
let metadata;
switch (resourceType) {
case PamResource.Postgres:
case PamResource.MySQL: {
const connectionCredentials = await decryptResourceConnectionDetails({
encryptedConnectionDetails: resource.encryptedConnectionDetails,
kmsService,
projectId: account.projectId
});
const credentials = await decryptAccountCredentials({
encryptedCredentials: account.encryptedCredentials,
kmsService,
projectId: account.projectId
});
metadata = {
username: credentials.username,
database: connectionCredentials.database
};
}
}
return { return {
sessionId: session.id, sessionId: session.id,
resourceType, resourceType,
@@ -491,7 +515,8 @@ export const pamAccountServiceFactory = ({
gatewayServerCertificateChain: gatewayConnectionDetails.gateway.serverCertificateChain, gatewayServerCertificateChain: gatewayConnectionDetails.gateway.serverCertificateChain,
relayHost: gatewayConnectionDetails.relayHost, relayHost: gatewayConnectionDetails.relayHost,
projectId: account.projectId, projectId: account.projectId,
account account,
metadata
}; };
}; };