v4.0.0
Highlighted Features
- Custom roles. To start using custom roles out-of-the-box, a default set of roles and permissions defined by
policy.mdcan be initialized withsetup_default_roles(). If thepreviewfeature flag is enabled, more general purpose custom roles functionality can be used. This includes the ability to create/delete roles, add/remove permissions from those roles, assign roles to devices, and revoke roles from devices. Permissions can be assigned to roles and roles can be assigned to devices. We do not support directly assigning permissions to devices in favor of RBAC best practices. We've introduced the concept of role owners and role management permissions as a fine-grained way to control which roles are allowed to assign/revoke other roles and change permissions of other roles. - Hello Sync. Polling sync requests periodically uses a lot of network resources and introduces latency for peers that want to keep their graphs up-to-date. Hello sync solves this by sending subscribers updates whenever the graph head changes. This allows peers to sync immediately with any peers that have updates. Since this is a new feature with planned improvements it is behind the
previewflag. - AFC has been moved out from behind the
previewfeature flag. Theafcfeature is now a default feature. We've made security improvements to mitigate against nonce reuse.
Security Patches
- We identified a nonce reuse vulnerability when replaying AFC ctrl messages during channel creation. This affected receivers of bidirectional AFC channels and receivers with send permissions on the channel. To mitigate against this vulnerability, only unidirectional channels where the creator of the channel is the sender and the receiver of the channel is the receiver are supported. To send data both ways, two unidirectional channels must be created between a pair of peers in opposite directions.
Breaking Changes
- AFC has been upgraded from a "preview" feature to a "default" feature. Support for creation of bidirectional and receive-only AFC channels has been removed from the API.
- AQC has been removed in favor of AFC. AFC has improved security properties and is easier to use with custom application transports.
Coming Soon
- Push sync which will push graph updates to subscribed peers without requiring sync requests to be initiated from each client
- AFC performance enhancement by supporting concurrent shared-memory readers
What's Changed
- roles: custom ID-based roles with RBAC permission controls by @elagergren-spideroak in #267
- 118: sync hello by @benz-spideroak in #461
- custom roles: put new custom roles methods behind preview by @gknopf-aranya in #620
- afc: use new seal ctx by @jdygert-spok in #599
- afc: move out of preview by @jdygert-spok in #617
- codespace: rust example by @gknopf-aranya in #374
- afc: remove bidi and recv channels by @jdygert-spok in #516
- Add aqc feature to metrics crate by @jdygert-spok in #526
- example: multi-node rust example by @gknopf-aranya in #443
- chore: update to latest aranya-core by @jdygert-spok in #531
- capi: remove extra file written for debugging by @jdygert-spok in #521
- afc: apis for getting globally unique channel IDs by @gknopf-aranya in #532
- aqc: remove by @jdygert-spok in #536
- afc: remove channel from shm when label is revoked by @gknopf-aranya in #527
- chore: use IDs by value by @jdygert-spok in #541
- chore: update codeowners by @djohnson-spideroak in #544
- chore: update to latest aranya-core by @jdygert-spok in #539
- Custom roles updates by @chip-so in #593
- afc: get peer ID from channel by @jdygert-spok in #540
- Remove external
aranya-daemon-apiusage by @jdygert-spok in #605 - capi: remove redundant type links by @jdygert-spok in #600
- capi: fix doxygen features by @jdygert-spok in #601
- afc: rename channel API by @jdygert-spok in #602
- custom roles capi: update setup_default_roles by @ssweetney-spok in #603
- custom roles: create/delete role, add/remove role perms by @chip-so in #598
- client: move more device methods to
Deviceby @jdygert-spok in #616 - client: use enum for role management permission by @jdygert-spok in #610
- client: add doc cfgs by @jdygert-spok in #621
- client: take
Textparam directly by @jdygert-spok in #622 - release: 4.0.0 by @gknopf-aranya in #618
Full Changelog: v3.0.0...v4.0.0