Skip to content

Commit dd54d0b

Browse files
Merge pull request #71 from maxboynton/main
Requested Bug Fixes & Enhancements, version 0.8.0
2 parents fdb5eb5 + 4750ae6 commit dd54d0b

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+3668
-1693
lines changed
Lines changed: 112 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,125 @@
1+
# This resource will work with the following provider stored in the following directory path
2+
# mkdir -p ~/.terraform.d/plugins/paloaltonetworks.com/prismacloud/prismacloudcompute/0.7.1-release/darwin_amd64
3+
# mv terraform-provider-prismacloudcompute ~/.terraform.d/plugins/paloaltonetworks.com/prismacloud/prismacloudcompute/0.7.1-release/darwin_amd64
4+
5+
terraform {
6+
required_providers {
7+
prismacloudcompute = {
8+
source = "paloaltonetworks.com/prismacloud/prismacloudcompute"
9+
version = "0.7.1-release"
10+
}
11+
}
12+
}
13+
14+
provider "prismacloudcompute" {
15+
console_url = ""
16+
username = ""
17+
password = ""
18+
}
19+
120
resource "prismacloudcompute_container_runtime_policy" "ruleset" {
221
learning_disabled = false
322
rule {
4-
name = "Default - alert on suspicious runtime behavior"
5-
collections = ["All"]
6-
advanced_protection = true
7-
cloud_metadata_enforcement = false
23+
name = "string"
24+
collections = ["string"]
25+
advanced_protection_effect = true
26+
cloud_metadata_enforcement_effect = false
27+
previous_name = "string" # Required if Renaming the Rule
28+
skip_exec_sessions = false # true | false
29+
wildfire_analysis = "alert" # "block" | "prevent" | "alert" | "disable"
30+
custom_rule {
31+
id = 0
32+
action = "string"
33+
effect = "string" # "allow" | "ban" | "block" | "prevent" | "alert" | "disable"
34+
}
35+
custom_rule {
36+
id = 1
37+
action = "string"
38+
effect = "string" # "allow" | "ban" | "block" | "prevent" | "alert" | "disable"
39+
}
840
dns {
9-
allowed = []
10-
denied = []
11-
deny_effect = "disable"
41+
default_effect = "alert" # "block" | "prevent" | "alert" | "disable"
42+
disabled = true
43+
domain_list {
44+
allowed = ["0.0.0.0"]
45+
denied = ["1.1.1.1"]
46+
effect = "disable"
47+
}
1248
}
1349
filesystem {
14-
allowed = []
15-
backdoor_files = true
16-
check_new_files = true
17-
denied = []
18-
deny_effect = "alert"
19-
skip_encrypted_binaries = false
20-
suspicious_elf_headers = true
50+
allowed_list = ["string"]
51+
backdoor_files_effect = "disable" # "block" | "prevent" | "alert" | "disable"
52+
default_effect = "alert" # "block" | "prevent" | "alert" | "disable"
53+
denied_list {
54+
effect = "disable" # "block" | "prevent" | "alert" | "disable"
55+
paths = ["string"]
56+
}
57+
disabled = true
58+
encrypted_binaries_effect = "disable"
59+
new_files_effect = "disable"
60+
suspicious_elf_headers_effect = "disable"
2161
}
2262
kubernetes_enforcement = false
2363
network {
24-
allowed_outbound_ips = []
25-
denied_outbound_ips = []
26-
deny_effect = "alert"
27-
detect_port_scan = true
28-
skip_modified_processes = false
29-
skip_raw_sockets = false
64+
allowed_ips = ["0.0.0.0"]
65+
default_effect = "alert"
66+
denied_ips = ["1.1.1.1"]
67+
denied_ips_effect = "disable"
68+
disabled = true
69+
listening_ports {
70+
allowed {
71+
deny = true
72+
end = 333
73+
start = 222
74+
}
75+
denied {
76+
deny = true
77+
end = 5000
78+
start = 4000
79+
}
80+
denied {
81+
deny = true
82+
end = 222
83+
start = 111
84+
}
85+
effect = "disable" # "block" | "prevent" | "alert" | "disable"
86+
}
87+
modified_proc_effect = "disable" # "block" | "prevent" | "alert" | "disable"
88+
outbound_ports {
89+
allowed {
90+
deny = true
91+
end = 300
92+
start = 200
93+
}
94+
denied {
95+
deny = true
96+
end = 6000
97+
start = 5000
98+
}
99+
denied {
100+
deny = true
101+
end = 222
102+
start = 111
103+
}
104+
effect = "disable" # "block" | "prevent" | "alert" | "disable"
105+
}
106+
port_scan_effect = "disable" # "block" | "prevent" | "alert" | "disable"
107+
raw_sockets_effect = "disable" # "block" | "prevent" | "alert" | "disable"
30108
}
31109
processes {
32-
allowed = []
33-
check_crypto_miners = true
34-
check_lateral_movement = true
35-
denied = []
36-
deny_effect = "alert"
110+
modified_process_effect = "disable" # "block" | "prevent" | "alert" | "disable"
111+
crypto_miners_effect = "disable" # "block" | "prevent" | "alert" | "disable"
112+
lateral_movement_effect = "disable" # "block" | "prevent" | "alert" | "disable"
113+
reverse_shell_effect = "disable" # "block" | "prevent" | "alert" | "disable"
114+
suid_binaries_effect = "disable" # "block" | "prevent" | "alert" | "disable"
115+
default_effect = "alert" # "block" | "prevent" | "alert" | "disable"
116+
check_parent_child = false
117+
allowed_list = []
118+
disabled = false
119+
denied_list {
120+
effect = "disable" # "block" | "prevent" | "alert" | "disable"
121+
paths = ["test"]
122+
}
37123
}
38-
wildfire_analysis = "alert"
39124
}
40-
}
125+
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package account
2+
3+
import (
4+
"fmt"
5+
"net/http"
6+
7+
"github.com/PaloAltoNetworks/terraform-provider-prismacloudcompute/internal/api"
8+
"github.com/PaloAltoNetworks/terraform-provider-prismacloudcompute/internal/api/auth"
9+
)
10+
11+
const CloudScanRulesEndpoint = "api/v1/cloud-scan-rules"
12+
13+
// Serverless scan specs struct
14+
type ServerLessScanSpec struct {
15+
Enabled bool `json:"enabled,omitempty"`
16+
Cap int `json:"cap,omitempty"`
17+
ScanAllVersions bool `json:"scanAllVersions,omitempty"`
18+
ScanLayers bool `json:"scanLayers,omitempty"`
19+
}
20+
21+
type AgentlessScanSpec struct {
22+
Enabled bool `json:"enabled,omitempty"`
23+
HubAccount bool `json:"hubAccount,omitempty"`
24+
ConsoleAddr string `json:"consoleAddr,omitempty"`
25+
ScanNonRunning bool `json:"scanNonRunning,omitempty"`
26+
ProxyAddress string `json:"proxyAddress,omitempty"`
27+
ProxyCA string `json:"proxyCA,omitempty"`
28+
SkipPermissionsCheck bool `json:"skipPermissionsCheck,omitempty"`
29+
AutoScale bool `json:"autoScale,omitempty"`
30+
Scanners int `json:"scanners,omitempty"`
31+
SecurityGroup string `json:"securityGroup,omitempty"`
32+
SubNet string `json:"subnet,omitempty"`
33+
Regions []string `json:"regions,omitempty"`
34+
CustomTags []Tag `json:"customTags,omitempty"`
35+
IncludedTags []Tag `json:"includedTags,omitempty"`
36+
}
37+
38+
type Tag struct {
39+
Key string `json:"key,omitempty"`
40+
Value string `json:"value,omitempty"`
41+
}
42+
43+
type CloudScanRule struct {
44+
CredentialId string `json:"credentialId"`
45+
Credential auth.Credential `json:"credential,omitempty"`
46+
DiscoveryEnabled bool `json:"discoveryEnabled,omitempty"`
47+
ServerlessRadarEnabled bool `json:"serverlessRadarEnabled,omitempty"`
48+
VmTagsEnabled bool `json:"vmTagsEnabled,omitempty"`
49+
DiscoverAllFunctionVersions bool `json:"discoverAllFunctionVersions,omitempty"`
50+
ServerlessRadarCap int `json:"serverlessRadarCap,omitempty"`
51+
AgentlessScanSpec AgentlessScanSpec `json:"agentlessScanSpec,omitempty"`
52+
ServerlessScanSpec ServerLessScanSpec `json:"serverlessScanSpec,omitempty"`
53+
AwsRegionType string `json:"awsRegionType,omitempty"`
54+
}
55+
56+
// Get all cloud can rules
57+
func ListCloudScanRules(c api.Client) ([]CloudScanRule, error) {
58+
var ans []CloudScanRule
59+
if err := c.Request(http.MethodGet, CloudScanRulesEndpoint, nil, nil, &ans); err != nil {
60+
return nil, fmt.Errorf("error listing Cloud Scan Rules: %s", err)
61+
}
62+
return ans, nil
63+
}
64+
65+
// Get a specific cloud scan rule
66+
func GetCloudScanRule(c api.Client, name string) (*CloudScanRule, error) {
67+
var ans []CloudScanRule
68+
69+
if err := c.Request(http.MethodGet, CloudScanRulesEndpoint, map[string]string{"search": name}, nil, &ans); err != nil {
70+
return nil, fmt.Errorf("error searching Cloud Scan Rules: %s", err)
71+
}
72+
for _, val := range ans {
73+
if val.CredentialId == name {
74+
return &val, nil
75+
}
76+
}
77+
return nil, fmt.Errorf("Cloud Scan Rule '%s' not found", name)
78+
}
79+
80+
// Create/Update cloud scan rules
81+
func UpdateCloudScanRule(c api.Client, rule []CloudScanRule) error {
82+
return c.Request(http.MethodPut, CloudScanRulesEndpoint, nil, rule, nil)
83+
}
84+
85+
// Delete an existing cloud scan rule
86+
func DeleteCloudScanRule(c api.Client, name string) error {
87+
return c.Request(http.MethodDelete, fmt.Sprintf("%s/%s", CloudScanRulesEndpoint, name), nil, nil, nil)
88+
}

0 commit comments

Comments
 (0)