Skip to main content

Main Concept

Object

In Object Storage, all files are stored in the form of objects (Key-Value structure) and are included in a container that can hold objects called Bucket. A file is a sub-concept of an object and corresponds to value in the object structure, and can be accessed through key, a unique identifier that can recognize the file.

Object key

The object key is a unique identifier for the object and is expressed as the location of the file in the bucket. For example, if a file called 'cloud.png' is located in the 'i' folder located under the kakao folder in the bucket, the object key is expressed as kakao/i/cloud.png.

The object key cannot exceed 432 bytes, including /, which represents the directory hierarchy. Requests where the key (path) changes, such as file upload, file name change, or file movement, may fail due to these restrictions.

info

In Object Storage, the storage and retrieval of actual data operates in a flat structure rather than a folder-based directory hierarchy. Denoting the directory hierarchy by separating it with / is a user convenience feature; in fact, it is a structure in which data is mapped to keys regardless of hierarchy.

Object URL

To access files (values) uploaded to the bucket, you must use an object key-based URL.
The URL structure is https://objectstorage.{region-name}.kakaocloud.com/v1/{project-ID}/{bucket-name}/{object-key}. URL information for each file can be found on the bucket detail page.

For details, please refer to Check details of object.

URL structure
CategoryDescription
region-nameDeployed region name
project-IDID of the deployed project
bucket-nameName of the bucket you created
object-keyKey of uploaded object

File management in console

You can manage files in your bucket from the console (web browser). For details, please refer to Manage object.

Metadata

You can set metadata that describes the object. Metadata is divided into System metadata, which is used to convey information about objects to the Object Storage, and user metadata, which users can register.

For details, please refer to Set metadata.

Object tag

You can classify objects by assigning tags. It is divided into an object key and a value for the key, and is a key-value pair. You can manage the life cycle of objects by using object tags in LifeCycle rules. For details, please refer to Set object tag.

Bucket

A bucket is a container that contains objects and is used as a unit of application for access rights and life cycle settings for objects. For detailed instructions on creating and managing buckets, please refer to Create and manage buckets.

Bucket type

Buckets in Object Storage support Standard buckets.

Lifecycle

Depending on the bucket life cycle policy, files in a bucket can be automatically deleted or moved to a different type of bucket after a certain period of time. The ability to move files to other types will be updated in the future. For information on how to set up the life cycle, please refer to Configure life cycle.

Bucket visibility

You can set public access for a bucket to allow external access to that bucket from an unspecified number of people. When setting up public access, public buckets are provided as read only. For details, please refer to Manage bucket permission.

info

Management, such as uploading and editing files, is only possible through the console or API.

Stability and scalability

In Object Storage, there is no limit to bucket capacity or number of objects, so data is distributed to different hardware or stored redundantly to ensure stability. Additionally, unlike block storage, which has a tiered directory structure, Object Storage stores data in a flat key-value structure, making it easy to expand.
Since files can be added without restrictions without any other settings, users can focus on the service without worrying about storage capacity. Since all data is stored flat without a hierarchy, there is no speed delay due to the hierarchy, and fast access is guaranteed regardless of the number of files in the bucket.

Manage permission

Currently, the IAM permission system and the Object Storage permission system are temporarily applied differently.
Each IAM project role is granted the following Object Storage role.

IAM roleObject Storage role
Project AdminStorage Admin (storage.admin)
Project MemberStorage Editor (storage.editor)
Project ReaderStorage Viewer (storage.viewer)

image. Permission setting architecture Permission architecture

