Skip to content
This repository has been archived by the owner on Jul 12, 2023. It is now read-only.

Releases: google/exposure-notifications-verification-server

v0.21.1

02 Feb 03:10
d3f9f2d
Compare
Choose a tag to compare

Release notes for v0.21.1

Changelog since v0.21.0

This release fixes an issue where terraform would fail to apply if redis authentication is disabled (which is the default).

Changes by Kind

Infrastructure fixes

  • Allow for redis auth to be disabled and terraform to apply successfully (#1751, @mikehelmick)

Buf Fixes and Improvements

  • Basic coverage for /codes pages (#1746, @whaught)
  • Include multiline and whitespace in search in SMS preview to fix a bug where an SMS message contained newline characters. This did not affect delivered SMSes, only the preview window. (#1745, @sethvargo)

Dependencies

Added

Nothing has changed.

Changed

Nothing has changed.

Removed

Nothing has changed.

v0.21.0

01 Feb 16:56
v0.21.0
94f0a2e
Compare
Choose a tag to compare

Release notes for v0.21.0

If redis auth is not enabled, please use v0.21.1 instead

Upgrade notes

  • This release introduces the ability for the verification server to pull statistics from a key server. This functionality is off by default, and can be enabled by a realm administrator. There are new configuration values for the default key server and audience to use.

    • KEY_SERVER_URL - base URL for the key server to pull stats from, the /v1/stats path will be appended to this. You must set this value in our terraform configuration for your deployment for this functionality to work.
    • KEY_SERVER_STATS_AUDIENCE - default value is the same as default value from the exposure-notifications-server
  • Authenticated SMS

    • This is a new feature under development, it is off by default and subject to change without notice.

Changes by Kind

Statistics

Key-server stats

Verification server stats

  • Add code issue to claim age average and distribution stat (#1675, @whaught)
  • Add invalid codes and full token graphs to stats (#1641, @sethvargo)
  • Add new stats for codes_invalid and tokens to responses (#1631, @sethvargo)
  • Increment code-issue stats at the end of issuance logic. This avoids recording [known] failures. (#1638, @whaught)
  • Make codes/stats bit of seeding optional (#1628, @sethvargo)
  • Make seed script also optionally verify codes and claim tokens (#1629, @sethvargo)
  • Move API key stats into the API and display invalid claim attempts on API keys page (#1646, @sethvargo)

Authenticated SMS (new feature that is off by default)

  • Add SMS signing functionality. This functionality is off by default, as Google and Apple are still developing the necessary client-side features to support it. (#1696, @sethvargo)
  • Add database model for managed keys for signing SMS messages. (#1649, @mikehelmick)
  • Implement first pass at SMS signature algorithm package (#1650, @sethvargo)
  • Add utility for verifying SMS signatures (#1721, @sethvargo)
  • Create SMSSigning config and instantiate SMS signing key manager where needed (#1673, @sethvargo)
  • Give Admin API signer verifier permissions on the for the keyring containing SMS singing keys. (#1704, @mikehelmick)
  • Standardize response codes and add tests to SMS keys (#1672, @sethvargo)
  • Switch to short date with less base64-encoding in returned SMS signature (#1722, @sethvargo)
  • Realm admins can create/rotate SMS signing keys and enable authenticated SMS. (#1668, @mikehelmick)

Other SMS changes

  • Move SMS templates into the SMS tab (originally under codes) (#1734, @sethvargo)
  • Use the same SMS provider for all messages, cache locally for 5 minutes to improve performance (#1674, @sethvargo)
  • Display a preview of how SMSes could be split across multiple messages at 153 character boundaries. (#1737, @sethvargo)

Test coverage

Terraform changes

  • Add optional authentication to Redis. The default behavior remains unchanged, but a new Terraform variable redis_enable_auth exists to opt-in to Redis authentication. Opting in can cause downtime, so if you choose to enable it, we recommend doing i...
Read more

v0.20.0

19 Jan 02:33
4021fea
Compare
Choose a tag to compare

Release notes for exposure-notifications-verification-server v0.20.0

Documentation

Changelog since v0.19.0

⚠️ Upgrade notes ⚠️

Deployment Notes

This version introduces both Binary Authorization and multiple new services. To help ensure a successful upgrade, operators should taint the build step before running Terraform. This will ensure new services are built and existing services are attested with the proper signatures for authorization.

terraform taint module.en.null_resource.build

Note this will increase the duration of the Terraform run to about 10 minutes. Upon a successful run, continue with the upgrade process as normal.

Key rotation

This release introduces unattended signing key rotation for both verification token and verification certificate signing.

All key rotation is done, by default, every 30 days.

Verification token key rotation

Keys are now backed by the database, seeded by the key ring that the current token signing key version is on.
Until the new rotate job runs, the legacy key version will be used for signing. Once the rotate job has been
run, there will be a new signing key used to sign new verification tokens. The legacy signing key will be honored
as long as it is still configured. v0.21.0 will move to only database-backed token signing keys.

Verification certificate key rotation

In this release, realm admins will be allowed to configure their signing keys for automatic rotation.
It is important that this realm's key server be configured to use the JWKS public key discovery document
for the health authority signing keys.

Verification signing keys are created, but not made active for at least 1 hour so that there is time
for the key server to import the public key.

Changes by Kind

Breaking changes

  • Potentially breaking! - Source token signing keys from the database. This completes the move of system token signing keys from environment variables to the database. This change attempts to be backward compatible, but server are encouraged to test changes in an isolated environment before upgrading production systems. (#1602, @sethvargo)

Features

  • Add intelligence for redirecting post-login (#1550, @sethvargo)
  • Add audits for saving a Token Signing Key (#1601, @sethvargo)
  • Add password-reset and email-verification email templates to realm settings (#1555, @whaught)
  • Add rotation service and schema for rotating token signing keys (#1597, @sethvargo)
  • Added support for Twilio messaging services (#1526, @whaught)
  • Adds database column for realm level auto key rotation settings. (#1594, @mikehelmick)
  • Adds the stats-puller service to run every hour. (#1603, @whaught)
  • Advanced searching is a new feature for user search that allows for more granular searching. It's backwards-compatible with the former search syntax, but now includes the ability to filter searches by fields. Specifically, you can now query like "name:foo" or "can:APIKeyWrite" to perform advanced queries. Bulk permission management is a new feature that allows people with UserWrite permissions to modify other users' permissions in bulk in their realm. (#1525, @sethvargo)
  • Allow JWK lookup URLs to work with region codes in addition to IDs (#1559, @sethvargo)
  • Allow for legacy signing key config for tokens to be used during the upgrade to DB backed tokens. (#1624, @mikehelmick)
  • Allow for realm admins to enable automatic verification certificate key rotation. Keys are rotated every 30 days, and given 1h soak time for upstream key servers to pull public keys via public key discovery. (#1614, @mikehelmick)
  • Realm stats: Slider control to select date range to display. Trend lines are shown for codes issued and codes claimed. (#1598, @mikehelmick)
  • Stop bulk-issue client if the Twilio SMS queue is full (#1571, @whaught)
  • Support testType field as input for bulk-upload (#1531, @whaught)
  • The bulk-uploader will skip conflict or already-succeeded lines when re-using a log csv from a previous attempt (#1530, @whaught)

General bug fixes and improvements

  • Add locking to stats-puller service. Refactor cleanup -> lock (#1608, @whaught)
  • Add optional enx-redirect tests to e2e-runner (#1585, @sethvargo)
  • Add tests for cleanup (#1600, @sethvargo)
  • Check session expiration on login (#1549, @sethvargo)
  • Clean up nits from verification certification rotation (#1618, @sethvargo)
  • Cleanup for key-server stats (#1615, @whaught)
  • Correct padding (#1541, @whaught)
  • Defensively check deleted_at fields in realm/user join tables for memberships (#1565, @sethvargo)
  • Delete any orphaned entries before creating foreignkey. This handles an extreme edge case where an entry was manually deleted from the database before the FK constraint existed. (#1533, @sethvargo)
  • Delete users who are deleted (#1566, @sethvargo)
  • Display realm_id in system admin event logs (#1605, @sethvargo)
  • Don't return http.Response when unneeded (#1586, @sethvargo)
  • Drop foreignkey constraints if they already exist before creating (#1534, @sethvargo)
  • Drop optional calculation of Daily Active Users (#1544, @sethvargo)
  • Fix nits from signing key cleanup (#1619, @sethvargo)
  • Garbage collection of references to deleted signing keys. (#1616, @mikehelmick)
  • I8n strings for bulk-issue (#1509, @whaught)
  • Log URLs and response codes in appsync errors, increase max size to 64kb (#1545, @sethvargo)
  • Move associated site data responses into api package (#1577, @sethvargo)
  • Move e2e client into internal/ (#1578, @sethvargo)
  • New tables for storing key-server statistics (#1599, @whaught)
  • Not-found and invalid for malformed realm_id in jw...
Read more

v0.19.2

09 Jan 16:46
50ac860
Compare
Choose a tag to compare

Changes since v0.19.1

App-sync service

Database migrations

  • Drop foreignkey constraints if they already exist before creating (#1534, @sethvargo)
  • Drop optional calculation of Daily Active Users (#1544, @sethvargo)

Monitoring, logging, and alerting

Bulk upload

Misc

Dependencies

Added

Nothing has changed.

Changed

Nothing has changed.

Removed

Nothing has changed.

v0.19.1

08 Jan 03:42
v0.19.1
1b0a580
Compare
Choose a tag to compare

Release notes for main

Documentation

Changelog since v0.19.0

Changes by Kind

New Features

  • Added support for Twilio messaging services (#1526, @whaught)

  • Advanced searching is a new feature for user search that allows for more granular searching. It's backwards-compatible with the former search syntax, but now includes the ability to filter searches by fields. Specifically, you can now query like "name:foo" or "can:APIKeyWrite" to perform advanced queries.

    Bulk permission management is a new feature that allows people with UserWrite permissions to modify other users' permissions in bulk in their realm. (#1525, @sethvargo)

Bulk Upload

  • Support testType field as input for bulk-upload (#1531, @whaught)
  • The bulk-uploader will skip conflict or already-succeeded lines when re-using a log csv from a previous attempt (#1530, @whaught)
  • I8n strings for bulk-issue (#1509, @whaught)

Fixes

  • Delete any orphaned entries before creating foreignkey. This handles an extreme edge case where an entry was manually deleted from the database before the FK constraint existed. (#1533, @sethvargo)
  • Drop foreignkey constraints if they already exist before creating (#1534, @sethvargo)
  • Monitoring: Add ClouldSchedulerJobFailed alert. (#1527, @yegle)
  • Only emit an error when shouldCleanup actually fails (#1520, @sethvargo)
  • Return NotFound for invalid UUIDs (#1523, @sethvargo)
  • Switch modeler logs to debug (#1522, @sethvargo)

Dependencies

Added

Nothing has changed.

Changed

Nothing has changed.

Removed

Nothing has changed.

v0.19.0

06 Jan 03:38
v0.19.0
Compare
Choose a tag to compare

Release notes for main

Documentation

Changelog since v0.18.0

Changes by Kind

Breaking change

  • Breaking: To continue using the Terraform module, the following input variable is needed to avoid introducing a diff (#1513, @yegle)
  revision_annotations = {                                                       
      adminapi     = { "autoscaling.knative.dev/maxScale" : "1000" }
      apiserver    = { "autoscaling.knative.dev/maxScale" : "1000" }
      appsync      = { "autoscaling.knative.dev/maxScale" : "1000" }
      cleanup      = { "autoscaling.knative.dev/maxScale" : "1000" }
      e2e-runner   = { "autoscaling.knative.dev/maxScale" : "1000" }
      enx-redirect = { "autoscaling.knative.dev/maxScale" : "1000" }
      modeler      = { "autoscaling.knative.dev/maxScale" : "1000" }
  } 

Monitoring

  • Improved SLO-based alerting reset time (#1294, @yuriatgoogle)
  • Add SLO chart in Verificatoin Server dashboard. (#1315, @yegle)
  • Monitoring: Add Availability SLO alert to all Cloud Run services. (#1351, @yegle)
  • Add Latency SLO and related alert. Currently a rudimentary threshold (90% requests are returned in <10s) is set on all services. (#1361, @yegle)
  • Modified service and SLOs configurations for better configurability (#1449, @yuriatgoogle)
  • Latency alerting done via threshold, rather than SLO (#1510, @yuriatgoogle)

Role based authentication

  • *Major change- Introduce Role-Based Access Controls (RBAC) to replace legacy user/admin roles. Existing users will retain their existing permissions, but new users will be able to have more granular permissions. This change involves an *irreversible database migration- and should be planned accordingly. We recommend system operators put the servers into maintenance mode before applying these migrations. (#1335, @sethvargo)
  • Add descriptions for RBAC permissions (#1405, @sethvargo)
  • Improve UX on permissions selection (#1435, @sethvargo)
  • Require UserWrite for admin reset of another user's password (#1445, @whaught)
  • Document implied permissions, enforce via javascript (#1418, @sethvargo)
  • Setting write permissions automatically add required read permissions. (#1411, @mikehelmick)

Bulk issue codes

  • Add SMS template selection to bulk uploader (#1370, @whaught)
  • Clearer outer error message for batch issue API (#1369, @whaught)
  • End to end test runner now tests bulk issue in a separate handler and scheduler (#1436, @mikehelmick)
  • Remember the issuing user's last used SMS template. (#1379, @whaught)
  • Fix logging error in batch issue API. (#1336, @mikehelmick)
  • Fix off-by-one line numbers for bulk uploader (#1460, @whaught)
  • Integration / e2e test cases for BatchIssueCode (#1376, @whaught)
  • Show first 50 success / error cases for bulk-issue with UUIDs
    Allow download of log file for bulk-issue (#1458, @whaught)
  • RBAC check for BulkIssue on the API (#1400, @whaught)
  • Return a more detailed error when bulk issue is not enabled (#1331, @sethvargo)
  • Adding more docs (#1365, @whaught)

Statistics

  • Add more left padding to graphs for large y-axis numbers. (#1342, @sethvargo)
  • Add statistics endpoints to adminapi (#1402, @sethvargo)
  • Move stats calculations to be out-of-band (#1500, @sethvargo)
  • Move user stat caching into the model (#1494, @sethvargo)
  • Only display daily actives graph if enabled (#1398, @sethvargo)
  • Serve user statistics via javascript (#1496, @sethvargo)
  • Make daily active stats collection a realm configurable (#1396, @sethvargo)
  • Introduce a new API key type for accessing statistics. The statistics endpoints of the admin API are currently in preview and are subject to change. (#1404, @sethvargo)
  • Collect invalid codes and token statistics (backend only) (#1499, @sethvargo)

Internationalization

  • Add ph translations (#1407, @sethvargo)
  • Allow realm to have multiple SMS templates. Adds UI in realm settings to select and edit templates. (#1338, @whaught)
  • Allow user to select an SMS template on code-issue. Add template label field to issueAPI. (#1352, @whaught)
  • Enable postgres hstore. Add fields to realm to store multiple SMS templates and add validation for them. (#1325, @whaught)
  • Japanese (ja) translation (#1303, @yuryu)

Redirect mobile apps

Fixes

Read more

v0.18.5

18 Dec 02:35
v0.18.5
Compare
Choose a tag to compare

Release notes for v0.18.5

Documentation

Changelog since v0.18.4

Changes

Dependencies

Added

Nothing has changed.

Changed

Nothing has changed.

Removed

Nothing has changed.

v0.18.4

17 Dec 22:00
Compare
Choose a tag to compare
  • cherry-pick of c5acc33 - have ENX redirect service treat unknown paths/domains as 404

v0.18.3

15 Dec 22:32
v0.18.3
Compare
Choose a tag to compare

v0.18.2

09 Dec 23:11
v0.18.2
Compare
Choose a tag to compare

Release notes for v0.18.2

Documentation

Changelog since v0.18.1

Changes

Dependencies

Added

Nothing has changed.

Changed

Nothing has changed.

Removed

Nothing has changed.