@@ -26,7 +26,7 @@ data "aws_iam_session_context" "current" {
2626data  "sysdig_secure_agentless_scanning_assets"  "assets"  {}
2727
2828data  "sysdig_secure_trusted_cloud_identity"  "trusted_identity"  {
29- 	 cloud_provider  =  " aws" 
29+    cloud_provider  =  " aws" 
3030}
3131
3232data  "sysdig_secure_tenant_external_id"  "external_id"  {}
@@ -64,29 +64,13 @@ resource "random_id" "suffix" {
6464#  predefined/default AWSCloudFormationStackSetAdministrationRole.
6565# -----------------------------------------------------------------------------------------------------------------------------------------
6666
67- #  IAM Policy Document used by Stackset roles for the KMS operations policy
68- data  "aws_iam_policy_document"  "kms_operations"  {
69-   count  =  ! var. auto_create_stackset_roles  ?  0  :  1 
70- 
71-   statement  {
72-     sid  =  " KmsOperationsAccess" 
73-     effect  =  " Allow" 
74-     actions  =  
75-       " kms:*" 
76-     ]
77-     resources  =  
78-       " *" 
79-     ]
80-   }
81- }
82- 
8367resource  "aws_iam_role"  "scanning_stackset_admin_role"  {
8468  count  =  ! var. auto_create_stackset_roles  ?  0  :  1 
8569
8670  name  =  " AWSCloudFormationStackSetAdministrationRoleForScanning" 
8771  tags  =  . tags 
8872
89-   assume_role_policy  =  << EOF 
73+   assume_role_policy    =  << EOF 
9074{ 
9175  "Version": "2012-10-17", 
9276  "Statement": [ 
@@ -101,10 +85,25 @@ resource "aws_iam_role" "scanning_stackset_admin_role" {
10185} 
10286EOF 
10387  managed_policy_arns  =  " arn:aws:iam::aws:policy/AWSCloudFormationFullAccess" 
104-   inline_policy  {
105-     name    =  " KmsOperationsAccess" 
106-     policy  =  . aws_iam_policy_document . kms_operations [0 ]. json 
107-   }
88+ }
89+ 
90+ resource  "aws_iam_role_policy"  "scanning_stackset_admin_role_policy"  {
91+   count  =  ! var. auto_create_stackset_roles  ?  0  :  1 
92+ 
93+   name  =  " KmsOperationsAccess" 
94+   role  =  . scanning_stackset_admin_role [0 ]. id 
95+   policy  =  jsonencode ({
96+     Statement =  [
97+       {
98+         Sid =  " KmsOperationsAccess" 
99+         Action =  [
100+           " kms:*" 
101+         ]
102+         Effect   =  " Allow" 
103+         Resource =  " *" 
104+       },
105+     ]
106+   })
108107}
109108
110109# -----------------------------------------------------------------------------------------------------------------------------------------
@@ -139,10 +138,25 @@ EOF
139138  managed_policy_arns  =  
140139    " arn:aws:iam::aws:policy/AWSCloudFormationFullAccess" 
141140  ]
142-   inline_policy  {
143-     name    =  " KmsOperationsAccess" 
144-     policy  =  . aws_iam_policy_document . kms_operations [0 ]. json 
145-   }
141+ }
142+ 
143+ resource  "aws_iam_role_policy"  "scanning_stackset_execution_role_policy"  {
144+   count  =  ! var. auto_create_stackset_roles  ?  0  :  1 
145+ 
146+   name  =  " KmsOperationsAccess" 
147+   role  =  . scanning_stackset_execution_role [0 ]. id 
148+   policy  =  jsonencode ({
149+     Statement =  [
150+       {
151+         Sid =  " KmsOperationsAccess" 
152+         Action =  [
153+           " kms:*" 
154+         ]
155+         Effect   =  " Allow" 
156+         Resource =  " *" 
157+       },
158+     ]
159+   })
146160}
147161
148162# -----------------------------------------------------------------------------------------------------------------------------------------
@@ -368,7 +382,7 @@ resource "aws_iam_policy_attachment" "scanning_policy_attachment" {
368382#    - KMS Primary Key, and
369383#    - KMS Primary alias
370384# 
371- #  Note: self-managed stacksets require pair of StackSetAdministrationRole & StackSetExecutionRole IAM roles with self-managed permissions  
385+ #  Note: self-managed stacksets require pair of StackSetAdministrationRole & StackSetExecutionRole IAM roles with self-managed permissions
372386# -----------------------------------------------------------------------------------------------------------------------------------------
373387
374388resource  "aws_cloudformation_stack_set"  "primary_acc_stackset"  {
@@ -428,7 +442,9 @@ TEMPLATE
428442  depends_on  =  
429443    aws_iam_role . scanning_role ,
430444    aws_iam_role . scanning_stackset_admin_role ,
431-     aws_iam_role . scanning_stackset_execution_role 
445+     aws_iam_role_policy . scanning_stackset_admin_role_policy ,
446+     aws_iam_role . scanning_stackset_execution_role ,
447+     aws_iam_role_policy . scanning_stackset_execution_role_policy 
432448  ]
433449}
434450
@@ -459,10 +475,10 @@ resource "aws_cloudformation_stack_set_instance" "primary_acc_stackset_instance"
459475#  explicit dependency using depends_on
460476# -----------------------------------------------------------------------------------------------------------------
461477resource  "sysdig_secure_cloud_auth_account_component"  "aws_scanning_role"  {
462-   account_id                   =  . sysdig_secure_account_id 
463-   type                         =  " COMPONENT_TRUSTED_ROLE" 
464-   instance                     =  " secure-scanning" 
465-   version                      =  " v0.1.0" 
478+   account_id  =  . sysdig_secure_account_id 
479+   type        =  " COMPONENT_TRUSTED_ROLE" 
480+   instance    =  " secure-scanning" 
481+   version     =  " v0.1.0" 
466482  trusted_role_metadata  =  jsonencode ({
467483    aws =  {
468484      role_name =  local.scanning_resource_name
@@ -477,16 +493,16 @@ resource "sysdig_secure_cloud_auth_account_component" "aws_scanning_role" {
477493#  explicit dependency using depends_on
478494# -----------------------------------------------------------------------------------------------------------------
479495resource  "sysdig_secure_cloud_auth_account_component"  "aws_crypto_key"  {
480-   account_id                   =  . sysdig_secure_account_id 
481-   type                         =  " COMPONENT_CRYPTO_KEY" 
482-   instance                     =  " secure-scanning" 
483-   version                      =  " v0.1.0" 
496+   account_id  =  . sysdig_secure_account_id 
497+   type        =  " COMPONENT_CRYPTO_KEY" 
498+   instance    =  " secure-scanning" 
499+   version     =  " v0.1.0" 
484500  crypto_key_metadata  =  jsonencode ({
485501    aws =  {
486502      kms =  {
487-            alias   =  " alias/${ local . scanning_resource_name } " 
488-            regions =  var.regions
489-          }
503+         alias   =  " alias/${ local . scanning_resource_name } " 
504+         regions =  var.regions
505+       }
490506    }
491507  })
492508}
0 commit comments