Skip to content

Instantly share code, notes, and snippets.

@devops-adeel
Last active March 21, 2022 14:21
Show Gist options
  • Save devops-adeel/45e25c2fa7376d9908d05695c86f5a92 to your computer and use it in GitHub Desktop.
Save devops-adeel/45e25c2fa7376d9908d05695c86f5a92 to your computer and use it in GitHub Desktop.
Vault Auth for Kubernetes
locals {
namespace = format(
"{{identity.entity.aliases.%s.metadata.service_account_namespace}}",
vault_auth_backend.default.accessor
)
}
data "kubernetes_service_account_v1" "default" {
metadata {
name = "vault-auth"
namespace = "kube-system"
}
}
data "kubernetes_secret" "default" {
metadata {
name = data.kubernetes_service_account_v1.default.default_secret_name
namespace = "kube-system"
}
}
resource "vault_auth_backend" "default" {
type = "kubernetes"
}
resource "vault_kubernetes_auth_backend_config" "default" {
backend = vault_auth_backend.default.path
kubernetes_host = var.kubernetes_host
kubernetes_ca_cert = data.kubernetes_secret.default.data["ca.crt"]
token_reviewer_jwt = data.kubernetes_secret.default.data.token
}
resource "vault_kubernetes_auth_backend_role" "default" {
backend = vault_auth_backend.default.path
role_name = var.application
bound_service_account_names = ["*"]
bound_service_account_namespaces = [var.application]
token_ttl = 43200
token_policies = [vault_policy.default.name]
audience = "vault"
}
data "vault_policy_document" "default" {
rule {
path = format("secret/data/%s", local.acl_template)
capabilities = ["read", "list"]
description = "Allow access only to namespace area"
}
}
resource "vault_policy" "default" {
name = var.application
policy = data.vault_policy_document.default.hcl
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment