Docker images are now compiling via the go 1.13 toolchain.
Agent Registration can now occur through chained load balancers,
with standards-compliant comma-separated X-Forwarded-For
headers. Why you would want to do this is beyond me, but ¯_(ツ)_/¯
metashieldplugin now trusts system X.509 Root CAs if no
specific CA is supplied.
Bootstrap restoration is simpler now, and the UI for init /
restore is more streamlined. See #680.
- SHIELD will now be able to properly authenticate to vault again.
DO NOT USE
This version of SHIELD will be unable to perform backups if the core has ever been restarted. This does not cause any permanent damage, but this version will not be able to do backups.
The meta SHIELD plugin has two additional (optional) fields.
The core CA certificate and skip ssl validation fields allow
us to now properly handle tls.
Properly Handle 301's from amazon during purge tasks
Switching bespoke Vault for vaultkv
- SHIELD now features a new
metashieldplugin for backing up and restoring your shield core(s). This is a standardized way
for SHIELD to backup/restore itself or another SHIELD instance.
- The Web UI, when sorting, is now case-insensitive.
- The data-system-specific storage footprint in the Web UI now no longer
counts purged archives against the storage footprint.
- The core no longer leaks a SQL prepared statement when making requests
to the SQLite3 backend, fixing an unbounded memory leak.
- The migration to database schema v12 now reports errors more granularly.
This release fixes issues with failed 8.5.0 → 8.6.0 migrations
that left the interim
jobs_new table around.
This release chiefly introduces logic to existing and new database
schema migrations to fix fallout from the 8.6.0 release, in which
we mistakenly modified a historic migration to do something.
All database upgrade paths, including pre-8.6.0 → present,
(failing) 8.6.0 deployment → present, and brand new deployments,
should all work now.
fsplugin is now quieter by default, and will only turn on
per-file debug logging if asked to do so via its own
configuration. This should greatly speed up backup operations
on busy SHIELDs, since it reduces the database lock contention.
The front-end configuration wizard now properly looks up
plugin metadata for an agent. Previously, there was a
return any arbitrary plugin metadata as the "correct" one.
Task cancelation had a n inverted boolean assertion on global
tenant-iness that has been fixed.
Do not use this version. This version has a database schema migration error that will be fixed in an upcoming patch release.
Helm Support! This version of SHIELD ships with OCI Docker
images that can be used in the new (Beta!) helm chart for
SHIELD. See https://github.com/shieldproject/helm for more
details, and to give it a spin yourself.
The SHIELD Core can now be configured almost entirely through
environment variables, for ease of configuration in Docker,
Compose, and even Kubernetes.
We have a new Prometheus-compatible metrics exporter, accessible
/metrics, and governed by a separate set of HTTP Basic Auth
fabrics array in the configuration file has been replaced with
Previously, configuration for this would look like
fabrics: - name: legacy ssh-key: | -----BEGIN RSA PRIVATE KEY----- kEy -----END RSA PRIVATE KEY-----
Now, that should be configured like the following:
legacy-agents: enabled: true private-key: | -----BEGIN RSA PRIVATE KEY----- kEy -----END RSA PRIVATE KEY-----
Agent SSH is now constrained to a more secure set of message
authentication codes (MACs). Specifically, we got rid of one
embarassing 96-bit MAC algorithm. Ooof!
Several quality-of-life improvements were made to the web UI
and message bus / websocket implementations. In general, the
web interface is easier to use and more robust now.
Old task logs and purged archives will now be removed from the
database after a minimum retention period has passed. If you've
been with us since the 0.x days, this update is for you, and
we're sorry it's taken us so long to do this type of cleanup.
The SHIELD IP Address (which gets less and less relevant every
day) is no longer reported via the API / web UI.
Uncompressed backups can now properly be restored.
pausedfields of the Jobs table now no
longer allows NULL values, landing us squarely back in the
territory of booleanitude -- things are either true or false;
there is no maybe.
Negative daily storage increases now properly convert to kilo-,
mega-, and giga- units, to help humans understand magnitude.
api.session.timeoutvalue is now interpreted properly as
seconds, not hours. This effectively means that sessions now
expire when they ought to, not several orders of magnitude
shield statuscommand is twice as pretty and three times
Cloud Storage detail pages in the web interface now show a
timeline similar to the one shown for Data Systems, so that
SHIELD operators have an easier time of troubleshooting failing
The SHIELD CLI now displays task+log data for the last
test-store task of a given store (for
shield store Xand
shield global-store Y), to assist in troubleshooting failing
Operators now have a web interface and some CLI commands for
inspecting the state of SHIELD Data Fixups, and re-running them
(if / when necessary).
mongotarget plugin can now have options applied
individually to just
Passwords and RSA private keys are now properly obscured in
the web interface detail pages for both systems and cloud
storage. People without rights to see such credentials will
still see the "REDACTED" string instead; but people with the
required privilege will instead see the blurred-out obscured
text that they can hover over to reveal.
shield taskscommand can now filter down to only tasks
that involve a particular tenant or global cloud storage system.
Data Fixups will now be properly skipped if they've already been
applied. Additionally, names / dates / summaries will be
updated every time the SHIELD Core boots up, to catch typos
and mispellings there.
The Data System detail page in the web interface no longer has a
race condition between the start of an AJAX call for the plugin
configuration details and a
shield:navigateaway from the
page. Other such race conditions involving AJAX should now also
Switching between tenants (with differing levels of access) now
properly re-renders the sidebar to show your new privileges.
shield job Xcommand now populates the "Status" and
"Agent" fields, using data in the API responses.
- Added a /v2/mbus/status API endpoint that returns metrics about the state of
the event message bus. This allows for some introspection into what websocket
connections may be doing at that moment.
- The UI now has less wasted space when displaying a bunch of cards for data
- Implemented a configurable timeout when making SSH connections to agents. A
lower default now also keeps dead agents from taking up large amounts of
scheduler worker time.
- SHIELD now tracks when the last time an agent erred was.
- Hidden agents are now sorted under a separate header in the web UI.
- Hiding, showing, and deleting agents can now be done from the CLI.
- We no longer leak the file descriptors and goroutines for detached websocket
- Workers can no longer be starved out when sending events to the message bus
if the receiver of the message bus is misbehaving because these event sends
are now asynchronous.
- Fixed a bug where a worker could derefence a nil pointer when certain
database selects returned no rows.
- The database layer now has more stringent locking, which both avoids certain
threads locking each other out in SQLite, and also makes certain series of
database operations effectively atomic.
- A couple of fixups would deadlock themselves out of the database and prevent
fixups from actually running. Now they don't.
- Fixups now only run once instead of on every startup, like nature intended.
- The agent "Last Checked At" timestamp was being updated when the task was
pulled off the scheduler, whether or not the agent was actually checked
(due to other potential errors).
- Named a fixup without a name.
- Agents that failed their status checks are now once again marked as such.