Skip to main content

Syncing audit logs from SAAS

Prophecy provides access to audit logs of activities performed by Prophecy users, allowing your enterprise to monitor detailed usage patterns. The Prophecy admin can configure a S3 bucket to sync these events from Prophecy to their environment.

info

Please note, this is only available for our SaaS Users only. Also, the initial Setup to enable this would require Manual Effort. Please contact us to learn more about this in detail.

An empty AWS S3 bucket with read/write permissions is required. Please follow the guidelines below to set up the bucket correctly.

Configure S3 bucket for logs

  1. Create the S3 Bucket:

    • Log in to your AWS account and navigate to the S3 service.
    • Click on "Create Bucket" to initiate the bucket creation process.
    • Choose a unique name for your bucket, following the format: prophecy-customer-backend-events-xyz, where xyz represents your name or any identifier of your choice.
    • Select the desired AWS Region for the bucket. Ideally, choose the us-east-1 (N. Virginia). If this region is not available, please inform us which region you selected as it requires additional configuration on our end.
  2. Set Object Ownership:

    • After creating the bucket, ensure that the object ownership is set to ACLs disabled (recommended). This can be done during or after the bucket creation process.
  3. Configuring Bucket Permissions for Prophecy:

    • Open the newly created bucket in the AWS Management Console.
    • Go to the "Permissions" section and locate the "Bucket Policy" tab.
    • Apply the following permissions to allow Prophecy's IAM role to sync S3 objects using AWS DataSync.
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "DataSyncCreateS3LocationAndTaskAccess",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::133450206866:role/AWSDataSyncS3BucketAccessCustomerBackendEventsRole"
},
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:AbortMultipartUpload",
"s3:GetObject",
"s3:ListMultipartUploadParts",
"s3:PutObject",
"s3:GetObjectTagging",
"s3:PutObjectTagging",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::prophecy-customer-backend-events-xyz",
"arn:aws:s3:::prophecy-customer-backend-events-xyz/*"
]
},
{
"Sid": "DataSyncCreateS3Location",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::133450206866:user/s3access"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::prophecy-customer-backend-events-xyz"
}
]
}

In the sample above, replace arn:aws:s3:::prophecy-customer-backend-events-xyz with the ARN of your destination bucket.

Please note that we need the Prophecy user principal (s3access) to be able to create S3 location at Prophecy's account and hence require this role with Sid DataSyncCreateS3Location. Please contact us with bucket ARN and region to enable this in your account.

Audit events

This table lists events for each Entity/Action along with the Request parameters grouped by the entity.

info

Please note, Prophecy Uses GraphQL queries so you may find some difference in Request and Response parameters depending upon where the Queries are used from.

