apiVersion: security.platform.io/v1alpha1 kind: VaultPolicy metadata: name: nginx-deployment-external-secret namespace: nginx-apps spec: policy: | path "kv/data/app-teste/secret-secreto" { capabilities = ["read"] } vaultPolicyName: nginx-deployment-external-secret-policy --- apiVersion: security.platform.io/v1alpha1 kind: VaultKubernetesRoleBinding metadata: name: nginx-deployment-external-secret namespace: nginx-apps spec: audience: vault authMount: kubernetes boundNamespaces: - nginx-apps boundServiceAccounts: - nginx-deployment-external-secret roleName: nginx-deployment-external-secret tokenPolicies: - nginx-deployment-external-secret-policy tokenTTL: 1h CODE_BLOCK: apiVersion: security.platform.io/v1alpha1 kind: VaultPolicy metadata: name: nginx-deployment-external-secret namespace: nginx-apps spec: policy: | path "kv/data/app-teste/secret-secreto" { capabilities = ["read"] } vaultPolicyName: nginx-deployment-external-secret-policy --- apiVersion: security.platform.io/v1alpha1 kind: VaultKubernetesRoleBinding metadata: name: nginx-deployment-external-secret namespace: nginx-apps spec: audience: vault authMount: kubernetes boundNamespaces: - nginx-apps boundServiceAccounts: - nginx-deployment-external-secret roleName: nginx-deployment-external-secret tokenPolicies: - nginx-deployment-external-secret-policy tokenTTL: 1h CODE_BLOCK: apiVersion: security.platform.io/v1alpha1 kind: VaultPolicy metadata: name: nginx-deployment-external-secret namespace: nginx-apps spec: policy: | path "kv/data/app-teste/secret-secreto" { capabilities = ["read"] } vaultPolicyName: nginx-deployment-external-secret-policy --- apiVersion: security.platform.io/v1alpha1 kind: VaultKubernetesRoleBinding metadata: name: nginx-deployment-external-secret namespace: nginx-apps spec: audience: vault authMount: kubernetes boundNamespaces: - nginx-apps boundServiceAccounts: - nginx-deployment-external-secret roleName: nginx-deployment-external-secret tokenPolicies: - nginx-deployment-external-secret-policy tokenTTL: 1h CODE_BLOCK: apiVersion: security.platform.io/v1alpha1 kind: VaultCertificate metadata: name: nginx-deployment-tls namespace: nginx-apps spec: vaultUrl: [http://172.18.0.12:8200](http://172.18.0.12:8200) authPath: /v1/auth/kubernetes vaultRole: nginx-deployment-tls-role pkiPath: pki/sign/internal-dot-infra commonName: my-app.internal.infra dnsNames: - my-app.internal.infra - my-app-teste.internal.infra SecretName: nginx-deployment-tls certManagerServiceAccount: "cert-manager" certManagerNamespace: "cert-manager" CODE_BLOCK: apiVersion: security.platform.io/v1alpha1 kind: VaultCertificate metadata: name: nginx-deployment-tls namespace: nginx-apps spec: vaultUrl: [http://172.18.0.12:8200](http://172.18.0.12:8200) authPath: /v1/auth/kubernetes vaultRole: nginx-deployment-tls-role pkiPath: pki/sign/internal-dot-infra commonName: my-app.internal.infra dnsNames: - my-app.internal.infra - my-app-teste.internal.infra SecretName: nginx-deployment-tls certManagerServiceAccount: "cert-manager" certManagerNamespace: "cert-manager" CODE_BLOCK: apiVersion: security.platform.io/v1alpha1 kind: VaultCertificate metadata: name: nginx-deployment-tls namespace: nginx-apps spec: vaultUrl: [http://172.18.0.12:8200](http://172.18.0.12:8200) authPath: /v1/auth/kubernetes vaultRole: nginx-deployment-tls-role pkiPath: pki/sign/internal-dot-infra commonName: my-app.internal.infra dnsNames: - my-app.internal.infra - my-app-teste.internal.infra SecretName: nginx-deployment-tls certManagerServiceAccount: "cert-manager" certManagerNamespace: "cert-manager" - vaultreaver: Configura a integração e os limites de segurança entre o Kubernetes e a API externa do Vault. - platform-operator: Atua como o centralizador e orquestrador de configurações dentro do cluster.
- Criar uma ServiceAccount no Kubernetes.
- Criar uma Vault Role para permitir a generation de tokens atrelados a essa ServiceAccount.
- Criar uma política de acesso no Vault (Vault Policy) e vinculá-la à Role.
- VaultPolicy: Declara a política de segurança com as permissões que a aplicação/componente terá dentro do Vault.
- VaultKubernetesRoleBinding: Faz o vínculo (binding) da VaultPolicy com a ServiceAccount do Kubernetes e a respectiva VaultRole.
- A ServiceAccount configurada com o RBAC necessário para o fluxo de certificados.
- As regras do Cert-Manager (como o ClusterIssuer ou Issuer apontando para o Vault).
- O recurso final de Certificate que dispara a emissão real do certificado TLS.
- Garantir a automação e o provisionamento de um certificado TLS válido via Cert-Manager usando o nosso platform-operator.
- Injetar credenciais sensíveis via ExternalSecrets vindas diretamente do Vault de forma totalmente declarativa.
- Reconciliação de recursos no Kubernetes
- Desenvolvimento de Operators com Kubebuilder
- Fluxos de autenticação Kubernetes ↔ Vault
- Automação de plataforma
- Criação de abstrações de self-service