File tree Expand file tree Collapse file tree 6 files changed +71
-12
lines changed
test_templates/yaml/iam_passrole_resource_wildcard Expand file tree Collapse file tree 6 files changed +71
-12
lines changed Original file line number Diff line number Diff line change @@ -23,7 +23,7 @@ def audit_impl(cfn_model)
23
23
violating_roles = cfn_model . resources_by_type ( 'AWS::IAM::Role' ) . select do |role |
24
24
violating_policies = role . policy_objects . select do |policy |
25
25
violating_statements = policy . policy_document . statements . select do |statement |
26
- passrole_action? ( statement ) && wildcard_resource? ( statement )
26
+ statement . effect == 'Allow' && passrole_action? ( statement ) && wildcard_resource? ( statement )
27
27
end
28
28
!violating_statements . empty?
29
29
end
Original file line number Diff line number Diff line change @@ -16,7 +16,7 @@ def audit_impl(cfn_model)
16
16
17
17
violating_policies = policies . select do |policy |
18
18
violating_statements = policy . policy_document . statements . select do |statement |
19
- passrole_action? ( statement ) && wildcard_resource? ( statement )
19
+ statement . effect == 'Allow' && passrole_action? ( statement ) && wildcard_resource? ( statement )
20
20
end
21
21
!violating_statements . empty?
22
22
end
Original file line number Diff line number Diff line change 38
38
rule = SPCMRule . new
39
39
rule . spcm_threshold = 1
40
40
actual_logical_resource_ids = rule . audit_impl cfn_model
41
- expected_logical_resource_ids = %w[ InlinePolicyPass ]
41
+ expected_logical_resource_ids = %w[ InlinePolicyPass InlinePolicyDenyPass ]
42
42
43
43
expect ( actual_logical_resource_ids ) . to eq expected_logical_resource_ids
44
44
end
Original file line number Diff line number Diff line change @@ -3,7 +3,7 @@ Resources:
3
3
4
4
GenericGroup :
5
5
Type : AWS::IAM::Group
6
- Properties :
6
+ Properties :
7
7
GroupName : GenericGroup
8
8
9
9
InlinePolicyPass :
@@ -15,7 +15,7 @@ Resources:
15
15
Statement :
16
16
-
17
17
Effect : " Allow"
18
- Action :
18
+ Action :
19
19
- " s3:ListBucket"
20
20
- " s3:GetBucketLocation"
21
21
Resource : " arn:aws:s3:::*"
@@ -29,5 +29,31 @@ Resources:
29
29
Effect : Allow
30
30
Action : " iam:PassRole"
31
31
Resource : " arn:aws:s3:::*"
32
+ Groups :
33
+ - !Ref GenericGroup
34
+
35
+ InlinePolicyDenyPass :
36
+ Type : " AWS::IAM::Policy"
37
+ Properties :
38
+ PolicyName : WildcardDenyResourcePolicy
39
+ PolicyDocument :
40
+ Version : " 2012-10-17"
41
+ Statement :
42
+ -
43
+ Effect : " Allow"
44
+ Action :
45
+ - " s3:ListBucket"
46
+ - " s3:GetBucketLocation"
47
+ Resource : " arn:aws:s3:::*"
48
+ -
49
+ Effect : Allow
50
+ Action :
51
+ - " s3:ListBucket"
52
+ - " s3:GetBucketLocation"
53
+ Resource : " *"
54
+ -
55
+ Effect : Deny
56
+ Action : " iam:PassRole"
57
+ Resource : " *"
32
58
Groups :
33
59
- !Ref GenericGroup
Original file line number Diff line number Diff line change @@ -3,7 +3,7 @@ Resources:
3
3
4
4
GenericGroup :
5
5
Type : AWS::IAM::Group
6
- Properties :
6
+ Properties :
7
7
GroupName : GenericGroup
8
8
9
9
ManagedPolicyPass1 :
@@ -14,7 +14,7 @@ Resources:
14
14
Statement :
15
15
-
16
16
Effect : " Allow"
17
- Action :
17
+ Action :
18
18
- " s3:ListBucket"
19
19
- " s3:GetBucketLocation"
20
20
Resource : " arn:aws:s3:::*"
@@ -31,7 +31,7 @@ Resources:
31
31
- " s3:ListBucket"
32
32
- " s3:GetBucketLocation"
33
33
Resource : " *"
34
-
34
+
35
35
ManagedPolicyPass3 :
36
36
Type : " AWS::IAM::ManagedPolicy"
37
37
Properties :
@@ -43,4 +43,15 @@ Resources:
43
43
Action : " iam:PassRole"
44
44
Resource : " arn:aws:s3:::*"
45
45
Groups :
46
- - !Ref GenericGroup
46
+ - !Ref GenericGroup
47
+
48
+ ManagedPolicyPass4 :
49
+ Type : " AWS::IAM::ManagedPolicy"
50
+ Properties :
51
+ PolicyDocument :
52
+ Version : " 2012-10-17"
53
+ Statement :
54
+ -
55
+ Effect : Deny
56
+ Action : " iam:PassRole"
57
+ Resource : " *"
Original file line number Diff line number Diff line change 1
1
---
2
2
Resources :
3
-
3
+ RoleDeny :
4
+ Type : AWS::IAM::Role
5
+ Properties :
6
+ AssumeRolePolicyDocument :
7
+ Version : " 2012-10-17"
8
+ Statement :
9
+ -
10
+ Effect : Allow
11
+ Principal :
12
+ Service :
13
+ - cloudformation.amazonaws.com
14
+ Action :
15
+ - sts:AssumeRole
16
+ Policies :
17
+ -
18
+ PolicyName : PolicyDeny
19
+ PolicyDocument :
20
+ Version : " 2012-10-17"
21
+ Statement :
22
+ -
23
+ Effect : Deny
24
+ Action : " iam:PassRole"
25
+ Resource : " *"
4
26
RoleFail :
5
- Type : AWS::IAM::Role
27
+ Type : AWS::IAM::Role
6
28
Properties :
7
29
AssumeRolePolicyDocument :
8
30
Version : " 2012-10-17"
@@ -22,7 +44,7 @@ Resources:
22
44
Statement :
23
45
-
24
46
Effect : " Allow"
25
- Action :
47
+ Action :
26
48
- " s3:ListBucket"
27
49
- " s3:GetBucketLocation"
28
50
Resource : " arn:aws:s3:::*"
You can’t perform that action at this time.
0 commit comments