{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateTfManagedRoleWithBoundary", "Effect": "Allow", "Action": "iam:CreateRole", "Resource": "arn:aws:iam::__ACCOUNT_ID__:role/tf-managed/*", "Condition": { "StringLike": { "iam:PermissionsBoundary": [ "arn:aws:iam::__ACCOUNT_ID__:policy/tf-managed/*", "arn:aws:iam::__ACCOUNT_ID__:policy/seahaven-lambda-execution-boundary*" ] } } }, { "Sid": "CreateHcptfWorkspaceRoles", "Effect": "Allow", "Action": "iam:CreateRole", "Resource": "arn:aws:iam::__ACCOUNT_ID__:role/hcptf-*" }, { "Sid": "CreateTfManagedPolicies", "Effect": "Allow", "Action": [ "iam:CreatePolicy", "iam:CreatePolicyVersion", "iam:DeletePolicy", "iam:DeletePolicyVersion", "iam:SetDefaultPolicyVersion", "iam:TagPolicy", "iam:UntagPolicy" ], "Resource": "arn:aws:iam::__ACCOUNT_ID__:policy/tf-managed/*" }, { "Sid": "MutateTfManagedRolesWithBoundary", "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:PutRolePolicy", "iam:PutRolePermissionsBoundary" ], "Resource": "arn:aws:iam::__ACCOUNT_ID__:role/tf-managed/*", "Condition": { "StringLike": { "iam:PermissionsBoundary": [ "arn:aws:iam::__ACCOUNT_ID__:policy/tf-managed/*", "arn:aws:iam::__ACCOUNT_ID__:policy/seahaven-lambda-execution-boundary*" ] } } }, { "Sid": "WriteTfManagedRoles", "Effect": "Allow", "Action": [ "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:TagRole", "iam:UntagRole", "iam:UpdateAssumeRolePolicy", "iam:UpdateRole", "iam:UpdateRoleDescription" ], "Resource": "arn:aws:iam::__ACCOUNT_ID__:role/tf-managed/*" }, { "Sid": "WriteHcptfWorkspaceRoles", "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:PutRolePolicy", "iam:TagRole", "iam:UntagRole", "iam:UpdateAssumeRolePolicy", "iam:UpdateRole", "iam:UpdateRoleDescription" ], "Resource": "arn:aws:iam::__ACCOUNT_ID__:role/hcptf-*" }, { "Sid": "PassTfManagedRolesToCompute", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::__ACCOUNT_ID__:role/tf-managed/*", "Condition": { "StringEquals": { "iam:PassedToService": [ "lambda.amazonaws.com", "ecs-tasks.amazonaws.com", "scheduler.amazonaws.com" ] } } }, { "Sid": "IamReadOnly", "Effect": "Allow", "Action": [ "iam:GetPolicy", "iam:GetPolicyVersion", "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies", "iam:ListPolicies", "iam:ListPolicyVersions", "iam:ListRolePolicies", "iam:ListRoles" ], "Resource": "*" }, { "Sid": "DenyProtectedPrincipals", "Effect": "Deny", "Action": [ "iam:AttachRolePolicy", "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:DeleteRolePermissionsBoundary", "iam:DetachRolePolicy", "iam:PutRolePolicy", "iam:PutRolePermissionsBoundary", "iam:UpdateAssumeRolePolicy", "iam:UpdateRole", "iam:UpdateRoleDescription" ], "Resource": [ "arn:aws:iam::__ACCOUNT_ID__:role/githubdeploy-*", "arn:aws:iam::__ACCOUNT_ID__:role/github-cfn-execution-role", "arn:aws:iam::__ACCOUNT_ID__:role/cdk-hnb659fds-*", "arn:aws:iam::__ACCOUNT_ID__:role/OrganizationAccountAccessRole", "arn:aws:iam::__ACCOUNT_ID__:role/seahaven-*" ] }, { "Sid": "DenyBoundaryTampering", "Effect": "Deny", "Action": [ "iam:DeleteRolePermissionsBoundary", "iam:DeleteUserPermissionsBoundary" ], "Resource": [ "arn:aws:iam::__ACCOUNT_ID__:role/*", "arn:aws:iam::__ACCOUNT_ID__:user/*" ] }, { "Sid": "DenySeahavenPolicyEdit", "Effect": "Deny", "Action": [ "iam:CreatePolicyVersion", "iam:DeletePolicy", "iam:DeletePolicyVersion", "iam:SetDefaultPolicyVersion" ], "Resource": "arn:aws:iam::__ACCOUNT_ID__:policy/seahaven-*" } ] }