Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(terraform): add CKV NCP rules about access control group outbound rule. #3624

Merged
merged 46 commits into from
Oct 19, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
5afbd24
[22.09.27][추가] CKV_NCP_1
pj991207 Sep 27, 2022
4d48fe1
[22.09.27][추가] CKV_NCP_2
Floodnut Sep 27, 2022
9011d54
[22.09.27][Merge]
Floodnut Sep 27, 2022
ea829d9
Apply suggestions from code review
pj991207 Sep 27, 2022
0e76a1f
Apply suggestions from code review
pj991207 Sep 27, 2022
5150177
Apply suggestions from code review
pj991207 Sep 27, 2022
d2b322f
Create main.yml
pj991207 Sep 28, 2022
a7e3000
[22.09.28][수정] Lint test
Floodnut Sep 28, 2022
2f7dcdf
Merge branch 'master' of https://github.com/init-cloud/checkov
Floodnut Sep 28, 2022
f8e7357
Delete main.yml
pj991207 Sep 28, 2022
52cb35d
[22.09.29][수정]testcode 수정
pj991207 Sep 28, 2022
b1555cb
[22.09.29][수정] 테스트 코드 수정
Floodnut Sep 28, 2022
e77773d
[22.09.29][수정] 테스트코드 수정
Floodnut Sep 29, 2022
51d2b71
Merge branch 'master' into master
pj991207 Sep 29, 2022
1ccffed
[22.09.29][수정] add test resource for 'ncloud_access_control_group_rule'
Floodnut Sep 29, 2022
49fb76a
Merge branch 'master' of https://github.com/init-cloud/checkov
Floodnut Sep 29, 2022
a8ef4c5
Merge branch 'bridgecrewio:master' into master
Floodnut Oct 3, 2022
281c4dc
Merge branch 'bridgecrewio:master' into master
Floodnut Oct 3, 2022
ad93303
Merge branch 'bridgecrewio:master' into master
pj991207 Oct 3, 2022
5d8360b
[22.10.03][add]CKV_AWS_3 RULE
pj991207 Oct 3, 2022
b21c1f4
Merge branch 'bridgecrewio:master' into master
pj991207 Oct 3, 2022
3b28b37
[22.10.04][add]CKV_NCP_4, CKV_NCP_5 RULE
pj991207 Oct 4, 2022
87ecf3d
[22.10.04][add] NCP ACG Inbound for port 22, 3389
Floodnut Oct 4, 2022
53cd21b
[22.10.04][add] NCP NACL for port 20, 21, 22, 3389
taeng0204 Oct 4, 2022
8867513
[22.10.05][modify] LBSecureProtocols.py
taeng0204 Oct 5, 2022
ab60ab0
[22.10.05][add] NCP ACGIngress & Egress Check
taeng0204 Oct 5, 2022
f8be0ae
[22.10.06][add] NCP rules about ACG, LB, NACL, Encrpytion
Floodnut Oct 5, 2022
edfeef9
[22.10.06][refactor] rename rules
Floodnut Oct 5, 2022
0a66496
[22.10.07][add] NCP NACLPortCheck
Oct 7, 2022
740fc95
[22.10.08][refactor] modify rule id 77 to 14
Floodnut Oct 8, 2022
cd46c27
[22.10.09][refactor] modify branch for ncp tf3
Floodnut Oct 8, 2022
45fa73f
[22.10.09][fix] fix branch unmerged error
Floodnut Oct 8, 2022
5d3dad3
Merge branch 'ncp/rule-3' of https://github.com/init-cloud/checkov in…
Floodnut Oct 8, 2022
a38b348
[22.10.09][fix] fix branch unmerged error
Floodnut Oct 8, 2022
d66c71b
Merge branch 'bridgecrewio:master' into ncp/rule-3
Floodnut Oct 11, 2022
7444538
[22.10.11][refactor] fix lint
Floodnut Oct 11, 2022
e57ce6e
Update checkov/terraform/checks/resource/ncp/AccessControlGroupOutbou…
pj991207 Oct 12, 2022
6f4336e
[22.10.12][fix] CKV_NCP_3 AccessControlGroupOutboundRule name
pj991207 Oct 12, 2022
0a28104
[22.10.12][delete]LBTargetGroupHTTPS test code
pj991207 Oct 12, 2022
8675c3a
[22.10.12][fix] CKV_NCP_3 AccessControlGroupOutboundRule
pj991207 Oct 12, 2022
1563dbb
[22.10.13][fix] fix undefined variable error
Floodnut Oct 12, 2022
1d1a9e2
[22.10.03][add]CKV_AWS_3 RULE
Floodnut Oct 17, 2022
1cd06d2
Merge branch 'ncp/rule-3' of https://github.com/init-cloud/checkov in…
Floodnut Oct 17, 2022
b13d4be
Merge branch 'bridgecrewio:master' into ncp/rule-3
Floodnut Oct 17, 2022
eb5a83e
Merge branch 'bridgecrewio:master' into ncp/rule-3
Floodnut Oct 19, 2022
a19b72d
[22.10.19][refactor] adjust ncp rule-3
Floodnut Oct 19, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -172,4 +172,4 @@ tests/20*
# vim
.vim/
.vimspector.json
!tests/terraform/graph/variable_rendering/test_resources/tfvar_module_variables/modules/instance
!tests/terraform/graph/variable_rendering/test_resources/tfvar_module_variables/modules/instance
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck
from checkov.common.models.enums import CheckResult, CheckCategories


