¿Qué hace el descubrimiento?
El descubrimiento registra solicitudes y devuelve allowed=true con motivo 5 para una operación de registro exitosa. No demuestra que una política existente haya autorizado la operación. Utilícelo únicamente en un entorno de prueba aislado, revise las concesiones generadas y restablezca la aplicación normal de is-allowed posteriormente. Los errores de aserción o almacenamiento deben seguir gestionándose; nunca trate un error como una concesión de autorización.
Iniciar un ejemplo local reproducible
Compile los binarios mediante el Inicio rápido, luego ejecute todas las terminales desde la raíz del repositorio. Utilice un archivo limpio y detenga los procesos de páginas anteriores antes de comenzar.
printf '{}\n' > docs-policies.jsonEn la primera terminal:
./bin/speedle-pms --store-type file --filestore-loc ./docs-policies.json --endpoint 127.0.0.1:6733 --insecure=trueEn la segunda terminal:
./bin/speedle-ads --store-type file --filestore-loc ./docs-policies.json --endpoint 127.0.0.1:6734 --insecure=trueMantenga ambos en ejecución. En una tercera terminal, registre una solicitud:
curl --fail --silent --show-error -H 'Content-Type: application/json' \
-d '{"subject":{"principals":[{"type":"user","name":"alice"}]},"serviceName":"observed","resource":"book","action":"read"}' \
http://127.0.0.1:6734/authz-check/v1/discoverInspeccione la solicitud capturada y luego genere una propuesta de definición de servicio:
./bin/spctl --pms-endpoint http://127.0.0.1:6733/policy-mgmt/v1/ discover request --service-name observed./bin/spctl --pms-endpoint http://127.0.0.1:6733/policy-mgmt/v1/ discover policy --service-name observed > discovered-service.jsonRevise discovered-service.json, incluidos los roles generados, dominios de identidad y recursos. El ejemplo limpio no tiene un servicio existente llamado observed, por lo que se puede importar directamente; para un servicio existente, concilie sus políticas en lugar de recrearlo a ciegas.
./bin/spctl --pms-endpoint http://127.0.0.1:6733/policy-mgmt/v1/ create service --json-file discovered-service.jsonRestablecer y verificar la aplicación normal
Invoque is-allowed nuevamente. Alice debería estar autorizada después de que ADS haya cargado la actualización de políticas; Bob aún debe ser denegado:
curl --fail --silent --show-error -H 'Content-Type: application/json' \
-d '{"subject":{"principals":[{"type":"user","name":"alice"}]},"serviceName":"observed","resource":"book","action":"read"}' \
http://127.0.0.1:6734/authz-check/v1/is-allowedcurl --fail --silent --show-error -H 'Content-Type: application/json' \
-d '{"subject":{"principals":[{"type":"user","name":"bob"}]},"serviceName":"observed","resource":"book","action":"read"}' \
http://127.0.0.1:6734/authz-check/v1/is-allowedDetenga ambos servicios con Ctrl+C. Para gRPC utilice Discover/IsAllowed en el cliente generado; Go en modo integrado utiliza evaluator.Discover(ctx)/evaluator.IsAllowed(ctx). Para conocer las opciones de la CLI, ejecute ./bin/spctl discover --help. No deje una aplicación real apuntando a /discover.