@@ -73,6 +73,60 @@ resource "aws_s3_bucket_policy" "backup_bucket" {
7373 })
7474}
7575
76+ # ***************************************
77+ # IAM Role & Policy for MPC Backup Vault
78+ # ***************************************
79+
80+ # Trust policy: Allow trusted principals to assume this role
81+ data "aws_iam_policy_document" "assume_role" {
82+ statement {
83+ actions = [" sts:AssumeRole" ]
84+ effect = " Allow"
85+ principals {
86+ type = " AWS"
87+ identifiers = var. trusted_principal_arns
88+ }
89+ }
90+ }
91+
92+ resource "aws_iam_role" "mpc_backup_role" {
93+ name = var. mpc_backup_role_name != null ? var. mpc_backup_role_name : " mpc-backup-${ var . party_name } "
94+ assume_role_policy = data. aws_iam_policy_document . assume_role . json
95+ tags = var. tags
96+ }
97+
98+ # Policy allowing access to the bucket
99+ resource "aws_iam_policy" "mpc_aws" {
100+ name = var. mpc_backup_role_name != null ? var. mpc_backup_role_name : " mpc-backup-${ var . party_name } "
101+ policy = jsonencode ({
102+ Version = " 2012-10-17"
103+ Statement = [
104+ {
105+ Sid = " AllowObjectActions"
106+ Effect = " Allow"
107+ Action = " s3:*Object"
108+ Resource = [
109+ " arn:aws:s3:::${ aws_s3_bucket . backup_bucket . id } /*"
110+ ]
111+ },
112+ {
113+ Sid = " AllowListBucket"
114+ Effect = " Allow"
115+ Action = " s3:ListBucket"
116+ Resource = [
117+ " arn:aws:s3:::${ aws_s3_bucket . backup_bucket . id } "
118+ ]
119+ }
120+ ]
121+ })
122+ }
123+
124+ # Attach policy to the role
125+ resource "aws_iam_role_policy_attachment" "mpc_backup_attach" {
126+ role = aws_iam_role. mpc_backup_role . name
127+ policy_arn = aws_iam_policy. mpc_aws . arn
128+ }
129+
76130# ***************************************
77131# S3 Replica Bucket (Cross-Region)
78132# ***************************************
@@ -206,57 +260,3 @@ resource "aws_s3_bucket_replication_configuration" "backup_bucket" {
206260 aws_s3_bucket_versioning . replica_bucket
207261 ]
208262}
209-
210- # ***************************************
211- # IAM Role & Policy for MPC Backup Vault
212- # ***************************************
213-
214- # Trust policy: Allow trusted principals to assume this role
215- data "aws_iam_policy_document" "assume_role" {
216- statement {
217- actions = [" sts:AssumeRole" ]
218- effect = " Allow"
219- principals {
220- type = " AWS"
221- identifiers = var. trusted_principal_arns
222- }
223- }
224- }
225-
226- resource "aws_iam_role" "mpc_backup_role" {
227- name = var. mpc_backup_role_name != null ? var. mpc_backup_role_name : " mpc-backup-${ var . party_name } "
228- assume_role_policy = data. aws_iam_policy_document . assume_role . json
229- tags = var. tags
230- }
231-
232- # Policy allowing access to the bucket
233- resource "aws_iam_policy" "mpc_aws" {
234- name = var. mpc_backup_role_name != null ? var. mpc_backup_role_name : " mpc-backup-${ var . party_name } "
235- policy = jsonencode ({
236- Version = " 2012-10-17"
237- Statement = [
238- {
239- Sid = " AllowObjectActions"
240- Effect = " Allow"
241- Action = " s3:*Object"
242- Resource = [
243- " arn:aws:s3:::${ aws_s3_bucket . backup_bucket . id } /*"
244- ]
245- },
246- {
247- Sid = " AllowListBucket"
248- Effect = " Allow"
249- Action = " s3:ListBucket"
250- Resource = [
251- " arn:aws:s3:::${ aws_s3_bucket . backup_bucket . id } "
252- ]
253- }
254- ]
255- })
256- }
257-
258- # Attach policy to the role
259- resource "aws_iam_role_policy_attachment" "mpc_backup_attach" {
260- role = aws_iam_role. mpc_backup_role . name
261- policy_arn = aws_iam_policy. mpc_aws . arn
262- }
0 commit comments