feat(tenant): Role por tenant para os dois Secrets que o provisionamento le
db-credentials (a senha do papel) e <tenant>-tls (so a existencia, que e como a etapa DNS_PUBLICADO sabe que o cert-manager terminou). Por tenant porque o nome do TLS depende dele e resourceNames nao aceita curinga — e dar get em qualquer Secret do namespace deixaria o provisionamento ler a chave Asaas DO CLIENTE.
This commit is contained in:
@@ -20,3 +20,40 @@ roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: atm-provisionamento-tenants
|
||||
|
||||
---
|
||||
# Os DOIS Secrets que o provisionamento le neste namespace, pelo nome.
|
||||
#
|
||||
# Role por tenant, e nao regra no ClusterRole, porque os nomes dependem do
|
||||
# tenant e `resourceNames` nao aceita curinga. A alternativa seria dar `get` em
|
||||
# QUALQUER Secret do namespace — e ai o provisionamento passaria a poder ler a
|
||||
# chave Asaas DO CLIENTE, que e dele e nao nossa.
|
||||
#
|
||||
# db-credentials a senha do papel no Postgres, que a etapa BANCO_CRIADO
|
||||
# precisa para dar a senha ao papel e ao pool
|
||||
# {{TENANT}}-tls so a EXISTENCIA, que e como a etapa DNS_PUBLICADO sabe que
|
||||
# o cert-manager terminou de emitir
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: atm-provisionamento-segredos
|
||||
namespace: {{TENANT}}-prod
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["secrets"]
|
||||
verbs: ["get"]
|
||||
resourceNames: ["db-credentials", "{{TENANT}}-tls"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: atm-provisionamento-segredos
|
||||
namespace: {{TENANT}}-prod
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: atm-provisionamento
|
||||
namespace: plataforma-prod
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: atm-provisionamento-segredos
|
||||
|
||||
@@ -20,3 +20,40 @@ roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: atm-provisionamento-tenants
|
||||
|
||||
---
|
||||
# Os DOIS Secrets que o provisionamento le neste namespace, pelo nome.
|
||||
#
|
||||
# Role por tenant, e nao regra no ClusterRole, porque os nomes dependem do
|
||||
# tenant e `resourceNames` nao aceita curinga. A alternativa seria dar `get` em
|
||||
# QUALQUER Secret do namespace — e ai o provisionamento passaria a poder ler a
|
||||
# chave Asaas DO CLIENTE, que e dele e nao nossa.
|
||||
#
|
||||
# db-credentials a senha do papel no Postgres, que a etapa BANCO_CRIADO
|
||||
# precisa para dar a senha ao papel e ao pool
|
||||
# escolinha-de-teste-2-tls so a EXISTENCIA, que e como a etapa DNS_PUBLICADO sabe que
|
||||
# o cert-manager terminou de emitir
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: atm-provisionamento-segredos
|
||||
namespace: escolinha-de-teste-2-prod
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["secrets"]
|
||||
verbs: ["get"]
|
||||
resourceNames: ["db-credentials", "escolinha-de-teste-2-tls"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: atm-provisionamento-segredos
|
||||
namespace: escolinha-de-teste-2-prod
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: atm-provisionamento
|
||||
namespace: plataforma-prod
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: atm-provisionamento-segredos
|
||||
|
||||
@@ -20,3 +20,40 @@ roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: atm-provisionamento-tenants
|
||||
|
||||
---
|
||||
# Os DOIS Secrets que o provisionamento le neste namespace, pelo nome.
|
||||
#
|
||||
# Role por tenant, e nao regra no ClusterRole, porque os nomes dependem do
|
||||
# tenant e `resourceNames` nao aceita curinga. A alternativa seria dar `get` em
|
||||
# QUALQUER Secret do namespace — e ai o provisionamento passaria a poder ler a
|
||||
# chave Asaas DO CLIENTE, que e dele e nao nossa.
|
||||
#
|
||||
# db-credentials a senha do papel no Postgres, que a etapa BANCO_CRIADO
|
||||
# precisa para dar a senha ao papel e ao pool
|
||||
# escolinha-de-teste-tls so a EXISTENCIA, que e como a etapa DNS_PUBLICADO sabe que
|
||||
# o cert-manager terminou de emitir
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: atm-provisionamento-segredos
|
||||
namespace: escolinha-de-teste-prod
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["secrets"]
|
||||
verbs: ["get"]
|
||||
resourceNames: ["db-credentials", "escolinha-de-teste-tls"]
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: atm-provisionamento-segredos
|
||||
namespace: escolinha-de-teste-prod
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: atm-provisionamento
|
||||
namespace: plataforma-prod
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: atm-provisionamento-segredos
|
||||
|
||||
@@ -62,10 +62,9 @@ rules:
|
||||
# `resourceNames` amarra ao NOME: este ClusterRole nao le `asaas-credentials`
|
||||
# nem nenhum outro Secret do cliente. E o RoleBinding do molde o limita aos
|
||||
# namespaces de tenant — nao ha binding cluster-wide.
|
||||
- apiGroups: [""]
|
||||
resources: ["secrets"]
|
||||
verbs: ["get"]
|
||||
resourceNames: ["db-credentials"]
|
||||
# A leitura de Secret do tenant NAO esta aqui: ela e uma Role por tenant, no
|
||||
# molde, porque `{{TENANT}}-tls` depende do nome e `resourceNames` nao aceita
|
||||
# curinga. Ver moldes/consolidado/16-rolebinding-provisionamento.yaml.
|
||||
|
||||
---
|
||||
# O userlist do PgBouncer, que a etapa BANCO_CRIADO acrescenta.
|
||||
|
||||
Reference in New Issue
Block a user