Skip to content

Commit 406be68

Browse files
committed
Backport to add support for CML backup trust policy to aws xaccount role
Signed-off-by: Jim Enright <[email protected]>
1 parent 0309d9e commit 406be68

File tree

3 files changed

+39
-1
lines changed

3 files changed

+39
-1
lines changed

modules/terraform-cdp-aws-pre-reqs/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,9 @@ In each directory an example `terraform.tfvars.sample` values file is included t
112112
| [aws_iam_policy_document.cdp_idbroker_role_policy_doc](https://registry.terraform.io/providers/hashicorp/aws/4.67.0/docs/data-sources/iam_policy_document) | data source |
113113
| [aws_iam_policy_document.cdp_log_role_policy_doc](https://registry.terraform.io/providers/hashicorp/aws/4.67.0/docs/data-sources/iam_policy_document) | data source |
114114
| [aws_iam_policy_document.cdp_ranger_audit_role_policy_doc](https://registry.terraform.io/providers/hashicorp/aws/4.67.0/docs/data-sources/iam_policy_document) | data source |
115+
| [aws_iam_policy_document.cdp_xaccount_assume_role_policy](https://registry.terraform.io/providers/hashicorp/aws/4.67.0/docs/data-sources/iam_policy_document) | data source |
115116
| [aws_iam_policy_document.cdp_xaccount_role_policy_doc](https://registry.terraform.io/providers/hashicorp/aws/4.67.0/docs/data-sources/iam_policy_document) | data source |
117+
| [aws_iam_policy_document.cml_backup_assume_policy_doc](https://registry.terraform.io/providers/hashicorp/aws/4.67.0/docs/data-sources/iam_policy_document) | data source |
116118
| [aws_vpc_endpoint_service.gateway_endpoints](https://registry.terraform.io/providers/hashicorp/aws/4.67.0/docs/data-sources/vpc_endpoint_service) | data source |
117119
| [aws_vpc_endpoint_service.interface_endpoints](https://registry.terraform.io/providers/hashicorp/aws/4.67.0/docs/data-sources/vpc_endpoint_service) | data source |
118120
| [http_http.bucket_access_policy_doc](https://registry.terraform.io/providers/hashicorp/http/3.2.1/docs/data-sources/http) | data source |
@@ -187,6 +189,7 @@ In each directory an example `terraform.tfvars.sample` values file is included t
187189
| <a name="input_vpc_public_outbound_acl_rules"></a> [vpc\_public\_outbound\_acl\_rules](#input\_vpc\_public\_outbound\_acl\_rules) | Public subnets outbound network ACLs. Exposes default value of VPC module variable to allow for overriding. Only used when create\_vpc is true. | `list(map(string))` | <pre>[<br> {<br> "cidr_block": "0.0.0.0/0",<br> "from_port": 0,<br> "protocol": "-1",<br> "rule_action": "allow",<br> "rule_number": 100,<br> "to_port": 0<br> }<br>]</pre> | no |
188190
| <a name="input_vpc_public_subnets_map_public_ip_on_launch"></a> [vpc\_public\_subnets\_map\_public\_ip\_on\_launch](#input\_vpc\_public\_subnets\_map\_public\_ip\_on\_launch) | Auto-assign public IP on launch for instances created in Public Subnets. Exposes default value of VPC module variable to allow for overriding. Only used when create\_vpc is true. | `bool` | `true` | no |
189191
| <a name="input_xaccount_account_policy_doc"></a> [xaccount\_account\_policy\_doc](#input\_xaccount\_account\_policy\_doc) | Contents of cross acount policy document | `string` | `null` | no |
192+
| <a name="input_xaccount_cml_backup_assume_role"></a> [xaccount\_cml\_backup\_assume\_role](#input\_xaccount\_cml\_backup\_assume\_role) | Add AWS Backup Service, required for CML Backup and Restore, to Cross Account Trust Relationship. | `bool` | `false` | no |
190193
| <a name="input_xaccount_policy_name"></a> [xaccount\_policy\_name](#input\_xaccount\_policy\_name) | Cross Account Policy name | `string` | `null` | no |
191194
| <a name="input_xaccount_role_name"></a> [xaccount\_role\_name](#input\_xaccount\_role\_name) | Cross account Assume role Name | `string` | `null` | no |
192195

modules/terraform-cdp-aws-pre-reqs/main.tf

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -476,12 +476,38 @@ data "aws_iam_policy_document" "cdp_xaccount_role_policy_doc" {
476476
}
477477
}
478478

479+
# Optional assume role policy document for the CML Backup and Restore
480+
data "aws_iam_policy_document" "cml_backup_assume_policy_doc" {
481+
482+
count = var.xaccount_cml_backup_assume_role ? 1 : 0
483+
484+
version = "2012-10-17"
485+
486+
statement {
487+
actions = ["sts:AssumeRole"]
488+
effect = "Allow"
489+
490+
principals {
491+
type = "Service"
492+
identifiers = ["backup.amazonaws.com"]
493+
}
494+
}
495+
}
496+
497+
data "aws_iam_policy_document" "cdp_xaccount_assume_role_policy" {
498+
499+
source_policy_documents = [
500+
data.aws_iam_policy_document.cdp_xaccount_role_policy_doc.json,
501+
try(data.aws_iam_policy_document.cml_backup_assume_policy_doc[0].json, "")
502+
]
503+
}
504+
479505
# Create the IAM role that uses the above assume_role_policy document
480506
resource "aws_iam_role" "cdp_xaccount_role" {
481507
name = local.xaccount_role_name
482508
description = "CDP Cross Account role for ${var.env_prefix}"
483509

484-
assume_role_policy = data.aws_iam_policy_document.cdp_xaccount_role_policy_doc.json
510+
assume_role_policy = data.aws_iam_policy_document.cdp_xaccount_assume_role_policy.json
485511

486512
tags = merge(local.env_tags, { Name = local.xaccount_role_name })
487513
}

modules/terraform-cdp-aws-pre-reqs/variables.tf

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,15 @@ variable "create_extra_xaccount_policy" {
390390
default = true
391391
}
392392

393+
# Add extra assume role policy for CML Backup and Restore
394+
variable "xaccount_cml_backup_assume_role" {
395+
type = bool
396+
397+
description = "Add AWS Backup Service, required for CML Backup and Restore, to Cross Account Trust Relationship."
398+
399+
default = false
400+
}
401+
393402
# CDP IDBroker Assume Role policy
394403
variable "idbroker_policy_name" {
395404
type = string

0 commit comments

Comments
 (0)