Server-Side Encryption with Customer-Provided Keys (SSE-C)
Rabata offers you the freedom to bring your own encryption keys when storing data. By including specific optional API headers in your requests, you can hand over your own 256-bit AES key. This key will be used by Rabata’s Object Storage to encrypt your files during upload and decrypt them on download. It’s like giving your data a secret handshake that only you and Rabata understand.
To activate this level of security, you need to provide three crucial headers along with your encryption key information. These headers make sure Rabata knows exactly how to handle your data with the keys you supply.
| x-amz-server-side-encryption-customer-algorithm | Tells Rabata to use AES256 as the encryption method. | GetObject HeadObject PutObject InitiateMultipartUpload UploadPart |
| x-amz-server-side-encryption-customer-key | Contains your 256-bit AES key encoded in base64, which Rabata uses for encrypting or decrypting the data. | |
| x-amz-server-side-encryption-customer-key-md5 | A base64-encoded MD5 hash of your encryption key, ensuring Rabata can verify your key’s integrity. |
These headers are essential for operations like uploading new files, retrieving data, or handling multipart uploads. The supported API calls where you’ll use them include GetObject, HeadObject, PutObject, InitiateMultipartUpload, and UploadPart. It’s no rocket science, just a clear, secure handshake between you and Rabata for every file transaction.
When you copy encrypted objects inside Rabata’s Object Storage, there’s a little more choreography involved. Since copying encrypted data requires decrypting the original first, Rabata expects a slightly different set of headers.
Just like before, these headers specify the encryption algorithm, your secret key, and a verification hash, but this time they relate to the source object you’re copying. This way, Rabata can unlock the original data, then safely write the copy while respecting your encryption.
| x-amz-copy-source-server-side-encryption-customer-algorithm | Declares AES256 as the algorithm to decrypt the source object. | PutObject UploadPart |
| x-amz-copy-source-server-side-encryption-customer-key | Supplies the same base64-encoded 256-bit AES key to decrypt the source data. | |
| x-amz-copy-source-server-side-encryption-customer-key-md5 | Ensures key integrity with a base64-encoded 128-bit MD5 hash of the decryption key. |
These headers come into play during PutObject and UploadPart-both of which might carry encrypted payloads being copied from elsewhere in Object Storage. Rabata’s system uses them to decrypt, verify, and transfer your encrypted treasures securely and seamlessly.
Cloud Storage Access Credentials
To unlock the full potential of Rabata's secure cloud storage, you need the right credentials at hand. These credentials act like your VIP pass, ensuring safe and smooth communication with the storage services, whether you're plugging into a generic S3-compatible provider or Amazon's AWS itself.
Every cloud connection starts with a set of keys and identifiers - a combination of access key ID, secret access key, region, endpoint, bucket name, and optionally, a session token. Think of these as the secret handshake that lets Rabata understand exactly where and how to store your precious data securely.
| Key | Environment Variable (S3 Compatible) |
| accessKeyId | S3_ACCESS_KEY_ID |
| secretAccessKey | S3_SECRET_ACCESS_KEY |
| region | S3_REGION |
| endpoint | S3_ENDPOINT |
| bucket | S3_BUCKET |
| sessionToken | S3_SESSION_TOKEN |
For those who prefer the tried-and-true AWS cloud, Rabata uses a similar credential setup. The environment variables differ just in their prefixes but the principle remains the same: clear identification, airtight security, and pinpoint targeting of storage buckets.
| Key | Environment Variable (AWS) |
| accessKeyId | AWS_ACCESS_KEY_ID |
| secretAccessKey | AWS_SECRET_ACCESS_KEY |
| region | AWS_REGION |
| endpoint | AWS_ENDPOINT |
| bucket | AWS_BUCKET |
| sessionToken | AWS_SESSION_TOKEN |
Rabata's seamless compatibility with both generic S3 storage and AWS means you get to pick your cloud chessboard without worrying about changing your moves. Just feed in the right credentials, and Rabata handles the rest like a pro concierge.
S3Client Objects: The Key to Your Storage Kingdom
Behind the scenes, Rabata uses S3Client objects to manage your data interaction with cloud storage. These objects are like your personal cloud butlers, taking commands to write, check existence, and delete files in your secured buckets. They handle the nitty-gritty, so you can focus on what really matters - your data.
Writing with S3Client.prototype.write
When it's time to save files, the S3Client.prototype.write method steps up. This trusty function ensures files are uploaded safely and efficiently to the correct bucket. Rabata makes sure your data arrives intact, verified, and ready for instant retrieval whenever you need it.
Deleting with S3Client.prototype.delete
Got files that have overstayed their welcome? The S3Client.prototype.delete method cleans house. It's like a digital janitor, sweeping away outdated or unwanted data to keep your storage tidy and cost-effective. In Rabata’s world, deleting is secure, quick, and hassle-free.
Checking file presence with S3Client.prototype.exists
Before you try to grab a file, it’s smart to check if it’s even there. That’s what S3Client.prototype.exists does best. It gives you a quick yes or no, so Rabata can avoid awkward moments or errors. This little helper keeps your storage interactions smooth and error-proof.

