Authentication Endpoints:
POST /login
POST /logout
POST /refresh-token
User Management Endpoints:
GET /users
POST /users
GET /users/{id}
PUT /users/{id}
DELETE /users/{id}
Access Control Endpoints:
GET /roles
POST /roles
GET /permissions
POST /permissions
POST /assign-role
Federation Endpoints:
POST /federation-request
POST /federation-verify
Audit Logging Endpoints:
GET /audit-logs
POST /log-event
Real-time Communication Endpoints:
GET /notifications
POST /update
POST /alert
Cell-Based Architecture
Okta uses cell based architecture to partition its services into self-contained units called "cells". Each cell operates independently, encapsulating specific functions and services. This isolation at the cell level helps contain failures and improves fault tolerance.
Kubernetes Orchestration
By leveraging Kubernetes for container orchestration, Okta can deploy, manage, and scale containerized services within each cell. Kubernetes provides features for service discovery, load balancing, health checks, and auto-scaling, enhancing the efficiency and reliability of the system.
Isolation within Cells
Within each cell, Kubernetes enforces container isolation using features like namespaces and resource quotas. This ensures that services within a cell are isolated from each other and have defined resource constraints for enhanced security.
Secure Multi-Tenancy
The cell-based architecture enables Okta to support secure multi-tenancy by segregating customer data and workloads into separate cells. Each cell operates independently, serving a specific set of users or customers while ensuring data and resource isolation.
Scalability and Resilience
Kubernetes' scalability features, such as horizontal pod autoscaling and self-healing capabilities, allow Okta to dynamically adjust resource allocation based on workload demands. This ensures high availability and optimal performance across cells.
Security and Compliance
Kubernetes provides a robust security model with built-in mechanisms for network policies, identity and access management, encryption at rest and in transit, and auditing capabilities. This helps Okta maintain security and compliance standards within each cell.
In a cell-based architecture utilizing Kubernetes, each cell typically encapsulates a set of services or components that work together to perform specific functions within the system. While the exact composition of services within each cell may vary based on the architecture and requirements of the identity management system, here is a generalized example of services that could be included within a cell:
In the case of Okta, every cell is an isolated, shared-nothing, identical replica of our infrastructure, spanning from the bottom layer all the way to our edge. Each cell is a self-contained instance of the entire Okta service
Below are a list of services that each cell would contain.
Authentication Service:
Authorization Service:
Identity Provider:
Resource Server:
User Database:
Single Sign-On Service:
Multi-factor Authentication Service:
User Lifecycle Management Service:
Role-Based Access Control Service:
Federation Service:
WebSocket Connections:
Enable real-time communication and data exchange between components for efficient updates, notifications, and alerts.
In order to implement our Cell-based architecture we can leverage existing solutions such as Cellery. Cellery leverages Kubernetes as the underlying container orchestration system to deploy and manage microservices-based applications. Cellery has a unique approach to building and orchestrating composite applications as connected sets of microservices. Cellery aims to simplify the development, deployment, and management of complex distributed systems by providing a higher-level abstraction that focuses on the composition and interactions of microservices. It abstracts away some of the complexity of directly working with Kubernetes manifests and resources, making it easier to work with microservices in a Kubernetes environment.
Cell
In Cellery, a 'Cell' is a unit of deployment that encapsulates one or more microservices along with the dependencies and configurations required to run them. Cells provide a way to package and deploy related microservices as a single entity, simplifying management and versioning.
Cell Image
A 'Cell Image' is a versioned artifact that contains the definition of a Cell, including the microservice components, dependencies, configurations, and metadata. Cell Images can be pushed to a Cellery repository for sharing and deployment.
Cell Gateway
The 'Cell Gateway' serves as the entry point for incoming requests to a Cellery-based application. It handles routing, load balancing, and security aspects, allowing external clients to interact with the composite application.
Observability
Cellery provides tools and capabilities for monitoring, tracing, and logging the interactions within composite applications. It enables developers and operators to gain insights into the behavior and performance of interconnected microservices
When a user makes a request to create a cell in Cellery, the process involves defining the configuration for the composite application containing the microservices that make up the cell. This configuration typically includes the specifications for the individual microservices, their connections, dependencies, and any other required resources.
Let's break down the high-level steps involved in the process of creating a cell in Cellery:
We would design individual components/services for each cell as below:
Authentication Component:
We can break down the Authentication Service into further subcomponents like User Authentication Methods, Token Management, and Security Measures. Let's create a detailed diagram focusing on these aspects:
Authorization and Access Control:
We can break down the Authorization and Access Control into subcomponents such as Role-Based Access Control (RBAC), Policies Enforcement, and Secure Resource Sharing. Let's create a detailed diagram focusing on these aspects:
Identity Federation:
Identity Federation plays a crucial role in enabling seamless and secure access to resources across multiple trusted organizations or systems.
The process typically involves the following steps:
Identity Federation simplifies user access management, enhances user experience, and ensures secure authentication across diverse systems.
Real-time Communication:
Explain any trade offs you have made and why you made certain tech choices...
Some potential bottlenecks include: