Skip to content

Commit 5ff51e7

Browse files
committed
feat: add jwt secret for component-component auth
1 parent 789fc80 commit 5ff51e7

8 files changed

Lines changed: 37 additions & 0 deletions

File tree

infrastructure/ecs_services/iam.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ resource "aws_iam_policy" "secret_manager_read_secret" {
112112
Effect = "Allow"
113113
Resource = [
114114
var.fernet_key_ssm_arn,
115+
var.jwt_secret_ssm_arn,
115116
var.sql_alchemy_conn_ssm_arn,
116117
var.celery_result_backend_ssm_arn
117118
]

infrastructure/ecs_services/variables.tf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ variable "airflow_task_common_environment" {
3636
# Allow ECS services to read secrets from AWS Secret Manager.
3737
variable "fernet_key_ssm_arn" {
3838

39+
}
40+
41+
variable "jwt_secret_ssm_arn" {
3942
}
4043
variable "sql_alchemy_conn_ssm_arn" {
4144
}

infrastructure/locals.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ locals {
4242
name = "AIRFLOW__CORE__FERNET_KEY_SECRET"
4343
value = substr(module.secrets.fernet_key_name, length(var.prefix) + 16, -1)
4444
},
45+
{
46+
name = "AIRFLOW__API_AUTH__JWT_SECRET_SECRET"
47+
value = substr(module.secrets.jwt_secret_name, length(var.prefix) + 16, -1)
48+
},
4549
{
4650
name = "AIRFLOW__CELERY__RESULT_BACKEND_SECRET"
4751
value = substr(module.secrets.celery_result_backend_name, length(var.prefix) + 16, -1)

infrastructure/main.tf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ module "secrets" {
3939
db_port = var.airflow_db.port
4040
db_username = var.airflow_db.username
4141
fernet_key = var.fernet_key
42+
jwt_secret = var.jwt_secret
4243
prefix = var.prefix
4344
airflow_admin_username = var.airflow_admin_username
4445
airflow_admin_password = var.airflow_admin_password
@@ -79,6 +80,7 @@ module "ecs_services" {
7980
airflow_bucket_arn = data.aws_s3_bucket.airflow_bucket.arn
8081
celery_result_backend_ssm_arn = module.secrets.celery_result_backend_arn
8182
fernet_key_ssm_arn = module.secrets.fernet_key_arn
83+
jwt_secret_ssm_arn = module.secrets.jwt_secret_arn
8284
permission_boundaries_arn = var.permission_boundaries_arn
8385
sql_alchemy_conn_ssm_arn = module.secrets.sql_alchemy_conn_arn
8486
sqs_arns_list = concat(var.sqs_arns_list, [module.sqs_queue.celery_broker_arn])

infrastructure/secrets/main.tf

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@ resource "aws_secretsmanager_secret_version" "fernet_key" {
88
secret_string = var.fernet_key
99
}
1010

11+
resource "aws_secretsmanager_secret" "jwt_secret" {
12+
name_prefix = "${var.prefix}/airflow/config/jwt_secret/"
13+
}
14+
15+
resource "aws_secretsmanager_secret_version" "jwt_secret" {
16+
secret_id = aws_secretsmanager_secret.jwt_secret.id
17+
secret_string = var.jwt_secret
18+
}
19+
1120
# Store core.sql_alchemy_conn setting for consumption by airflow SecretsManagerBackend.
1221
# The config options must follow the config prefix naming convention defined within the secrets backend.
1322
# This means that sql_alchemy_conn is not defined with a connection prefix, but with "config" prefix.

infrastructure/secrets/outputs.tf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@ output "sql_alchemy_conn_arn" {
2525
output "fernet_key_arn" {
2626
value = aws_secretsmanager_secret.fernet_key.arn
2727
}
28+
29+
output "jwt_secret_name" {
30+
value = aws_secretsmanager_secret.jwt_secret.name
31+
}
32+
33+
output "jwt_secret_arn" {
34+
value = aws_secretsmanager_secret.jwt_secret.arn
35+
}
2836
output "airflow_secrets" {
2937
value = aws_secretsmanager_secret.airflow_secrets.name
3038
}

infrastructure/secrets/variables.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ variable "prefix" {
1818

1919
variable "fernet_key" {
2020
}
21+
22+
variable "jwt_secret" {
23+
sensitive = true
24+
}
2125
variable "airflow_admin_username" {
2226

2327
}

infrastructure/variables.tf

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@ variable "airflow_db" {
5151
variable "fernet_key" {
5252
}
5353

54+
variable "jwt_secret" {
55+
description = "Symmetric secret for signing Airflow 3 component JWTs (api_auth.jwt_secret). Required for multi-worker api-server. Generate with `openssl rand -hex 32`."
56+
type = string
57+
sensitive = true
58+
}
59+
5460
variable "permission_boundaries_arn" {
5561
default = "null"
5662
}

0 commit comments

Comments
 (0)