cbea3e932b
- Agrega paso 03_terraform para DEV y PROD con init, plan y apply - Crea backend.dev.hcl para configuración explícita de estado DEV - Refactoriza Route53/ACM en main.tf para soportar PROD cross-account usando count condicional sin romper estado de DEV - Descomenta provider aws.route53 en provider.tf - Añade domain_name faltante en prod.tfvars y confirma dev.tfvars - Corrige output route53_record para recursos con count - Elimina errored.tfstate corrupto local - Incluye permiso sts:AssumeRole en IAM policy para Route53 cross-account
298 lines
8.5 KiB
JSON
298 lines
8.5 KiB
JSON
{
|
|
"Version": "2012-10-17",
|
|
"Statement": [
|
|
{
|
|
"Sid": "S3FrontendDeploy",
|
|
"Effect": "Allow",
|
|
"Action": [
|
|
"s3:PutObject",
|
|
"s3:PutObjectAcl",
|
|
"s3:DeleteObject",
|
|
"s3:ListBucket",
|
|
"s3:GetObject",
|
|
"s3:GetBucketLocation"
|
|
],
|
|
"Resource": [
|
|
"arn:aws:s3:::ccsoft-proyectosacc-frontend",
|
|
"arn:aws:s3:::ccsoft-proyectosacc-frontend/*"
|
|
]
|
|
},
|
|
{
|
|
"Sid": "S3ArtifactsBucket",
|
|
"Effect": "Allow",
|
|
"Action": [
|
|
"s3:PutObject",
|
|
"s3:PutObjectAcl",
|
|
"s3:ListBucket",
|
|
"s3:GetObject",
|
|
"s3:GetBucketLocation"
|
|
],
|
|
"Resource": [
|
|
"arn:aws:s3:::ccsoft-proyectosacc-artifacts",
|
|
"arn:aws:s3:::ccsoft-proyectosacc-artifacts/*"
|
|
]
|
|
},
|
|
{
|
|
"Sid": "CloudFrontInvalidation",
|
|
"Effect": "Allow",
|
|
"Action": [
|
|
"cloudfront:CreateInvalidation",
|
|
"cloudfront:GetInvalidation",
|
|
"cloudfront:ListInvalidations"
|
|
],
|
|
"Resource": "*"
|
|
},
|
|
{
|
|
"Sid": "CloudFrontDistributionManagement",
|
|
"Effect": "Allow",
|
|
"Action": [
|
|
"cloudfront:GetDistribution",
|
|
"cloudfront:GetDistributionConfig",
|
|
"cloudfront:CreateDistribution",
|
|
"cloudfront:UpdateDistribution",
|
|
"cloudfront:DeleteDistribution",
|
|
"cloudfront:TagResource",
|
|
"cloudfront:UntagResource",
|
|
"cloudfront:ListTagsForResource",
|
|
"cloudfront:ListDistributions",
|
|
"cloudfront:CreateOriginAccessControl",
|
|
"cloudfront:GetOriginAccessControl",
|
|
"cloudfront:UpdateOriginAccessControl",
|
|
"cloudfront:DeleteOriginAccessControl",
|
|
"cloudfront:ListOriginAccessControls"
|
|
],
|
|
"Resource": "*"
|
|
},
|
|
{
|
|
"Sid": "EC2Management",
|
|
"Effect": "Allow",
|
|
"Action": [
|
|
"ec2:DescribeInstances",
|
|
"ec2:DescribeInstanceAttribute",
|
|
"ec2:DescribeInstanceStatus",
|
|
"ec2:DescribeImages",
|
|
"ec2:DescribeKeyPairs",
|
|
"ec2:DescribeSecurityGroups",
|
|
"ec2:DescribeVpcs",
|
|
"ec2:DescribeSubnets",
|
|
"ec2:DescribeRouteTables",
|
|
"ec2:DescribeInternetGateways",
|
|
"ec2:DescribeNatGateways",
|
|
"ec2:DescribeAddresses",
|
|
"ec2:DescribeNetworkInterfaces",
|
|
"ec2:DescribeTags",
|
|
"ec2:DescribeVolumes",
|
|
"ec2:RunInstances",
|
|
"ec2:TerminateInstances",
|
|
"ec2:StartInstances",
|
|
"ec2:StopInstances",
|
|
"ec2:RebootInstances",
|
|
"ec2:CreateTags",
|
|
"ec2:DeleteTags",
|
|
"ec2:ModifyInstanceAttribute",
|
|
"ec2:AssociateAddress",
|
|
"ec2:DisassociateAddress",
|
|
"ec2:AllocateAddress",
|
|
"ec2:ReleaseAddress",
|
|
"ec2:CreateSecurityGroup",
|
|
"ec2:DeleteSecurityGroup",
|
|
"ec2:AuthorizeSecurityGroupIngress",
|
|
"ec2:RevokeSecurityGroupIngress",
|
|
"ec2:AuthorizeSecurityGroupEgress",
|
|
"ec2:RevokeSecurityGroupEgress",
|
|
"ec2:CreateVpc",
|
|
"ec2:DeleteVpc",
|
|
"ec2:CreateSubnet",
|
|
"ec2:DeleteSubnet",
|
|
"ec2:CreateInternetGateway",
|
|
"ec2:DeleteInternetGateway",
|
|
"ec2:AttachInternetGateway",
|
|
"ec2:DetachInternetGateway",
|
|
"ec2:CreateRoute",
|
|
"ec2:DeleteRoute",
|
|
"ec2:CreateRouteTable",
|
|
"ec2:DeleteRouteTable",
|
|
"ec2:AssociateRouteTable",
|
|
"ec2:DisassociateRouteTable",
|
|
"ec2:CreateNatGateway",
|
|
"ec2:DeleteNatGateway"
|
|
],
|
|
"Resource": "*"
|
|
},
|
|
{
|
|
"Sid": "RDSManagement",
|
|
"Effect": "Allow",
|
|
"Action": [
|
|
"rds:DescribeDBInstances",
|
|
"rds:DescribeDBSubnetGroups",
|
|
"rds:DescribeDBSnapshots",
|
|
"rds:DescribeDBParameterGroups",
|
|
"rds:CreateDBInstance",
|
|
"rds:ModifyDBInstance",
|
|
"rds:DeleteDBInstance",
|
|
"rds:CreateDBSubnetGroup",
|
|
"rds:DeleteDBSubnetGroup",
|
|
"rds:CreateDBSnapshot",
|
|
"rds:DeleteDBSnapshot",
|
|
"rds:RestoreDBInstanceFromDBSnapshot",
|
|
"rds:AddTagsToResource",
|
|
"rds:RemoveTagsFromResource",
|
|
"rds:ListTagsForResource"
|
|
],
|
|
"Resource": "*"
|
|
},
|
|
{
|
|
"Sid": "Route53Management",
|
|
"Effect": "Allow",
|
|
"Action": [
|
|
"route53:ListHostedZones",
|
|
"route53:GetHostedZone",
|
|
"route53:ChangeResourceRecordSets",
|
|
"route53:GetChange",
|
|
"route53:ListResourceRecordSets"
|
|
],
|
|
"Resource": "*"
|
|
},
|
|
{
|
|
"Sid": "AssumeRoute53CrossAccountRole",
|
|
"Effect": "Allow",
|
|
"Action": [
|
|
"sts:AssumeRole"
|
|
],
|
|
"Resource": "arn:aws:iam::262270938827:role/Route53ProyectosaccCrossAccountRole"
|
|
},
|
|
{
|
|
"Sid": "ACMCertificateManagement",
|
|
"Effect": "Allow",
|
|
"Action": [
|
|
"acm:RequestCertificate",
|
|
"acm:DescribeCertificate",
|
|
"acm:DeleteCertificate",
|
|
"acm:ListCertificates",
|
|
"acm:GetCertificate",
|
|
"acm:AddTagsToCertificate",
|
|
"acm:RemoveTagsFromCertificate",
|
|
"acm:ListTagsForCertificate"
|
|
],
|
|
"Resource": "*",
|
|
"Condition": {
|
|
"StringEquals": {
|
|
"aws:RequestedRegion": "us-east-1"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"Sid": "IAMReadOnlyAndRoleManagement",
|
|
"Effect": "Allow",
|
|
"Action": [
|
|
"iam:GetRole",
|
|
"iam:GetRolePolicy",
|
|
"iam:GetPolicy",
|
|
"iam:GetPolicyVersion",
|
|
"iam:GetInstanceProfile",
|
|
"iam:GetUser",
|
|
"iam:ListRoles",
|
|
"iam:ListRolePolicies",
|
|
"iam:ListAttachedRolePolicies",
|
|
"iam:ListInstanceProfiles",
|
|
"iam:ListInstanceProfilesForRole",
|
|
"iam:ListPolicyVersions",
|
|
"iam:SimulatePrincipalPolicy",
|
|
"iam:CreateRole",
|
|
"iam:DeleteRole",
|
|
"iam:PutRolePolicy",
|
|
"iam:DeleteRolePolicy",
|
|
"iam:AttachRolePolicy",
|
|
"iam:DetachRolePolicy",
|
|
"iam:CreateInstanceProfile",
|
|
"iam:DeleteInstanceProfile",
|
|
"iam:AddRoleToInstanceProfile",
|
|
"iam:RemoveRoleFromInstanceProfile",
|
|
"iam:PassRole",
|
|
"iam:CreatePolicy",
|
|
"iam:DeletePolicy",
|
|
"iam:CreatePolicyVersion",
|
|
"iam:DeletePolicyVersion",
|
|
"iam:SetDefaultPolicyVersion",
|
|
"iam:TagRole",
|
|
"iam:UntagRole",
|
|
"iam:TagPolicy",
|
|
"iam:UntagPolicy"
|
|
],
|
|
"Resource": "*"
|
|
},
|
|
{
|
|
"Sid": "CloudFormationManagement",
|
|
"Effect": "Allow",
|
|
"Action": [
|
|
"cloudformation:CreateStack",
|
|
"cloudformation:UpdateStack",
|
|
"cloudformation:DeleteStack",
|
|
"cloudformation:DescribeStacks",
|
|
"cloudformation:DescribeStackEvents",
|
|
"cloudformation:DescribeStackResources",
|
|
"cloudformation:GetTemplate",
|
|
"cloudformation:ListStacks",
|
|
"cloudformation:ValidateTemplate",
|
|
"cloudformation:CreateChangeSet",
|
|
"cloudformation:ExecuteChangeSet",
|
|
"cloudformation:DeleteChangeSet",
|
|
"cloudformation:DescribeChangeSet",
|
|
"cloudformation:SetStackPolicy",
|
|
"cloudformation:TagResource",
|
|
"cloudformation:UntagResource",
|
|
"cloudformation:ListStackResources"
|
|
],
|
|
"Resource": "*"
|
|
},
|
|
{
|
|
"Sid": "CloudWatchLogs",
|
|
"Effect": "Allow",
|
|
"Action": [
|
|
"logs:CreateLogGroup",
|
|
"logs:CreateLogStream",
|
|
"logs:PutLogEvents",
|
|
"logs:DescribeLogGroups",
|
|
"logs:DescribeLogStreams"
|
|
],
|
|
"Resource": "arn:aws:logs:*:*:log-group:/aws/*"
|
|
},
|
|
{
|
|
"Sid": "ElasticLoadBalancing",
|
|
"Effect": "Allow",
|
|
"Action": [
|
|
"elasticloadbalancing:DescribeLoadBalancers",
|
|
"elasticloadbalancing:DescribeTargetGroups",
|
|
"elasticloadbalancing:DescribeListeners",
|
|
"elasticloadbalancing:DescribeTargetHealth",
|
|
"elasticloadbalancing:CreateLoadBalancer",
|
|
"elasticloadbalancing:DeleteLoadBalancer",
|
|
"elasticloadbalancing:CreateTargetGroup",
|
|
"elasticloadbalancing:DeleteTargetGroup",
|
|
"elasticloadbalancing:CreateListener",
|
|
"elasticloadbalancing:DeleteListener",
|
|
"elasticloadbalancing:RegisterTargets",
|
|
"elasticloadbalancing:DeregisterTargets",
|
|
"elasticloadbalancing:ModifyTargetGroup",
|
|
"elasticloadbalancing:AddTags",
|
|
"elasticloadbalancing:RemoveTags"
|
|
],
|
|
"Resource": "*"
|
|
},
|
|
{
|
|
"Sid": "KMSAndSSM",
|
|
"Effect": "Allow",
|
|
"Action": [
|
|
"kms:Decrypt",
|
|
"kms:GenerateDataKey",
|
|
"kms:DescribeKey",
|
|
"ssm:GetParameter",
|
|
"ssm:GetParameters",
|
|
"ssm:DescribeParameters",
|
|
"secretsmanager:GetSecretValue"
|
|
],
|
|
"Resource": "*"
|
|
}
|
|
]
|
|
}
|