configure-vault.sh 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. #!/bin/sh
  2. set -euxo pipefail;
  3. export VAULT_TOKEN=${1}
  4. # ------------------
  5. # SECRET BACKENDS
  6. # ------------------
  7. vault secrets enable -path=secret -version=2 kv
  8. vault secrets enable -path=secret_v1 -version=1 kv
  9. # ------------------
  10. # CERT AUTH
  11. # https://www.vaultproject.io/docs/auth/cert
  12. # ------------------
  13. vault auth enable cert
  14. vault policy write \
  15. external-secrets-operator \
  16. /etc/vault-config/vault-policy-es.hcl
  17. vault write auth/cert/certs/external-secrets-operator \
  18. display_name=external-secrets-operator \
  19. policies=external-secrets-operator \
  20. certificate=@/etc/vault-config/es-client.pem \
  21. ttl=3600
  22. # test certificate login
  23. unset VAULT_TOKEN
  24. vault login \
  25. -client-cert=/etc/vault-config/es-client.pem \
  26. -client-key=/etc/vault-config/es-client-key.pem \
  27. -method=cert \
  28. name=external-secrets-operator
  29. vault kv put secret/foo/bar baz=bang
  30. vault kv get secret/foo/bar
  31. # ------------------
  32. # App Role AUTH
  33. # https://www.vaultproject.io/docs/auth/approle
  34. # ------------------
  35. export VAULT_TOKEN=${1}
  36. vault auth enable -path=myapprole approle
  37. vault write auth/myapprole/role/eso-e2e-role \
  38. secret_id_ttl=10m \
  39. token_num_uses=10 \
  40. token_policies=external-secrets-operator \
  41. token_ttl=1h \
  42. token_max_ttl=4h \
  43. secret_id_num_uses=40
  44. # ------------------
  45. # JWT AUTH
  46. # https://www.vaultproject.io/docs/auth/jwt
  47. # ------------------
  48. vault auth enable -path=myjwt jwt
  49. vault write auth/myjwt/config \
  50. jwt_validation_pubkeys=@/etc/vault-config/jwt-pubkey.pem \
  51. bound_issuer="example.iss" \
  52. default_role="external-secrets-operator"
  53. vault write auth/myjwt/role/external-secrets-operator \
  54. role_type="jwt" \
  55. bound_subject="vault@example" \
  56. bound_audiences="vault.client" \
  57. user_claim="user" \
  58. policies=external-secrets-operator \
  59. ttl=1h
  60. vault auth enable -path=myjwtk8s jwt
  61. vault write auth/myjwtk8s/config \
  62. oidc_discovery_url=https://kubernetes.default.svc.cluster.local \
  63. oidc_discovery_ca_pem=@/var/run/secrets/kubernetes.io/serviceaccount/ca.crt \
  64. bound_issuer="https://kubernetes.default.svc.cluster.local" \
  65. default_role="external-secrets-operator"
  66. vault write auth/myjwtk8s/role/external-secrets-operator \
  67. role_type="jwt" \
  68. bound_audiences="vault.client" \
  69. user_claim="sub" \
  70. policies=external-secrets-operator \
  71. ttl=1h
  72. # ------------------
  73. # Kubernetes AUTH
  74. # https://www.vaultproject.io/docs/auth/kubernetes
  75. # ------------------
  76. vault auth enable -path=mykubernetes kubernetes
  77. vault write auth/mykubernetes/config \
  78. kubernetes_host=https://kubernetes.default.svc.cluster.local \
  79. kubernetes_ca_cert=@/var/run/secrets/kubernetes.io/serviceaccount/ca.crt \
  80. issuer=https://kubernetes.default.svc.cluster.local
  81. vault write auth/mykubernetes/role/external-secrets-operator \
  82. bound_service_account_names=* \
  83. bound_service_account_namespaces=* \
  84. policies=external-secrets-operator \
  85. ttl=1h