@@ -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 = var. 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 = data. 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 = aws_iam_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 = data. 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 = aws_iam_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 = var. sysdig_secure_account_id
463- type = " COMPONENT_TRUSTED_ROLE"
464- instance = " secure-scanning"
465- version = " v0.1.0"
478+ account_id = var. 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 = var. sysdig_secure_account_id
481- type = " COMPONENT_CRYPTO_KEY"
482- instance = " secure-scanning"
483- version = " v0.1.0"
496+ account_id = var. 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