EntityQueryDescriptionRequest Parameters
FabricfabricDetailQueryGet Fabric Details["id"]
addFabricAdd a Fabric["name", "ownerUid"]
updateOwnedByUpdate Team owing the Fabric["id","targetUid"]
userFabricQueryGet all Fabrics for User["uid"]
ProjectaddProjectAdd a project["name","forkMode","language", "ownerUid", "mainBranchModificationAllowed"]
getDetailsGet Details of a Project["projectId"]
projectList all projects for User["uid"]
teamProjectAvailableAvailable Projects for that Team["uid", "language"]
addProjectDependencyAdd a dependency Project to Current["projectId", "DependencyProjectUid"]
updateProjectDependencyUpdate dependency Project to a new released version["projectId", "DependencyProjectUid", "ReleaseTag"]
removeProjectDependencyRemoved an added dependency["projectId", "DependencyProjectUid"]
projectDependenciesQueryList all project Dependencies["projectId"]
projectReleaseStatusGives Status of last Release for given project["projectID", "statuses"]
projectSyncFromGitStatus of Git sync of project["uid"]
releaseProjectRelease a Project["branch", "message","version","projectID", "CommitHash"]
gitFooterDetails for Git for commit/branchNAme etc["projectID"]
addSubscriberToProjectAdd Subscriber to a Project["uid", "teamId"]
projectBranchesList of available branches for this project["projectId"]
cloneProjectCreated clone of current project["uid", "name", "teamUid", "copyMainBranchReleaseTags"]
PipelineaddPipelineAdd a new Pipeline["name", "branch", "ownerId", "doCheckout"]
tableQueryPipelineLists all pipelines for project["projectId", "sortOrder", "sortColumn"]
tableQueryPipelineLists all pipelines for User["uid", "sortOrder", "sortColumn"]
pipelineDetailsQueryGet Details of Pipeline["Uid"]
clonePipelineCloned a Pipeline["branch", "sourcePipelineId", "targetPipelineName", "ownerUid", "doCheckout"]
addSubgraphWhen Subgraph is added to a Pipeline["mode", "name", "language", "ownerUID"]
addUDFBulkUDFs added to a Project["udfs.name","udfs.description", "projectUID"]
removeUDFBulkUDFs removed form a project["uids"]
getSubgraphGet Subgraph by given Id["uid"]
JobaddJobAdd a Job["name", "branch","fabricUID", "scheduler", "doCheckout", "projectUID"]
updateJobConfigurationJob configurations are updated["emails", "jobUID", "enabled", "onStart", "fabricId", "onFailure", "onSuccess", "clusterMode", "scheduleCron"]
latestJobReleaseByJobIdAndFabricIDGet Jobs Release by Fabric Id["jobUID", "fabricUID"]
jobReleaseByProjectReleaseGets Jobs Released by Project ID["projectReleaseUID"]
jobQueryGeta a Job by gievn Id["uid"]
addJobReleaseAdds a Job released mapping to project Release["jobUID", "fabricUID", "scheduler", "schedulerJobUID", "projectReleaseUID"]
tableQueryJoblist query for Jobs["uid", "sortOrder", "sortColumn"]
DatasetqueryDatasetWhen Datasets are queried from any page["uid", "optionalProjectUID"]
addDatasetAdded a new Dataset["mode", "name", "ownerUID", "fabricUID", "datasetType"]
addMultipleDatasetsAdd Multiple Datasets["names", "ownerUID", "tableNameList", "schemaNameList", "descriptionsList", "schemaAspectList", "databaseNamesList]
TeamaddTeamAdded a new Team["name", "adminUid"]
getUserTeamGet Teams for a User["uid"]
addteamAdminAdd a user as Admin["teamUid", "userUid", "invitationAccepted"]
userList All teams for Users with Members["uid"]
UsergetUserGet User["email"]
tableQueryUserList query for the User["uid", "sortOrder", "sortColumn"]
userAllFabricInfoAspectGet User Details["uid"]
setPassworduser Sets a new Password["uid", "newPassword"]
GitdeleteBranchDeleted a Branch["projectId", "branchName"]
checkoutCheckout a new branch["projectId" , "branchName"]
prCreationRedirectUrlPr Creation button clicked["to", "from", "projectId"]
createPRPr Creation button clicked[{"to", "from", "toFork", "fromFork":, "projectId"]
cleanCommitCommitted any changes["message", "projectId"]
commitCommit button clicked["branch", "message", "projectId"]
pullOriginpull origin branch["branch", "projectId"]
checkGitConnectionTest Git connection["externalUriArg", "pushAccessCheck", "userGitCredsUID"]
linkSavedCredsToExternalGitLinked Saved Creds to a project["projectUID", "userGitCredsUID"]
unlinkExternalGitUnlink the saved creds["projectUID"]
checkoutWhen USer checks out a new branch["branchName","projectUID"]
branchDivergenceWhen user compares two branches for commit screen["projectId", "branchName", "baseBranchName"]
branchInfoGives details of a particular working branch["projectId", "branchName", "remoteType"]
setPrCreationTemplateWhen user Sets PR creation template["projectId", "customPrTemplate", "prCreationEnabled"}]
getPrCreationTemplateGets PR creation template["projectId"]
deleteUserGitCredsWhen user deleted saved Git creds["uid"]
linkExternalGitLink saved Git creds["projectUID", "externalRepoUri", "userGitCredsUID"]
mergeMasterMerge to master branch["prNumber", "projectId", "entityConflicts", "projectConflicts", "resolvedConflicts"]
TranspilertranspilerImportTranspiler Import started["uid"]
addTranspilerImportImporting files to Prophecy Transpiler["name", "status", "storagePath", "transpilerType"]
GenericremoveEntityWhen any entity is removed["uid", "entityKind"]
updateEntityWhen any entity is updated["uid", "entityKind", "entityFieldName", "entityFieldValue"]