Comment trouver les endpoints d'API d'Hashicorp Vault qui demandent une autorisation sudo
Comment trouver les endpoints d’API d’Hashicorp Vault qui demandent une autorisation sudo ?
Table des matières
Solution rapide découverte en Septembre 2023
Les chemins d’API demandant sudo peuvent être trouvés dans le code source de l’API vault à
https://github.com/hashicorp/vault/blob/main/api/sudo_paths.go.
Guide étape par étape
Etape 1 - Vous connecter à votre instance Vault
$ vault login ...
Etape 2 - Obtenir la description OpenAPI
$ vault read -format=json sys/internal/specs/openapi > vault-openapi-spec.json
Cela va créer un fichier vault-openapi-spec.json dans votre répertoire courant.
Ce fichier décrit tous les endpoints d’API de Vault selon le format du standard OpenAPI.
Etape 3 - Parser le fichier vault-openapi-spec.json
Si vous lisez avec attention le fichier vault-openapi-spec.json, vous trouverez des ressources ayant x-vault-sudo positionné à true.
Un petit script python permet d’extraire les paths d’API ayant cet attribut:
#!/usr/bin/env python3
import json
import sys
OPENAPI_SPEC_FILE = "vault-openapi-spec.json"
def main() -> int:
with open(OPENAPI_SPEC_FILE, "r", encoding="utf-8") as openapi_spec_fd:
spec = json.load(openapi_spec_fd)
paths = spec["data"]["paths"]
path_sudo_protected: list[str] = []
for api_path, path_spec in paths.items():
if "x-vault-sudo" in path_spec and path_spec["x-vault-sudo"] is True:
path_sudo_protected.append(api_path)
path_sudo_protected.sort()
print("\n".join(path_sudo_protected))
return 0
if __name__ == "__main__":
sys.exit(main())
Voici la liste que j’obtiens sur mon instance Vault 1.14.1 fraîchement déployée:
/auth/token/accessors/sys/audit/sys/audit/{path}/sys/auth/{path}/sys/auth/{path}/tune/sys/config/auditing/request-headers/sys/config/auditing/request-headers/{header}/sys/config/cors/sys/config/ui/headers/{header}/sys/internal/inspect/router/{tag}/sys/leases/sys/leases/lookup//sys/leases/lookup/{prefix}/sys/leases/revoke-force/{prefix}/sys/leases/revoke-prefix/{prefix}/sys/plugins/catalog/{name}/sys/plugins/catalog/{type}/sys/plugins/catalog/{type}/{name}/sys/remount/sys/replication/dr/primary/secondary-token/sys/replication/performance/primary/secondary-token/sys/replication/primary/secondary-token/sys/replication/reindex/sys/revoke-force/{prefix}/sys/revoke-prefix/{prefix}/sys/rotate/sys/storage/raft/snapshot-auto/config//sys/storage/raft/snapshot-auto/config/{name}
Soyez le premier à commenter! 🥇