Skip to main content

CCC-Complete (Behavioural) 0.1

Test results for this specific product, vendor, and version combination

VendorFINOS
ProductCCC-Complete (Behavioural)
Version0.1

Download Raw Results

Download the original OCSF or HTML result files used to generate this page

File NameDownload
azure-storage-account-ccc-test-container-1775043178-port
azure-storage-account-ccc-test-container-1775043178-service
azure-storage-account-combined
azure-storage-account-summary

Test Summary

Aggregate summary of all tests for this configuration result

Resources In Configuration2
Count of Tests102
Passing Tests34
Failing Tests68
Catalogs Tested

Test Mapping Summary

Summary of test mappings showing how event codes map to test requirements

Control CatalogTest RequirementMapped Tests (Event Code | Total | Passing | Failing)
CCC.Core
CCC.Core.CN01.AR01
When a port is exposed for non-SSH network traffic, all traffic MUST include a TLS handshake AND be encrypted using TLS 1.3 or higher.
Service accepts TLS 1.3 encrypted traffic
220
Service rejects TLS 1.0 traffic
220
Service rejects TLS 1.1 traffic
220
Service rejects TLS 1.2 traffic
220
Verify no known SSL/TLS vulnerabilities
220
Verify SSL/TLS protocol support
202
Verify TLS 1.3 only certificate validity
220
CCC.Core
CCC.Core.CN01.AR03
When the service receives unencrypted traffic, then it MUST either block the request or automatically redirect it to the secure equivalent.
HTTP redirects to HTTPS
202
Only secure protocols are exposed
220
CCC.Core
CCC.Core.CN01.AR07
When a port is exposed, the service MUST ensure that the protocol and service officially assigned to that port number by the IANA Service Name and Transport Protocol Port Number Registry, and no other, is run on that port.
Verify HTTPS uses IANA-assigned port 443
220
CCC.Core
CCC.Core.CN01.AR08
When a service transmits data using TLS, mutual TLS (mTLS) MUST be implemented to require both client and server certificate authentication for all connections.
Verify mTLS requires client certificate authentication
202
CCC.Core
CCC.Core.CN02.AR01
When data is stored, it MUST be encrypted using the latest industry-standard encryption methods.
Verify objects are encrypted at rest
202
CCC.Core
CCC.Core.CN03.AR01
When an entity attempts to modify the service through a user interface, the authentication process MUST require multiple identifying factors for authentication.
MFA requirement for destructive operations cannot be tested automatically
220
CCC.Core
CCC.Core.CN04.AR01
When administrative access or configuration change is attempted on the service or a child resource, the service MUST log the client identity, time, and result of the attempt.
Verify admin actions are logged with identity and timestamp
220
CCC.Core
CCC.Core.CN04.AR03
When any attempt is made to read data on the service or a child resource, the service MUST log the client identity, time, and result of the attempt.
Verify data read operations are logged with identity and timestamp
202
CCC.Core
CCC.Core.CN05.AR01
When an attempt is made to modify data on the service or a child resource, the service MUST block requests from unauthorized entities.
Service allows data modification by user with write access
202
Service prevents data modification by user with no access
202
CCC.Core
CCC.Core.CN05.AR02
When administrative access or configuration change is attempted on the service or a child resource, the service MUST refuse requests from unauthorized entities.
Service allows administrative action (creating a new bucket) by user with admin access
202
Service prevents administrative action (creating a new bucket) by user with no access
202
Service prevents administrative action (creating a new bucket) by user with read-only access
202
CCC.Core
CCC.Core.CN05.AR06
When any request is made to the service or a child resource, the service MUST refuse requests from unauthorized entities.
Service prevents data read by user with no access - Duplicate
220
CCC.Core
CCC.Core.CN06.AR02
When a child resource is deployed, its region and availability zone MUST be included in a list of explicitly trusted or approved locations within the trust perimeter.
Child resource region compliance - NotTestable
220
CCC.Core
CCC.Core.CN07.AR01
When enumeration activities are detected, the service MUST publish an event to a monitored channel which includes the client identity, time, and nature of the activity.
Enumeration event publishing cannot be tested automatically - NotTestable
220
CCC.Core
CCC.Core.CN07.AR02
When enumeration activities are detected, the service MUST log the client identity, time, and nature of the activity.
Enumeration logging cannot be verified automatically - NotTestable
220
CCC.Core
CCC.Core.CN08.AR01
When data is created or modified, the data MUST have a complete and recoverable duplicate that is stored in a physically separate data center.
Bucket data is replicated to physically separate locations
220
CCC.Core
CCC.Core.CN08.AR02
When data is replicated into a second location, the service MUST be able to accurately represent the replication locations, replication status, and data synchronization status.
Replication status can be retrieved for monitoring
220
CCC.Core
CCC.Core.CN10.AR01
When data is replicated, the service MUST ensure that replication only occurs to destinations that are explicitly included within the defined trust perimeter.
Replication destination trust cannot be verified automatically - NotTestable
220
CCC.ObjStor
CCC.ObjStor.CN01.AR01
Description not available
Service allows reading bucket with read access
202
Service prevents reading bucket with no access
202
CCC.ObjStor
CCC.ObjStor.CN01.AR02
Description not available
Service allows reading object with read access
202
Service prevents reading object with no access
202
CCC.ObjStor
CCC.ObjStor.CN01.AR03
Description not available
Service allows creating bucket with write access
202
Service prevents creating bucket with no access
202
CCC.ObjStor
CCC.ObjStor.CN01.AR04
Description not available
Service allows writing object with write access
202
Service prevents writing object with read-only access
202
CCC.ObjStor
CCC.ObjStor.CN02.AR01
Description not available
Service enforces uniform bucket-level access by rejecting object-level permissions
202
CCC.ObjStor
CCC.ObjStor.CN02.AR02
Description not available
Service enforces uniform bucket-level access denial
202
CCC.ObjStor
CCC.ObjStor.CN03.AR01
Description not available
Service supports bucket soft delete and recovery
202
CCC.ObjStor
CCC.ObjStor.CN03.AR02
Description not available
Service prevents modification of locked retention policy
202
CCC.ObjStor
CCC.ObjStor.CN04.AR01
Description not available
Service applies default retention policy to newly uploaded object
202
Service enforces retention policy on newly created objects
202
Service validates retention period meets minimum requirements
202
CCC.ObjStor
CCC.ObjStor.CN04.AR02
Description not available
Service allows object read access during retention period
202
Service prevents object deletion by admin user during retention period
202
Service prevents object deletion by write user during retention period
202
Service prevents object modification during retention period
202
CCC.ObjStor
CCC.ObjStor.CN05.AR01
Description not available
Service enables versioning and objects receive unique version identifiers
202
CCC.ObjStor
CCC.ObjStor.CN05.AR02
Description not available
Modified objects receive new version identifiers
202
CCC.ObjStor
CCC.ObjStor.CN05.AR03
Description not available
Modified objects receive new version identifiers
202
CCC.ObjStor
CCC.ObjStor.CN05.AR04
Description not available
Deleted object data can be reloaded from previous version
202
Deleted object version remains in version list
202

Resource Summary

Summary of all resources mentioned in OCSF results

Resource NameResource TypeControl CatalogsTotal TestsPassingFailing
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage801862
storagecfitest1775043178.blob.core.windows.net
object-storage22166

Test Results

OCSF test results filtered for entries with CCC compliance mappings

