Create and revoke access keys
Create an access key that signs S3 requests for one bucket or all of them, read-only or read-write, and revoke it when done.
In the dashboard
An access key is the pair of values an S3 client signs its requests with: an access key ID, such as AKIAEXAMPLE0000000000000, and a secret key. You create keys on the service's Access keys tab. Each key is read-only or read-write, and works on one bucket or on every bucket on your account.
Before you begin
Section titled Before you begin- Sign in to the dashboard and open the service.
- The service must be
activeto create a key. You can revoke a key in any status. - To limit a key to one bucket, create the bucket first (Create a bucket).
What a key can do
Section titled What a key can doA key has one of two sets of permissions:
- Read and write
- Lists, downloads, uploads and deletes objects.
- Read only
- Lists and downloads objects. It cannot change anything.
No key can create or delete a bucket. Do that on the Buckets tab.
A key also has a scope:
- All buckets on this account
- The key works on every bucket whose name starts with your prefix, such as
u7-. That covers the buckets of all your Object Storage services, including buckets you create later. - One bucket
- The key works on that bucket only, and every other bucket refuses it. The list offers the buckets of the service you create the key on.
A key works at the endpoint of every region. Point the client at the endpoint of the region that holds the bucket.
While a service is suspended, its keys stop working. They work again when the service is active.
Create a key
Section titled Create a key- Open the service and select the Access keys tab.
- Select Create key….
- In Label, type a name that tells you where the key is used, such as
ci deploy. A label has up to 64 characters: letters, digits, spaces, dots, hyphens and underscores, starting with a letter or a digit. Each label on a service is different. - Under Permissions, choose Read and write or Read only.
- Under Scope, keep All buckets on this account or choose one bucket.
- Select Create key.
Save the secret key
Section titled Save the secret keyThe dialog now shows the new key, under Save the secret key now. This is the only time the dashboard or the API shows the secret key.
- Access key ID and Secret key
- The two values your client signs with. The secret key is hidden at first. Select the eye icon beside it to show it, or copy it without showing it.
- Endpoint and Region
- The endpoint and region code of the service's home region. For a key limited to a bucket in another region, use the endpoint of that bucket's region instead.
- Scope and Permissions
- What you chose, such as
All buckets (u7-*)andRead and write.
To copy the values:
- Copy all copies every field, the secret key included, as lines of text.
- The copy button beside each field copies that value.
- The two code blocks hold
~/.aws/credentialsand~/.aws/configentries for a profile calledcoritan, ready to paste (Connect an S3 client).
Store the secret key in a password manager or in your deployment's secret store, then select I have saved it.
Important
A new key takes up to a couple of minutes to reach storage in every region. Until then, requests signed with it are refused, usually with InvalidAccessKeyId.
Read the key list
Section titled Read the key listThe Access keys card says how many keys the service has, newest first.
- Key
- The label, and the access key ID with a button to copy it.
- Scope
- All buckets, or the name of the one bucket the key works on.
- Permissions
- Read and write or Read only.
- Created
- The date you created the key.
- Last used
- We do not record when a key is used, so this column shows
Never.
A key marked Inactive does not work. That happens while the service is suspended, and after you delete the one bucket the key was limited to. A key limited to a deleted bucket leaves the list 7 days after the bucket.
Revoke a key
Section titled Revoke a keyWarning
You cannot undo a revocation. Anything that signs requests with the key is refused within a couple of minutes.
- Open the key's menu and select Revoke key….
- Select Revoke key to confirm.
A message confirms it, such as Access key "ci deploy" revoked. The key leaves the list at once, and storage refuses it within a couple of minutes. Presigned URLs that a client signed with the key stop working too. Presigned URLs from the API and the dashboard's own uploads and downloads do not use your keys, so revoking has no effect on them.
To replace a key without a break in service, create the new key, wait a couple of minutes, move your applications to it, and then revoke the old key. Once the old key is revoked, you can give its label to a new key.
Result
Section titled ResultA new key signs requests within a couple of minutes, for the buckets and permissions you chose. Connect an S3 client shows how to use it. A revoked key is refused everywhere within the same time.
Troubleshooting
Section titled TroubleshootingA key labelled ci deploy already exists on this service- Choose another label, or revoke the key that has it first.
Labels use letters, digits, spaces, dots, hyphens and underscores- The label holds another character, or starts with a dot, hyphen or underscore. Change it.
- A new key is refused with
InvalidAccessKeyId - The key has not reached storage yet. Wait a couple of minutes and try again. If it is still refused, check that you copied the whole access key ID, then contact support.
- A request is refused with
AccessDenied - The key's scope or permissions do not cover the request. A read-only key cannot upload or delete, a key limited to one bucket cannot reach another, and no key can create or delete a bucket.
- Create key… is missing
- The service is not
active. The tab saysKeys can be created once the service is active., orKeys are turned off while the service is suspended. - You lost the secret key
- We cannot show it again. Create a new key, move your applications to it, and revoke the old one.
Related
Section titled RelatedWith the API
Section titled With the APIEach request takes the service ID. A service that is not Object Storage on your account answers 404 with Object storage service not found.
List keys
Section titled List keysGET /api/v1/client/object-storage/{service_id}/keys lists the service's keys, newest first, without their secrets:
curl https://api.coritan.com/api/v1/client/object-storage/1207/keys \
-H "Authorization: Bearer $CORITAN_TOKEN"
{
"items": [
{
"id": 12,
"access_key_id": "AKIAEXAMPLE0000000000000",
"label": "ci deploy",
"bucket_id": 31,
"bucket_name": "u7-assets",
"scope": "bucket",
"mode": "read",
"actions": ["Read", "List"],
"is_active": true,
"last_used_at": null,
"created_at": "2026-09-26T10:05:00"
}
],
"total": 1
}
scope is bucket for a key limited to one bucket, named by bucket_id and bucket_name, and all for a key on every bucket, where both are null. mode is read or read_write. actions lists the S3 permissions behind the mode: Read and List for a read-only key, and Read, Write, List and Tagging for a read-write key. is_active is false while the key is turned off. last_used_at is always null.
Create a key through the API
Section titled Create a key through the APIPOST /api/v1/client/object-storage/{service_id}/keys takes:
label- Required. 1–64 characters, as in the dashboard.
modereadorread_write. The default isread_write.bucket_id- Optional. The
idof one of the service's buckets, to limit the key to it. Without it, the key works on every bucket on your account.
curl -X POST https://api.coritan.com/api/v1/client/object-storage/1207/keys \
-H "Authorization: Bearer $CORITAN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"label": "ci deploy", "mode": "read", "bucket_id": 31}'
It answers 201 with the key in the shape above and four more fields:
{
"id": 12,
"access_key_id": "AKIAEXAMPLE0000000000000",
"label": "ci deploy",
"bucket_id": 31,
"bucket_name": "u7-assets",
"scope": "bucket",
"mode": "read",
"actions": ["Read", "List"],
"is_active": true,
"last_used_at": null,
"created_at": "2026-09-26T10:05:00",
"secret_key": "ExampleSecretKey000000000000000000000000000",
"endpoint": "https://s3.fra.coritan.com:7337",
"region": "fra",
"activation_note": "The gateways are handed the new key within a couple of minutes; a request signed with it before then is refused."
}
secret_key appears in this response and never again. endpoint and region are the service's home region, whatever bucket the key is limited to. activation_note repeats that the key needs a couple of minutes before it works.
| Status | detail |
Cause |
|---|---|---|
404 |
Bucket not found |
bucket_id is not one of the service's buckets. |
409 |
This service is suspended; it can be changed once it is active |
The service is not active. The message names its status. |
409 |
A key labelled ci deploy already exists on this service |
Another key on the service has that label. |
422 |
A label is required |
The label holds only spaces. |
422 |
Labels use letters, digits, spaces, dots, hyphens and underscores |
The label holds another character, or does not start with a letter or digit. |
Revoke a key through the API
Section titled Revoke a key through the APIDELETE /api/v1/client/object-storage/{service_id}/keys/{key_id} revokes a key, in any status of the service. key_id is the key's id:
curl -X DELETE https://api.coritan.com/api/v1/client/object-storage/1207/keys/12 \
-H "Authorization: Bearer $CORITAN_TOKEN"
{"ok": true, "access_key_id": "AKIAEXAMPLE0000000000000"}
A key that is not on the service answers 404 with Access key not found.
API operations on this page
| Method | Path | What it does |
|---|---|---|
GET | /api/v1/client/object-storage/{service_id}/keys | List keys |
POST | /api/v1/client/object-storage/{service_id}/keys | Issue a key |
DELETE | /api/v1/client/object-storage/{service_id}/keys/{key_id} | Revoke key |