{"id":74985,"date":"2026-09-15T00:30:46","date_gmt":"2026-09-15T06:30:46","guid":{"rendered":"https:\/\/www.scalahosting.com\/blog\/?p=74985"},"modified":"2026-09-15T00:30:47","modified_gmt":"2026-09-15T06:30:47","slug":"object-lock-compliance-vs-governance","status":"publish","type":"post","link":"https:\/\/www.scalahosting.com\/blog\/object-lock-compliance-vs-governance\/","title":{"rendered":"Object Lock Compliance vs Governance Mode: Getting Ransomware-Proof Backups Right"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Both modes lock a storage bucket into write-once-read-many (WORM) behavior; the difference is who can break the lock early. Governance mode can be overridden by credentials that hold special bypass rights. Compliance mode cannot be overridden by anyone, including your cloud account&#8217;s root user, until the retention period expires. For production backups, rehearse your settings in governance mode, then run compliance mode. The choice works the same on Amazon S3 and Backblaze B2, and <a href=\"https:\/\/www.scalahosting.com\/spanel.html\">SPanel<\/a> delivers backups into either.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Why the mode matters more than the lock<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full mpg-gallery\"><img decoding=\"async\" width=\"1140\" height=\"513\" src=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2026\/09\/Object-Lock-Compliance-vs-Governance-Mode-Why-the-mode-matters-more-than-the-lock-1140x513-1.webp\" alt=\"Object Lock Compliance vs Governance Mode: Getting Ransomware-Proof Backups Right, Why the mode matters more than the lock\" class=\"wp-image-74988\" srcset=\"https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2026\/09\/Object-Lock-Compliance-vs-Governance-Mode-Why-the-mode-matters-more-than-the-lock-1140x513-1.webp 1140w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2026\/09\/Object-Lock-Compliance-vs-Governance-Mode-Why-the-mode-matters-more-than-the-lock-1140x513-1-300x135.webp 300w, https:\/\/www.scalahosting.com\/blog\/wp-content\/uploads\/2026\/09\/Object-Lock-Compliance-vs-Governance-Mode-Why-the-mode-matters-more-than-the-lock-1140x513-1-767x345.webp 767w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Immutable backups exist because ransomware hunts backups first. A <a href=\"https:\/\/www.sophos.com\/en-us\/blog\/the-impact-of-compromised-backups-on-ransomware-outcomes\" rel=\"nofollow\">2024 Sophos study<\/a> of 2,974 organizations hit by ransomware found attackers targeted backups in 94% of incidents and succeeded 57% of the time, with median recovery costs of $3 million when backups fell versus $375,000 when they held. Object Lock answers that threat by refusing deletion until a retention clock runs out.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But immutability is a contract with fine print, and the retention mode is the fine print. Pick governance mode and the contract carries an escape clause for anyone holding the right permission. Pick compliance mode and there is no escape clause at all, for attackers and for you alike. <a href=\"https:\/\/www.scalahosting.com\/blog\/website-backup-guide\/\">Getting backups right<\/a> means knowing exactly what each mode refuses to do, and for whom.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What the two modes share<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Everything else about Object Lock behaves identically. A retention period protects an object version for a fixed time, and a default retention on the bucket applies one automatically to every new upload, counted from the moment it lands. Locks attach to individual versions, so a new backup doesn&#8217;t alter the previous one&#8217;s configuration. Attempts to permanently delete a locked version are refused; on S3, a simple delete without a version ID removes nothing either, merely stacking a removable delete marker on top.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Per <a href=\"https:\/\/docs.aws.amazon.com\/AmazonS3\/latest\/userguide\/object-lock.html\" rel=\"nofollow\">AWS&#8217;s<\/a> and <a href=\"https:\/\/www.backblaze.com\/docs\/cloud-storage-object-lock\" rel=\"nofollow\">Backblaze&#8217;s<\/a> documentation, retention periods can always be extended, neither provider charges a fee for the lock beyond the storage it holds in place, and enabling Object Lock on a bucket is permanent on both platforms. The two modes diverge on exactly one question: can anybody loosen the lock before it expires?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Governance mode: a lock with a master key<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Governance mode protects objects from everyone except users who hold bypass rights. On Amazon S3, overriding or removing a governance lock requires the s3:BypassGovernanceRetention permission plus an explicit x-amz-bypass-governance-retention:true header on the request, a two-step design meant to prevent accidental overrides. One caution straight from AWS&#8217;s docs: the S3 console sends that header by default, so a console user who holds the permission deletes governance-locked objects as if the lock weren&#8217;t there. On Backblaze B2, the equivalent is an <a href=\"https:\/\/www.backblaze.com\/apidocs\/b2-update-file-retention\" rel=\"nofollow\">application key capability<\/a> called bypassGovernance, required for shortening or removing a governance-mode retention.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Read that threat model carefully. Governance mode fully protects against the credential that matters most in a hosting scenario, the scoped backup key stored on your server, and against everyday accidents like a cleanup script pointed at the wrong folder. It does not protect against an attacker who compromises a cloud identity holding bypass rights. If any live credential can loosen the lock, stealing that credential loosens the lock.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is why AWS itself positions governance mode as the place to test retention settings before creating compliance-mode locks. It is a rehearsal space with adult supervision, not a vault.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Compliance mode: a lock with no key at all<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In compliance mode, a locked version cannot be overwritten or deleted by any user, the account root included. The mode cannot be changed and the period cannot be shortened; AWS states that the only way to remove compliance-locked data before its date is to delete the entire AWS account. Backblaze matches the posture: compliance-mode retention cannot be removed by any user, and retention dates move in one direction only, later.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is the variant regulators trust and is often a compliance requirement for organizations dealing with large volumes of sensitive information.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The strength cuts both ways. A long retention period or a large number of backups increase storage bills, and a lock placed on the wrong data is a lock you live with. Compliance mode punishes sloppy setup precisely because it&#8217;s set in stone, so it&#8217;s important to know what you&#8217;re doing before you start using it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Why a server breach cannot break the lock<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The credential you are most likely to lose is the scoped backup key sitting on your server. Both modes stop that key cold, so a stolen server key cannot loosen the lock. Compliance mode goes further and stops a stolen cloud-admin identity too. SPanel is deliberately never handed a credential that can change a retention mode, so even a full server takeover cannot touch a compliance-locked backup.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Side by side<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table is-style-regular green-rows\"><table class=\"has-fixed-layout\"><thead><tr><th><\/th><th>Governance mode<\/th><th>Compliance mode<\/th><\/tr><\/thead><tbody><tr><td>Delete or overwrite before expiry<\/td><td>Only with bypass rights (S3: permission plus explicit header; B2: bypassGovernance capability)<\/td><td>No one, including account root<\/td><\/tr><tr><td>Shorten or remove the retention<\/td><td>Yes, with those rights<\/td><td>Never<\/td><\/tr><tr><td>Extend the retention<\/td><td>Yes<\/td><td>Yes<\/td><\/tr><tr><td>Change the mode on a locked version<\/td><td>Yes, with bypass rights<\/td><td>No<\/td><\/tr><tr><td>Stops a stolen server backup key<\/td><td>Yes<\/td><td>Yes<\/td><\/tr><tr><td>Stops a stolen cloud-admin identity<\/td><td>No<\/td><td>Yes<\/td><\/tr><tr><td>Built for<\/td><td>Rehearsals and reversible tests<\/td><td>Production backups and regulated data<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Legal hold: the third setting, briefly<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Both platforms also offer a legal hold: the same WORM protection with no expiry date, applied per object and removable only by a user with the specific permission. Holds are independent of retention periods, so an object can carry both, and the protection survives until the last of the two lapses. Holds exist for audits and litigation, where the requirement is &#8220;until further notice.&#8221; Backup rotation wants predictable expiry, so retention periods do the daily work.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The decision for backups<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use governance mode for exactly one thing: proving your configuration. Create a bucket, set a short governance retention, point SPanel at it, attempt deletions with different credentials, run a restore. When the behavior matches expectations, set the bucket&#8217;s default retention to compliance mode with your production window and let the schedule carry on. New uploads inherit the new default; versions locked during the rehearsal keep their original settings until they expire.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Window sizing is the second half of the decision. A month of recovery points covers the gap between an intrusion and its discovery for most small businesses; regulated industries usually need far longer. Extension is always available and shortening never is in compliance mode, so start modest and grow deliberately.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Where SPanel fits<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">SPanel treats locked storage as a destination. Amazon S3 (or any S3-compatible provider) and Backblaze B2 are supported backup destinations, two of the four an SPanel server can run at once, and the whole <a href=\"https:\/\/www.scalahosting.com\/blog\/the-importance-of-data-backups\/\">backup<\/a> system is included with every ScalaHosting managed VPS. The retention mode is chosen on the bucket, inside your AWS or Backblaze account: SPanel uploads on schedule, and the bucket seals whatever arrives. The panel needs no credential that can change the mode, and it is never given one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Setup is covered step by step in our guides to ransomware-proof SPanel backups with S3 Object Lock and Backblaze B2 and SPanel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Before you commit<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Rehearse on a test bucket with governance mode or a one-day compliance window.<\/li>\n\n\n\n<li>Attempt a deletion with the backup key, then with an admin identity. The first refusal shows the lock working; what happens with the second is exactly the difference between the modes.<\/li>\n\n\n\n<li>Restore one file and one database through SPanel to prove the return path.<\/li>\n\n\n\n<li>Set the bucket default to compliance mode with your production window.<\/li>\n\n\n\n<li>Keep bypass rights out of day-to-day identities, add a lifecycle rule for expired versions, and review the window quarterly.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>FAQ<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Which Object Lock mode should I use for ransomware protection?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Compliance mode in production. Governance mode exists to protect against mistakes and to let you test settings safely; an attacker holding bypass-capable credentials walks through it by design.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Can the AWS root user delete compliance-locked backups?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> No. AWS&#8217;s documentation is explicit that no user, root included, can delete or overwrite a compliance-locked version, and that the only early exit is deleting the <a href=\"https:\/\/www.scalahosting.com\/blog\/what-is-aws-the-cloud-hosting-powerhouse\/\">AWS<\/a> account itself. Backblaze B2&#8217;s compliance mode likewise refuses every user.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Can attackers really bypass governance mode?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Only by obtaining credentials that carry the bypass rights: s3:BypassGovernanceRetention on S3 or the bypassGovernance capability on a B2 application key. Modern intrusions go after exactly those identities, which is why governance mode should be treated as accident protection rather than attack protection.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Can I change the retention period after it is set?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Extending works in both modes with ordinary retention permissions. Shortening or removing works only in governance mode, and only with bypass rights. Compliance mode allows no reduction by anyone.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Do the two modes cost different amounts?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> No. Neither Amazon S3 nor Backblaze B2 charges for the lock itself in either mode; you pay for the storage that locked versions occupy until retention expires. The real difference is flexibility, and compliance mode locks in your mistakes along with your backups.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Does SPanel require a particular Object Lock mode?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> No. SPanel writes backups into whatever bucket you give it, and the mode is bucket configuration inside your storage account. Whichever you choose, keep the credentials SPanel uses free of retention and bypass rights.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Locks that don&#8217;t negotiate<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ransomware works because deletion is usually possible for whoever asks with the right stolen key. Compliance mode removes the possibility, and SPanel, included with every ScalaHosting managed VPS, keeps the locked bucket fed on schedule. Rehearse once in governance mode, commit to compliance mode, and the conversation with the next intruder is over before it starts.<\/p>\n\n\n\n<script type=\"application\/ld+json\">\n    {\n      \"@context\": \"https:\/\/schema.org\",\n      \"@type\": \"FAQPage\",\n      \"mainEntity\": [{\n        \"@type\": \"Question\",\n        \"name\": \"Which Object Lock mode should I use for ransomware protection?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Compliance mode in production. Governance mode exists to protect against mistakes and to let you test settings safely; an attacker holding bypass-capable credentials walks through it by design.\"\n        }\n      }, {\n        \"@type\": \"Question\",\n        \"name\": \"Can the AWS root user delete compliance-locked backups?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"No. AWS's documentation is explicit that no user, root included, can delete or overwrite a compliance-locked version, and that the only early exit is deleting the AWS account itself. Backblaze B2's compliance mode likewise refuses every user.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Can attackers really bypass governance mode?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Only by obtaining credentials that carry the bypass rights: s3:BypassGovernanceRetention on S3 or the bypassGovernance capability on a B2 application key. Modern intrusions go after exactly those identities, which is why governance mode should be treated as accident protection rather than attack protection.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Can I change the retention period after it is set?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Extending works in both modes with ordinary retention permissions. Shortening or removing works only in governance mode, and only with bypass rights. Compliance mode allows no reduction by anyone.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Do the two modes cost different amounts?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"No. Neither Amazon S3 nor Backblaze B2 charges for the lock itself in either mode; you pay for the storage that locked versions occupy until retention expires. The real difference is flexibility, and compliance mode locks in your mistakes along with your backups.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Does SPanel require a particular Object Lock mode?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"No. SPanel writes backups into whatever bucket you give it, and the mode is bucket configuration inside your storage account. Whichever you choose, keep the credentials SPanel uses free of retention and bypass rights.\"\n        }\n      }]\n    }\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Both modes lock a storage bucket into write-once-read-many (WORM) behavior; the difference is who can break the lock early. Governance &#8230;<\/p>\n","protected":false},"author":113,"featured_media":74986,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_seopress_titles_title":"Object Lock: Compliance vs Governance Mode %%sep%% %%sitetitle%%","_seopress_titles_desc":"Object Lock's compliance and governance modes both create immutable backups, but only one stops a stolen admin. See which mode to use, and when.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"footnotes":""},"categories":[3],"tags":[],"class_list":["post-74985","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-web-hosting-in-general"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/posts\/74985","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/users\/113"}],"replies":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/comments?post=74985"}],"version-history":[{"count":3,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/posts\/74985\/revisions"}],"predecessor-version":[{"id":74992,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/posts\/74985\/revisions\/74992"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/media\/74986"}],"wp:attachment":[{"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/media?parent=74985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/categories?post=74985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.scalahosting.com\/blog\/wp-json\/wp\/v2\/tags?post=74985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}