class AccessControlGroupOutboundRule(BaseResourceCheck):
def __init__(self):
name = "Ensure no security group rules allow outbound traffic to 0.0.0.0/0"
id = "CKV_NCP_3"
supported_resources = ('ncloud_access_control_group_rule',)

categories = (CheckCategories.NETWORKING,)
super().__init__(name=name, id=id, categories=categories,
supported_resources=supported_resources)

def scan_resource_conf(self, conf):
for outbound in conf.get('outbound', []):
ip = outbound.get('ip_block')
if ip == ['0.0.0.0/0'] or ip == ['::/0']:
return CheckResult.FAILED
return CheckResult.PASSED


check = AccessControlGroupOutboundRule()
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
class AccessControlGroupRuleDescription(BaseResourceCheck):
def __init__(self):
name = "Ensure every access control groups rule has a description"
id = "CKV_NCP_002"
id = "CKV_NCP_2"
supported_resource = [
'ncloud_access_control_group',
'ncloud_access_control_group_rule',
Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
resource "ncloud_access_control_group_rule" "pass" {
access_control_group_no = ncloud_access_control_group.acg.id

inbound {
protocol = "TCP"
ip_block = "0.0.0.0/0"
port_range = "22"
description = "accept 22 port"
}

outbound {
protocol = "TCP"
ip_block = "10.0.3.0/16"
port_range = "1-65535"
description = "accept 1-65535 port"
}
}

resource "ncloud_access_control_group_rule" "fail" {
access_control_group_no = ncloud_access_control_group.acg.id

inbound {
protocol = "TCP"
ip_block = "10.0.3.0/16"
port_range = "22"
description = "accept 22 port"
}

outbound {
protocol = "TCP"
ip_block = "0.0.0.0/0"
port_range = "1-65535"
description = "accept 1-65535 port"
}
}

resource "ncloud_access_control_group_rule" "fail1" {
access_control_group_no = ncloud_access_control_group.acg.id

inbound {
protocol = "TCP"
ip_block = "10.16.0.0/32"
port_range = "1-65535"
description = "accept 1-65535 port"
}

outbound {
protocol = "TCP"
ip_block = "::/0"
port_range = "22"
description = "accept 22 port"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import unittest
from pathlib import Path

from checkov.runner_filter import RunnerFilter
from checkov.terraform.checks.resource.ncp.AccessControlGroupOutboundRule import check
from checkov.terraform.runner import Runner


class TestAccessControlGroupOutboundRule(unittest.TestCase):
def test(self):
# given
test_files_dir = Path(__file__).parent / "example_AccessControlGroupOutboundRule"

# when
report = Runner().run(root_folder=str(test_files_dir), runner_filter=RunnerFilter(checks=[check.id]))

# then
summary = report.get_summary()

passing_resources = {
"ncloud_access_control_group_rule.pass"
}
failing_resources = {
"ncloud_access_control_group_rule.fail",
"ncloud_access_control_group_rule.fail1"
}

passed_check_resources = {c.resource for c in report.passed_checks}
failed_check_resources = {c.resource for c in report.failed_checks}

self.assertEqual(summary["passed"], 1)
self.assertEqual(summary["failed"], 2)
self.assertEqual(summary["skipped"], 0)
self.assertEqual(summary["parsing_errors"], 0)

self.assertEqual(passing_resources, passed_check_resources)
self.assertEqual(failing_resources, failed_check_resources)


if __name__ == "__main__":
unittest.main()