CCC Block Storage Controls
Controls for Block Storage technologies, as defined by the FINOS Common Cloud Controls project.
- ID
- CCC.BlocStor.CN
- Version
- v2026.07-rc
- Gemara version
- v1.2.0
- Author
- FINOS Common Cloud Controls
Encryption
The Encryption group covers entries related to protecting data confidentiality and integrity through cryptographic mechanisms. This includes encryption in transit and at rest, key management, and certificate lifecycle management.
CCC.BlocStor.CN01 Enforce Volume Encryption and Cryptographic Erasure
Objective
Ensure that all block volumes and their snapshots are encrypted at rest from creation and that their encryption keys are destroyed on deletion, so that data on reallocated storage cannot be recovered by a later user.
Assessment requirements
When a block volume or snapshot is created, the service MUST encrypt its data at rest using a unique cryptographic key AND MUST reject the creation of an unencrypted volume or snapshot.
Applicability: tlp-clear, tlp-green, tlp-amber, tlp-red
When a block volume or snapshot is created from an existing encrypted source, the service MUST retain encryption on the resulting resource AND MUST NOT produce an unencrypted copy.
Applicability: tlp-clear, tlp-green, tlp-amber, tlp-red
When a block volume is deleted, the service MUST render the volume's data unrecoverable by destroying its encryption key or cryptographically erasing the underlying storage before those blocks are reallocated.
Applicability: tlp-clear, tlp-green, tlp-amber, tlp-red
References to Other Documents
Threats
- CCC.BlocStor.Threats
- CCC.BlocStor.TH01 — Residual Data Remains on Reallocated Volume Storage
- CCC.BlocStor.TH05 — Volumes are Provisioned Without Encryption
- CCC.Core.Threats
- CCC.Core.TH18 — Encryption Key is Misused
Data Resilience
The Data Resilience group covers entries related to ensuring data availability, integrity, and sovereignty across its lifecycle. This includes replication, backup, recovery, region restrictions, and protection against data loss or corruption.
CCC.BlocStor.CN02 Prevent Public or Cross-Account Snapshot Sharing
Objective
Ensure that volume snapshots cannot be shared publicly or with accounts outside the organization's trust boundary, preventing exposure of the data captured in a snapshot.
Assessment requirements
When a snapshot sharing setting is configured to make the snapshot publicly accessible, the service MUST prevent the configuration from taking effect.
Applicability: tlp-clear, tlp-green, tlp-amber, tlp-red
When a snapshot is shared with another account, the service MUST deny sharing with any account not listed as trusted by the organization.
Applicability: tlp-amber, tlp-red
When a snapshot's sharing scope is created or modified, the service MUST record the event including the snapshot identifier and the target accounts.
Applicability: tlp-clear, tlp-green, tlp-amber, tlp-red
References to Other Documents
Threats
- CCC.BlocStor.Threats
- CCC.BlocStor.TH02 — Snapshots are Exposed to Unauthorized Accounts
- CCC.Core.Threats
- CCC.Core.TH01 — Access is Granted to Unauthorized Users
CCC.BlocStor.CN04 Govern Multi-Attach with Shared-Reservation Controls
Objective
Ensure that multi-attach is disabled by default and, when enabled, concurrent access is coordinated so that simultaneous writes do not corrupt the volume's file system or data.
Assessment requirements
When a block volume is created, the service MUST disable multi-attach by default, requiring explicit configuration to enable it.
Applicability: tlp-clear, tlp-green, tlp-amber, tlp-red
When multi-attach is enabled for a block volume, the service MUST support a write-coordination mechanism, such as persistent reservations, so that concurrent writes from multiple instances are serialized.
Applicability: tlp-clear, tlp-green, tlp-amber, tlp-red
References to Other Documents
Threats
- CCC.BlocStor.Threats
- CCC.BlocStor.TH04 — Multi-Attached Volume is Corrupted by Uncoordinated Writes
Access Control
The Access Control group covers entries related to authentication, authorization, and trust perimeter enforcement. This includes multi-factor authentication, least privilege access, network access rules, and prevention of unauthorized access or reconnaissance.
CCC.BlocStor.CN03 Restrict Volume Attachment to Authorized Instances
Objective
Ensure that a block volume can only be attached to compute instances authorized within the volume's trust boundary, preventing data access from instances outside that boundary.
Assessment requirements
When an attempt is made to attach a block volume to a compute instance, the service MUST deny the attachment unless the requesting identity is authorized to attach that volume to that instance.
Applicability: tlp-clear, tlp-green, tlp-amber, tlp-red
When a block volume is attached or detached, the service MUST record the event including the volume identifier, the target instance, and the requesting identity.
Applicability: tlp-clear, tlp-green, tlp-amber, tlp-red
References to Other Documents
Threats
- CCC.BlocStor.Threats
- CCC.BlocStor.TH03 — Volume is Attached to an Unauthorized Compute Instance
- CCC.Core.Threats
- CCC.Core.TH01 — Access is Granted to Unauthorized Users
# CCC Block Storage Controls
Version: v2026.07-rc
_CCC Block Storage Controls_ is a Gemara v1.2.0 ControlCatalog by FINOS Common Cloud Controls (Human, `FINOS-CCC`).
### Description
Controls for Block Storage technologies, as defined by the FINOS Common Cloud Controls project.
### Requirement Applicability Groups
The following groups are used to specify the circumstance within which an assessment requirement is mandated.
- **tlp-clear** — TLP:CLEAR: Traffic Light Protocol sharing boundary TLP:CLEAR.
- **tlp-green** — TLP:GREEN: Traffic Light Protocol sharing boundary TLP:GREEN.
- **tlp-amber** — TLP:AMBER: Traffic Light Protocol sharing boundary TLP:AMBER.
- **tlp-red** — TLP:RED: Traffic Light Protocol sharing boundary TLP:RED.
_Summary: 4 control(s), 10 assessment requirement(s)._
## Table of contents
- [Encryption](#encryption)
- [CCC.BlocStor.CN01: Enforce Volume Encryption and Cryptographic Erasure](#ccc-blocstor-cn01-enforce-volume-encryption-and-cryptographic-erasure)
- [Data Resilience](#data)
- [CCC.BlocStor.CN02: Prevent Public or Cross-Account Snapshot Sharing](#ccc-blocstor-cn02-prevent-public-or-cross-account-snapshot-sharing)
- [CCC.BlocStor.CN04: Govern Multi-Attach with Shared-Reservation Controls](#ccc-blocstor-cn04-govern-multi-attach-with-shared-reservation-controls)
- [Access Control](#access)
- [CCC.BlocStor.CN03: Restrict Volume Attachment to Authorized Instances](#ccc-blocstor-cn03-restrict-volume-attachment-to-authorized-instances)
## Imports
The following controls are imported from external catalogs. All assessment requirements and other relevant details for these controls can be found in the respective catalog's source.
### CCC.Core.Controls: CCC Core Controls
#### CCC.Core.CN01 — Encrypt Data for Transmission
#### CCC.Core.CN02 — Encrypt Data for Storage
#### CCC.Core.CN03 — Implement Multi-factor Authentication (MFA) for Access
#### CCC.Core.CN04 — Log All Access and Changes
#### CCC.Core.CN05 — Prevent Access from Untrusted Entities
#### CCC.Core.CN06 — Restrict Deployments to Trust Perimeter
#### CCC.Core.CN07 — Alert on Unusual Enumeration Activity
#### CCC.Core.CN08 — Replicate Data to Multiple Locations
#### CCC.Core.CN09 — Ensure Integrity of Access Logs
#### CCC.Core.CN10 — Restrict Data Replication to Trust Perimeter
#### CCC.Core.CN11 — Protect Encryption Keys
#### CCC.Core.CN14 — Maintain Recent Backups
## Encryption: Encryption
The Encryption group covers entries related to protecting data
confidentiality and integrity through cryptographic mechanisms. This
includes encryption in transit and at rest, key management, and
certificate lifecycle management.
### CCC.BlocStor.CN01: Enforce Volume Encryption and Cryptographic Erasure
**Objective**
Ensure that all block volumes and their snapshots are encrypted at rest
from creation and that their encryption keys are destroyed on deletion, so
that data on reallocated storage cannot be recovered by a later user.
#### Threats
This control aids in the mitigation of the following threats:
| Source | References |
| :--- | :--- |
| **CCC.BlocStor.Threats** | CCC.BlocStor.TH01 — Residual Data Remains on Reallocated Volume Storage · CCC.BlocStor.TH05 — Volumes are Provisioned Without Encryption |
| **CCC.Core.Threats** | CCC.Core.TH18 — Encryption Key is Misused |
#### CCC.BlocStor.CN01.AR01
When a block volume or snapshot is created, the service MUST encrypt
its data at rest using a unique cryptographic key AND MUST reject the
creation of an unencrypted volume or snapshot.
**Applicability:** tlp-clear, tlp-green, tlp-amber, tlp-red
**Recommendation**: Enable account- or organization-wide default encryption for new
volumes and snapshots, and apply a policy that denies creation of
unencrypted resources.
#### CCC.BlocStor.CN01.AR02
When a block volume or snapshot is created from an existing encrypted
source, the service MUST retain encryption on the resulting resource
AND MUST NOT produce an unencrypted copy.
**Applicability:** tlp-clear, tlp-green, tlp-amber, tlp-red
#### CCC.BlocStor.CN01.AR03
When a block volume is deleted, the service MUST render the volume's
data unrecoverable by destroying its encryption key or cryptographically
erasing the underlying storage before those blocks are reallocated.
**Applicability:** tlp-clear, tlp-green, tlp-amber, tlp-red
**Recommendation**: Prefer per-volume keys so that key destruction alone renders residual
blocks unrecoverable without requiring physical overwrite.
## Data: Data Resilience
The Data Resilience group covers entries related to ensuring data
availability, integrity, and sovereignty across its lifecycle. This
includes replication, backup, recovery, region restrictions, and
protection against data loss or corruption.
### CCC.BlocStor.CN02: Prevent Public or Cross-Account Snapshot Sharing
**Objective**
Ensure that volume snapshots cannot be shared publicly or with accounts
outside the organization's trust boundary, preventing exposure of the
data captured in a snapshot.
#### Threats
This control aids in the mitigation of the following threats:
| Source | References |
| :--- | :--- |
| **CCC.BlocStor.Threats** | CCC.BlocStor.TH02 — Snapshots are Exposed to Unauthorized Accounts |
| **CCC.Core.Threats** | CCC.Core.TH01 — Access is Granted to Unauthorized Users |
#### CCC.BlocStor.CN02.AR01
When a snapshot sharing setting is configured to make the snapshot
publicly accessible, the service MUST prevent the configuration from
taking effect.
**Applicability:** tlp-clear, tlp-green, tlp-amber, tlp-red
**Recommendation**: Enable an account-level block on public sharing of snapshots and images.
#### CCC.BlocStor.CN02.AR02
When a snapshot is shared with another account, the service MUST deny
sharing with any account not listed as trusted by the organization.
**Applicability:** tlp-amber, tlp-red
#### CCC.BlocStor.CN02.AR03
When a snapshot's sharing scope is created or modified, the service
MUST record the event including the snapshot identifier and the target
accounts.
**Applicability:** tlp-clear, tlp-green, tlp-amber, tlp-red
### CCC.BlocStor.CN04: Govern Multi-Attach with Shared-Reservation Controls
**Objective**
Ensure that multi-attach is disabled by default and, when enabled,
concurrent access is coordinated so that simultaneous writes do not
corrupt the volume's file system or data.
#### Threats
This control aids in the mitigation of the following threats:
| Source | References |
| :--- | :--- |
| **CCC.BlocStor.Threats** | CCC.BlocStor.TH04 — Multi-Attached Volume is Corrupted by Uncoordinated Writes |
#### CCC.BlocStor.CN04.AR01
When a block volume is created, the service MUST disable multi-attach
by default, requiring explicit configuration to enable it.
**Applicability:** tlp-clear, tlp-green, tlp-amber, tlp-red
#### CCC.BlocStor.CN04.AR02
When multi-attach is enabled for a block volume, the service MUST
support a write-coordination mechanism, such as persistent
reservations, so that concurrent writes from multiple instances are
serialized.
**Applicability:** tlp-clear, tlp-green, tlp-amber, tlp-red
**Recommendation**: Pair multi-attach with a cluster-aware file system or volume manager;
do not expose a multi-attached volume to instances that write without
coordination.
## Access: Access Control
The Access Control group covers entries related to authentication,
authorization, and trust perimeter enforcement. This includes
multi-factor authentication, least privilege access, network access
rules, and prevention of unauthorized access or reconnaissance.
### CCC.BlocStor.CN03: Restrict Volume Attachment to Authorized Instances
**Objective**
Ensure that a block volume can only be attached to compute instances
authorized within the volume's trust boundary, preventing data access
from instances outside that boundary.
#### Threats
This control aids in the mitigation of the following threats:
| Source | References |
| :--- | :--- |
| **CCC.BlocStor.Threats** | CCC.BlocStor.TH03 — Volume is Attached to an Unauthorized Compute Instance |
| **CCC.Core.Threats** | CCC.Core.TH01 — Access is Granted to Unauthorized Users |
#### CCC.BlocStor.CN03.AR01
When an attempt is made to attach a block volume to a compute instance,
the service MUST deny the attachment unless the requesting identity is
authorized to attach that volume to that instance.
**Applicability:** tlp-clear, tlp-green, tlp-amber, tlp-red
**Recommendation**: Scope attach and detach permissions with least privilege, using
resource tags or identity conditions to bind volumes to authorized
instances.
#### CCC.BlocStor.CN03.AR02
When a block volume is attached or detached, the service MUST record
the event including the volume identifier, the target instance, and the
requesting identity.
**Applicability:** tlp-clear, tlp-green, tlp-amber, tlp-red
### Mapping References
- **CCC.Core.Controls** — CCC Core Controls (vv2025.10)
{
"catalog": {
"groups": [
{
"class": "family",
"controls": [
{
"class": "Encryption",
"controls": [
{
"id": "CCC.BlocStor.CN01.AR01",
"parts": [
{
"id": "CCC.BlocStor.CN01.AR01_smt",
"name": "statement",
"prose": "When a block volume or snapshot is created, the service MUST encrypt\nits data at rest using a unique cryptographic key AND MUST reject the\ncreation of an unencrypted volume or snapshot.\n"
},
{
"id": "CCC.BlocStor.CN01.AR01_gdn",
"name": "guidance",
"prose": "Enable account- or organization-wide default encryption for new\nvolumes and snapshots, and apply a policy that denies creation of\nunencrypted resources.\n"
},
{
"id": "CCC.BlocStor.CN01.AR01_obj",
"links": [
{
"href": "#CCC.BlocStor.CN01.AR01_smt",
"rel": "assessment-for"
}
],
"name": "assessment-objective"
}
],
"title": "CCC.BlocStor.CN01.AR01"
},
{
"id": "CCC.BlocStor.CN01.AR02",
"parts": [
{
"id": "CCC.BlocStor.CN01.AR02_smt",
"name": "statement",
"prose": "When a block volume or snapshot is created from an existing encrypted\nsource, the service MUST retain encryption on the resulting resource\nAND MUST NOT produce an unencrypted copy.\n"
},
{
"id": "CCC.BlocStor.CN01.AR02_obj",
"links": [
{
"href": "#CCC.BlocStor.CN01.AR02_smt",
"rel": "assessment-for"
}
],
"name": "assessment-objective"
}
],
"title": "CCC.BlocStor.CN01.AR02"
},
{
"id": "CCC.BlocStor.CN01.AR03",
"parts": [
{
"id": "CCC.BlocStor.CN01.AR03_smt",
"name": "statement",
"prose": "When a block volume is deleted, the service MUST render the volume's\ndata unrecoverable by destroying its encryption key or cryptographically\nerasing the underlying storage before those blocks are reallocated.\n"
},
{
"id": "CCC.BlocStor.CN01.AR03_gdn",
"name": "guidance",
"prose": "Prefer per-volume keys so that key destruction alone renders residual\nblocks unrecoverable without requiring physical overwrite.\n"
},
{
"id": "CCC.BlocStor.CN01.AR03_obj",
"links": [
{
"href": "#CCC.BlocStor.CN01.AR03_smt",
"rel": "assessment-for"
}
],
"name": "assessment-objective"
}
],
"title": "CCC.BlocStor.CN01.AR03"
}
],
"id": "CCC.BlocStor.CN01",
"parts": [
{
"id": "CCC.BlocStor.CN01_smt",
"name": "statement",
"prose": "Ensure that all block volumes and their snapshots are encrypted at rest\nfrom creation and that their encryption keys are destroyed on deletion, so\nthat data on reallocated storage cannot be recovered by a later user.\n"
}
],
"title": "Enforce Volume Encryption and Cryptographic Erasure"
}
],
"id": "Encryption",
"title": "The Encryption group covers entries related to protecting data\\nconfidentiality and integrity through cryptographic mechanisms. This\\nincludes encryption in transit and at rest, key management, and\\ncertificate lifecycle management.\\n"
},
{
"class": "family",
"controls": [
{
"class": "Data",
"controls": [
{
"id": "CCC.BlocStor.CN02.AR01",
"parts": [
{
"id": "CCC.BlocStor.CN02.AR01_smt",
"name": "statement",
"prose": "When a snapshot sharing setting is configured to make the snapshot\npublicly accessible, the service MUST prevent the configuration from\ntaking effect.\n"
},
{
"id": "CCC.BlocStor.CN02.AR01_gdn",
"name": "guidance",
"prose": "Enable an account-level block on public sharing of snapshots and images.\n"
},
{
"id": "CCC.BlocStor.CN02.AR01_obj",
"links": [
{
"href": "#CCC.BlocStor.CN02.AR01_smt",
"rel": "assessment-for"
}
],
"name": "assessment-objective"
}
],
"title": "CCC.BlocStor.CN02.AR01"
},
{
"id": "CCC.BlocStor.CN02.AR02",
"parts": [
{
"id": "CCC.BlocStor.CN02.AR02_smt",
"name": "statement",
"prose": "When a snapshot is shared with another account, the service MUST deny\nsharing with any account not listed as trusted by the organization.\n"
},
{
"id": "CCC.BlocStor.CN02.AR02_obj",
"links": [
{
"href": "#CCC.BlocStor.CN02.AR02_smt",
"rel": "assessment-for"
}
],
"name": "assessment-objective"
}
],
"title": "CCC.BlocStor.CN02.AR02"
},
{
"id": "CCC.BlocStor.CN02.AR03",
"parts": [
{
"id": "CCC.BlocStor.CN02.AR03_smt",
"name": "statement",
"prose": "When a snapshot's sharing scope is created or modified, the service\nMUST record the event including the snapshot identifier and the target\naccounts.\n"
},
{
"id": "CCC.BlocStor.CN02.AR03_obj",
"links": [
{
"href": "#CCC.BlocStor.CN02.AR03_smt",
"rel": "assessment-for"
}
],
"name": "assessment-objective"
}
],
"title": "CCC.BlocStor.CN02.AR03"
}
],
"id": "CCC.BlocStor.CN02",
"parts": [
{
"id": "CCC.BlocStor.CN02_smt",
"name": "statement",
"prose": "Ensure that volume snapshots cannot be shared publicly or with accounts\noutside the organization's trust boundary, preventing exposure of the\ndata captured in a snapshot.\n"
}
],
"title": "Prevent Public or Cross-Account Snapshot Sharing"
},
{
"class": "Data",
"controls": [
{
"id": "CCC.BlocStor.CN04.AR01",
"parts": [
{
"id": "CCC.BlocStor.CN04.AR01_smt",
"name": "statement",
"prose": "When a block volume is created, the service MUST disable multi-attach\nby default, requiring explicit configuration to enable it.\n"
},
{
"id": "CCC.BlocStor.CN04.AR01_obj",
"links": [
{
"href": "#CCC.BlocStor.CN04.AR01_smt",
"rel": "assessment-for"
}
],
"name": "assessment-objective"
}
],
"title": "CCC.BlocStor.CN04.AR01"
},
{
"id": "CCC.BlocStor.CN04.AR02",
"parts": [
{
"id": "CCC.BlocStor.CN04.AR02_smt",
"name": "statement",
"prose": "When multi-attach is enabled for a block volume, the service MUST\nsupport a write-coordination mechanism, such as persistent\nreservations, so that concurrent writes from multiple instances are\nserialized.\n"
},
{
"id": "CCC.BlocStor.CN04.AR02_gdn",
"name": "guidance",
"prose": "Pair multi-attach with a cluster-aware file system or volume manager;\ndo not expose a multi-attached volume to instances that write without\ncoordination.\n"
},
{
"id": "CCC.BlocStor.CN04.AR02_obj",
"links": [
{
"href": "#CCC.BlocStor.CN04.AR02_smt",
"rel": "assessment-for"
}
],
"name": "assessment-objective"
}
],
"title": "CCC.BlocStor.CN04.AR02"
}
],
"id": "CCC.BlocStor.CN04",
"parts": [
{
"id": "CCC.BlocStor.CN04_smt",
"name": "statement",
"prose": "Ensure that multi-attach is disabled by default and, when enabled,\nconcurrent access is coordinated so that simultaneous writes do not\ncorrupt the volume's file system or data.\n"
}
],
"title": "Govern Multi-Attach with Shared-Reservation Controls"
}
],
"id": "Data",
"title": "The Data Resilience group covers entries related to ensuring data\\navailability, integrity, and sovereignty across its lifecycle. This\\nincludes replication, backup, recovery, region restrictions, and\\nprotection against data loss or corruption.\\n"
},
{
"class": "family",
"controls": [
{
"class": "Access",
"controls": [
{
"id": "CCC.BlocStor.CN03.AR01",
"parts": [
{
"id": "CCC.BlocStor.CN03.AR01_smt",
"name": "statement",
"prose": "When an attempt is made to attach a block volume to a compute instance,\nthe service MUST deny the attachment unless the requesting identity is\nauthorized to attach that volume to that instance.\n"
},
{
"id": "CCC.BlocStor.CN03.AR01_gdn",
"name": "guidance",
"prose": "Scope attach and detach permissions with least privilege, using\nresource tags or identity conditions to bind volumes to authorized\ninstances.\n"
},
{
"id": "CCC.BlocStor.CN03.AR01_obj",
"links": [
{
"href": "#CCC.BlocStor.CN03.AR01_smt",
"rel": "assessment-for"
}
],
"name": "assessment-objective"
}
],
"title": "CCC.BlocStor.CN03.AR01"
},
{
"id": "CCC.BlocStor.CN03.AR02",
"parts": [
{
"id": "CCC.BlocStor.CN03.AR02_smt",
"name": "statement",
"prose": "When a block volume is attached or detached, the service MUST record\nthe event including the volume identifier, the target instance, and the\nrequesting identity.\n"
},
{
"id": "CCC.BlocStor.CN03.AR02_obj",
"links": [
{
"href": "#CCC.BlocStor.CN03.AR02_smt",
"rel": "assessment-for"
}
],
"name": "assessment-objective"
}
],
"title": "CCC.BlocStor.CN03.AR02"
}
],
"id": "CCC.BlocStor.CN03",
"parts": [
{
"id": "CCC.BlocStor.CN03_smt",
"name": "statement",
"prose": "Ensure that a block volume can only be attached to compute instances\nauthorized within the volume's trust boundary, preventing data access\nfrom instances outside that boundary.\n"
}
],
"title": "Restrict Volume Attachment to Authorized Instances"
}
],
"id": "Access",
"title": "The Access Control group covers entries related to authentication,\\nauthorization, and trust perimeter enforcement. This includes\\nmulti-factor authentication, least privilege access, network access\\nrules, and prevention of unauthorized access or reconnaissance.\\n"
}
],
"metadata": {
"last-modified": "2026-07-23T07:39:10.85975006Z",
"oscal-version": "1.1.3",
"parties": [
{
"name": "FINOS Common Cloud Controls",
"type": "person",
"uuid": "308e8085-a188-4398-9e52-e27e5f0f0213"
}
],
"responsible-parties": [
{
"party-uuids": [
"308e8085-a188-4398-9e52-e27e5f0f0213"
],
"role-id": "author"
}
],
"roles": [
{
"description": "Author and owner of the document",
"id": "author",
"title": "Author"
}
],
"title": "CCC Block Storage Controls",
"version": "v2026.07-rc"
},
"uuid": "4db57de9-d4e2-4edf-a9b3-0bc7a497b0ef"
}
}