Events API:n ensimmäinen versio suojasi HTTP-pinnan yleisillä events:send- ja events:listen-scopeilla. Se riittää avoimelle tapahtumakanavalle, mutta Bus integration -eventit ohjaavat domain-toimintoja: VM-status, VM-start/stop, container-runner, usage-tietojen listaus ja poistot sekä SSH-scriptien suoritus.
Uusi ACL-kerros tekee event-nimestä valtuutettavan kohteen. Esimerkiksi nämä prefixit saavat domain-scope-vaatimukset:
bus.vm.status.* -> vm:read
bus.vm.start.* -> vm:write
bus.containers.run.* -> container:run
bus.containers.delete.* -> container:delete
bus.usage.list.* -> usage:read
bus.usage.delete.* -> usage:delete
bus.ssh.script.run.* -> ssh:run
Julkaisu ja kuuntelu käyttävät samaa sääntöä eri suuntiin. Token, jossa on container:run, voi julkaista tai kuunnella bus.containers.run.*-eventtejä, mutta ei saa samalla oikeutta lukea bus.usage.list.*-vastauksia. Broad events:listen ei näe kaikkia suojattuja eventtejä vahingossa.
$ bus-events --api-token "$BUS_API_TOKEN" \
send --name bus.vm.start.request --payload '{"region":"fi-hel2"}'
{
"error": "insufficient_scope"
}
Kun sama pyyntö ajetaan tokenilla, jolla on vm:write, provider hyväksyy eventin ja leimaa accountin verified JWT:stä. Caller ei voi nostaa oikeuksia lisäämällä payloadiin tai metadataan toisen accountin tunnusta.
Suojaamattomat nimet pysyvät kevyinä kehitys- ja paikalliskäyttöä varten. example.ping toimii edelleen events:send- ja events:listen-scopeilla. Tuotantoon vietävät Bus integration -eventit kannattaa kuitenkin nimetä dokumentoitujen domain-prefixien alle, jotta scope-raja on näkyvä sekä API-providerissa että integraatiotyöntekijöiden READMEissä.
Lisätiedot löytyvät bus-events-dokumentaatiosta ja bus-api-provider-eventsin dokumentaatiosta.