How to Copy an Object in Rabata Secure Cloud Storage
Copying an object in Rabata's protected cloud storage is as straightforward as copying a file on your desktop, but with much more control and security. When you trigger this operation, you're essentially creating a duplicate of any object stored in your buckets without breaking a sweat.
Authorization Essentials
Not just anyone can start duplicating objects willy-nilly. To use Rabata’s copy operation, you need to have the right IAM roles assigned to you. This ensures that only authorized users can perform the copy action. Wondering if you have access? Simply navigate to Users > User > Access in your Rabata dashboard to verify your permissions.
- cloud-object-storage.object.copy
- cloud-object-storage.object.copy_get
These permissions unlock the power to duplicate objects securely and efficiently.
Auditing and Tracking Copy Operations
Transparency is key in Rabata. Every time you copy an object, the system logs two critical events: one when the object is read and another when the new copy is created. This way, you get a full audit trail showing who did what and when.
- cloud-object-storage.object-copy.read
- cloud-object-storage.object-copy.create
These audit events make sure no sneaky copies go unnoticed, keeping your data security tight and accountable.
Parameters You Can Use When Copying
Rabata offers a rich set of options to customize your copy operation. Whether you're tweaking caching behavior or handling encryption, every detail is in your hands.
- x-amz-copy-source (Required) - This tells Rabata exactly which object to copy. The value must follow the pattern /bucket/key.
- x-amz-acl - Choose the access level for your new object. Options include 'private' and 'public-read'. Want to keep it top secret or share with the world? You decide.
- Cache-Control - Dictate how your object caches across requests and responses.
- Content-Disposition - Control how the object presents itself when downloaded or viewed.
- Content-Encoding - Specify any encoding applied so Rabata knows how to decode properly.
- Content-Language - Declare the language used within the content for smarter handling.
- Content-Type - Tell Rabata the format of the object, such as 'application/json' or 'image/png'.
- x-amz-copy-source-if-match - Copy the object only if the source’s ETag matches your specified tag. Great for avoiding overwrites if the source changed.
- x-amz-copy-source-if-modified-since - Only copy if the source has changed since a date you specify.
- x-amz-copy-source-if-none-match - Copy if the source’s ETag differs from your value, avoiding duplicates.
- x-amz-copy-source-if-unmodified-since - Copy only if the source has remained steady since the given date.
- Expires - Specify when the copied object should stop being cacheable, keeping your caches fresh.
- x-amz-metadata-directive - Decide whether to COPY metadata from the source or REPLACE it with new metadata you provide. Choices are COPY or REPLACE.
- x-amz-tagging-directive - Similar choice for tags: COPY existing tags or REPLACE them.
- x-amz-server-side-encryption - Set server-side encryption using AES256 to keep your data safe at rest.
- x-amz-website-redirect-location - If your bucket doubles as a website, send requests for this object elsewhere, either inside Rabata or beyond.
- There are also options to provide customer-side encryption keys and algorithms, ensuring that encryption matches your precise needs.
- Bucket (Required) - The target bucket’s name where the copy will live.
- TargetKey (Required) - The name (key) for the new object in the destination bucket. Must be between 1 and 61 characters.
You can also pass custom metadata by adding 'x-amz-meta-' properties. Rabata lets you annotate objects with meaningful information, stored alongside the data, useful for searches or processing.
Response Details
Once Rabata finishes copying, it sends back detailed info about the new object. This includes the ETag - a unique fingerprint of the file contents - and the last modified date, confirming that the copy is fresh and accurate.
- ETag - Reflects changes to the content. Source and destination ETags are identical if the copy succeeded.
- LastModified - Shows when the new object was last updated.
These response elements ensure you have everything you need to verify the success of your copy request.
- 200 Success
- 404 ObjectNotInActiveTierError
Ah, the classic success or fail messages. A 200 status means your copy sailed through, while a 404 error hints the object you're trying to copy might be in an inactive storage tier. Time to check your data's accessibility settings.
- Status 200
- {
- "CopyObjectResult": {
- "ETag": "\"6805f2cfc46c0f04559748bb039d69ae\"",
- "LastModified": "2016-12-15T17:38:53.000Z"
- }
- }
Getting the Website Configuration for Your Bucket
When working with cloud storage, every bucket can wear many hats. One of those hats is serving as a static website host. If you want to peek behind the curtain and see how your bucket is set up as a website, you’ll need to fetch its website configuration. This piece of data reveals all the details about custom error pages, index documents, and routing rules-basically, the instructions that tell your bucket how to behave as a website. Rabata makes this process straightforward, so you can effortlessly retrieve the website configuration and ensure everything is running just as you intended.
Authorization
Accessing website configuration data isn't for just anyone. Rabata requires the right permissions to make sure only trusted users get this info. You need to authenticate properly-no freeloaders allowed. This keeps your data secure and your cloud environment neat and tidy.
Auditing
Every action counts. Rabata logs every request to read your website configurations so you always know who looked and when. This audit trail helps you keep an eye on usage patterns, spot anomalies, and keep your storage fortress secure.
Request
To get your website configuration, you send a straightforward request to Rabata’s API targeting the bucket in question. Make sure to include your authorization credentials. The request is simple but important - it’s your key to unlocking the settings that customize your bucket’s web presence.
Response
Once Rabata processes your request, it fires back with a detailed snapshot of the website configuration. You’ll see index document names, error pages, and any routing rules clearly laid out. With this info in hand, you can tweak or simply admire your bucket’s web setup knowing exactly what’s what.
Listing Object Versions in Your Bucket
When you ask Rabata to list object versions, it doesn’t just give you a long endless list. Instead, it returns up to 1,000 objects, neatly packed from your chosen bucket. You can fine-tune the list using specific request parameters, which act like filters, helping you spot exactly what you need without sifting through the whole stash.
Keep in mind, the server responds with a 200 OK status even if the XML it sends back is a bit quirky - might have some valid bits alongside some invalid ones. It’s on you to build your app smartly, to wiggle through that XML maze without breaking a sweat, parsing what’s needed, and ignoring what’s not.
Authorization
Access to list object versions isn’t open season. Rabata requires proper authorization to keep your data safe. Make sure your requests carry the right permissions to avoid hitting any roadblocks.
Auditing
Every request to list versions leaves a trail. Rabata keeps a keen eye on these activities to help you monitor and audit your data access, so you always know who peeked where and when.
Request
Crafting the request means picking your filters wisely. Parameters allow you to narrow down the list, whether by version ID, prefix, or other handy options. It’s like telling Rabata exactly what you want to see instead of dumping the entire bucket on you.
Response
The response from Rabata arrives as XML that holds your object version details. It may not be perfect, so your app should be ready to make sense of the mix, handle surprises gracefully, and pull out the good stuff smoothly.
Request a Demo
Curious how Rabata’s secure cloud storage can change your data game? Book a 30-minute walkthrough with one of our Cloudian pros who know the ins and outs of protecting your files while keeping things lightning fast.
During this live demo, you’ll see firsthand how Rabata handles your data with care, giving you full control and peace of mind. Plus, it’s a great chance to ask questions and get tailored insights that actually make sense for your needs.
No jargon, no sales pitch overload, just a clear view of what secure cloud storage looks like when done right. Let Rabata show you how simplicity and security can live happily together.



Comments