Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ data "aws_iam_policy_document" "assumed_role_permissions_boundary" {
"support:*",
"sqs:*",
"tag:*",
"trustedadvisor:*"
"trustedadvisor:*",
"xray:*"
]

resources = ["*"]
Expand Down
56 changes: 37 additions & 19 deletions infrastructure/stacks/api-layer/iam_policies.tf
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Read-only policy for DynamoDB
data "aws_iam_policy_document" "dynamodb_read_policy_doc" {
statement {
actions = ["dynamodb:GetItem", "dynamodb:Query", "dynamodb:Scan"]
actions = ["dynamodb:GetItem", "dynamodb:Query", "dynamodb:Scan"]
resources = [module.eligibility_status_table.arn]
}
}
Expand All @@ -16,7 +16,7 @@ resource "aws_iam_role_policy" "lambda_dynamodb_read_policy" {
# Write-only policy for DynamoDB
data "aws_iam_policy_document" "dynamodb_write_policy_doc" {
statement {
actions = ["dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem"]
actions = ["dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:BatchWriteItem"]
resources = [module.eligibility_status_table.arn]
}
}
Expand All @@ -37,15 +37,15 @@ data "aws_iam_policy_document" "dynamo_kms_access_policy_doc" {

# Attach dynamoDB write policy to external write role
resource "aws_iam_role_policy" "external_dynamodb_write_policy" {
count = length(aws_iam_role.write_access_role)
count = length(aws_iam_role.write_access_role)
name = "DynamoDBWriteAccess"
role = aws_iam_role.write_access_role[count.index].id
policy = data.aws_iam_policy_document.dynamodb_write_policy_doc.json
}

# Attach dynamo KMS policy to external write role
resource "aws_iam_role_policy" "external_kms_access_policy" {
count = length(aws_iam_role.write_access_role)
count = length(aws_iam_role.write_access_role)
name = "KMSAccessForDynamoDB"
role = aws_iam_role.write_access_role[count.index].id
policy = data.aws_iam_policy_document.dynamo_kms_access_policy_doc.json
Expand All @@ -65,7 +65,7 @@ data "aws_iam_policy_document" "s3_rules_bucket_policy" {
]
condition {
test = "Bool"
values = ["true"]
values = ["true"]
variable = "aws:SecureTransport"
}
}
Expand All @@ -90,7 +90,7 @@ data "aws_iam_policy_document" "rules_s3_bucket_policy" {
"${module.s3_rules_bucket.storage_bucket_arn}/*",
]
principals {
type = "*"
type = "*"
identifiers = ["*"]
}
condition {
Expand Down Expand Up @@ -121,7 +121,7 @@ data "aws_iam_policy_document" "audit_s3_bucket_policy" {
"${module.s3_audit_bucket.storage_bucket_arn}/*",
]
principals {
type = "*"
type = "*"
identifiers = ["*"]
}
condition {
Expand Down Expand Up @@ -192,15 +192,15 @@ resource "aws_iam_role_policy_attachment" "lambda_logs_policy_attachment" {
# Policy doc for S3 Audit bucket
data "aws_iam_policy_document" "s3_audit_bucket_policy" {
statement {
sid = "AllowSSLRequestsOnly"
sid = "AllowSSLRequestsOnly"
actions = ["s3:*"]
resources = [
module.s3_audit_bucket.storage_bucket_arn,
"${module.s3_audit_bucket.storage_bucket_arn}/*",
]
condition {
test = "Bool"
values = ["true"]
values = ["true"]
variable = "aws:SecureTransport"
}
}
Expand All @@ -222,18 +222,18 @@ data "aws_iam_policy_document" "dynamodb_kms_key_policy" {
sid = "EnableIamUserPermissions"
effect = "Allow"
principals {
type = "AWS"
type = "AWS"
identifiers = ["arn:aws:iam::${data.aws_caller_identity.current.account_id}:root"]
}
actions = ["kms:*"]
actions = ["kms:*"]
resources = ["*"]
}

statement {
sid = "AllowLambdaDecrypt"
effect = "Allow"
principals {
type = "AWS"
type = "AWS"
identifiers = [aws_iam_role.eligibility_lambda_role.arn]
}
actions = [
Expand All @@ -260,21 +260,21 @@ data "aws_iam_policy_document" "s3_rules_kms_key_policy" {
sid = "EnableIamUserPermissions"
effect = "Allow"
principals {
type = "AWS"
type = "AWS"
identifiers = ["arn:aws:iam::${data.aws_caller_identity.current.account_id}:root"]
}
actions = ["kms:*"]
actions = ["kms:*"]
resources = ["*"]
}

statement {
sid = "AllowLambdaDecrypt"
effect = "Allow"
principals {
type = "AWS"
type = "AWS"
identifiers = [aws_iam_role.eligibility_lambda_role.arn]
}
actions = ["kms:Decrypt"]
actions = ["kms:Decrypt"]
resources = ["*"]
}
}
Expand All @@ -293,17 +293,17 @@ data "aws_iam_policy_document" "s3_audit_kms_key_policy" {
sid = "EnableIamUserPermissions"
effect = "Allow"
principals {
type = "AWS"
type = "AWS"
identifiers = ["arn:aws:iam::${data.aws_caller_identity.current.account_id}:root"]
}
actions = ["kms:*"]
actions = ["kms:*"]
resources = ["*"]
}
statement {
sid = "AllowLambdaFullWrite"
effect = "Allow"
principals {
type = "AWS"
type = "AWS"
identifiers = [aws_iam_role.eligibility_lambda_role.arn, aws_iam_role.eligibility_audit_firehose_role.arn]
}
actions = [
Expand Down Expand Up @@ -340,3 +340,21 @@ resource "aws_iam_role_policy" "lambda_firehose_policy" {
role = aws_iam_role.eligibility_lambda_role.id
policy = data.aws_iam_policy_document.lambda_firehose_write_policy.json
}

data "aws_iam_policy_document" "lambda_xray_tracing_permissions_policy" {
statement {
sid = "AllowLambdaToPutToXRay"
effect = "Allow"
actions = [
"xray:PutTraceSegments",
"xray:PutTelemetryRecords"
]
resources = ["*"]
}
}

resource "aws_iam_role_policy" "lambda_xray_tracing_policy" {
name = "LambdaXRayWritePolicy"
role = aws_iam_role.eligibility_lambda_role.id
policy = data.aws_iam_policy_document.lambda_xray_tracing_permissions_policy.json
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ data "aws_iam_policy_document" "permissions_boundary" {
"support:*",
"sqs:*",
"tag:*",
"trustedadvisor:*"
"trustedadvisor:*",
"xray:*"
]

resources = ["*"]
Expand Down
2 changes: 2 additions & 0 deletions infrastructure/stacks/networking/locals.tf
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ locals {
sts = "com.amazonaws.${local.region}.sts"
sqs = "com.amazonaws.${local.region}.sqs"
kinesis-firehose = "com.amazonaws.${local.region}.kinesis-firehose"
xray = "com.amazonaws.${local.region}.xray"

}

# VPC Gateway Endpoints
Expand Down