A controller role is a cross-account IAM role that
-
allows Multicloud Defense to access your cloud resources.
-
permits actions like create EC2 instances, load balancers, and modifying Route53 entries.
-
uses the Multicloud Defense-controller-account service principal with an external ID for security.
IAM Policy Example
Here is an example of the IAM policy applied to the role. The controller role name used in this example is Multicloud Defense-controller-role:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"acm:DescribeCertificate",
"aacm:ListCertificates",
"apigateway:Get",
"bedrock:Get*",
"bedrock:List*",
"bedrock:Retrieve",
"ec2:*",
"elasticloadbalancing:*",
"events:*",
"globalaccelerator:*"
"iam:ListPolicies",
"iam:ListRoles",
"iam:ListRoleTags",
"logs:*",
"route53resolver:*",
"servicequotas:GetServiceQuota",
"s3:ListAllMyBuckets",
"s3:ListBucket",
"wafv2:Get*",
"wafv2:List*,
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": [
"iam:GetRole",
"iam:ListRolePolicies",
"iam:GetRolePolicy"
],
"Effect": "Allow",
"Resource": [
"arn:aws:iam::<ciscomcd-account>:role/ciscomcd-controller-role"
]
},
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<S3Bucket>/*"
},
{
"Action": [
"iam:GetRole",
"iam:ListRolePolicies",
"iam:GetRolePolicy",
"iam:PassRole"
],
"Effect": "Allow",
"Resource": "arn:aws:iam::<customer- account>:role/ciscomcd_firewall_role"
},
{
"Action": "iam:CreateServiceLinkedRole",
"Effect": "Allow",
"Resource": "arn:aws:iam::*:role/aws-service-role/*"
}
]
}
Service Principal:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::<ciscomcd-account>:root"
]
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "ciscomcd-external-id"
}
}
}
]
}
Replace placeholders like <ciscomcd-account> and <S3Bucket> with actual values during implementation.