ADR-003: IDM and Agent Identity Separation
Status
✅ Accepted
Date
2024-01-15
Context
A critical architectural question arose about the relationship between centralized Identity & Access Management (IDM) systems and the Agent Identity component, particularly regarding:
- Provisioning and Deprovisioning: Who controls the agent lifecycle?
- Master Data Ownership: Which system is the source of truth for what data?
- Integration Boundaries: How do these systems work together without overlap?
The Question
"does the provisioning and deprovisioning process impact the agent's life cycle? IDM holds the master data about the ai agent?"
The Confusion
There was initially uncertainty about whether:
- IDM should manage agent identity completely
- Agent Identity component was redundant with IDM
- The relationship between access control and agent characteristics
Decision
Establish clear separation of concerns between IDM and Agent Identity, with each system owning distinct aspects of agent management while working together through well-defined integration points.
Responsibility Boundaries
IDM (Identity & Access Management) - Master of Access:
- Authentication (who can access)
- Authorization (what can be accessed)
- Access provisioning and deprovisioning
- Security policies and compliance
- Audit logs for access events
Agent Identity Component - Master of Agent Characteristics:
- Agent intrinsic properties (type, capabilities, version)
- Operational lifecycle state
- Agent-specific configuration and metadata
- Performance and behavioral data
- Agent operational history
Rationale
Why Separation Makes Sense
-
Different Problem Domains:
- IDM solves "access control" problems
- Agent Identity solves "operational identity" problems
-
Different Data Types:
- IDM: Permissions, roles, credentials, access policies
- Agent Identity: Capabilities, configurations, operational state, performance metrics
-
Different Lifecycle Concerns:
- IDM: Security lifecycle (provision access → monitor → revoke)
- Agent Identity: Operational lifecycle (requested → active → retired)
-
Different Performance Requirements:
- IDM: Security-first, audit-focused
- Agent Identity: Performance-first, operations-focused
Real-World Analogy
Think of an employee in a company:
- IDM = Access Badge: Employee ID, building access, system permissions
- Agent Identity = Job Description: Role, skills, current projects, performance
Both are essential, but they serve different purposes and contain different information.
Consequences
Integration Pattern
Coordinated but Independent Systems:
Lifecycle Integration
Provisioning Flow:
- Business requests new agent
- Agent Identity: Creates agent record (state: "Requested")
- Agent Identity: Requests IDM provisioning
- IDM: Creates service account and permissions
- IDM: Notifies Agent Identity "provisioning complete"
- Agent Identity: Transitions to "Configuring" → "Active"
Deprovisioning Flow:
- Business requests agent retirement
- Agent Identity: Transitions to "Retiring"
- Agent Identity: Completes operational cleanup
- Agent Identity: Notifies IDM "ready for deprovisioning"
- IDM: Revokes access and removes account
- Agent Identity: Transitions to "Decommissioned"
Master Data Distribution
No Single Master: Each system owns its domain
IDM Master Data:
- Service account credentials
- Role assignments
- Permission matrices
- Access audit logs
- Compliance records
Agent Identity Master Data:
- Agent type and capabilities
- Operational configuration
- Performance metrics
- Task execution history
- Component health dataEvent-Driven Synchronization
Bidirectional Communication:
IDM → Agent Identity Events:
- "provisioning_started"
- "provisioning_complete"
- "access_revoked"
- "emergency_lockout"
Agent Identity → IDM Events:
- "agent_ready_for_access"
- "maintenance_mode_entered"
- "ready_for_deprovisioning"
- "operational_failure"Positive Outcomes
✅ Clear Boundaries: Each system has well-defined responsibilities ✅ Security Without Complexity: IDM focuses on security, Agent Identity on operations ✅ Independent Evolution: Systems can evolve at their own pace ✅ Proper Specialization: Each system optimizes for its domain ✅ Failure Isolation: Problems in one system don't break the other
Implementation Details
Data Binding Pattern
// Agent Identity links to IDM but doesn't duplicate IDM data
pub struct AgentIdentity {
// Agent-specific data (owned by Agent Identity)
pub agent_id: AgentId,
pub agent_type: AgentType,
pub capabilities: Vec<Capability>,
pub lifecycle_state: LifecycleState,
// IDM binding (reference, not data duplication)
pub external_identities: HashMap<String, ExternalIdentity>,
}
pub struct ExternalIdentity {
pub system: String, // e.g., "corporate_ldap"
pub identity: String, // e.g., "svc-agent-001"
pub binding_type: BindingType,
pub status: BindingStatus,
// No credential data stored here
}State Synchronization Rules
Synchronization Rules:
idm_provisioning_started:
agent_state: "Requested" → "Provisioning"
idm_provisioning_complete:
agent_state: "Provisioning" → "Configuring"
agent_ready:
agent_state: "Configuring" → "Active"
idm_access_revoked:
agent_state: any → "Suspended"
agent_retiring:
trigger: "idm_deprovisioning_request"Follow-up Actions
Completed
- ✅ Created comprehensive IDM and Agent Identity Integration guide
- ✅ Defined clear responsibility boundaries
- ✅ Documented integration patterns and data flows
- ✅ Established event-driven communication model
Architecture Design
- 📋 Design IDM connector interface in Agent Identity component
- 📋 Define event schemas for IDM ↔ Agent Identity communication
- 📋 Create failure handling procedures for integration issues
Documentation
- 📋 Update all component architectures to reflect this separation
- 📋 Create integration testing guidelines
- 📋 Document operational procedures for both systems
Lessons Learned
- Clarifying Questions Are Crucial: The user's questions led to much clearer architecture
- Avoid Functional Overlap: Different systems should solve different problems
- Integration ≠ Duplication: Systems can work together without duplicating responsibilities
- Event-Driven Integration: Loose coupling through events provides flexibility
Impact on System Design
Agent Identity Component
- Focused Mission: Purely operational agent concerns
- Performance Optimized: No security overhead in identity operations
- Simplified Data Model: No credential or permission data
IDM Integration
- Standard Patterns: Uses established enterprise IDM integration patterns
- Security Focused: Specialized for access control and compliance
- Enterprise Ready: Fits into existing security infrastructure
Overall Architecture
- Separation of Concerns: Clean boundaries between security and operations
- Scalability: Each system can scale independently
- Maintainability: Easier to maintain and evolve separate systems
Related Decisions
- ADR-002: Agent Identity Scope Limitation (removed relationships, now removes IDM overlap)
- ADR-004: Configuration Management (similar separation of concerns principle)
This decision established the foundational principle that different systems should own different types of data and solve different problems, even when they need to work together closely.