2026-09-02 15:22:48 +00:00
|
|
|
{
|
|
|
|
|
"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-*"
|
|
|
|
|
},
|
|
|
|
|
{
|
2026-09-21 18:59:08 +00:00
|
|
|
"Sid": "PassTfManagedRolesToCompute",
|
2026-09-02 15:22:48 +00:00
|
|
|
"Effect": "Allow",
|
|
|
|
|
"Action": "iam:PassRole",
|
|
|
|
|
"Resource": "arn:aws:iam::__ACCOUNT_ID__:role/tf-managed/*",
|
|
|
|
|
"Condition": {
|
|
|
|
|
"StringEquals": {
|
2026-09-21 18:59:08 +00:00
|
|
|
"iam:PassedToService": [
|
|
|
|
|
"lambda.amazonaws.com",
|
|
|
|
|
"ecs-tasks.amazonaws.com",
|
|
|
|
|
"scheduler.amazonaws.com"
|
|
|
|
|
]
|
2026-09-02 15:22:48 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"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-*"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|