Skip to content

Commit c0c6d6b

Browse files
content overhaul for cloud platform
1 parent b5e2d38 commit c0c6d6b

File tree

4 files changed

+396
-128
lines changed

4 files changed

+396
-128
lines changed

cloud/integrations.mdx

Lines changed: 393 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,393 @@
1+
---
2+
title: "Platform Integrations"
3+
description: "Technical guide for configuring third-party integrations for cloud assets, vulnerability scanning, alerts, and ticketing"
4+
sidebarTitle: "Integrations"
5+
---
6+
7+
## Summary
8+
9+
ProjectDiscovery Cloud supports integration with various third-party services to enhance your security workflow. These integrations enable:
10+
- Cloud asset discovery and management
11+
- Real-time alerting through communication platforms
12+
- Automated vulnerability tracking through ticketing systems
13+
- Custom webhook integrations for workflow automation
14+
15+
Configure your integrations through the [Configurations](https://cloud.projectdiscovery.io/configs) interface.
16+
17+
## Notification Integrations
18+
19+
Alerting integrations support notifications as part of scanning and include Slack, Microsoft Teams, Email, and custom Webhooks.
20+
21+
<img height="300" src="/images/platform/scanintegrations.png" />
22+
23+
### Slack
24+
25+
ProjectDiscovery Cloud supports scan notifications through Slack. To enable Slack notifications provide a name for your Configuration, a webhook, and an optional username.
26+
27+
Choose from the list of **Events** (Scan Started, Scan Finished, Scan Failed) to specify what notifications are generated. All Events are selected by default
28+
29+
- Refer to Slack's [documentation on creating webhooks](https://api.slack.com/messaging/webhooks) for configuration details.
30+
31+
32+
### MS Teams
33+
34+
ProjectDiscovery Cloud supports notifications through Microsoft Teams. To enable notifications, provide a name for your Configuration and a corresponding webhook.
35+
36+
Choose from the list of **Events** (Scan Started, Scan Finished, Scan Failed) to specify what notifications are generated.
37+
38+
- Refer to [Microsoft’s documentation on creating webhooks](https://learn.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/add-incoming-webhook?tabs=newteams%2Cdotnet) for configuration details.
39+
40+
### Email
41+
42+
ProjectDiscovery Cloud Platform supports notifications via Email. To enable email notifications for completed scans simply add your recipient email addresses.
43+
44+
Check out a sample email below.
45+
46+
<img height="200" src="/images/platform/scanemail.png" />
47+
48+
### Webhook
49+
50+
ProjectDiscovery Cloud supports custom webhook notifications, allowing you to post events to any HTTP endpoint that matches your infrastructure requirements.
51+
52+
To implement webhook notifications, provide:
53+
- Configuration name
54+
- Webhook URL
55+
- Authentication parameters (if required)
56+
57+
Example endpoint format:
58+
```
59+
https://your-domain.com/api/security/alerts
60+
```
61+
62+
## Ticketing Integrations
63+
64+
The integrations under Ticketing support ticketing functionality as part of scanning and include support for Jira, GitHub, GitLab, and Linear.
65+
66+
<img height="300" src="/images/platform/scansticketing.png" />
67+
68+
### Jira
69+
70+
ProjectDiscovery Cloud Platform provides integration support for Jira to create new tickets when vulnerabilities are found.
71+
72+
Provide a name for the configuration, the Jira instance URL , the Account ID, the Email, and the associated API token.
73+
74+
Details on creating an API token are available [in the Jira documentation here.](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/)
75+
76+
### GitHub
77+
78+
ProjectDiscovery Cloud provides integration support for GitHub to create new tickets when vulnerabilities are found.
79+
80+
Provide a name for the configuration, the Organization or username, Project name, Issue Assignee, Token, and Issue Label. The Issue Label determines when a ticket is created. (For example, if critical severity is selected, any issues with a critical severity will create a ticket.)
81+
82+
- The severity as label option adds a template result severity to any GitHub issues created.
83+
- Deduplicate posts any new results as comments on existing issues instead of creating new issues for the same result.
84+
85+
Details on setting up access in GitHub [are available here.](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)
86+
87+
### GitLab
88+
89+
ProjectDiscovery Cloud Platform provides integration support for GitLab to create new tickets when vulnerabilities are found.
90+
91+
Provide your GitLab username, Project name, Project Access Token and a GitLab Issue label. The Issue Label determines when a ticket is created.
92+
(For example, if critical severity is selected, any issues with a critical severity will create a ticket.)
93+
94+
- The severity as label option adds a template result severity to any GitLab issues created.
95+
- Deduplicate posts any new results as comments on existing issues instead of creating new issues for the same result.
96+
97+
Refer to GitLab’s documentation for details on [configuring a Project Access token.](https://docs.gitlab.com/ee/user/project/settings/project_access_tokens.html#create-a-project-access-token)
98+
99+
### Linear
100+
101+
ProjectDiscovery Cloud integrates with Linear for automated issue tracking. The integration requires the following API parameters:
102+
103+
1. Linear API Key
104+
2. Linear Team ID
105+
3. Linear Open State ID
106+
107+
To retrieve these parameters:
108+
109+
1. **API Key Generation**:
110+
- Path: Linear > Settings > API > Personal API keys
111+
- Direct URL: linear.app/[workspace]/settings/api
112+
113+
2. **Team ID Retrieval**:
114+
```graphql
115+
query {
116+
teams {
117+
nodes {
118+
id
119+
name
120+
}
121+
}
122+
}
123+
```
124+
125+
3. **Open State ID Retrieval**:
126+
```graphql
127+
query {
128+
workflowStates {
129+
nodes {
130+
id
131+
name
132+
}
133+
}
134+
}
135+
```
136+
137+
For detailed API documentation, refer to the [Linear API Documentation](https://developers.linear.app/docs/graphql/working-with-the-graphql-api).
138+
139+
## Cloud Asset Discovery
140+
141+
ProjectDiscovery Cloud leverages our open-source [Cloudlist](https://github.com/projectdiscovery/cloudlist) technology to provide comprehensive cloud asset discovery and management through a simple web interface.
142+
143+
144+
### Major Cloud Services
145+
146+
#### AWS (Amazon Web Services)
147+
148+
Supported AWS Services:
149+
- [EC2](https://aws.amazon.com/ec2/)
150+
- [Route53](https://aws.amazon.com/route53/)
151+
- [S3](https://aws.amazon.com/s3/)
152+
- [Cloudfront](https://aws.amazon.com/cloudfront/)
153+
- [ECS](https://aws.amazon.com/ecs/)
154+
- [EKS](https://aws.amazon.com/eks/)
155+
- [ELB](https://aws.amazon.com/elasticloadbalancing/)
156+
- [ELBv2](https://aws.amazon.com/elasticloadbalancing/)
157+
- [Lambda](https://aws.amazon.com/lambda/)
158+
- [Lightsail](https://aws.amazon.com/lightsail/)
159+
- [Apigateway](https://aws.amazon.com/api-gateway/)
160+
161+
**Example Config**:
162+
Amazon Web Services can be integrated by using the following configuration block.
163+
164+
```yaml
165+
- provider: aws # provider is the name of the provider
166+
# id is the name defined by user for filtering (optional)
167+
id: staging
168+
# aws_access_key is the access key for AWS account
169+
aws_access_key: $AWS_ACCESS_KEY
170+
# aws_secret_key is the secret key for AWS account
171+
aws_secret_key: $AWS_SECRET_KEY
172+
# aws_session_token session token for temporary security credentials retrieved via STS (optional)
173+
aws_session_token: $AWS_SESSION_TOKEN
174+
# assume_role_name is the name of the role to assume (optional)
175+
assume_role_name: $AWS_ASSUME_ROLE_NAME
176+
# account_ids is the aws account ids which has similar assumed role name (optional)
177+
account_ids:
178+
- $AWS_ACCOUNT_ID_1
179+
- $AWS_ACCOUNT_ID_2
180+
```
181+
182+
`aws_access_key` and `aws_secret_key` can be generated in the IAM console. We recommend creating a new IAM user with `Read Only` permissions and providing the access token for the user.
183+
184+
Scopes Required:
185+
186+
The following scopes can directly be provided to the IAM user.
187+
188+
```
189+
EC2 - AmazonEC2ReadOnlyAccess
190+
Route53 - AmazonRoute53ReadOnlyAccess
191+
S3 - AmazonS3ReadOnlyAccess
192+
Lambda - AWSLambda_ReadOnlyAccess
193+
ELB - ElasticLoadBalancingReadOnly
194+
Cloudfront - CloudFrontReadOnlyAccess
195+
```
196+
197+
To also support other services, a custom policy document is provided which can directly be copy-pasted to the role to allow correct and minimal permissions.
198+
199+
```json
200+
{
201+
"Version": "2012-10-17",
202+
"Statement": [
203+
{
204+
"Sid": "RequiredReadPermissions",
205+
"Effect": "Allow",
206+
"Action": [
207+
"ec2:DescribeInstances",
208+
"ec2:DescribeRegions",
209+
"route53:ListHostedZones",
210+
"route53:ListResourceRecordSets",
211+
"s3:ListAllMyBuckets",
212+
"lambda:ListFunctions",
213+
"elasticloadbalancing:DescribeLoadBalancers",
214+
"elasticloadbalancing:DescribeTargetGroups",
215+
"elasticloadbalancing:DescribeTargetHealth",
216+
"cloudfront:ListDistributions",
217+
"ecs:ListClusters",
218+
"ecs:ListServices",
219+
"ecs:ListTasks",
220+
"ecs:DescribeTasks",
221+
"ecs:DescribeContainerInstances",
222+
"eks:ListClusters",
223+
"eks:DescribeCluster",
224+
"apigateway:GET",
225+
"lightsail:GetInstances",
226+
"lightsail:GetRegions"
227+
],
228+
"Resource": "*"
229+
}
230+
]
231+
}
232+
```
233+
234+
__References:__
235+
1. https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_iam_read-only-console.html
236+
2. https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html
237+
3. https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html
238+
239+
- Aws Assume Role:
240+
241+
- https://docs.aws.amazon.com/sdkref/latest/guide/feature-assume-role-credentials.html
242+
- https://docs.logrhythm.com/OCbeats/docs/aws-cross-account-access-using-sts-assume-role
243+
244+
#### Google Cloud Platform (GCP)
245+
246+
Supported GCP Services:
247+
- [Cloud DNS](https://cloud.google.com/dns)
248+
- [Kubernetes Engine](https://cloud.google.com/kubernetes-engine)
249+
- [Compute Engine](https://cloud.google.com/products/compute)
250+
- [Bucket](https://cloud.google.com/storage)
251+
- [Cloud Functions](https://cloud.google.com/functions)
252+
- [Cloud Run](https://cloud.google.com/run)
253+
254+
**Example Config:**
255+
256+
Google Cloud Platform can be integrated by using the following configuration block.
257+
258+
```yaml
259+
- provider: gcp # provider is the name of the provider
260+
# profile is the name of the provider profile
261+
id: logs
262+
# gcp_service_account_key is the minified json of a google cloud service account with list permissions
263+
gcp_service_account_key: '{xxxxxxxxxxxxx}'
264+
```
265+
266+
267+
`gcp_service_account_key` can be retrieved by creating a new service account. To do so, create service account with Read Only access to `cloudresourcemanager` and `dns` scopes in IAM. Next, generate a new account key for the Service Account by following steps in Reference 2. This should give you a json which can be pasted in a single line in the `gcp_service_account_key`.
268+
269+
Scopes Required: Cloud DNS, GKE
270+
271+
References:
272+
1. https://cloud.google.com/iam/docs/service-account-overview
273+
274+
275+
#### Azure
276+
277+
Supported Azure Services:
278+
- Virtual Machines
279+
280+
**Example Config:**
281+
282+
Microsoft Azure can be integrated by using the following configuration block.
283+
284+
```yaml
285+
- provider: azure # provider is the name of the provider
286+
# id is the name defined by user for filtering (optional)
287+
id: staging
288+
# client_id is the client ID of registered application of the azure account (not requuired if using cli auth)
289+
client_id: $AZURE_CLIENT_ID
290+
# client_secret is the secret ID of registered application of the zure account (not requuired if using cli uth)
291+
client_secret: $AZURE_CLIENT_SECRET
292+
# tenant_id is the tenant ID of registered application of the azure account (not requuired if using cli auth)
293+
tenant_id: $AZURE_TENANT_ID
294+
#subscription_id is the azure subscription id
295+
subscription_id: $AZURE_SUBSCRIPTION_ID
296+
#use_cli_auth if set to true cloudlist will use azure cli auth
297+
use_cli_auth: true
298+
```
299+
300+
`tenant_id`, `client_id`, `client_secret` can be obtained/generated from `All services` > `Azure Active Directory` > `App registrations`
301+
`subscription_id` can be retrieved from `All services` > `Subscriptions`
302+
303+
To use cli auth set `use_cli_auth` value to `true` and run `az login` in the terminal
304+
305+
References:
306+
1. https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli
307+
2. https://docs.microsoft.com/en-us/cli/azure/ad/sp?view=azure-cli-latest#az_ad_sp_create_for_rbac
308+
3. https://docs.microsoft.com/en-us/cli/azure/authenticate-azure-cli
309+
310+
#### Alibaba Cloud
311+
312+
Suppoted Alibaba Cloud Services:
313+
- ECS Instances
314+
315+
**Example Config:**
316+
317+
Alibaba Cloud can be integrated by using the following configuration block.
318+
319+
```yaml
320+
- provider: alibaba # provider is the name of the provider
321+
# id is the name defined by user for filtering (optional)
322+
id: staging
323+
# alibaba_region_id is the region id of the resources
324+
alibaba_region_id: $ALIBABA_REGION_ID
325+
# alibaba_access_key is the access key ID for alibaba cloud account
326+
alibaba_access_key: $ALIBABA_ACCESS_KEY
327+
# alibaba_access_key_secret is the secret access key for alibaba cloud account
328+
alibaba_access_key_secret: $ALIBABA_ACCESS_KEY_SECRET
329+
```
330+
331+
Alibaba Cloud Access Key ID and Secret can be created by visiting https://ram.console.aliyun.com/manage/ak
332+
333+
References:
334+
1. https://www.alibabacloud.com/help/faq-detail/142101.htm
335+
2. https://www.alibabacloud.com/help/doc-detail/53045.htm
336+
337+
## Infrastructure & Platform Services
338+
339+
#### Kubernetes
340+
341+
Support for:
342+
- Services
343+
- Ingresses
344+
- Cross-cloud cluster discovery
345+
346+
Navigate to [Assets → Connect Cloud Services → Kubernetes](https://cloud.projectdiscovery.io/assets/configure) to configure your cluster access.
347+
348+
#### Hashicorp Stack
349+
350+
Support for:
351+
- Terraform state file parsing
352+
- Nomad services
353+
- Consul services
354+
355+
### CDN & DNS Providers
356+
357+
Configure these providers through [Assets → Connect Cloud Services](https://cloud.projectdiscovery.io/assets/configure):
358+
359+
- **Cloudflare**: DNS and CDN assets
360+
- **Fastly**: CDN endpoints
361+
- **Namecheap**: Domain management
362+
363+
### VPS & PaaS Providers
364+
365+
Access these providers through [Assets → Connect Cloud Services](https://cloud.projectdiscovery.io/assets/configure):
366+
367+
- **DigitalOcean**: Droplets and managed services
368+
- **Scaleway**: Instances and managed services
369+
- **Heroku**: Applications and add-ons
370+
- **Linode**: Compute instances
371+
- **Hetzner Cloud**: Cloud servers
372+
373+
## Scan Configurations
374+
375+
Configure custom HTTP headers, template variables, and interactsh server settings to customize your scan behavior. Access these settings at [Scans → Configurations → Scan Settings](https://cloud.projectdiscovery.io/scans/configs?type=scan).
376+
377+
You can configure:
378+
- Custom HTTP headers for scan requests
379+
- Template variables for scan customization
380+
- Interactsh server settings for OOB testing
381+
382+
## Template Configurations
383+
384+
Access pre-configured templates or create custom configurations with filtered rules based on:
385+
- Severity levels
386+
- Tags
387+
- Protocol types
388+
- Template IDs
389+
390+
Configure these settings at [Scans → Configurations → Template Profiles](https://cloud.projectdiscovery.io/scans/configs?type=template).
391+
392+
Want to write your custom templates? Learn more in our [Template Editor](/cloud/editor/overview) documentation.
393+

0 commit comments

Comments
 (0)