StatusFindingResource NameResource TypeMessageTest Requirements
PASS
Service accepts TLS 1.3 encrypted traffic
✓ a cloud api for "{Instance}" in "api" ✓ an openssl s_client request using "tls1_3" to "{portNumber}" on "{hostName}" protocol "{protocol}" ✓ I refer to "{result}" as "connection" ✓ "{connection}" state is open ✓ "{connection.State}" is "open" ✓ I close connection "{connection}" ✓ "{connection}" state is closed
storagecfitest1775043178.blob.core.windows.net
object-storage
Service accepts TLS 1.3 encrypted traffic
PASS
Service rejects TLS 1.2 traffic
✓ a cloud api for "{Instance}" in "api" ✓ an openssl s_client request using "tls1_2" to "{portNumber}" on "{hostName}" protocol "{protocol}" ✓ I refer to "{result}" as "connection" ✓ we wait for a period of "40" ms ✓ "{connection.State}" is "closed"
storagecfitest1775043178.blob.core.windows.net
object-storage
Service rejects TLS 1.2 traffic
PASS
Service rejects TLS 1.1 traffic
✓ a cloud api for "{Instance}" in "api" ✓ an openssl s_client request using "tls1_1" to "{portNumber}" on "{hostName}" protocol "{protocol}" ✓ I refer to "{result}" as "connection" ✓ we wait for a period of "40" ms ✓ "{connection.State}" is "closed"
storagecfitest1775043178.blob.core.windows.net
object-storage
Service rejects TLS 1.1 traffic
PASS
Service rejects TLS 1.0 traffic
✓ a cloud api for "{Instance}" in "api" ✓ an openssl s_client request using "tls1" to "{portNumber}" on "{hostName}" protocol "{protocol}" ✓ I refer to "{result}" as "connection" ✓ we wait for a period of "40" ms ✓ "{connection.State}" is "closed"
storagecfitest1775043178.blob.core.windows.net
object-storage
Service rejects TLS 1.0 traffic
FAIL
Verify SSL/TLS protocol support
✓ a cloud api for "{Instance}" in "api" ✓ "report" contains details of SSL Support type "protocols" for "{hostName}" on port "{portNumber}" ✗ "{report}" is an array of objects which doesn't contain any of - Error: unwanted row found in array: map[finding:offered id:TLS1_2] ⊘ "{report}" is an array of objects with at least the following contents (skipped)
storagecfitest1775043178.blob.core.windows.net
object-storage
Verify SSL/TLS protocol support
PASS
Verify no known SSL/TLS vulnerabilities
✓ a cloud api for "{Instance}" in "api" ✓ "report" contains details of SSL Support type "vulnerable" for "{hostName}" on port "{portNumber}" ✓ "{report}" is an array of objects with at least the following contents
storagecfitest1775043178.blob.core.windows.net
object-storage
Verify no known SSL/TLS vulnerabilities
PASS
Verify TLS 1.3 only certificate validity
✓ a cloud api for "{Instance}" in "api" ✓ "report" contains details of SSL Support type "server-defaults" for "{hostName}" on port "{portNumber}" ✓ "{report}" is an array of objects with at least the following contents
storagecfitest1775043178.blob.core.windows.net
object-storage
Verify TLS 1.3 only certificate validity
FAIL
HTTP redirects to HTTPS
✓ a client connects to "{hostName}" with protocol "http" on port "80" ✓ I refer to "{result}" as "connection" ✓ "{connection}" is not an error ✓ I transmit "GET / HTTP/1.1\r\nHost: {hostName}\r\n\r\n" to "{connection}" ✓ I attach "{connection}" to the test output as "HTTP response" ✗ "{connection.Output}" contains "301" - Error: expected {connection.Output} to contain '301', but got 'HTTP/1.1 400 The account being accessed does not support http. Content-Length: 289 Content-Type: application/xml Server: Microsoft-HTTPAPI/2.0 x-ms-request-id: 0b04e79c-001e-001b-18d6-c11c66000000 Date: Wed, 01 Apr 2026 12:56:11 GMT <?xml version="1.0" encoding="utf-8"?><Error><Code>AccountRequiresHttps</Code><Message>The account being accessed does not support http. RequestId:0b04e79c-001e-001b-18d6-c11c66000000 Time:2026-04-01T12:56:12.3162000Z</Message><AccountName>storagecfitest1775043178</AccountName></Error>' ⊘ I call "{connection}" with "Close" (skipped) ⊘ "{connection.State}" is "closed" (skipped)
storagecfitest1775043178.blob.core.windows.net
object-storage
HTTP redirects to HTTPS
PASS
Only secure protocols are exposed
✓ "report" contains details of SSL Support type "protocols" for "{hostName}" on port "{portNumber}" ✓ "{report}" is an array of objects with at least the following contents
storagecfitest1775043178.blob.core.windows.net
object-storage
Only secure protocols are exposed
PASS
Verify HTTPS uses IANA-assigned port 443
✓ "{portNumber}" is "443"
storagecfitest1775043178.blob.core.windows.net
object-storage
Verify HTTPS uses IANA-assigned port 443
FAIL
Verify mTLS requires client certificate authentication
✓ "report" contains details of SSL Support type "server-defaults" for "{hostName}" on port "{portNumber}" ✗ "{report}" is an array of objects with at least the following contents - Error: expected row not found: map[finding:required id:clientAuth]
storagecfitest1775043178.blob.core.windows.net
object-storage
Verify mTLS requires client certificate authentication
FAIL
Verify objects are encrypted at rest
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ "{result}" is not an error ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "test-encryption-check={Timestamp}.txt", and "encryption test data" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob test-encryption-check=1775043464033.txt: PUT https://storagecfitest1775043178.blob.core.windows.net/ccc-test-container-1775043178/test-encryption-check=1775043464033.txt -------------------------------------------------------------------------------- RESPONSE 403: 403 This request is not authorized to perform this operation using this permission. ERROR CODE: AuthorizationPermissionMismatch -------------------------------------------------------------------------------- <?xml version="1.0" encoding="utf-8"?><Error><Code>AuthorizationPermissionMismatch</Code><Message>This request is not authorized to perform this operation using this permission. RequestId:01541a0d-c01e-0049-3bcc-c1608e000000 Time:2026-04-01T11:41:46.0954990Z</Message></Error> -------------------------------------------------------------------------------- ⊘ I refer to "{result}" as "uploadResult" (skipped) ⊘ "{uploadResult.Encryption}" is not null (skipped) ⊘ "{uploadResult.EncryptionAlgorithm}" is "AES256" (skipped) ⊘ I attach "{uploadResult}" to the test output as "Upload Result with Encryption Details" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Verify objects are encrypted at rest
PASS
MFA requirement for destructive operations cannot be tested automatically
✓ a cloud api for "{Instance}" in "api" ✓ no-op required
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
MFA requirement for destructive operations cannot be tested automatically
PASS
Verify admin actions are logged with identity and timestamp
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "{ServiceType}" ✓ I refer to "{result}" as "theService" ✓ I call "{api}" with "GetServiceAPI" using argument "logging" ✓ I refer to "{result}" as "loggingService" ✓ I call "{theService}" with "UpdateResourcePolicy" ✓ "{result}" is not an error ✓ I attach "{result}" to the test output as "Policy Update Result" ✓ we wait for a period of "10000" ms ✓ I call "{loggingService}" with "QueryAdminLogs" using arguments "{ResourceName}" and "{20}" ✓ "{result}" is not an error ✓ I refer to "{result}" as "adminLogs" ✓ I attach "{adminLogs}" to the test output as "Admin Activity Logs" ✓ "{adminLogs}" is an array of objects with at least the following contents
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Verify admin actions are logged with identity and timestamp
FAIL
Verify data read operations are logged with identity and timestamp
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "logging" ✓ I refer to "{result}" as "loggingService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "test-read-logging-object={Timestamp}.txt", and "test data for read logging verification" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob test-read-logging-object=1775043730017.txt: PUT https://storagecfitest1775043178.blob.core.windows.net/ccc-test-container-1775043178/test-read-logging-object=1775043730017.txt -------------------------------------------------------------------------------- RESPONSE 403: 403 This request is not authorized to perform this operation using this permission. ERROR CODE: AuthorizationPermissionMismatch -------------------------------------------------------------------------------- <?xml version="1.0" encoding="utf-8"?><Error><Code>AuthorizationPermissionMismatch</Code><Message>This request is not authorized to perform this operation using this permission. RequestId:015761a3-c01e-0049-6acd-c1608e000000 Time:2026-04-01T11:46:12.0519647Z</Message></Error> -------------------------------------------------------------------------------- ⊘ I refer to "{result}" as "createResult" (skipped) ⊘ I call "{storage}" with "ReadObject" using arguments "{ResourceName}" and "test-read-logging-object={Timestamp}.txt" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I refer to "{result}" as "readResult" (skipped) ⊘ I attach "{readResult}" to the test output as "Object Read Result" (skipped) ⊘ we wait for a period of "10000" ms (skipped) ⊘ I call "{loggingService}" with "QueryDataReadLogs" using arguments "{ResourceName}" and "{20}" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I refer to "{result}" as "readLogs" (skipped) ⊘ I attach "{readLogs}" to the test output as "Data Read Logs" (skipped) ⊘ "{readLogs}" is an array of objects with at least the following contents (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Verify data read operations are logged with identity and timestamp
FAIL
Service prevents data modification by user with no access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-no-write-access", "{UID}", and "none" ✓ I refer to "{result}" as "testUserNoAccess" ✓ I attach "{result}" to the test output as "no-access-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserNoAccess}", and "{false}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateObject" using arguments "{ResourceName}", "test-cn05-unauthorized-modify={Timestamp}.txt", and "unauthorized data" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "no-access-create-error.txt" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents data modification by user with no access
FAIL
Service allows data modification by user with write access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-write-access", "{UID}", and "write" ✓ I refer to "{result}" as "testUserWrite" ✓ I attach "{result}" to the test output as "write-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserWrite}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateObject" using arguments "{ResourceName}", "test-cn05-authorized-modify={Timestamp}.txt", and "authorized data" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "write-create-object-result.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service allows data modification by user with write access
FAIL
Service prevents administrative action (creating a new bucket) by user with no access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-no-admin-access", "{UID}", and "none" ✓ I refer to "{result}" as "testUserNoAccess" ✓ I attach "{result}" to the test output as "no-admin-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserNoAccess}", and "{false}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateBucket" using argument "test-cn05-unauthorized-admin-container" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "no-admin-create-bucket-error.txt" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents administrative action (creating a new bucket) by user with no access
FAIL
Service prevents administrative action (creating a new bucket) by user with read-only access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-read-only-admin", "{UID}", and "read" ✓ I refer to "{result}" as "testUserRead" ✓ I attach "{result}" to the test output as "read-only-admin-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserRead}", and "{false}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateBucket" using argument "test-cn05-read-only-create-container" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "read-only-create-bucket-error.txt" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents administrative action (creating a new bucket) by user with read-only access
FAIL
Service allows administrative action (creating a new bucket) by user with admin access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-admin-access", "{UID}", and "admin" ✓ I refer to "{result}" as "testUserAdmin" ✓ I attach "{result}" to the test output as "admin-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserAdmin}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateBucket" using argument "test-cn05-authorized-admin-container" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "admin-create-bucket-result.json" (skipped) ⊘ I call "{storage}" with "DeleteBucket" using argument "test-cn05-authorized-admin-container" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service allows administrative action (creating a new bucket) by user with admin access
PASS
Service prevents data read by user with no access - Duplicate
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ no-op required
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents data read by user with no access - Duplicate
PASS
Child resource region compliance - NotTestable
✓ a cloud api for "{Instance}" in "api" ✓ no-op required
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Child resource region compliance - NotTestable
PASS
Enumeration event publishing cannot be tested automatically - NotTestable
✓ a cloud api for "{Instance}" in "api" ✓ no-op required
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Enumeration event publishing cannot be tested automatically - NotTestable
PASS
Enumeration logging cannot be verified automatically - NotTestable
✓ a cloud api for "{Instance}" in "api" ✓ no-op required
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Enumeration logging cannot be verified automatically - NotTestable
PASS
Bucket data is replicated to physically separate locations
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "GetReplicationStatus" using argument "{ResourceName}" ✓ I refer to "{result}" as "replicationStatus" ✓ I refer to "{replicationStatus.Locations}" as "locations" ✓ I attach "{replicationStatus}" to the test output as "Replication Status" ✓ "{locations}" is an array of objects with length "2" ✓ "{PermittedRegions}" is an array of objects with at least the following contents ✓ "{PermittedRegions}" is an array of objects with at least the following contents
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Bucket data is replicated to physically separate locations
PASS
Replication status can be retrieved for monitoring
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "GetReplicationStatus" using argument "{ResourceName}" ✓ I refer to "{result}" as "replicationStatus" ✓ I attach "{replicationStatus}" to the test output as "Replication Status" ✓ I refer to "{replicationStatus.Locations}" as "locations" ✓ "{locations}" is an array of objects with at least the following contents
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Replication status can be retrieved for monitoring
PASS
Replication destination trust cannot be verified automatically - NotTestable
✓ a cloud api for "{Instance}" in "api" ✓ no-op required
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Replication destination trust cannot be verified automatically - NotTestable
FAIL
Service prevents reading bucket with no access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-no-access", "{UID}", and "none" ✓ I refer to "{result}" as "testUserNoAccess" ✓ I attach "{result}" to the test output as "no-access-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserNoAccess}", and "{false}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "ListObjects" using argument "{ResourceName}" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "no-access-list-error.txt" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents reading bucket with no access
CCC.ObjStor.CN01.AR01
FAIL
Service allows reading bucket with read access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-read", "{UID}", and "read" ✓ I refer to "{result}" as "testUserRead" ✓ I attach "{result}" to the test output as "read-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserRead}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I attach "{result}" to the test output as "read-storage-service.json" (skipped) ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "ListObjects" using argument "{ResourceName}" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "read-list-objects-result.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service allows reading bucket with read access
CCC.ObjStor.CN01.AR01
FAIL
Service prevents reading object with no access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "test-object={Timestamp}.txt", and "test content" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob test-object=1775045679389.txt: PUT https://storagecfitest1775043178.blob.core.windows.net/ccc-test-container-1775043178/test-object=1775045679389.txt -------------------------------------------------------------------------------- RESPONSE 403: 403 This request is not authorized to perform this operation using this permission. ERROR CODE: AuthorizationPermissionMismatch -------------------------------------------------------------------------------- <?xml version="1.0" encoding="utf-8"?><Error><Code>AuthorizationPermissionMismatch</Code><Message>This request is not authorized to perform this operation using this permission. RequestId:cc3c542f-e01e-0003-4ad1-c1c301000000 Time:2026-04-01T12:18:41.9538108Z</Message></Error> -------------------------------------------------------------------------------- ⊘ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-no-access", "{UID}", and "none" (skipped) ⊘ I refer to "{result}" as "testUserNoAccess" (skipped) ⊘ I attach "{result}" to the test output as "no-access-user-identity.json" (skipped) ⊘ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserNoAccess}", and "{false}" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "ReadObject" using arguments "{ResourceName}" and "test-object={Timestamp}.txt" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "no-access-read-object-error.txt" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents reading object with no access
CCC.ObjStor.CN01.AR02
FAIL
Service allows reading object with read access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "test-object={Timestamp}.txt", and "test content" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob test-object=1775045921978.txt: PUT https://storagecfitest1775043178.blob.core.windows.net/ccc-test-container-1775043178/test-object=1775045921978.txt -------------------------------------------------------------------------------- RESPONSE 403: 403 This request is not authorized to perform this operation using this permission. ERROR CODE: AuthorizationPermissionMismatch -------------------------------------------------------------------------------- <?xml version="1.0" encoding="utf-8"?><Error><Code>AuthorizationPermissionMismatch</Code><Message>This request is not authorized to perform this operation using this permission. RequestId:cc3e9db2-e01e-0003-3bd2-c1c301000000 Time:2026-04-01T12:22:44.2775685Z</Message></Error> -------------------------------------------------------------------------------- ⊘ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-read", "{UID}", and "read" (skipped) ⊘ I refer to "{result}" as "testUserRead" (skipped) ⊘ I attach "{result}" to the test output as "read-user-identity.json" (skipped) ⊘ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserRead}", and "{true}" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "read-storage-service.json" (skipped) ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "ReadObject" using arguments "{ResourceName}" and "test-object={Timestamp}.txt" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "read-read-object-result.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service allows reading object with read access
CCC.ObjStor.CN01.AR02
FAIL
Service prevents creating bucket with no access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-no-access", "{UID}", and "none" ✓ I refer to "{result}" as "testUserNoAccess" ✓ I attach "{result}" to the test output as "no-access-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserNoAccess}", and "{false}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateBucket" using argument "test-bucket-no-access" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "no-access-create-bucket-error.txt" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents creating bucket with no access
CCC.ObjStor.CN01.AR03
FAIL
Service allows creating bucket with write access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-write", "{UID}", and "write" ✓ I refer to "{result}" as "testUserWrite" ✓ I attach "{result}" to the test output as "write-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserWrite}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I attach "{result}" to the test output as "write-storage-service.json" (skipped) ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateBucket" using argument "test-bucket-write" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "write-create-bucket-result.json" (skipped) ⊘ I call "{storage}" with "DeleteBucket" using argument "{result.ID}" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service allows creating bucket with write access
CCC.ObjStor.CN01.AR03
FAIL
Service prevents writing object with read-only access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ "{result}" is not an error ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ "{result}" is not an error ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-read", "{UID}", and "read" ✓ I refer to "{result}" as "testUserRead" ✓ I attach "{result}" to the test output as "read-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserRead}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateObject" using arguments "{ResourceName}", "test-write-object={Timestamp}.txt", and "test content" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "read-create-object-error.txt" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents writing object with read-only access
CCC.ObjStor.CN01.AR04
FAIL
Service allows writing object with write access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ "{result}" is not an error ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ "{result}" is not an error ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-write", "{UID}", and "write" ✓ I refer to "{result}" as "testUserWrite" ✓ I attach "{result}" to the test output as "write-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserWrite}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I attach "{result}" to the test output as "write-storage-service.json" (skipped) ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateObject" using arguments "{ResourceName}", "test-write-object={Timestamp}.txt", and "test content" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "write-create-object-result.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service allows writing object with write access
CCC.ObjStor.CN01.AR04
FAIL
Service enforces uniform bucket-level access by rejecting object-level permissions
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "test-object={Timestamp}.txt", and "test data" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob test-object=1775047377091.txt: AzureCLICredential: ERROR: AADSTS700024: Client assertion is not within its valid time range. Current time: 2026-04-01T12:42:57.6581812Z, assertion valid from 2026-04-01T11:32:59.0000000Z, expiry time of assertion 2026-04-01T11:37:59.0000000Z. Review the documentation at https://learn.microsoft.com/entra/identity-platform/certificate-credentials . Trace ID: 3858917d-2902-4403-9d0a-677daa7c1300 Correlation ID: 1359ebd9-c203-4639-bbb1-7abc9592718c Timestamp: 2026-04-01 12:42:57Z Run the command below to authenticate interactively; additional arguments may be added as needed: az logout az login ⊘ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-read", "{UID}", and "read" (skipped) ⊘ I refer to "{result}" as "testUserRead" (skipped) ⊘ I attach "{result}" to the test output as "read-user-identity.json" (skipped) ⊘ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserRead}", and "{true}" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "ReadObject" using arguments "{ResourceName}" and "test-object={Timestamp}.txt" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I call "{storage}" with "SetObjectPermission" using arguments "{ResourceName}", "test-object={Timestamp}.txt", and "none" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "set-object-permission-error.txt" (skipped) ⊘ I call "{userStorage}" with "ReadObject" using arguments "{ResourceName}" and "test-object={Timestamp}.txt" (skipped) ⊘ "{result}" is not an error (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service enforces uniform bucket-level access by rejecting object-level permissions
CCC.ObjStor.CN02.AR01
FAIL
Service enforces uniform bucket-level access denial
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "test-object={Timestamp}.txt", and "test data" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob test-object=1775047378856.txt: AzureCLICredential: ERROR: AADSTS700024: Client assertion is not within its valid time range. Current time: 2026-04-01T12:42:59.3883069Z, assertion valid from 2026-04-01T11:32:59.0000000Z, expiry time of assertion 2026-04-01T11:37:59.0000000Z. Review the documentation at https://learn.microsoft.com/entra/identity-platform/certificate-credentials . Trace ID: 41444abc-458f-4080-8fe7-b392563a0c00 Correlation ID: 17343955-f8fa-40ef-9879-8ee3b4aecc30 Timestamp: 2026-04-01 12:42:59Z Run the command below to authenticate interactively; additional arguments may be added as needed: az logout az login ⊘ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-no-access", "{UID}", and "none" (skipped) ⊘ I refer to "{result}" as "testUserNoAccess" (skipped) ⊘ I attach "{result}" to the test output as "no-access-user-identity.json" (skipped) ⊘ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserNoAccess}", and "{false}" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "ReadObject" using arguments "{ResourceName}" and "test-object={Timestamp}.txt" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I call "{storage}" with "SetObjectPermission" using arguments "{ResourceName}", "test-object={Timestamp}.txt", and "read" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "set-object-permission-error.txt" (skipped) ⊘ I call "{userStorage}" with "ReadObject" using arguments "{ResourceName}" and "test-object={Timestamp}.txt" (skipped) ⊘ "{result}" is an error (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service enforces uniform bucket-level access denial
CCC.ObjStor.CN02.AR02
FAIL
Service supports bucket soft delete and recovery
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "CreateBucket" using argument "ccc-test-soft-delete" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to create container: failed to create container ccc-test-soft-delete: AzureCLICredential: ERROR: AADSTS700024: Client assertion is not within its valid time range. Current time: 2026-04-01T12:43:00.0975342Z, assertion valid from 2026-04-01T11:32:59.0000000Z, expiry time of assertion 2026-04-01T11:37:59.0000000Z. Review the documentation at https://learn.microsoft.com/entra/identity-platform/certificate-credentials . Trace ID: 3b49c722-650d-48c2-bbb1-e11b93120a00 Correlation ID: 464df169-4e47-46f7-8bc9-c7df20aca4f9 Timestamp: 2026-04-01 12:43:00Z Run the command below to authenticate interactively; additional arguments may be added as needed: az logout az login ⊘ I refer to "{result}" as "testBucket" (skipped) ⊘ I attach "{result}" to the test output as "created-bucket.json" (skipped) ⊘ I call "{storage}" with "DeleteBucket" using argument "ccc-test-soft-delete" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I call "{storage}" with "ListDeletedBuckets" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "deleted-buckets.json" (skipped) ? "{result}" should have length greater than "0" (undefined) ⊘ I call "{storage}" with "RestoreBucket" using argument "ccc-test-soft-delete" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I call "{storage}" with "ListBuckets" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "restored-buckets.json" (skipped) ⊘ I call "{storage}" with "DeleteBucket" using argument "ccc-test-soft-delete" (skipped) ⊘ "{result}" is not an error (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service supports bucket soft delete and recovery
CCC.ObjStor.CN03.AR01
FAIL
Service prevents modification of locked retention policy
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "GetBucketRetentionDurationDays" using argument "{ResourceName}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to get container properties: AzureCLICredential: ERROR: AADSTS700024: Client assertion is not within its valid time range. Current time: 2026-04-01T12:43:01.7128125Z, assertion valid from 2026-04-01T11:32:59.0000000Z, expiry time of assertion 2026-04-01T11:37:59.0000000Z. Review the documentation at https://learn.microsoft.com/entra/identity-platform/certificate-credentials . Trace ID: d191f517-9b87-4252-9dd1-eb9cc3970900 Correlation ID: d02bebb9-430b-4c07-8e2d-8109c94afcfb Timestamp: 2026-04-01 12:43:01Z Run the command below to authenticate interactively; additional arguments may be added as needed: az logout az login ⊘ I refer to "{result}" as "originalRetention" (skipped) ⊘ I attach "{result}" to the test output as "original-retention-days.txt" (skipped) ⊘ "{result}" should be greater than "0" (skipped) ⊘ I call "{storage}" with "SetBucketRetentionDurationDays" using arguments "{ResourceName}" and "1" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "set-retention-error.txt" (skipped) ⊘ I call "{storage}" with "GetBucketRetentionDurationDays" using argument "{ResourceName}" (skipped) ⊘ "{result}" is not an error (skipped) ? "{result}" should equal "{originalRetention}" (undefined)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents modification of locked retention policy
CCC.ObjStor.CN03.AR02
FAIL
Service applies default retention policy to newly uploaded object
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-write", "{UID}", and "write" ✓ I refer to "{result}" as "testUserWrite" ✓ I attach "{result}" to the test output as "write-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserWrite}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateObject" using arguments "{ResourceName}", "test-retention-object={Timestamp}.txt", and "protected data" (skipped) ⊘ I attach "{result}" to the test output as "uploaded-object.json" (skipped) ⊘ I call "{userStorage}" with "GetObjectRetentionDurationDays" using arguments "{ResourceName}" and "test-retention-object={Timestamp}.txt" (skipped) ⊘ "{result}" should be greater than "1" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service applies default retention policy to newly uploaded object
CCC.ObjStor.CN04.AR01
FAIL
Service enforces retention policy on newly created objects
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "immediate-delete-test={Timestamp}.txt", and "test content" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob immediate-delete-test=1775047625583.txt: AzureCLICredential: ERROR: AADSTS700024: Client assertion is not within its valid time range. Current time: 2026-04-01T12:47:05.8871394Z, assertion valid from 2026-04-01T11:32:59.0000000Z, expiry time of assertion 2026-04-01T11:37:59.0000000Z. Review the documentation at https://learn.microsoft.com/entra/identity-platform/certificate-credentials . Trace ID: 550a146d-f6f6-46d2-9c81-25bc40b31400 Correlation ID: 60f6ce1c-b476-4280-98e1-8147e334e9cb Timestamp: 2026-04-01 12:47:05Z Run the command below to authenticate interactively; additional arguments may be added as needed: az logout az login ⊘ I call "{storage}" with "DeleteObject" using arguments "{ResourceName}" and "immediate-delete-test={Timestamp}.txt" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "immediate-delete-error.txt" (skipped) ? "{result}" should contain "retention" (undefined)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service enforces retention policy on newly created objects
CCC.ObjStor.CN04.AR01
FAIL
Service validates retention period meets minimum requirements
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "retention-period-test={Timestamp}.txt", and "compliance data" ✓ I call "{storage}" with "GetObjectRetentionDurationDays" using arguments "{ResourceName}" and "retention-period-test={Timestamp}.txt" ✗ "{result}" should be greater than "1" - Error: cannot parse {result} as number: strconv.ParseFloat: parsing "failed to get blob properties: AzureCLICredential: ERROR: AADSTS700024: Client assertion is not within its valid time range. Current time: 2026-04-01T12:47:06.8390040Z, assertion valid from 2026-04-01T11:32:59.0000000Z, expiry time of assertion 2026-04-01T11:37:59.0000000Z. Review the documentation at https://learn.microsoft.com/entra/identity-platform/certificate-credentials . Trace ID: be413971-b288-4230-b8f9-e878dec90200 Correlation ID: cdddabc4-4461-4934-9e83-9dbb7012824f Timestamp: 2026-04-01 12:47:06Z\nRun the command below to authenticate interactively; additional arguments may be added as needed:\naz logout\naz login\n": invalid syntax ⊘ I attach "{result}" to the test output as "retention-period-days.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service validates retention period meets minimum requirements
CCC.ObjStor.CN04.AR01
FAIL
Service prevents object deletion by write user during retention period
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-write", "{UID}", and "write" ✓ I refer to "{result}" as "testUserWrite" ✓ I attach "{result}" to the test output as "write-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserWrite}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateObject" using arguments "{ResourceName}", "protected-object={Timestamp}.txt", and "immutable data" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "protected-object.json" (skipped) ⊘ I call "{userStorage}" with "DeleteObject" using arguments "{ResourceName}" and "protected-object={Timestamp}.txt" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "delete-protected-error.txt" (skipped) ? "{result}" should contain one of "retention, locked, immutable, protected" (undefined)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents object deletion by write user during retention period
CCC.ObjStor.CN04.AR02
FAIL
Service prevents object deletion by admin user during retention period
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "admin-protected-object={Timestamp}.txt", and "compliance data" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob admin-protected-object=1775047870175.txt: AzureCLICredential: ERROR: AADSTS700024: Client assertion is not within its valid time range. Current time: 2026-04-01T12:51:10.5202132Z, assertion valid from 2026-04-01T11:32:59.0000000Z, expiry time of assertion 2026-04-01T11:37:59.0000000Z. Review the documentation at https://learn.microsoft.com/entra/identity-platform/certificate-credentials . Trace ID: c8b0ad53-b2aa-41f1-9eaa-28edc48e1100 Correlation ID: 7a9326df-c55e-4404-ab53-d3845da3a1f7 Timestamp: 2026-04-01 12:51:10Z Run the command below to authenticate interactively; additional arguments may be added as needed: az logout az login ⊘ I call "{storage}" with "DeleteObject" using arguments "{ResourceName}" and "admin-protected-object={Timestamp}.txt" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "admin-delete-protected-error.txt" (skipped) ? "{result}" should contain "retention" (undefined)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents object deletion by admin user during retention period
CCC.ObjStor.CN04.AR02
FAIL
Service prevents object modification during retention period
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-write", "{UID}", and "write" ✓ I refer to "{result}" as "testUserWrite" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserWrite}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateObject" using arguments "{ResourceName}", "modify-test-object={Timestamp}.txt", and "original content" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "original-object.json" (skipped) ⊘ I call "{userStorage}" with "CreateObject" using arguments "{ResourceName}", "modify-test-object={Timestamp}.txt", and "modified content" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "modify-protected-error.txt" (skipped) ? "{result}" should contain one of "retention, locked, immutable, protected, exists" (undefined)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents object modification during retention period
CCC.ObjStor.CN04.AR02
FAIL
Service allows object read access during retention period
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "readable-protected-object={Timestamp}.txt", and "readable data" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob readable-protected-object=1775048113297.txt: AzureCLICredential: ERROR: AADSTS700024: Client assertion is not within its valid time range. Current time: 2026-04-01T12:55:13.9190839Z, assertion valid from 2026-04-01T11:32:59.0000000Z, expiry time of assertion 2026-04-01T11:37:59.0000000Z. Review the documentation at https://learn.microsoft.com/entra/identity-platform/certificate-credentials . Trace ID: 4b424c6c-3463-4e07-bf59-5f8f12901500 Correlation ID: c8892b37-dd92-4234-9963-a8c8ce74dfd1 Timestamp: 2026-04-01 12:55:13Z Run the command below to authenticate interactively; additional arguments may be added as needed: az logout az login ⊘ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-read", "{UID}", and "read" (skipped) ⊘ I refer to "{result}" as "testUserRead" (skipped) ⊘ I attach "{result}" to the test output as "read-user-identity.json" (skipped) ⊘ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserRead}", and "{true}" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "ReadObject" using arguments "{ResourceName}" and "readable-protected-object={Timestamp}.txt" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I refer to "{result}" as "readResult" (skipped) ⊘ I attach "{result}" to the test output as "read-protected-object.json" (skipped) ⊘ "{readResult.Name}" is "readable-protected-object={Timestamp}.txt" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service allows object read access during retention period
CCC.ObjStor.CN04.AR02
FAIL
Service enables versioning and objects receive unique version identifiers
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "IsBucketVersioningEnabled" using argument "{ResourceName}" ✓ "{result}" is true ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "versioned-object.txt", and "test content" ✓ I refer to "{result}" as "createdObject" ✗ "{createdObject.VersionID}" contains "20" - Error: expected {createdObject.VersionID} to contain '20', but got '<nil>' ⊘ I attach "{result}" to the test output as "versioned-object.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service enables versioning and objects receive unique version identifiers
CCC.ObjStor.CN05.AR01
FAIL
Modified objects receive new version identifiers
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "version-test-object={Timestamp}.txt", and "original content" ✓ I refer to "{result.VersionID}" as "version1" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "version-test-object={Timestamp}.txt", and "modified content" ✓ I refer to "{result.VersionID}" as "version2" ? "{version1}" is not equal to "{version2}" (undefined)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Modified objects receive new version identifiers
CCC.ObjStor.CN05.AR02
FAIL
Modified objects receive new version identifiers
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "version-test-object={Timestamp}.txt", and "original content" ✓ I refer to "{result.VersionID}" as "version1" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "version-test-object={Timestamp}.txt", and "modified content" ✓ I refer to "{result.VersionID}" as "version2" ✓ I call "{storage}" with "ReadObjectAtVersion" using arguments "{ResourceName}", "version-test-object={Timestamp}.txt", and "{version1}" ✓ I attach "{result}" to the test output as "original-content.json" ✗ "{result.Data}" contains "original content" - Error: expected {result.Data} to contain 'original content', but got '<nil>' ⊘ I call "{storage}" with "ReadObjectAtVersion" using arguments "{ResourceName}", "version-test-object={Timestamp}.txt", and "{version2}" (skipped) ⊘ "{result.Data}" contains "modified content" (skipped) ⊘ I attach "{result}" to the test output as "modified-content.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Modified objects receive new version identifiers
CCC.ObjStor.CN05.AR03
FAIL
Deleted object data can be reloaded from previous version
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "recover-deleted-object={Timestamp}.txt", and "data to retain" ✓ I refer to "{result.VersionID}" as "retainedVersionId" ✓ I call "{storage}" with "DeleteObject" using arguments "{ResourceName}" and "recover-deleted-object={Timestamp}.txt" ✓ I call "{storage}" with "ReadObjectAtVersion" using arguments "{ResourceName}", "recover-deleted-object={Timestamp}.txt", and "{retainedVersionId}" ✗ "{result.Data}" contains "data to retain" - Error: expected {result.Data} to contain 'data to retain', but got '<nil>' ⊘ I attach "{result}" to the test output as "recovered-deleted-version.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Deleted object data can be reloaded from previous version
CCC.ObjStor.CN05.AR04
FAIL
Deleted object version remains in version list
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "list-deleted-versions-object={Timestamp}.txt", and "versioned data" ✓ I refer to "{result.VersionID}" as "listedVersionId" ✓ I call "{storage}" with "DeleteObject" using arguments "{ResourceName}" and "list-deleted-versions-object={Timestamp}.txt" ✓ I call "{storage}" with "ListObjectVersions" using arguments "{ResourceName}" and "list-deleted-versions-object={Timestamp}.txt" ✗ "{result}" is an array of objects with at least the following contents - Error: field {result} is not an array ⊘ I attach "{result}" to the test output as "versions-after-delete.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Deleted object version remains in version list
CCC.ObjStor.CN05.AR04
PASS
Service accepts TLS 1.3 encrypted traffic
✓ a cloud api for "{Instance}" in "api" ✓ an openssl s_client request using "tls1_3" to "{portNumber}" on "{hostName}" protocol "{protocol}" ✓ I refer to "{result}" as "connection" ✓ "{connection}" state is open ✓ "{connection.State}" is "open" ✓ I close connection "{connection}" ✓ "{connection}" state is closed
storagecfitest1775043178.blob.core.windows.net
object-storage
Service accepts TLS 1.3 encrypted traffic
PASS
Service rejects TLS 1.2 traffic
✓ a cloud api for "{Instance}" in "api" ✓ an openssl s_client request using "tls1_2" to "{portNumber}" on "{hostName}" protocol "{protocol}" ✓ I refer to "{result}" as "connection" ✓ we wait for a period of "40" ms ✓ "{connection.State}" is "closed"
storagecfitest1775043178.blob.core.windows.net
object-storage
Service rejects TLS 1.2 traffic
PASS
Service rejects TLS 1.1 traffic
✓ a cloud api for "{Instance}" in "api" ✓ an openssl s_client request using "tls1_1" to "{portNumber}" on "{hostName}" protocol "{protocol}" ✓ I refer to "{result}" as "connection" ✓ we wait for a period of "40" ms ✓ "{connection.State}" is "closed"
storagecfitest1775043178.blob.core.windows.net
object-storage
Service rejects TLS 1.1 traffic
PASS
Service rejects TLS 1.0 traffic
✓ a cloud api for "{Instance}" in "api" ✓ an openssl s_client request using "tls1" to "{portNumber}" on "{hostName}" protocol "{protocol}" ✓ I refer to "{result}" as "connection" ✓ we wait for a period of "40" ms ✓ "{connection.State}" is "closed"
storagecfitest1775043178.blob.core.windows.net
object-storage
Service rejects TLS 1.0 traffic
FAIL
Verify SSL/TLS protocol support
✓ a cloud api for "{Instance}" in "api" ✓ "report" contains details of SSL Support type "protocols" for "{hostName}" on port "{portNumber}" ✗ "{report}" is an array of objects which doesn't contain any of - Error: unwanted row found in array: map[finding:offered id:TLS1_2] ⊘ "{report}" is an array of objects with at least the following contents (skipped)
storagecfitest1775043178.blob.core.windows.net
object-storage
Verify SSL/TLS protocol support
PASS
Verify no known SSL/TLS vulnerabilities
✓ a cloud api for "{Instance}" in "api" ✓ "report" contains details of SSL Support type "vulnerable" for "{hostName}" on port "{portNumber}" ✓ "{report}" is an array of objects with at least the following contents
storagecfitest1775043178.blob.core.windows.net
object-storage
Verify no known SSL/TLS vulnerabilities
PASS
Verify TLS 1.3 only certificate validity
✓ a cloud api for "{Instance}" in "api" ✓ "report" contains details of SSL Support type "server-defaults" for "{hostName}" on port "{portNumber}" ✓ "{report}" is an array of objects with at least the following contents
storagecfitest1775043178.blob.core.windows.net
object-storage
Verify TLS 1.3 only certificate validity
FAIL
HTTP redirects to HTTPS
✓ a client connects to "{hostName}" with protocol "http" on port "80" ✓ I refer to "{result}" as "connection" ✓ "{connection}" is not an error ✓ I transmit "GET / HTTP/1.1\r\nHost: {hostName}\r\n\r\n" to "{connection}" ✓ I attach "{connection}" to the test output as "HTTP response" ✗ "{connection.Output}" contains "301" - Error: expected {connection.Output} to contain '301', but got 'HTTP/1.1 400 The account being accessed does not support http. Content-Length: 289 Content-Type: application/xml Server: Microsoft-HTTPAPI/2.0 x-ms-request-id: 0b04e79c-001e-001b-18d6-c11c66000000 Date: Wed, 01 Apr 2026 12:56:11 GMT <?xml version="1.0" encoding="utf-8"?><Error><Code>AccountRequiresHttps</Code><Message>The account being accessed does not support http. RequestId:0b04e79c-001e-001b-18d6-c11c66000000 Time:2026-04-01T12:56:12.3162000Z</Message><AccountName>storagecfitest1775043178</AccountName></Error>' ⊘ I call "{connection}" with "Close" (skipped) ⊘ "{connection.State}" is "closed" (skipped)
storagecfitest1775043178.blob.core.windows.net
object-storage
HTTP redirects to HTTPS
PASS
Only secure protocols are exposed
✓ "report" contains details of SSL Support type "protocols" for "{hostName}" on port "{portNumber}" ✓ "{report}" is an array of objects with at least the following contents
storagecfitest1775043178.blob.core.windows.net
object-storage
Only secure protocols are exposed
PASS
Verify HTTPS uses IANA-assigned port 443
✓ "{portNumber}" is "443"
storagecfitest1775043178.blob.core.windows.net
object-storage
Verify HTTPS uses IANA-assigned port 443
FAIL
Verify mTLS requires client certificate authentication
✓ "report" contains details of SSL Support type "server-defaults" for "{hostName}" on port "{portNumber}" ✗ "{report}" is an array of objects with at least the following contents - Error: expected row not found: map[finding:required id:clientAuth]
storagecfitest1775043178.blob.core.windows.net
object-storage
Verify mTLS requires client certificate authentication
FAIL
Verify objects are encrypted at rest
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ "{result}" is not an error ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "test-encryption-check={Timestamp}.txt", and "encryption test data" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob test-encryption-check=1775043464033.txt: PUT https://storagecfitest1775043178.blob.core.windows.net/ccc-test-container-1775043178/test-encryption-check=1775043464033.txt -------------------------------------------------------------------------------- RESPONSE 403: 403 This request is not authorized to perform this operation using this permission. ERROR CODE: AuthorizationPermissionMismatch -------------------------------------------------------------------------------- <?xml version="1.0" encoding="utf-8"?><Error><Code>AuthorizationPermissionMismatch</Code><Message>This request is not authorized to perform this operation using this permission. RequestId:01541a0d-c01e-0049-3bcc-c1608e000000 Time:2026-04-01T11:41:46.0954990Z</Message></Error> -------------------------------------------------------------------------------- ⊘ I refer to "{result}" as "uploadResult" (skipped) ⊘ "{uploadResult.Encryption}" is not null (skipped) ⊘ "{uploadResult.EncryptionAlgorithm}" is "AES256" (skipped) ⊘ I attach "{uploadResult}" to the test output as "Upload Result with Encryption Details" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Verify objects are encrypted at rest
PASS
MFA requirement for destructive operations cannot be tested automatically
✓ a cloud api for "{Instance}" in "api" ✓ no-op required
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
MFA requirement for destructive operations cannot be tested automatically
PASS
Verify admin actions are logged with identity and timestamp
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "{ServiceType}" ✓ I refer to "{result}" as "theService" ✓ I call "{api}" with "GetServiceAPI" using argument "logging" ✓ I refer to "{result}" as "loggingService" ✓ I call "{theService}" with "UpdateResourcePolicy" ✓ "{result}" is not an error ✓ I attach "{result}" to the test output as "Policy Update Result" ✓ we wait for a period of "10000" ms ✓ I call "{loggingService}" with "QueryAdminLogs" using arguments "{ResourceName}" and "{20}" ✓ "{result}" is not an error ✓ I refer to "{result}" as "adminLogs" ✓ I attach "{adminLogs}" to the test output as "Admin Activity Logs" ✓ "{adminLogs}" is an array of objects with at least the following contents
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Verify admin actions are logged with identity and timestamp
FAIL
Verify data read operations are logged with identity and timestamp
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "logging" ✓ I refer to "{result}" as "loggingService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "test-read-logging-object={Timestamp}.txt", and "test data for read logging verification" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob test-read-logging-object=1775043730017.txt: PUT https://storagecfitest1775043178.blob.core.windows.net/ccc-test-container-1775043178/test-read-logging-object=1775043730017.txt -------------------------------------------------------------------------------- RESPONSE 403: 403 This request is not authorized to perform this operation using this permission. ERROR CODE: AuthorizationPermissionMismatch -------------------------------------------------------------------------------- <?xml version="1.0" encoding="utf-8"?><Error><Code>AuthorizationPermissionMismatch</Code><Message>This request is not authorized to perform this operation using this permission. RequestId:015761a3-c01e-0049-6acd-c1608e000000 Time:2026-04-01T11:46:12.0519647Z</Message></Error> -------------------------------------------------------------------------------- ⊘ I refer to "{result}" as "createResult" (skipped) ⊘ I call "{storage}" with "ReadObject" using arguments "{ResourceName}" and "test-read-logging-object={Timestamp}.txt" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I refer to "{result}" as "readResult" (skipped) ⊘ I attach "{readResult}" to the test output as "Object Read Result" (skipped) ⊘ we wait for a period of "10000" ms (skipped) ⊘ I call "{loggingService}" with "QueryDataReadLogs" using arguments "{ResourceName}" and "{20}" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I refer to "{result}" as "readLogs" (skipped) ⊘ I attach "{readLogs}" to the test output as "Data Read Logs" (skipped) ⊘ "{readLogs}" is an array of objects with at least the following contents (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Verify data read operations are logged with identity and timestamp
FAIL
Service prevents data modification by user with no access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-no-write-access", "{UID}", and "none" ✓ I refer to "{result}" as "testUserNoAccess" ✓ I attach "{result}" to the test output as "no-access-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserNoAccess}", and "{false}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateObject" using arguments "{ResourceName}", "test-cn05-unauthorized-modify={Timestamp}.txt", and "unauthorized data" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "no-access-create-error.txt" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents data modification by user with no access
FAIL
Service allows data modification by user with write access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-write-access", "{UID}", and "write" ✓ I refer to "{result}" as "testUserWrite" ✓ I attach "{result}" to the test output as "write-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserWrite}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateObject" using arguments "{ResourceName}", "test-cn05-authorized-modify={Timestamp}.txt", and "authorized data" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "write-create-object-result.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service allows data modification by user with write access
FAIL
Service prevents administrative action (creating a new bucket) by user with no access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-no-admin-access", "{UID}", and "none" ✓ I refer to "{result}" as "testUserNoAccess" ✓ I attach "{result}" to the test output as "no-admin-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserNoAccess}", and "{false}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateBucket" using argument "test-cn05-unauthorized-admin-container" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "no-admin-create-bucket-error.txt" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents administrative action (creating a new bucket) by user with no access
FAIL
Service prevents administrative action (creating a new bucket) by user with read-only access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-read-only-admin", "{UID}", and "read" ✓ I refer to "{result}" as "testUserRead" ✓ I attach "{result}" to the test output as "read-only-admin-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserRead}", and "{false}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateBucket" using argument "test-cn05-read-only-create-container" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "read-only-create-bucket-error.txt" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents administrative action (creating a new bucket) by user with read-only access
FAIL
Service allows administrative action (creating a new bucket) by user with admin access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-admin-access", "{UID}", and "admin" ✓ I refer to "{result}" as "testUserAdmin" ✓ I attach "{result}" to the test output as "admin-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserAdmin}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateBucket" using argument "test-cn05-authorized-admin-container" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "admin-create-bucket-result.json" (skipped) ⊘ I call "{storage}" with "DeleteBucket" using argument "test-cn05-authorized-admin-container" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service allows administrative action (creating a new bucket) by user with admin access
PASS
Service prevents data read by user with no access - Duplicate
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ no-op required
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents data read by user with no access - Duplicate
PASS
Child resource region compliance - NotTestable
✓ a cloud api for "{Instance}" in "api" ✓ no-op required
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Child resource region compliance - NotTestable
PASS
Enumeration event publishing cannot be tested automatically - NotTestable
✓ a cloud api for "{Instance}" in "api" ✓ no-op required
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Enumeration event publishing cannot be tested automatically - NotTestable
PASS
Enumeration logging cannot be verified automatically - NotTestable
✓ a cloud api for "{Instance}" in "api" ✓ no-op required
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Enumeration logging cannot be verified automatically - NotTestable
PASS
Bucket data is replicated to physically separate locations
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "GetReplicationStatus" using argument "{ResourceName}" ✓ I refer to "{result}" as "replicationStatus" ✓ I refer to "{replicationStatus.Locations}" as "locations" ✓ I attach "{replicationStatus}" to the test output as "Replication Status" ✓ "{locations}" is an array of objects with length "2" ✓ "{PermittedRegions}" is an array of objects with at least the following contents ✓ "{PermittedRegions}" is an array of objects with at least the following contents
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Bucket data is replicated to physically separate locations
PASS
Replication status can be retrieved for monitoring
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "GetReplicationStatus" using argument "{ResourceName}" ✓ I refer to "{result}" as "replicationStatus" ✓ I attach "{replicationStatus}" to the test output as "Replication Status" ✓ I refer to "{replicationStatus.Locations}" as "locations" ✓ "{locations}" is an array of objects with at least the following contents
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Replication status can be retrieved for monitoring
PASS
Replication destination trust cannot be verified automatically - NotTestable
✓ a cloud api for "{Instance}" in "api" ✓ no-op required
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Replication destination trust cannot be verified automatically - NotTestable
FAIL
Service prevents reading bucket with no access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-no-access", "{UID}", and "none" ✓ I refer to "{result}" as "testUserNoAccess" ✓ I attach "{result}" to the test output as "no-access-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserNoAccess}", and "{false}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "ListObjects" using argument "{ResourceName}" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "no-access-list-error.txt" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents reading bucket with no access
CCC.ObjStor.CN01.AR01
FAIL
Service allows reading bucket with read access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-read", "{UID}", and "read" ✓ I refer to "{result}" as "testUserRead" ✓ I attach "{result}" to the test output as "read-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserRead}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I attach "{result}" to the test output as "read-storage-service.json" (skipped) ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "ListObjects" using argument "{ResourceName}" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "read-list-objects-result.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service allows reading bucket with read access
CCC.ObjStor.CN01.AR01
FAIL
Service prevents reading object with no access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "test-object={Timestamp}.txt", and "test content" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob test-object=1775045679389.txt: PUT https://storagecfitest1775043178.blob.core.windows.net/ccc-test-container-1775043178/test-object=1775045679389.txt -------------------------------------------------------------------------------- RESPONSE 403: 403 This request is not authorized to perform this operation using this permission. ERROR CODE: AuthorizationPermissionMismatch -------------------------------------------------------------------------------- <?xml version="1.0" encoding="utf-8"?><Error><Code>AuthorizationPermissionMismatch</Code><Message>This request is not authorized to perform this operation using this permission. RequestId:cc3c542f-e01e-0003-4ad1-c1c301000000 Time:2026-04-01T12:18:41.9538108Z</Message></Error> -------------------------------------------------------------------------------- ⊘ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-no-access", "{UID}", and "none" (skipped) ⊘ I refer to "{result}" as "testUserNoAccess" (skipped) ⊘ I attach "{result}" to the test output as "no-access-user-identity.json" (skipped) ⊘ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserNoAccess}", and "{false}" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "ReadObject" using arguments "{ResourceName}" and "test-object={Timestamp}.txt" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "no-access-read-object-error.txt" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents reading object with no access
CCC.ObjStor.CN01.AR02
FAIL
Service allows reading object with read access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "test-object={Timestamp}.txt", and "test content" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob test-object=1775045921978.txt: PUT https://storagecfitest1775043178.blob.core.windows.net/ccc-test-container-1775043178/test-object=1775045921978.txt -------------------------------------------------------------------------------- RESPONSE 403: 403 This request is not authorized to perform this operation using this permission. ERROR CODE: AuthorizationPermissionMismatch -------------------------------------------------------------------------------- <?xml version="1.0" encoding="utf-8"?><Error><Code>AuthorizationPermissionMismatch</Code><Message>This request is not authorized to perform this operation using this permission. RequestId:cc3e9db2-e01e-0003-3bd2-c1c301000000 Time:2026-04-01T12:22:44.2775685Z</Message></Error> -------------------------------------------------------------------------------- ⊘ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-read", "{UID}", and "read" (skipped) ⊘ I refer to "{result}" as "testUserRead" (skipped) ⊘ I attach "{result}" to the test output as "read-user-identity.json" (skipped) ⊘ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserRead}", and "{true}" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "read-storage-service.json" (skipped) ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "ReadObject" using arguments "{ResourceName}" and "test-object={Timestamp}.txt" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "read-read-object-result.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service allows reading object with read access
CCC.ObjStor.CN01.AR02
FAIL
Service prevents creating bucket with no access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-no-access", "{UID}", and "none" ✓ I refer to "{result}" as "testUserNoAccess" ✓ I attach "{result}" to the test output as "no-access-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserNoAccess}", and "{false}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateBucket" using argument "test-bucket-no-access" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "no-access-create-bucket-error.txt" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents creating bucket with no access
CCC.ObjStor.CN01.AR03
FAIL
Service allows creating bucket with write access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-write", "{UID}", and "write" ✓ I refer to "{result}" as "testUserWrite" ✓ I attach "{result}" to the test output as "write-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserWrite}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I attach "{result}" to the test output as "write-storage-service.json" (skipped) ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateBucket" using argument "test-bucket-write" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "write-create-bucket-result.json" (skipped) ⊘ I call "{storage}" with "DeleteBucket" using argument "{result.ID}" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service allows creating bucket with write access
CCC.ObjStor.CN01.AR03
FAIL
Service prevents writing object with read-only access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ "{result}" is not an error ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ "{result}" is not an error ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-read", "{UID}", and "read" ✓ I refer to "{result}" as "testUserRead" ✓ I attach "{result}" to the test output as "read-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserRead}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateObject" using arguments "{ResourceName}", "test-write-object={Timestamp}.txt", and "test content" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "read-create-object-error.txt" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents writing object with read-only access
CCC.ObjStor.CN01.AR04
FAIL
Service allows writing object with write access
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ "{result}" is not an error ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ "{result}" is not an error ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-write", "{UID}", and "write" ✓ I refer to "{result}" as "testUserWrite" ✓ I attach "{result}" to the test output as "write-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserWrite}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I attach "{result}" to the test output as "write-storage-service.json" (skipped) ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateObject" using arguments "{ResourceName}", "test-write-object={Timestamp}.txt", and "test content" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "write-create-object-result.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service allows writing object with write access
CCC.ObjStor.CN01.AR04
FAIL
Service enforces uniform bucket-level access by rejecting object-level permissions
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "test-object={Timestamp}.txt", and "test data" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob test-object=1775047377091.txt: AzureCLICredential: ERROR: AADSTS700024: Client assertion is not within its valid time range. Current time: 2026-04-01T12:42:57.6581812Z, assertion valid from 2026-04-01T11:32:59.0000000Z, expiry time of assertion 2026-04-01T11:37:59.0000000Z. Review the documentation at https://learn.microsoft.com/entra/identity-platform/certificate-credentials . Trace ID: 3858917d-2902-4403-9d0a-677daa7c1300 Correlation ID: 1359ebd9-c203-4639-bbb1-7abc9592718c Timestamp: 2026-04-01 12:42:57Z Run the command below to authenticate interactively; additional arguments may be added as needed: az logout az login ⊘ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-read", "{UID}", and "read" (skipped) ⊘ I refer to "{result}" as "testUserRead" (skipped) ⊘ I attach "{result}" to the test output as "read-user-identity.json" (skipped) ⊘ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserRead}", and "{true}" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "ReadObject" using arguments "{ResourceName}" and "test-object={Timestamp}.txt" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I call "{storage}" with "SetObjectPermission" using arguments "{ResourceName}", "test-object={Timestamp}.txt", and "none" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "set-object-permission-error.txt" (skipped) ⊘ I call "{userStorage}" with "ReadObject" using arguments "{ResourceName}" and "test-object={Timestamp}.txt" (skipped) ⊘ "{result}" is not an error (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service enforces uniform bucket-level access by rejecting object-level permissions
CCC.ObjStor.CN02.AR01
FAIL
Service enforces uniform bucket-level access denial
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "test-object={Timestamp}.txt", and "test data" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob test-object=1775047378856.txt: AzureCLICredential: ERROR: AADSTS700024: Client assertion is not within its valid time range. Current time: 2026-04-01T12:42:59.3883069Z, assertion valid from 2026-04-01T11:32:59.0000000Z, expiry time of assertion 2026-04-01T11:37:59.0000000Z. Review the documentation at https://learn.microsoft.com/entra/identity-platform/certificate-credentials . Trace ID: 41444abc-458f-4080-8fe7-b392563a0c00 Correlation ID: 17343955-f8fa-40ef-9879-8ee3b4aecc30 Timestamp: 2026-04-01 12:42:59Z Run the command below to authenticate interactively; additional arguments may be added as needed: az logout az login ⊘ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-no-access", "{UID}", and "none" (skipped) ⊘ I refer to "{result}" as "testUserNoAccess" (skipped) ⊘ I attach "{result}" to the test output as "no-access-user-identity.json" (skipped) ⊘ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserNoAccess}", and "{false}" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "ReadObject" using arguments "{ResourceName}" and "test-object={Timestamp}.txt" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I call "{storage}" with "SetObjectPermission" using arguments "{ResourceName}", "test-object={Timestamp}.txt", and "read" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "set-object-permission-error.txt" (skipped) ⊘ I call "{userStorage}" with "ReadObject" using arguments "{ResourceName}" and "test-object={Timestamp}.txt" (skipped) ⊘ "{result}" is an error (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service enforces uniform bucket-level access denial
CCC.ObjStor.CN02.AR02
FAIL
Service supports bucket soft delete and recovery
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "CreateBucket" using argument "ccc-test-soft-delete" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to create container: failed to create container ccc-test-soft-delete: AzureCLICredential: ERROR: AADSTS700024: Client assertion is not within its valid time range. Current time: 2026-04-01T12:43:00.0975342Z, assertion valid from 2026-04-01T11:32:59.0000000Z, expiry time of assertion 2026-04-01T11:37:59.0000000Z. Review the documentation at https://learn.microsoft.com/entra/identity-platform/certificate-credentials . Trace ID: 3b49c722-650d-48c2-bbb1-e11b93120a00 Correlation ID: 464df169-4e47-46f7-8bc9-c7df20aca4f9 Timestamp: 2026-04-01 12:43:00Z Run the command below to authenticate interactively; additional arguments may be added as needed: az logout az login ⊘ I refer to "{result}" as "testBucket" (skipped) ⊘ I attach "{result}" to the test output as "created-bucket.json" (skipped) ⊘ I call "{storage}" with "DeleteBucket" using argument "ccc-test-soft-delete" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I call "{storage}" with "ListDeletedBuckets" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "deleted-buckets.json" (skipped) ? "{result}" should have length greater than "0" (undefined) ⊘ I call "{storage}" with "RestoreBucket" using argument "ccc-test-soft-delete" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I call "{storage}" with "ListBuckets" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "restored-buckets.json" (skipped) ⊘ I call "{storage}" with "DeleteBucket" using argument "ccc-test-soft-delete" (skipped) ⊘ "{result}" is not an error (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service supports bucket soft delete and recovery
CCC.ObjStor.CN03.AR01
FAIL
Service prevents modification of locked retention policy
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "GetBucketRetentionDurationDays" using argument "{ResourceName}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to get container properties: AzureCLICredential: ERROR: AADSTS700024: Client assertion is not within its valid time range. Current time: 2026-04-01T12:43:01.7128125Z, assertion valid from 2026-04-01T11:32:59.0000000Z, expiry time of assertion 2026-04-01T11:37:59.0000000Z. Review the documentation at https://learn.microsoft.com/entra/identity-platform/certificate-credentials . Trace ID: d191f517-9b87-4252-9dd1-eb9cc3970900 Correlation ID: d02bebb9-430b-4c07-8e2d-8109c94afcfb Timestamp: 2026-04-01 12:43:01Z Run the command below to authenticate interactively; additional arguments may be added as needed: az logout az login ⊘ I refer to "{result}" as "originalRetention" (skipped) ⊘ I attach "{result}" to the test output as "original-retention-days.txt" (skipped) ⊘ "{result}" should be greater than "0" (skipped) ⊘ I call "{storage}" with "SetBucketRetentionDurationDays" using arguments "{ResourceName}" and "1" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "set-retention-error.txt" (skipped) ⊘ I call "{storage}" with "GetBucketRetentionDurationDays" using argument "{ResourceName}" (skipped) ⊘ "{result}" is not an error (skipped) ? "{result}" should equal "{originalRetention}" (undefined)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents modification of locked retention policy
CCC.ObjStor.CN03.AR02
FAIL
Service applies default retention policy to newly uploaded object
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-write", "{UID}", and "write" ✓ I refer to "{result}" as "testUserWrite" ✓ I attach "{result}" to the test output as "write-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserWrite}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateObject" using arguments "{ResourceName}", "test-retention-object={Timestamp}.txt", and "protected data" (skipped) ⊘ I attach "{result}" to the test output as "uploaded-object.json" (skipped) ⊘ I call "{userStorage}" with "GetObjectRetentionDurationDays" using arguments "{ResourceName}" and "test-retention-object={Timestamp}.txt" (skipped) ⊘ "{result}" should be greater than "1" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service applies default retention policy to newly uploaded object
CCC.ObjStor.CN04.AR01
FAIL
Service enforces retention policy on newly created objects
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "immediate-delete-test={Timestamp}.txt", and "test content" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob immediate-delete-test=1775047625583.txt: AzureCLICredential: ERROR: AADSTS700024: Client assertion is not within its valid time range. Current time: 2026-04-01T12:47:05.8871394Z, assertion valid from 2026-04-01T11:32:59.0000000Z, expiry time of assertion 2026-04-01T11:37:59.0000000Z. Review the documentation at https://learn.microsoft.com/entra/identity-platform/certificate-credentials . Trace ID: 550a146d-f6f6-46d2-9c81-25bc40b31400 Correlation ID: 60f6ce1c-b476-4280-98e1-8147e334e9cb Timestamp: 2026-04-01 12:47:05Z Run the command below to authenticate interactively; additional arguments may be added as needed: az logout az login ⊘ I call "{storage}" with "DeleteObject" using arguments "{ResourceName}" and "immediate-delete-test={Timestamp}.txt" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "immediate-delete-error.txt" (skipped) ? "{result}" should contain "retention" (undefined)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service enforces retention policy on newly created objects
CCC.ObjStor.CN04.AR01
FAIL
Service validates retention period meets minimum requirements
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "retention-period-test={Timestamp}.txt", and "compliance data" ✓ I call "{storage}" with "GetObjectRetentionDurationDays" using arguments "{ResourceName}" and "retention-period-test={Timestamp}.txt" ✗ "{result}" should be greater than "1" - Error: cannot parse {result} as number: strconv.ParseFloat: parsing "failed to get blob properties: AzureCLICredential: ERROR: AADSTS700024: Client assertion is not within its valid time range. Current time: 2026-04-01T12:47:06.8390040Z, assertion valid from 2026-04-01T11:32:59.0000000Z, expiry time of assertion 2026-04-01T11:37:59.0000000Z. Review the documentation at https://learn.microsoft.com/entra/identity-platform/certificate-credentials . Trace ID: be413971-b288-4230-b8f9-e878dec90200 Correlation ID: cdddabc4-4461-4934-9e83-9dbb7012824f Timestamp: 2026-04-01 12:47:06Z\nRun the command below to authenticate interactively; additional arguments may be added as needed:\naz logout\naz login\n": invalid syntax ⊘ I attach "{result}" to the test output as "retention-period-days.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service validates retention period meets minimum requirements
CCC.ObjStor.CN04.AR01
FAIL
Service prevents object deletion by write user during retention period
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-write", "{UID}", and "write" ✓ I refer to "{result}" as "testUserWrite" ✓ I attach "{result}" to the test output as "write-user-identity.json" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserWrite}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateObject" using arguments "{ResourceName}", "protected-object={Timestamp}.txt", and "immutable data" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "protected-object.json" (skipped) ⊘ I call "{userStorage}" with "DeleteObject" using arguments "{ResourceName}" and "protected-object={Timestamp}.txt" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "delete-protected-error.txt" (skipped) ? "{result}" should contain one of "retention, locked, immutable, protected" (undefined)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents object deletion by write user during retention period
CCC.ObjStor.CN04.AR02
FAIL
Service prevents object deletion by admin user during retention period
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "admin-protected-object={Timestamp}.txt", and "compliance data" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob admin-protected-object=1775047870175.txt: AzureCLICredential: ERROR: AADSTS700024: Client assertion is not within its valid time range. Current time: 2026-04-01T12:51:10.5202132Z, assertion valid from 2026-04-01T11:32:59.0000000Z, expiry time of assertion 2026-04-01T11:37:59.0000000Z. Review the documentation at https://learn.microsoft.com/entra/identity-platform/certificate-credentials . Trace ID: c8b0ad53-b2aa-41f1-9eaa-28edc48e1100 Correlation ID: 7a9326df-c55e-4404-ab53-d3845da3a1f7 Timestamp: 2026-04-01 12:51:10Z Run the command below to authenticate interactively; additional arguments may be added as needed: az logout az login ⊘ I call "{storage}" with "DeleteObject" using arguments "{ResourceName}" and "admin-protected-object={Timestamp}.txt" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "admin-delete-protected-error.txt" (skipped) ? "{result}" should contain "retention" (undefined)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents object deletion by admin user during retention period
CCC.ObjStor.CN04.AR02
FAIL
Service prevents object modification during retention period
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-write", "{UID}", and "write" ✓ I refer to "{result}" as "testUserWrite" ✓ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserWrite}", and "{true}" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: Error calling {api}.GetServiceAPIWithIdentity: reflect: Call using *fmt.wrapError as type *iam.Identity ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "CreateObject" using arguments "{ResourceName}", "modify-test-object={Timestamp}.txt", and "original content" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I attach "{result}" to the test output as "original-object.json" (skipped) ⊘ I call "{userStorage}" with "CreateObject" using arguments "{ResourceName}", "modify-test-object={Timestamp}.txt", and "modified content" (skipped) ⊘ "{result}" is an error (skipped) ⊘ I attach "{result}" to the test output as "modify-protected-error.txt" (skipped) ? "{result}" should contain one of "retention, locked, immutable, protected, exists" (undefined)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service prevents object modification during retention period
CCC.ObjStor.CN04.AR02
FAIL
Service allows object read access during retention period
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{api}" with "GetServiceAPI" using argument "iam" ✓ I refer to "{result}" as "iamService" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "readable-protected-object={Timestamp}.txt", and "readable data" ✗ "{result}" is not an error - Error: expected {result} to not be an error, but got: failed to upload blob readable-protected-object=1775048113297.txt: AzureCLICredential: ERROR: AADSTS700024: Client assertion is not within its valid time range. Current time: 2026-04-01T12:55:13.9190839Z, assertion valid from 2026-04-01T11:32:59.0000000Z, expiry time of assertion 2026-04-01T11:37:59.0000000Z. Review the documentation at https://learn.microsoft.com/entra/identity-platform/certificate-credentials . Trace ID: 4b424c6c-3463-4e07-bf59-5f8f12901500 Correlation ID: c8892b37-dd92-4234-9963-a8c8ce74dfd1 Timestamp: 2026-04-01 12:55:13Z Run the command below to authenticate interactively; additional arguments may be added as needed: az logout az login ⊘ I call "{iamService}" with "ProvisionUserWithAccess" using arguments "test-user-read", "{UID}", and "read" (skipped) ⊘ I refer to "{result}" as "testUserRead" (skipped) ⊘ I attach "{result}" to the test output as "read-user-identity.json" (skipped) ⊘ I call "{api}" with "GetServiceAPIWithIdentity" using arguments "object-storage", "{testUserRead}", and "{true}" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I refer to "{result}" as "userStorage" (skipped) ⊘ I call "{userStorage}" with "ReadObject" using arguments "{ResourceName}" and "readable-protected-object={Timestamp}.txt" (skipped) ⊘ "{result}" is not an error (skipped) ⊘ I refer to "{result}" as "readResult" (skipped) ⊘ I attach "{result}" to the test output as "read-protected-object.json" (skipped) ⊘ "{readResult.Name}" is "readable-protected-object={Timestamp}.txt" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service allows object read access during retention period
CCC.ObjStor.CN04.AR02
FAIL
Service enables versioning and objects receive unique version identifiers
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "IsBucketVersioningEnabled" using argument "{ResourceName}" ✓ "{result}" is true ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "versioned-object.txt", and "test content" ✓ I refer to "{result}" as "createdObject" ✗ "{createdObject.VersionID}" contains "20" - Error: expected {createdObject.VersionID} to contain '20', but got '<nil>' ⊘ I attach "{result}" to the test output as "versioned-object.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Service enables versioning and objects receive unique version identifiers
CCC.ObjStor.CN05.AR01
FAIL
Modified objects receive new version identifiers
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "version-test-object={Timestamp}.txt", and "original content" ✓ I refer to "{result.VersionID}" as "version1" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "version-test-object={Timestamp}.txt", and "modified content" ✓ I refer to "{result.VersionID}" as "version2" ? "{version1}" is not equal to "{version2}" (undefined)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Modified objects receive new version identifiers
CCC.ObjStor.CN05.AR02
FAIL
Modified objects receive new version identifiers
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "version-test-object={Timestamp}.txt", and "original content" ✓ I refer to "{result.VersionID}" as "version1" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "version-test-object={Timestamp}.txt", and "modified content" ✓ I refer to "{result.VersionID}" as "version2" ✓ I call "{storage}" with "ReadObjectAtVersion" using arguments "{ResourceName}", "version-test-object={Timestamp}.txt", and "{version1}" ✓ I attach "{result}" to the test output as "original-content.json" ✗ "{result.Data}" contains "original content" - Error: expected {result.Data} to contain 'original content', but got '<nil>' ⊘ I call "{storage}" with "ReadObjectAtVersion" using arguments "{ResourceName}", "version-test-object={Timestamp}.txt", and "{version2}" (skipped) ⊘ "{result.Data}" contains "modified content" (skipped) ⊘ I attach "{result}" to the test output as "modified-content.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Modified objects receive new version identifiers
CCC.ObjStor.CN05.AR03
FAIL
Deleted object data can be reloaded from previous version
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "recover-deleted-object={Timestamp}.txt", and "data to retain" ✓ I refer to "{result.VersionID}" as "retainedVersionId" ✓ I call "{storage}" with "DeleteObject" using arguments "{ResourceName}" and "recover-deleted-object={Timestamp}.txt" ✓ I call "{storage}" with "ReadObjectAtVersion" using arguments "{ResourceName}", "recover-deleted-object={Timestamp}.txt", and "{retainedVersionId}" ✗ "{result.Data}" contains "data to retain" - Error: expected {result.Data} to contain 'data to retain', but got '<nil>' ⊘ I attach "{result}" to the test output as "recovered-deleted-version.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Deleted object data can be reloaded from previous version
CCC.ObjStor.CN05.AR04
FAIL
Deleted object version remains in version list
✓ a cloud api for "{Instance}" in "api" ✓ I call "{api}" with "GetServiceAPI" using argument "object-storage" ✓ I refer to "{result}" as "storage" ✓ I call "{storage}" with "CreateObject" using arguments "{ResourceName}", "list-deleted-versions-object={Timestamp}.txt", and "versioned data" ✓ I refer to "{result.VersionID}" as "listedVersionId" ✓ I call "{storage}" with "DeleteObject" using arguments "{ResourceName}" and "list-deleted-versions-object={Timestamp}.txt" ✓ I call "{storage}" with "ListObjectVersions" using arguments "{ResourceName}" and "list-deleted-versions-object={Timestamp}.txt" ✗ "{result}" is an array of objects with at least the following contents - Error: field {result} is not an array ⊘ I attach "{result}" to the test output as "versions-after-delete.json" (skipped)
/subscriptions/c1cedd8e-bf91-4d7d-a4cc-45700402a2a1/resourceGroups/cfi_test_1775043178/providers/Microsoft.Storage/storageAccounts/storagecfitest1775043178
object-storage
Deleted object version remains in version list
CCC.ObjStor.CN05.AR04