@grc-claw/integration-marketplace 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/IntegrationMarketplace.d.ts +32 -0
- package/dist/IntegrationMarketplace.js +319 -0
- package/dist/connectors/ADPConnector.d.ts +12 -0
- package/dist/connectors/ADPConnector.js +97 -0
- package/dist/connectors/AWSCloudTrailConnector.d.ts +12 -0
- package/dist/connectors/AWSCloudTrailConnector.js +77 -0
- package/dist/connectors/AWSCloudWatchConnector.d.ts +12 -0
- package/dist/connectors/AWSCloudWatchConnector.js +70 -0
- package/dist/connectors/AWSGuardDutyConnector.d.ts +12 -0
- package/dist/connectors/AWSGuardDutyConnector.js +139 -0
- package/dist/connectors/AWSIAMConnector.d.ts +12 -0
- package/dist/connectors/AWSIAMConnector.js +90 -0
- package/dist/connectors/AWSKMSConnector.d.ts +12 -0
- package/dist/connectors/AWSKMSConnector.js +70 -0
- package/dist/connectors/AWSLambdaConnector.d.ts +12 -0
- package/dist/connectors/AWSLambdaConnector.js +84 -0
- package/dist/connectors/AWSRDSConnector.d.ts +12 -0
- package/dist/connectors/AWSRDSConnector.js +84 -0
- package/dist/connectors/AWSS3Connector.d.ts +12 -0
- package/dist/connectors/AWSS3Connector.js +112 -0
- package/dist/connectors/AkamaiConnector.d.ts +12 -0
- package/dist/connectors/AkamaiConnector.js +98 -0
- package/dist/connectors/ArgoCDConnector.d.ts +12 -0
- package/dist/connectors/ArgoCDConnector.js +93 -0
- package/dist/connectors/ArtifactoryConnector.d.ts +12 -0
- package/dist/connectors/ArtifactoryConnector.js +94 -0
- package/dist/connectors/AtlassianJiraConnector.d.ts +12 -0
- package/dist/connectors/AtlassianJiraConnector.js +134 -0
- package/dist/connectors/Auth0Connector.d.ts +12 -0
- package/dist/connectors/Auth0Connector.js +150 -0
- package/dist/connectors/AzureADConnector.d.ts +12 -0
- package/dist/connectors/AzureADConnector.js +115 -0
- package/dist/connectors/AzureDevOpsConnector.d.ts +12 -0
- package/dist/connectors/AzureDevOpsConnector.js +130 -0
- package/dist/connectors/AzureDevOpsPipelinesConnector.d.ts +12 -0
- package/dist/connectors/AzureDevOpsPipelinesConnector.js +72 -0
- package/dist/connectors/AzurePipelinesConnector.d.ts +12 -0
- package/dist/connectors/AzurePipelinesConnector.js +72 -0
- package/dist/connectors/AzurePolicyConnector.d.ts +12 -0
- package/dist/connectors/AzurePolicyConnector.js +141 -0
- package/dist/connectors/AzureReposConnector.d.ts +12 -0
- package/dist/connectors/AzureReposConnector.js +96 -0
- package/dist/connectors/AzureSentinelConnector.d.ts +12 -0
- package/dist/connectors/AzureSentinelConnector.js +88 -0
- package/dist/connectors/BambooCICDConnector.d.ts +12 -0
- package/dist/connectors/BambooCICDConnector.js +72 -0
- package/dist/connectors/BambooHRConnector.d.ts +12 -0
- package/dist/connectors/BambooHRConnector.js +84 -0
- package/dist/connectors/BeyondTrustConnector.d.ts +12 -0
- package/dist/connectors/BeyondTrustConnector.js +94 -0
- package/dist/connectors/BitbucketConnector.d.ts +12 -0
- package/dist/connectors/BitbucketConnector.js +100 -0
- package/dist/connectors/BitbucketPipelinesConnector.d.ts +12 -0
- package/dist/connectors/BitbucketPipelinesConnector.js +72 -0
- package/dist/connectors/BoxConnector.d.ts +12 -0
- package/dist/connectors/BoxConnector.js +122 -0
- package/dist/connectors/BuildkiteConnector.d.ts +12 -0
- package/dist/connectors/BuildkiteConnector.js +95 -0
- package/dist/connectors/CarbonBlackConnector.d.ts +12 -0
- package/dist/connectors/CarbonBlackConnector.js +89 -0
- package/dist/connectors/CassandraConnector.d.ts +12 -0
- package/dist/connectors/CassandraConnector.js +69 -0
- package/dist/connectors/CheckPointConnector.d.ts +12 -0
- package/dist/connectors/CheckPointConnector.js +98 -0
- package/dist/connectors/CircleCIConnector.d.ts +12 -0
- package/dist/connectors/CircleCIConnector.js +129 -0
- package/dist/connectors/CircleCIConnectorsConnector.d.ts +12 -0
- package/dist/connectors/CircleCIConnectorsConnector.js +69 -0
- package/dist/connectors/CiscoUmbrellaConnector.d.ts +12 -0
- package/dist/connectors/CiscoUmbrellaConnector.js +96 -0
- package/dist/connectors/CloudBeesJenkinsConnector.d.ts +12 -0
- package/dist/connectors/CloudBeesJenkinsConnector.js +70 -0
- package/dist/connectors/CloudflareDNSConnector.d.ts +12 -0
- package/dist/connectors/CloudflareDNSConnector.js +71 -0
- package/dist/connectors/CloudflareWAFConnector.d.ts +12 -0
- package/dist/connectors/CloudflareWAFConnector.js +98 -0
- package/dist/connectors/ConfluenceConnector.d.ts +12 -0
- package/dist/connectors/ConfluenceConnector.js +101 -0
- package/dist/connectors/ConstantContactConnector.d.ts +12 -0
- package/dist/connectors/ConstantContactConnector.js +70 -0
- package/dist/connectors/CouchDBConnector.d.ts +12 -0
- package/dist/connectors/CouchDBConnector.js +69 -0
- package/dist/connectors/CrowdStrikeConnector.d.ts +12 -0
- package/dist/connectors/CrowdStrikeConnector.js +86 -0
- package/dist/connectors/CrowdStrikeFalconConnector.d.ts +12 -0
- package/dist/connectors/CrowdStrikeFalconConnector.js +92 -0
- package/dist/connectors/CrowdStrikeSpotlightConnector.d.ts +12 -0
- package/dist/connectors/CrowdStrikeSpotlightConnector.js +139 -0
- package/dist/connectors/CyberArkConnector.d.ts +12 -0
- package/dist/connectors/CyberArkConnector.js +95 -0
- package/dist/connectors/DatabricksConnector.d.ts +12 -0
- package/dist/connectors/DatabricksConnector.js +95 -0
- package/dist/connectors/DatadogConnector.d.ts +12 -0
- package/dist/connectors/DatadogConnector.js +110 -0
- package/dist/connectors/DigitalOceanConnector.d.ts +12 -0
- package/dist/connectors/DigitalOceanConnector.js +85 -0
- package/dist/connectors/DiscordConnector.d.ts +12 -0
- package/dist/connectors/DiscordConnector.js +98 -0
- package/dist/connectors/DockerHubConnector.d.ts +12 -0
- package/dist/connectors/DockerHubConnector.js +80 -0
- package/dist/connectors/DocuSignConnector.d.ts +12 -0
- package/dist/connectors/DocuSignConnector.js +96 -0
- package/dist/connectors/DriftConnector.d.ts +12 -0
- package/dist/connectors/DriftConnector.js +69 -0
- package/dist/connectors/DropboxConnector.d.ts +12 -0
- package/dist/connectors/DropboxConnector.js +127 -0
- package/dist/connectors/ESETConnector.d.ts +12 -0
- package/dist/connectors/ESETConnector.js +70 -0
- package/dist/connectors/ElasticsearchCloudConnector.d.ts +12 -0
- package/dist/connectors/ElasticsearchCloudConnector.js +70 -0
- package/dist/connectors/FSecureConnector.d.ts +12 -0
- package/dist/connectors/FSecureConnector.js +70 -0
- package/dist/connectors/FeatureFlagConnector.d.ts +12 -0
- package/dist/connectors/FeatureFlagConnector.js +70 -0
- package/dist/connectors/FluxCDConnector.d.ts +12 -0
- package/dist/connectors/FluxCDConnector.js +94 -0
- package/dist/connectors/ForgeRockConnector.d.ts +12 -0
- package/dist/connectors/ForgeRockConnector.js +95 -0
- package/dist/connectors/FortinetConnector.d.ts +12 -0
- package/dist/connectors/FortinetConnector.js +98 -0
- package/dist/connectors/FreshdeskConnector.d.ts +12 -0
- package/dist/connectors/FreshdeskConnector.js +71 -0
- package/dist/connectors/GCPBigQueryConnector.d.ts +12 -0
- package/dist/connectors/GCPBigQueryConnector.js +71 -0
- package/dist/connectors/GCPComputeConnector.d.ts +12 -0
- package/dist/connectors/GCPComputeConnector.js +87 -0
- package/dist/connectors/GCPConfigConnector.d.ts +12 -0
- package/dist/connectors/GCPConfigConnector.js +149 -0
- package/dist/connectors/GCPFirestoreConnector.d.ts +12 -0
- package/dist/connectors/GCPFirestoreConnector.js +71 -0
- package/dist/connectors/GCPIAMConnector.d.ts +12 -0
- package/dist/connectors/GCPIAMConnector.js +98 -0
- package/dist/connectors/GCPSCCConnector.d.ts +12 -0
- package/dist/connectors/GCPSCCConnector.js +94 -0
- package/dist/connectors/GitHubActionsConnector.d.ts +12 -0
- package/dist/connectors/GitHubActionsConnector.js +104 -0
- package/dist/connectors/GitHubConnector.d.ts +12 -0
- package/dist/connectors/GitHubConnector.js +135 -0
- package/dist/connectors/GitHubCopilotConnector.d.ts +12 -0
- package/dist/connectors/GitHubCopilotConnector.js +72 -0
- package/dist/connectors/GitLabCIConnector.d.ts +12 -0
- package/dist/connectors/GitLabCIConnector.js +71 -0
- package/dist/connectors/GitLabConnector.d.ts +12 -0
- package/dist/connectors/GitLabConnector.js +101 -0
- package/dist/connectors/GitLabSASTConnector.d.ts +12 -0
- package/dist/connectors/GitLabSASTConnector.js +130 -0
- package/dist/connectors/GoogleWorkspaceConnector.d.ts +12 -0
- package/dist/connectors/GoogleWorkspaceConnector.js +136 -0
- package/dist/connectors/HelmConnector.d.ts +12 -0
- package/dist/connectors/HelmConnector.js +94 -0
- package/dist/connectors/HubSpotConnector.d.ts +12 -0
- package/dist/connectors/HubSpotConnector.js +77 -0
- package/dist/connectors/IFTTTConnector.d.ts +12 -0
- package/dist/connectors/IFTTTConnector.js +70 -0
- package/dist/connectors/ImpervaConnector.d.ts +12 -0
- package/dist/connectors/ImpervaConnector.js +94 -0
- package/dist/connectors/InfluxDBConnector.d.ts +12 -0
- package/dist/connectors/InfluxDBConnector.js +70 -0
- package/dist/connectors/IntercomConnector.d.ts +12 -0
- package/dist/connectors/IntercomConnector.js +69 -0
- package/dist/connectors/JenkinsConnector.d.ts +12 -0
- package/dist/connectors/JenkinsConnector.js +96 -0
- package/dist/connectors/JiraConnector.d.ts +12 -0
- package/dist/connectors/JiraConnector.js +103 -0
- package/dist/connectors/KafkaConnector.d.ts +12 -0
- package/dist/connectors/KafkaConnector.js +70 -0
- package/dist/connectors/KasperskyConnector.d.ts +12 -0
- package/dist/connectors/KasperskyConnector.js +70 -0
- package/dist/connectors/KubernetesConnector.d.ts +12 -0
- package/dist/connectors/KubernetesConnector.js +109 -0
- package/dist/connectors/LaceworkConnector.d.ts +13 -0
- package/dist/connectors/LaceworkConnector.js +143 -0
- package/dist/connectors/LaunchDarklyConnector.d.ts +12 -0
- package/dist/connectors/LaunchDarklyConnector.js +86 -0
- package/dist/connectors/LinodeConnector.d.ts +12 -0
- package/dist/connectors/LinodeConnector.js +70 -0
- package/dist/connectors/LookerConnector.d.ts +12 -0
- package/dist/connectors/LookerConnector.js +94 -0
- package/dist/connectors/MailchimpConnector.d.ts +12 -0
- package/dist/connectors/MailchimpConnector.js +71 -0
- package/dist/connectors/MalwarebytesConnector.d.ts +12 -0
- package/dist/connectors/MalwarebytesConnector.js +85 -0
- package/dist/connectors/McAfeeConnector.d.ts +12 -0
- package/dist/connectors/McAfeeConnector.js +85 -0
- package/dist/connectors/Microsoft365Connector.d.ts +12 -0
- package/dist/connectors/Microsoft365Connector.js +139 -0
- package/dist/connectors/MongoDBConnector.d.ts +12 -0
- package/dist/connectors/MongoDBConnector.js +86 -0
- package/dist/connectors/NamelyConnector.d.ts +12 -0
- package/dist/connectors/NamelyConnector.js +97 -0
- package/dist/connectors/Neo4jConnector.d.ts +12 -0
- package/dist/connectors/Neo4jConnector.js +70 -0
- package/dist/connectors/NetSuiteConnector.d.ts +12 -0
- package/dist/connectors/NetSuiteConnector.js +94 -0
- package/dist/connectors/NetskopeConnector.d.ts +12 -0
- package/dist/connectors/NetskopeConnector.js +98 -0
- package/dist/connectors/NexusConnector.d.ts +12 -0
- package/dist/connectors/NexusConnector.js +93 -0
- package/dist/connectors/NotionConnector.d.ts +12 -0
- package/dist/connectors/NotionConnector.js +109 -0
- package/dist/connectors/OktaConnector.d.ts +12 -0
- package/dist/connectors/OktaConnector.js +123 -0
- package/dist/connectors/OktaSystemLogConnector.d.ts +12 -0
- package/dist/connectors/OktaSystemLogConnector.js +129 -0
- package/dist/connectors/OpsgenieConnector.d.ts +12 -0
- package/dist/connectors/OpsgenieConnector.js +70 -0
- package/dist/connectors/PagerDutyConnector.d.ts +12 -0
- package/dist/connectors/PagerDutyConnector.js +106 -0
- package/dist/connectors/PalantirConnector.d.ts +12 -0
- package/dist/connectors/PalantirConnector.js +95 -0
- package/dist/connectors/PaloAltoPrismaCloudConnector.d.ts +12 -0
- package/dist/connectors/PaloAltoPrismaCloudConnector.js +110 -0
- package/dist/connectors/PingFederateConnector.d.ts +12 -0
- package/dist/connectors/PingFederateConnector.js +97 -0
- package/dist/connectors/PostgreSQLCloudConnector.d.ts +12 -0
- package/dist/connectors/PostgreSQLCloudConnector.js +70 -0
- package/dist/connectors/PowerBIConnector.d.ts +12 -0
- package/dist/connectors/PowerBIConnector.js +95 -0
- package/dist/connectors/PrismaCloudConnector.d.ts +12 -0
- package/dist/connectors/PrismaCloudConnector.js +147 -0
- package/dist/connectors/QualysConnector.d.ts +12 -0
- package/dist/connectors/QualysConnector.js +96 -0
- package/dist/connectors/QualysScannerConnector.d.ts +12 -0
- package/dist/connectors/QualysScannerConnector.js +131 -0
- package/dist/connectors/QuickBooksConnector.d.ts +12 -0
- package/dist/connectors/QuickBooksConnector.js +97 -0
- package/dist/connectors/RabbitMQConnector.d.ts +12 -0
- package/dist/connectors/RabbitMQConnector.js +69 -0
- package/dist/connectors/RadwareConnector.d.ts +12 -0
- package/dist/connectors/RadwareConnector.js +94 -0
- package/dist/connectors/RedisCloudConnector.d.ts +12 -0
- package/dist/connectors/RedisCloudConnector.js +70 -0
- package/dist/connectors/RingCentralConnector.d.ts +12 -0
- package/dist/connectors/RingCentralConnector.js +94 -0
- package/dist/connectors/SAPSuccessFactorsConnector.d.ts +12 -0
- package/dist/connectors/SAPSuccessFactorsConnector.js +103 -0
- package/dist/connectors/SailPointConnector.d.ts +12 -0
- package/dist/connectors/SailPointConnector.js +97 -0
- package/dist/connectors/SalesforceConnector.d.ts +12 -0
- package/dist/connectors/SalesforceConnector.js +91 -0
- package/dist/connectors/SendGridConnector.d.ts +12 -0
- package/dist/connectors/SendGridConnector.js +69 -0
- package/dist/connectors/SentinelOneConnector.d.ts +12 -0
- package/dist/connectors/SentinelOneConnector.js +89 -0
- package/dist/connectors/ServiceNowConnector.d.ts +12 -0
- package/dist/connectors/ServiceNowConnector.js +123 -0
- package/dist/connectors/SlackConnector.d.ts +12 -0
- package/dist/connectors/SlackConnector.js +109 -0
- package/dist/connectors/SnowflakeConnector.d.ts +12 -0
- package/dist/connectors/SnowflakeConnector.js +105 -0
- package/dist/connectors/SnykConnector.d.ts +12 -0
- package/dist/connectors/SnykConnector.js +84 -0
- package/dist/connectors/SnykMonitorConnector.d.ts +12 -0
- package/dist/connectors/SnykMonitorConnector.js +131 -0
- package/dist/connectors/SophosConnector.d.ts +12 -0
- package/dist/connectors/SophosConnector.js +87 -0
- package/dist/connectors/SpinnakerConnector.d.ts +12 -0
- package/dist/connectors/SpinnakerConnector.js +70 -0
- package/dist/connectors/SplunkConnector.d.ts +12 -0
- package/dist/connectors/SplunkConnector.js +126 -0
- package/dist/connectors/StripeConnector.d.ts +12 -0
- package/dist/connectors/StripeConnector.js +97 -0
- package/dist/connectors/TableauConnector.d.ts +12 -0
- package/dist/connectors/TableauConnector.js +101 -0
- package/dist/connectors/TaniumConnector.d.ts +12 -0
- package/dist/connectors/TaniumConnector.js +97 -0
- package/dist/connectors/TeamCityConnector.d.ts +12 -0
- package/dist/connectors/TeamCityConnector.js +71 -0
- package/dist/connectors/TeamsConnector.d.ts +12 -0
- package/dist/connectors/TeamsConnector.js +96 -0
- package/dist/connectors/TenableIOConnector.d.ts +12 -0
- package/dist/connectors/TenableIOConnector.js +130 -0
- package/dist/connectors/TerraformCloudConnector.d.ts +12 -0
- package/dist/connectors/TerraformCloudConnector.js +106 -0
- package/dist/connectors/TravisCIConnector.d.ts +12 -0
- package/dist/connectors/TravisCIConnector.js +95 -0
- package/dist/connectors/TrendMicroConnector.d.ts +12 -0
- package/dist/connectors/TrendMicroConnector.js +85 -0
- package/dist/connectors/TwilioConnector.d.ts +12 -0
- package/dist/connectors/TwilioConnector.js +70 -0
- package/dist/connectors/VercelConnector.d.ts +12 -0
- package/dist/connectors/VercelConnector.js +70 -0
- package/dist/connectors/VultrConnector.d.ts +12 -0
- package/dist/connectors/VultrConnector.js +70 -0
- package/dist/connectors/WebexConnector.d.ts +12 -0
- package/dist/connectors/WebexConnector.js +94 -0
- package/dist/connectors/WizConnector.d.ts +12 -0
- package/dist/connectors/WizConnector.js +172 -0
- package/dist/connectors/WorkdayConnector.d.ts +12 -0
- package/dist/connectors/WorkdayConnector.js +100 -0
- package/dist/connectors/XeroConnector.d.ts +12 -0
- package/dist/connectors/XeroConnector.js +96 -0
- package/dist/connectors/ZapierConnector.d.ts +12 -0
- package/dist/connectors/ZapierConnector.js +70 -0
- package/dist/connectors/ZendeskConnector.d.ts +12 -0
- package/dist/connectors/ZendeskConnector.js +71 -0
- package/dist/connectors/ZenefitsConnector.d.ts +12 -0
- package/dist/connectors/ZenefitsConnector.js +93 -0
- package/dist/connectors/ZoomConnector.d.ts +12 -0
- package/dist/connectors/ZoomConnector.js +97 -0
- package/dist/connectors/ZscalerConnector.d.ts +12 -0
- package/dist/connectors/ZscalerConnector.js +97 -0
- package/dist/connectors/index.d.ts +150 -0
- package/dist/connectors/index.js +157 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +16 -0
- package/dist/index.test.d.ts +1 -0
- package/dist/index.test.js +139 -0
- package/dist/types.d.ts +57 -0
- package/dist/types.js +8 -0
- package/package.json +33 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "bitbucket-pipelines-config",
|
|
5
|
+
name: "Pipeline Configuration",
|
|
6
|
+
description: "Fetch Bitbucket Pipelines YAML configurations and default branches",
|
|
7
|
+
evidenceCategories: ["ci_cd", "change_management"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "bitbucket-pipelines-runs",
|
|
11
|
+
name: "Pipeline Runs",
|
|
12
|
+
description: "Fetch pipeline execution history and failure rates",
|
|
13
|
+
evidenceCategories: ["ci_cd", "monitoring"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "bitbucket-pipelines-deployments",
|
|
17
|
+
name: "Deployment Environments",
|
|
18
|
+
description: "Fetch deployment environment configurations and approval rules",
|
|
19
|
+
evidenceCategories: ["access_control", "change_management"],
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
export class BitbucketPipelinesConnector {
|
|
23
|
+
id = "bitbucket-pipelines";
|
|
24
|
+
name = "Bitbucket Pipelines";
|
|
25
|
+
category = "ci_cd";
|
|
26
|
+
authType = "bearer_token";
|
|
27
|
+
capabilities = capabilities;
|
|
28
|
+
frameworks = ["SOC2", "ISO27001", "NIST_CSF"];
|
|
29
|
+
async fetchApi(config, endpoint) {
|
|
30
|
+
const workspace = config.extra?.workspace || "default";
|
|
31
|
+
const repo = config.extra?.repo || "main-repo";
|
|
32
|
+
const base = config.baseUrl || "https://api.bitbucket.org/2.0";
|
|
33
|
+
const resp = await fetch(`${base}/repositories/${workspace}/${repo}${endpoint}`, {
|
|
34
|
+
headers: {
|
|
35
|
+
Authorization: `Bearer ${config.apiToken}`,
|
|
36
|
+
"Content-Type": "application/json",
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
if (!resp.ok)
|
|
40
|
+
throw new Error(`Bitbucket API ${resp.status}: ${resp.statusText}`);
|
|
41
|
+
return (await resp.json());
|
|
42
|
+
}
|
|
43
|
+
async testConnection(config) {
|
|
44
|
+
try {
|
|
45
|
+
await this.fetchApi(config, "");
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async collectEvidence(config) {
|
|
53
|
+
const artifacts = [];
|
|
54
|
+
const now = new Date().toISOString();
|
|
55
|
+
const pipelines = await this.fetchApi(config, "/pipelines/?pagelen=100").catch(() => ({ values: [] }));
|
|
56
|
+
const pipelineList = (pipelines.values || []);
|
|
57
|
+
artifacts.push({
|
|
58
|
+
id: generateEvidenceId(),
|
|
59
|
+
connectorId: this.id,
|
|
60
|
+
capabilityId: "bitbucket-pipelines-runs",
|
|
61
|
+
timestamp: now,
|
|
62
|
+
hash: hashEvidence({ runCount: pipelineList.length }),
|
|
63
|
+
framework: "SOC2",
|
|
64
|
+
controlId: "CC8.1",
|
|
65
|
+
source: "bitbucket-pipelines/runs",
|
|
66
|
+
status: "unknown",
|
|
67
|
+
data: { pipelineRunCount: pipelineList.length },
|
|
68
|
+
metadata: {},
|
|
69
|
+
});
|
|
70
|
+
return artifacts;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class BoxConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "box";
|
|
4
|
+
readonly name = "Box";
|
|
5
|
+
readonly category: "document_management";
|
|
6
|
+
readonly authType: "oauth2";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "box-folders",
|
|
5
|
+
name: "Folders & Structure",
|
|
6
|
+
description: "Fetch Box folder hierarchy and shared folder configurations",
|
|
7
|
+
evidenceCategories: ["document_management", "data_protection"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "box-collaborations",
|
|
11
|
+
name: "Collaborations",
|
|
12
|
+
description: "Fetch collaboration invitations and access permissions",
|
|
13
|
+
evidenceCategories: ["access_control", "data_protection"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "box-retention-policies",
|
|
17
|
+
name: "Retention Policies",
|
|
18
|
+
description: "Fetch Box retention and disposal policy configurations",
|
|
19
|
+
evidenceCategories: ["data_protection", "compliance"],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "box-events",
|
|
23
|
+
name: "File Events",
|
|
24
|
+
description: "Fetch recent file upload, download, and access events",
|
|
25
|
+
evidenceCategories: ["audit_logging", "data_protection"],
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
export class BoxConnector {
|
|
29
|
+
id = "box";
|
|
30
|
+
name = "Box";
|
|
31
|
+
category = "document_management";
|
|
32
|
+
authType = "oauth2";
|
|
33
|
+
capabilities = capabilities;
|
|
34
|
+
frameworks = ["SOC2", "ISO27001", "HIPAA", "PCI_DSS"];
|
|
35
|
+
async fetchApi(config, endpoint) {
|
|
36
|
+
const base = config.baseUrl || "https://api.box.com/2.0";
|
|
37
|
+
const resp = await fetch(`${base}${endpoint}`, {
|
|
38
|
+
headers: { Authorization: `Bearer ${config.apiToken}` },
|
|
39
|
+
});
|
|
40
|
+
if (!resp.ok)
|
|
41
|
+
throw new Error(`Box API ${resp.status}: ${resp.statusText}`);
|
|
42
|
+
return (await resp.json());
|
|
43
|
+
}
|
|
44
|
+
async testConnection(config) {
|
|
45
|
+
try {
|
|
46
|
+
await this.fetchApi(config, "/users/me");
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
async collectEvidence(config) {
|
|
54
|
+
const artifacts = [];
|
|
55
|
+
const now = new Date().toISOString();
|
|
56
|
+
const folders = await this.fetchApi(config, "/folders/0/items?limit=100").catch(() => ({ entries: [] }));
|
|
57
|
+
const folderList = (folders.entries || []);
|
|
58
|
+
artifacts.push({
|
|
59
|
+
id: generateEvidenceId(),
|
|
60
|
+
connectorId: this.id,
|
|
61
|
+
capabilityId: "box-folders",
|
|
62
|
+
timestamp: now,
|
|
63
|
+
hash: hashEvidence({ itemCount: folderList.length }),
|
|
64
|
+
framework: "SOC2",
|
|
65
|
+
controlId: "CC6.4",
|
|
66
|
+
source: "box/folders",
|
|
67
|
+
status: folderList.length > 0 ? "compliant" : "non_compliant",
|
|
68
|
+
data: { itemCount: folderList.length },
|
|
69
|
+
metadata: {},
|
|
70
|
+
});
|
|
71
|
+
const collaborations = await this.fetchApi(config, "/collaborations?limit=100").catch(() => ({ entries: [] }));
|
|
72
|
+
const collabList = (collaborations.entries || []);
|
|
73
|
+
const externalCollabs = collabList.filter((c) => {
|
|
74
|
+
const access = (c.access_level || {});
|
|
75
|
+
return access.is_externally_managed === true;
|
|
76
|
+
});
|
|
77
|
+
artifacts.push({
|
|
78
|
+
id: generateEvidenceId(),
|
|
79
|
+
connectorId: this.id,
|
|
80
|
+
capabilityId: "box-collaborations",
|
|
81
|
+
timestamp: now,
|
|
82
|
+
hash: hashEvidence({ total: collabList.length, external: externalCollabs.length }),
|
|
83
|
+
framework: "ISO27001",
|
|
84
|
+
controlId: "A.9.2.5",
|
|
85
|
+
source: "box/collaborations",
|
|
86
|
+
status: externalCollabs.length === 0 ? "compliant" : "non_compliant",
|
|
87
|
+
data: { totalCollaborations: collabList.length, externalCollaborations: externalCollabs.length },
|
|
88
|
+
metadata: {},
|
|
89
|
+
});
|
|
90
|
+
const retentionPolicies = await this.fetchApi(config, "/retention_policies").catch(() => ({ entries: [] }));
|
|
91
|
+
const policyList = (retentionPolicies.entries || []);
|
|
92
|
+
artifacts.push({
|
|
93
|
+
id: generateEvidenceId(),
|
|
94
|
+
connectorId: this.id,
|
|
95
|
+
capabilityId: "box-retention-policies",
|
|
96
|
+
timestamp: now,
|
|
97
|
+
hash: hashEvidence({ policyCount: policyList.length }),
|
|
98
|
+
framework: "ISO27001",
|
|
99
|
+
controlId: "A.8.3.2",
|
|
100
|
+
source: "box/retention_policies",
|
|
101
|
+
status: policyList.length > 0 ? "compliant" : "non_compliant",
|
|
102
|
+
data: { retentionPolicyCount: policyList.length },
|
|
103
|
+
metadata: {},
|
|
104
|
+
});
|
|
105
|
+
const events = await this.fetchApi(config, "/events?stream_type=admin_logs&limit=100").catch(() => ({ entries: [] }));
|
|
106
|
+
const eventList = (events.entries || []);
|
|
107
|
+
artifacts.push({
|
|
108
|
+
id: generateEvidenceId(),
|
|
109
|
+
connectorId: this.id,
|
|
110
|
+
capabilityId: "box-events",
|
|
111
|
+
timestamp: now,
|
|
112
|
+
hash: hashEvidence({ eventCount: eventList.length }),
|
|
113
|
+
framework: "SOC2",
|
|
114
|
+
controlId: "CC7.2",
|
|
115
|
+
source: "box/events",
|
|
116
|
+
status: "unknown",
|
|
117
|
+
data: { eventCount: eventList.length },
|
|
118
|
+
metadata: {},
|
|
119
|
+
});
|
|
120
|
+
return artifacts;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class BuildkiteConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "buildkite";
|
|
4
|
+
readonly name = "Buildkite";
|
|
5
|
+
readonly category: "ci_cd";
|
|
6
|
+
readonly authType: "api_key";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "buildkite-pipelines",
|
|
5
|
+
name: "Pipeline Configurations",
|
|
6
|
+
description: "Fetch pipeline definitions and step configurations",
|
|
7
|
+
evidenceCategories: ["change_management", "configuration"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "buildkite-builds",
|
|
11
|
+
name: "Build Results",
|
|
12
|
+
description: "Fetch build history and test results",
|
|
13
|
+
evidenceCategories: ["change_management", "monitoring"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "buildkite-agents",
|
|
17
|
+
name: "Agent Pools",
|
|
18
|
+
description: "Fetch agent pool configurations and fleet status",
|
|
19
|
+
evidenceCategories: ["infrastructure", "configuration"],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "buildkite-secrets",
|
|
23
|
+
name: "Secret Management",
|
|
24
|
+
description: "Fetch encrypted secrets and environment configurations",
|
|
25
|
+
evidenceCategories: ["data_protection", "access_control"],
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
export class BuildkiteConnector {
|
|
29
|
+
id = "buildkite";
|
|
30
|
+
name = "Buildkite";
|
|
31
|
+
category = "ci_cd";
|
|
32
|
+
authType = "api_key";
|
|
33
|
+
capabilities = capabilities;
|
|
34
|
+
frameworks = [
|
|
35
|
+
"SOC2",
|
|
36
|
+
"ISO27001",
|
|
37
|
+
"NIST_CSF",
|
|
38
|
+
];
|
|
39
|
+
async fetchApi(config, endpoint) {
|
|
40
|
+
const base = config.baseUrl || "https://api.buildkite.com/v1";
|
|
41
|
+
const resp = await fetch(`${base}${endpoint}`, {
|
|
42
|
+
headers: {
|
|
43
|
+
Authorization: `Bearer ${config.apiToken}`,
|
|
44
|
+
"Content-Type": "application/json",
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
if (!resp.ok)
|
|
48
|
+
throw new Error(`Buildkite API ${resp.status}: ${resp.statusText}`);
|
|
49
|
+
return (await resp.json());
|
|
50
|
+
}
|
|
51
|
+
async testConnection(config) {
|
|
52
|
+
try {
|
|
53
|
+
await this.fetchApi(config, "/organizations");
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async collectEvidence(config) {
|
|
61
|
+
const artifacts = [];
|
|
62
|
+
const now = new Date().toISOString();
|
|
63
|
+
const org = config.extra?.org || "default";
|
|
64
|
+
const pipeline = config.extra?.pipeline || "main";
|
|
65
|
+
const builds = await this.fetchApi(config, `/organizations/${org}/pipelines/${pipeline}/builds?per_page=10`).catch(() => []);
|
|
66
|
+
artifacts.push({
|
|
67
|
+
id: generateEvidenceId(),
|
|
68
|
+
connectorId: this.id,
|
|
69
|
+
capabilityId: "buildkite-pipelines",
|
|
70
|
+
timestamp: now,
|
|
71
|
+
hash: hashEvidence(Array.isArray(builds) ? { builds: builds.length } : builds),
|
|
72
|
+
framework: "SOC2",
|
|
73
|
+
controlId: "CC8.1",
|
|
74
|
+
source: `buildkite.com/${org}/${pipeline}`,
|
|
75
|
+
status: Array.isArray(builds) && builds.length > 0 ? "compliant" : "unknown",
|
|
76
|
+
data: { recentBuilds: Array.isArray(builds) ? builds.length : 0 },
|
|
77
|
+
metadata: { org, pipeline },
|
|
78
|
+
});
|
|
79
|
+
const agents = await this.fetchApi(config, `/organizations/${org}/agent-groups`).catch(() => []);
|
|
80
|
+
artifacts.push({
|
|
81
|
+
id: generateEvidenceId(),
|
|
82
|
+
connectorId: this.id,
|
|
83
|
+
capabilityId: "buildkite-agents",
|
|
84
|
+
timestamp: now,
|
|
85
|
+
hash: hashEvidence(Array.isArray(agents) ? { groups: agents.length } : agents),
|
|
86
|
+
framework: "ISO27001",
|
|
87
|
+
controlId: "A.6.2.1",
|
|
88
|
+
source: `buildkite.com/${org}/agents`,
|
|
89
|
+
status: "partial",
|
|
90
|
+
data: { agentGroups: Array.isArray(agents) ? agents.length : 0 },
|
|
91
|
+
metadata: { org },
|
|
92
|
+
});
|
|
93
|
+
return artifacts;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class CarbonBlackConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "carbonblack";
|
|
4
|
+
readonly name = "VMware Carbon Black";
|
|
5
|
+
readonly category: "endpoint";
|
|
6
|
+
readonly authType: "api_key";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "carbonblack-endpoints",
|
|
5
|
+
name: "Endpoint Protection",
|
|
6
|
+
description: "Fetch Carbon Black sensor status and policy assignments",
|
|
7
|
+
evidenceCategories: ["endpoint", "monitoring"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "carbonblack-alerts",
|
|
11
|
+
name: "Security Alerts",
|
|
12
|
+
description: "Fetch alert severity and investigation status",
|
|
13
|
+
evidenceCategories: ["vulnerability_management", "monitoring"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "carbonblack-policies",
|
|
17
|
+
name: "Response Policies",
|
|
18
|
+
description: "Fetch prevention and response policy configurations",
|
|
19
|
+
evidenceCategories: ["access_control", "configuration"],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "carbonblack-live-response",
|
|
23
|
+
name: "Live Response",
|
|
24
|
+
description: "Fetch live response session logs and forensics",
|
|
25
|
+
evidenceCategories: ["monitoring", "change_management"],
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
export class CarbonBlackConnector {
|
|
29
|
+
id = "carbonblack";
|
|
30
|
+
name = "VMware Carbon Black";
|
|
31
|
+
category = "endpoint";
|
|
32
|
+
authType = "api_key";
|
|
33
|
+
capabilities = capabilities;
|
|
34
|
+
frameworks = ["SOC2", "ISO27001", "NIST_CSF", "HIPAA", "PCI_DSS"];
|
|
35
|
+
async fetchApi(config, endpoint) {
|
|
36
|
+
const base = config.baseUrl || "https://defense.conferdeploy.net";
|
|
37
|
+
const resp = await fetch(`${base}/api/v6${endpoint}`, {
|
|
38
|
+
headers: {
|
|
39
|
+
"X-Auth-Token": config.apiToken || "",
|
|
40
|
+
"Content-Type": "application/json",
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
if (!resp.ok)
|
|
44
|
+
throw new Error(`Carbon Black API ${resp.status}: ${resp.statusText}`);
|
|
45
|
+
return (await resp.json());
|
|
46
|
+
}
|
|
47
|
+
async testConnection(config) {
|
|
48
|
+
try {
|
|
49
|
+
await this.fetchApi(config, "/apps/search");
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
async collectEvidence(config) {
|
|
57
|
+
const artifacts = [];
|
|
58
|
+
const now = new Date().toISOString();
|
|
59
|
+
const sensors = await this.fetchApi(config, "/sensors").catch(() => ({ results: [] }));
|
|
60
|
+
artifacts.push({
|
|
61
|
+
id: generateEvidenceId(),
|
|
62
|
+
connectorId: this.id,
|
|
63
|
+
capabilityId: "carbonblack-endpoints",
|
|
64
|
+
timestamp: now,
|
|
65
|
+
hash: hashEvidence(sensors),
|
|
66
|
+
framework: "SOC2",
|
|
67
|
+
controlId: "CC6.8",
|
|
68
|
+
source: "carbonblack/sensors",
|
|
69
|
+
status: sensors.results?.length > 0 ? "compliant" : "unknown",
|
|
70
|
+
data: { sensorCount: sensors.results?.length || 0 },
|
|
71
|
+
metadata: {},
|
|
72
|
+
});
|
|
73
|
+
const alerts = await this.fetchApi(config, "/alerts/search").catch(() => ({ results: [] }));
|
|
74
|
+
artifacts.push({
|
|
75
|
+
id: generateEvidenceId(),
|
|
76
|
+
connectorId: this.id,
|
|
77
|
+
capabilityId: "carbonblack-alerts",
|
|
78
|
+
timestamp: now,
|
|
79
|
+
hash: hashEvidence(alerts),
|
|
80
|
+
framework: "ISO27001",
|
|
81
|
+
controlId: "A.12.2.1",
|
|
82
|
+
source: "carbonblack/alerts",
|
|
83
|
+
status: alerts.results?.length === 0 ? "compliant" : "non_compliant",
|
|
84
|
+
data: { openAlerts: alerts.results?.length || 0 },
|
|
85
|
+
metadata: {},
|
|
86
|
+
});
|
|
87
|
+
return artifacts;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class CassandraConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "cassandra";
|
|
4
|
+
readonly name = "Apache Cassandra";
|
|
5
|
+
readonly category: "data_warehouse";
|
|
6
|
+
readonly authType: "api_key";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "cassandra-clusters",
|
|
5
|
+
name: "Cassandra Clusters",
|
|
6
|
+
description: "Fetch Cassandra cluster configurations and node status",
|
|
7
|
+
evidenceCategories: ["data_protection", "infrastructure"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "cassandra-security",
|
|
11
|
+
name: "Security Configurations",
|
|
12
|
+
description: "Fetch Cassandra authentication, authorization, and TLS settings",
|
|
13
|
+
evidenceCategories: ["access_control", "encryption"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "cassandra-backups",
|
|
17
|
+
name: "Backup Status",
|
|
18
|
+
description: "Fetch Cassandra snapshot backups and repair status",
|
|
19
|
+
evidenceCategories: ["data_protection", "disaster_recovery"],
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
export class CassandraConnector {
|
|
23
|
+
id = "cassandra";
|
|
24
|
+
name = "Apache Cassandra";
|
|
25
|
+
category = "data_warehouse";
|
|
26
|
+
authType = "api_key";
|
|
27
|
+
capabilities = capabilities;
|
|
28
|
+
frameworks = ["SOC2", "ISO27001", "NIST_CSF"];
|
|
29
|
+
async fetchApi(config, endpoint) {
|
|
30
|
+
const base = config.baseUrl || "https://api.cassandra.example.com/v1";
|
|
31
|
+
const resp = await fetch(`${base}${endpoint}`, {
|
|
32
|
+
headers: {
|
|
33
|
+
Authorization: `Bearer ${config.apiToken}`,
|
|
34
|
+
"Content-Type": "application/json",
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
if (!resp.ok)
|
|
38
|
+
throw new Error(`Cassandra API ${resp.status}: ${resp.statusText}`);
|
|
39
|
+
return (await resp.json());
|
|
40
|
+
}
|
|
41
|
+
async testConnection(config) {
|
|
42
|
+
try {
|
|
43
|
+
await this.fetchApi(config, "/cluster/status");
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async collectEvidence(config) {
|
|
51
|
+
const artifacts = [];
|
|
52
|
+
const now = new Date().toISOString();
|
|
53
|
+
const status = await this.fetchApi(config, "/cluster/status").catch(() => ({}));
|
|
54
|
+
artifacts.push({
|
|
55
|
+
id: generateEvidenceId(),
|
|
56
|
+
connectorId: this.id,
|
|
57
|
+
capabilityId: "cassandra-clusters",
|
|
58
|
+
timestamp: now,
|
|
59
|
+
hash: hashEvidence(status),
|
|
60
|
+
framework: "SOC2",
|
|
61
|
+
controlId: "CC6.1",
|
|
62
|
+
source: "cassandra/cluster",
|
|
63
|
+
status: "unknown",
|
|
64
|
+
data: { connected: true },
|
|
65
|
+
metadata: {},
|
|
66
|
+
});
|
|
67
|
+
return artifacts;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class CheckPointConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "checkpoint";
|
|
4
|
+
readonly name = "Check Point";
|
|
5
|
+
readonly category: "cloud_provider";
|
|
6
|
+
readonly authType: "api_key";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "checkpoint-firewall",
|
|
5
|
+
name: "Firewall Policies",
|
|
6
|
+
description: "Fetch firewall rule base and policy compliance",
|
|
7
|
+
evidenceCategories: ["access_control", "configuration"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "checkpoint-vpn",
|
|
11
|
+
name: "VPN Configuration",
|
|
12
|
+
description: "Fetch VPN tunnel status and encryption settings",
|
|
13
|
+
evidenceCategories: ["access_control", "data_protection"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "checkpoint-threat",
|
|
17
|
+
name: "Threat Prevention",
|
|
18
|
+
description: "Fetch threat prevention profiles andblade status",
|
|
19
|
+
evidenceCategories: ["vulnerability_management", "monitoring"],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "checkpoint-logs",
|
|
23
|
+
name: "Security Logs",
|
|
24
|
+
description: "Fetch security gateway logs and traffic analysis",
|
|
25
|
+
evidenceCategories: ["monitoring", "access_control"],
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
export class CheckPointConnector {
|
|
29
|
+
id = "checkpoint";
|
|
30
|
+
name = "Check Point";
|
|
31
|
+
category = "cloud_provider";
|
|
32
|
+
authType = "api_key";
|
|
33
|
+
capabilities = capabilities;
|
|
34
|
+
frameworks = [
|
|
35
|
+
"SOC2",
|
|
36
|
+
"ISO27001",
|
|
37
|
+
"NIST_CSF",
|
|
38
|
+
"PCI_DSS",
|
|
39
|
+
];
|
|
40
|
+
async fetchApi(config, endpoint) {
|
|
41
|
+
const base = config.baseUrl || "https://cp-management.example.com";
|
|
42
|
+
const resp = await fetch(`${base}${endpoint}`, {
|
|
43
|
+
headers: {
|
|
44
|
+
Authorization: `Bearer ${config.apiToken}`,
|
|
45
|
+
"Content-Type": "application/json",
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
if (!resp.ok)
|
|
49
|
+
throw new Error(`Check Point API ${resp.status}: ${resp.statusText}`);
|
|
50
|
+
return (await resp.json());
|
|
51
|
+
}
|
|
52
|
+
async testConnection(config) {
|
|
53
|
+
try {
|
|
54
|
+
await this.fetchApi(config, "/api/v1/show-gateways");
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async collectEvidence(config) {
|
|
62
|
+
const artifacts = [];
|
|
63
|
+
const now = new Date().toISOString();
|
|
64
|
+
const gateways = await this.fetchApi(config, "/api/v1/show-gateways").catch(() => ({
|
|
65
|
+
objects: [],
|
|
66
|
+
}));
|
|
67
|
+
artifacts.push({
|
|
68
|
+
id: generateEvidenceId(),
|
|
69
|
+
connectorId: this.id,
|
|
70
|
+
capabilityId: "checkpoint-firewall",
|
|
71
|
+
timestamp: now,
|
|
72
|
+
hash: hashEvidence(gateways),
|
|
73
|
+
framework: "SOC2",
|
|
74
|
+
controlId: "CC6.1",
|
|
75
|
+
source: "checkpoint/gateways",
|
|
76
|
+
status: gateways.objects?.length > 0 ? "compliant" : "unknown",
|
|
77
|
+
data: { gateways: gateways.objects?.length || 0 },
|
|
78
|
+
metadata: {},
|
|
79
|
+
});
|
|
80
|
+
const threats = await this.fetchApi(config, "/api/v1/show-threat-profiles").catch(() => ({
|
|
81
|
+
objects: [],
|
|
82
|
+
}));
|
|
83
|
+
artifacts.push({
|
|
84
|
+
id: generateEvidenceId(),
|
|
85
|
+
connectorId: this.id,
|
|
86
|
+
capabilityId: "checkpoint-threat",
|
|
87
|
+
timestamp: now,
|
|
88
|
+
hash: hashEvidence(threats),
|
|
89
|
+
framework: "ISO27001",
|
|
90
|
+
controlId: "A.12.2.1",
|
|
91
|
+
source: "checkpoint/threat-profiles",
|
|
92
|
+
status: threats.objects?.length > 0 ? "compliant" : "non_compliant",
|
|
93
|
+
data: { threatProfiles: threats.objects?.length || 0 },
|
|
94
|
+
metadata: {},
|
|
95
|
+
});
|
|
96
|
+
return artifacts;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class CircleCIConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "circleci";
|
|
4
|
+
readonly name = "CircleCI";
|
|
5
|
+
readonly category: "ci_cd";
|
|
6
|
+
readonly authType: "api_key";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|