Skip to content

@shield-bot shield-bot released this Jun 9, 2020 · 3 commits to master since this release


  • 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 ¯_(ツ)_/¯

  • The metashield plugin 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.

Assets 5

@shield-bot shield-bot released this Apr 23, 2020 · 14 commits to master since this release

Bug Fixes

  • SHIELD will now be able to properly authenticate to vault again.
Assets 5

@shield-bot shield-bot released this Apr 20, 2020 · 21 commits to master since this release


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

Assets 5

@shield-bot shield-bot released this Mar 10, 2020 · 29 commits to master since this release

New Features

  • SHIELD now features a new metashield plugin for backing up and restoring your shield core(s). This is a standardized way
    for SHIELD to backup/restore itself or another SHIELD instance.
Assets 5

@shield-bot shield-bot released this Jan 3, 2020 · 37 commits to master since this release

Bug Fixes

  • 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.
Assets 5

@shield-bot shield-bot released this Dec 5, 2019 · 46 commits to master since this release

This release fixes issues with failed 8.5.0 → 8.6.0 migrations
that left the interim jobs_new table around.

Assets 5

@shield-bot shield-bot released this Dec 4, 2019 · 50 commits to master since this release

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.


  • The fs plugin 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.

Bug Fixes

  • The front-end configuration wizard now properly looks up
    plugin metadata for an agent. Previously, there was a
    Javascript variable shadowing bug that caused the front-end to
    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.

Assets 5

@shield-bot shield-bot released this Nov 14, 2019 · 66 commits to master since this release


Do not use this version. This version has a database schema migration error that will be fixed in an upcoming patch release.

New Features

  • Helm Support! This version of SHIELD ships with OCI Docker
    images that can be used in the new (Beta!) helm chart for
    SHIELD. See 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
    at /metrics, and governed by a separate set of HTTP Basic Auth

Breaking Changes

The fabrics array in the configuration file has been replaced with
the legacy-agents hash.

Previously, configuration for this would look like

- name: legacy
  ssh-key: |
    -----END RSA PRIVATE KEY-----

Now, that should be configured like the following:

  enabled: true
  private-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.

Bug Fixes

  • Uncompressed backups can now properly be restored.

  • The healthy and paused fields 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.

  • The api.session.timeout value is now interpreted properly as
    seconds, not hours. This effectively means that sessions now
    expire when they ought to, not several orders of magnitude

Assets 5

@shield-bot shield-bot released this Sep 13, 2019 · 102 commits to master since this release


  • The shield status command is twice as pretty and three times
    as useful.

  • 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
    storage configurations.

  • The SHIELD CLI now displays task+log data for the last
    test-store task of a given store (for shield store X and
    shield global-store Y), to assist in troubleshooting failing
    storage configurations.

  • 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).

  • The mongo target plugin can now have options applied
    individually to just mongodump or mongorestore.

  • 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.

  • The shield tasks command can now filter down to only tasks
    that involve a particular tenant or global cloud storage system.

Bug Fixes

  • 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:navigate away from the
    page. Other such race conditions involving AJAX should now also
    be fixed.

  • Switching between tenants (with differing levels of access) now
    properly re-renders the sidebar to show your new privileges.

  • The shield job X command now populates the "Status" and
    "Agent" fields, using data in the API responses.

Assets 5

@shield-bot shield-bot released this Aug 29, 2019 · 129 commits to master since this release


  • 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.

Bug Fixes

  • 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.
Assets 5