data "aws_iam_policy" "refresh_m2m_token_read_policy" {
  name = "SecretsManager-${var.environment}-refresh-m2m-token-read-policy"
}

data "aws_kms_alias" "ows_text_campaigns_kms_key_alias" {
  name = var.ows_text_campaigns_kms_key_alias
}

data "aws_iam_policy_document" "kms_policy_document" {
  statement {
    actions = [
      "kms:DescribeKey",
      "kms:Decrypt",
    ]

    resources = [
      data.aws_kms_alias.ows_text_campaigns_kms_key_alias.target_key_arn,
    ]
  }
}

resource "aws_iam_policy" "kms_policy" {
  name   = "KMS-${var.environment}-${var.lambda_name}-policy"
  policy = data.aws_iam_policy_document.kms_policy_document.json
}

# The Postgres password secret lives under ows-text-campaigns' own namespace, so
# it isn't covered by the lambda module's grant for our own secrets namespace.
data "aws_iam_policy_document" "postgres_password_read_policy_document" {
  statement {
    effect = "Allow"
    actions = [
      "secretsmanager:GetSecretValue",
      "secretsmanager:DescribeSecret",
    ]
    resources = [
      "arn:aws:secretsmanager:*:*:secret:${local.postgres_password_secret_name}-*",
    ]
  }
}

resource "aws_iam_policy" "postgres_password_read_policy" {
  name   = "SecretsManager-${var.environment}-${var.lambda_name}-postgres-read-policy"
  policy = data.aws_iam_policy_document.postgres_password_read_policy_document.json
}