Permission
Scope
RolePermissionsS3 Bucket ACL
bucketStorage Admin
(storage.admin)
Grants full permissions to manage buckets and objects
- storage.buckets.delete
- storage.buckets.get
- storage.buckets.update
- storage.buckets .getIamPolicy
- storage.buckets.setIamPolicy
- storage.objects.create
- storage.objects.delete
- storage.objects.list
- storage.objects .get
- storage.objects.update
FULL_CONTROL
Storage Editor
(storage.editor)
Grants permission to manage buckets and objects, excluding the bucket's permission policy
- storage.buckets.get
- storage.buckets.update
- storage.objects.create
- storage.objects.delete
- storage.objects.list
- storage.objects.get
- storage.objects.update
READ + WRITE
Storage Viewer
(storage.Viewer)
Grants permission to view a bucket's metadata information and object metadata
- storage.buckets.get
- storage.objects.list
- storage.objects.get
READ
Storage Object Admin
(storage.objectAdmin)
Grants control over all objects, such as listing/creating/viewing/deleting objects
- storage.objects.create
- storage.objects.delete
- storage.objects.list
- storage.objects.get
- storage.objects.update
READ + WRITE
Storage Object Viewer
(storage.objectReader)
Grants permission to list objects and view metadata, excluding the bucket's permission policy
- storage.objects.list
- storage.objects.get
READ
Storage Object Creator
(storage.objectCreator)
Grant users only permission to create objects
- storage.objects.create
WRITE
Storage Bucket Owner
(storage.owner)
Grants permission to manage bucket lookups and permission policies except for creating buckets
- storage.buckets.delete
- storage.buckets.get
- storage.buckets.update
- storage.buckets.getIamPolicy
- storage.buckets.setIamPolicy
- storage.objects.create
- storage.objects.delete
- storage.objects.list
- storage.objects.get
- storage.objects.update
FULL_CONTROL
Storage Bucket Editor
(storage.policyEditor)
Grants permission to manage bucket view/permission policies and objects, excluding bucket creation/deletion
- storage.buckets.get
- storage.buckets.update
- storage. buckets.getIamPolicy
- storage.buckets.setIamPolicy
- storage.objects.create
- storage.objects.delete
- storage.objects.list
- storage. objects.get
- storage.objects.update
FULL_CONTROL
Storage Permission Policy Viewer
(storage.policyReader)
Grant permission to view bucket permissions
- storage.buckets.getIamPolicy
READ_ACP
Storage Permission Policy Writer
(storage.policyWriter)
Grants permission to add/delete buckets except for viewing permissions
- storage.buckets.setIamPolicy
WRITE_ACP

Permission type

The permission types for Object Storage are as follows:

Permission TypeDescription
PersonalA user with an assigned role
GroupType of AllUserGroup (all users)
Service accountAn account created by the user.
It is not an actual IAM user account, but an account that can issue authentication tokens required for calling the KakaoCloud API
Role groupUser group assigned to IAM role
- Project Admin (Admin): {project_id}
- Project Member: {project_id}
- Project Reader : {project_id}
- allUserGroup
caution

The allUserGroup role refers to all users accessing the bucket, so care must be taken when assigning the role.

Default role

The default role assignments for members are as follows:

ScopeMembersRole
Bucket     Project Admin (Admin): {project_id}Storage Admin
Project Member: {project_id}Storage Editor
Project Reader: {project_id}Storage Viewer
Bucket creator: {user}Storage Admin

Permissions by function

Permissions and functions specific to a bucket or object include:

rangePermissionFunction
Bucketstorage.buckets.createCreating a bucket
storage.buckets.deleteDeleting a bucket
storage.buckets.listViewing bucket list and bucket metadata
storage.buckets.getViewing bucket details and metadata
storage.buckets.updateEditing a bucket
- Example: Editing metadata
storage.buckets.getIamPolicyViewing bucket permission policy and life cycle
storage.buckets.setIamPolicyRegistering, modifying, and deleting bucket permission policies, setting life cycle
Objectstorage.objects.createRegistering an object
- Example: uploading a file, creating a folder
storage.objects.deleteDeleting objects
storage.objects.listSearching for objects
- Example: Searching object list and searching metadata of objects
storage.objects.getSearch object detailed information
- Example: Search object metadata, search object tag, search file information, download file
storage.objects.updateModifying an object
- Examples: adding/editing an object's metadata, adding/deleting object tags, renaming
- storage.objects.create
- storage.objects.delete
- storage.objects.get
Moving files
- storage.objects.create
- storage.objects.get
Copying files