Skip to content

Container Registry access control (IAM)

Access to the container registry is controlled through Thalassa Cloud IAM and access credential scopes. Registry operations require both API-level permissions (for namespace and repository management) and registry-level push/pull permissions (for image upload and download).

IAM resources

The registry uses four IAM resources:

ResourceIAM name
Namespace (list/create)container_registry
Namespace (read/update/delete)container_registry_namespace
Namespace configurationcontainer_registry_namespace_configuration
Repositorycontainer_registry_repository

Built-in policies

Policy nameSlugPermissionsTypical use
registry:ReadAccessregistry-read-accessread, list, pullView namespaces and pull images
registry:developerregistry-developerread, list, push, pull on namespaces and repositoriesCI/CD push and pull
registry:viewerregistry-viewerread, list, pullRead-only browsing and pull
registry:adminregistry-adminFull CRUD + push/pullFull namespace and repository management
registry:FullAccessregistry-full-admin-accessFull CRUD + push/pullSame as admin

registry:FullAccess is currently stored as registry:FullAdminAccess; slug registry-full-admin-access is unchanged.

See Container Registry default policies for slug and binding details.

The built-in admin:all policy grants full registry access implicitly.

Registry-specific permissions

In addition to standard create, read, update, delete, and list:

PermissionMeaning
pushUpload images to namespaces you can access
pullDownload images from namespaces you can access

IaaS policy inclusion

Registry access is also included in broader IaaS policies for teams that manage compute and registry together:

PolicyRegistry access
iaas:adminFull CRUD + push/pull
iaas:devopsFull CRUD + push/pull
iaas:auditorread, list, pull

iaas:ReadAccess and iaas:FullAccess do not include container registry permissions.

Access credential scopes

For docker login and OCI client authentication, access credentials must include one of:

ScopeAccess
containerRegistryPush and pull
containerRegistry:allPush and pull
containerRegistry:pullPull only

User sessions and IAM policies can also grant push and pull permissions on registry resources. See CI/CD guide for pipeline credential patterns.

Recommended policy assignment

PersonaPolicyRationale
Registry administratorsregistry:FullAccess or registry:adminCreate namespaces, configure retention, manage repositories
CI/CD build pipelinesregistry:developer or custom role with push/pullPush built images
Deploy pipelines / runtimeregistry:ReadAccess or pull-only credentialPull images without push access
Auditorsregistry:viewer or registry:ReadAccessBrowse metadata and pull for verification

Follow least privilege: use pull-only credentials for deploy pipelines and Kubernetes imagePullSecrets.

Project scoping

Namespaces can be organisation-scoped or project-scoped:

  • Organisation-scoped namespaces — Managed without a project context; visible when no project is selected
  • Project-scoped namespaces — Created and listed only within an active project context

IAM policy bindings can be attached at organisation or project level. A principal with project-level access on project A cannot access project B’s namespaces. See IAM policies and Projects for project-scoped access control.

Service accounts

Use service accounts with access credentials for CI/CD and Kubernetes automation. Create dedicated credentials with the minimum scope required — pull-only for deploy, push+pull for build.

See Service accounts and Workload Identity Federation for OIDC-based CI/CD authentication.

Related documentation