Secret Server ร
AWS Key Manager
A comprehensive technical integration guide for hybrid organizations deploying Delinea Secret Server alongside AWS Key Management Service. Covers full lifecycle secret synchronization, template mapping, conflict resolution, and cross-platform security architecture.
Architecture Overview
The hybrid integration positions Secret Server as the authoritative source of record for privileged credentials, while AWS Key Manager provides cryptographic key material, envelope encryption, and native AWS-service secret delivery. The sync connector bridges these systems with a configurable, conflict-aware replication engine.
Authoritative Source of Record
Encrypted
Conflict Resolver ยท Audit Logger
Encrypted
Native Cloud Delivery
The architecture respects a zero-trust boundary between on-premises and cloud environments. Secret Server manages access policy, rotation schedules, and dependency tracking. AWS KMS handles cryptographic operations and native AWS service delivery. The connector handles protocol translation, field mapping, and sync-state bookkeeping.
This guide applies to Key Manager Sync Connector v2.4+. Connector version can be verified at Admin โ Sync Connectors โ About. Versions below 2.0 do not support bidirectional sync or conflict resolution.
Prerequisites
Before configuring the connector, ensure all prerequisites are met in both environments. Incomplete prerequisites are the leading cause of failed initial syncs.
- Secret Server 11.0+ with Professional or Platinum license
- Key Manager Sync Connector add-on installed (v2.4+)
- Service account with
Administer Sync Connectorsrole permission - TLS certificate for HTTPS connector endpoint (not self-signed)
- Audit logging enabled for all secret access events
- AWS account with Secrets Manager and KMS enabled in target region
- IAM role
SecretServerSyncRolecreated with least-privilege policy - KMS customer managed key (CMK) created for envelope encryption
- SCP allows
secretsmanager:*andkms:Decryptin target OU - CloudTrail enabled with log delivery to S3 for audit correlation
- VPC endpoint for Secrets Manager (optional but recommended)
- Outbound HTTPS (443) from Secret Server engine to
secretsmanager.<region>.amazonaws.com - Outbound HTTPS (443) from Secret Server engine to
kms.<region>.amazonaws.com - Firewall rules allow STS endpoint for AssumeRole:
sts.amazonaws.com - DNS resolution confirmed for all AWS service endpoints
- If using PrivateLink: VPC endpoint DNS enabled with private hosted zones
Configuring the Key Manager Sync Connector
The sync connector is configured in two phases: IAM trust relationship setup in AWS, followed by connector registration and endpoint configuration in Secret Server.
Phase 1 โ IAM Trust Relationship
Create an IAM role that the connector will assume using STS. This role follows least-privilege and trusts the Secret Server engine's instance profile or static credentials.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::ACCOUNT_ID:role/SecretServerEngine"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "SS_CONNECTOR_EXTERNAL_ID" // set in SS UI
}
}
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
"secretsmanager:PutSecretValue",
"secretsmanager:CreateSecret",
"secretsmanager:UpdateSecret",
"secretsmanager:DescribeSecret",
"secretsmanager:ListSecrets",
"secretsmanager:TagResource"
],
"Resource": "arn:aws:secretsmanager:REGION:ACCOUNT:secret:ss-sync/*"
},
{
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey",
"kms:DescribeKey"
],
"Resource": "arn:aws:kms:REGION:ACCOUNT:key/CMK_KEY_ID"
}
]
}
Phase 2 โ Connector Registration in Secret Server
-
1Navigate to Sync Connector SettingsGo to
Admin โ Configuration โ Sync Connectors โ New Connector. Select AWS Key Manager from the connector type dropdown. -
2Enter IAM CredentialsInput the ARN of the
SecretServerSyncRoleand the External ID you defined in the trust policy. For EC2-hosted engines, prefer instance profile โ leave the Access Key fields empty. -
3Configure Region & KMS KeySet the target AWS region and paste the CMK ARN or alias. This key will be used for all envelope encryption operations during sync. The connector validates key access on save.
-
4Set Sync Mode & IntervalChoose between Push-Only, Pull-Only, or Bidirectional. Set the polling interval (minimum 60 seconds recommended for production; 300s default). Enable Incremental Sync to reduce API call volume.
-
5Test & ActivateClick Test Connection. The system performs an STS AssumeRole call, a KMS DescribeKey, and a Secrets Manager list operation. All three must succeed. Click Activate Connector to begin syncing.
Never store static IAM access keys in the connector configuration if the Secret Server engine runs on EC2 or ECS. Use instance profiles or task roles. Static keys stored here are encrypted at rest but represent a credential sprawl risk.
Mapping Secret Templates to Key Vault Secret Types
Secret Server's template system uses structured field definitions. AWS Secrets Manager stores secrets as JSON key-value documents (or plaintext strings). The mapping layer handles serialization, field aliasing, and type coercion between these two data models.
Default Template Mappings
username/password/domain BIDIusername/password/private_key BIDIaws_access_key_id/aws_secret_access_key PUSHengine/host/port/username/password BIDIMappings tagged BIDI support bidirectional sync. Mappings tagged PUSH are push-only because Secret Server maintains canonical metadata (rotation history, expiry) that has no AWS equivalent.
Custom Template Mapping Configuration
template_mappings: - ss_template_name: "Oracle Service Account" aws_secret_prefix: "oracle/" direction: bidirectional kms_key_override: "arn:aws:kms:us-east-1:123:key/oracle-cmk" field_map: - ss_field: "Username" aws_key: "username" - ss_field: "Password" aws_key: "password" sensitive: true - ss_field: "Server" aws_key: "host" - ss_field: "Port" aws_key: "port" type_coerce: integer tags: environment: "production" managed_by: "secret-server-sync" template: "oracle-service-account"
Use the aws_secret_prefix to organize secrets in AWS by type. This simplifies IAM resource-based policies and helps teams locate secrets without Secret Server access. Recommended pattern: <env>/<type>/<name> e.g. prod/oracle/app-svc-01.
Bidirectional Synchronization Rules
The sync engine applies a deterministic rule set to decide when, what, and how to synchronize secrets between platforms. Understanding these rules is critical for predicting system behavior during edge cases.
Push events are triggered when:
- A secret is created or edited in Secret Server (webhook event)
- Password rotation completes successfully
- A field included in the mapping is modified
- A secret is moved to a folder covered by a sync rule
- A scheduled full-sync interval fires (default: every 5 minutes)
# Mapped fields only โ unmapped SS fields are NEVER pushed # Metadata synced as AWS secret tags: Tags: ss_secret_id: "<secret_id>" ss_folder_path: "<folder>/<subfolder>" ss_last_modified: "<ISO8601 timestamp>" ss_template: "<template_name>" ss_sync_version: "<sync_sequence_number>"
Pull events are triggered when:
- AWS EventBridge event received for
PutSecretValue(near real-time) - Scheduled poll detects
LastChangedDatenewer than last sync timestamp - Manual sync triggered by operator from SS admin panel
Only secrets with the tag managed_by: secret-server-sync are eligible for pull. Secrets without this tag are ignored. This prevents the connector from accidentally importing unrelated AWS secrets into Secret Server.
Throttling configuration prevents API rate limit exhaustion:
# /etc/ss-connector/throttle.ini [aws_api_limits] max_requests_per_second = 50 # AWS SM default quota burst_multiplier = 1.5 # burst headroom retry_backoff_base = 2 # exponential base (seconds) retry_max_attempts = 5 batch_size = 20 # secrets per sync batch batch_delay_ms = 500 # ms pause between batches [kms_limits] max_decrypt_per_second = 5000 # default KMS CryptographicOperations quota cache_data_key_ttl_secs = 300 # reuse envelope data key for 5 min
Handling Sync Conflicts
Conflicts occur when a secret is modified in both Secret Server and AWS Secrets Manager between sync cycles. The connector detects conflicts via version vector comparison using ss_sync_version tags and Secret Manager's VersionStages.
Scenario: Secret Server's rotation heartbeat rotates a password while an AWS Lambda function independently updates the same secret in Secrets Manager.
Detection: Connector sees ss_sync_version mismatch AND diverged timestamps.
Default Resolution: Secret Server wins. The SS version is pushed to AWS, and the conflicting AWS version is archived with the tag ss_conflict_archive: true and version stage AWSPREVIOUS.
Any Lambda or ECS task that fetched the overwritten AWS secret between the conflict window and resolution may be holding a stale credential. Implement short TTL caching (โค60s) in consumers.
Scenario: AWS consumer updates the host field (server moved) while Secret Server updates the password field (rotation). Both changes are legitimate.
Detection: Field-level diff shows non-overlapping modified fields.
Resolution: Connector merges fields: SS wins on sensitive fields (password, private_key); AWS wins on non-sensitive fields (host, port). Merged result is written to both systems.
conflict_resolution: default_winner: secret_server field_override_rules: - fields: ["password", "private_key", "api_key"] winner: secret_server - fields: ["host", "port", "database"] winner: aws on_unresolvable: quarantine_and_alert
Scenario: Secret is deleted in AWS Secrets Manager (e.g., by a resource cleanup script) while it remains active in Secret Server.
Resolution: Secret Server's existence wins. The connector recreates the secret in AWS with the current SS value and logs a SYNC_CONFLICT_RECREATE event. An alert is sent to the configured SNS topic.
Reverse scenario (deleted in SS, exists in AWS): Connector marks the AWS secret with ss_deleted: true tag and places it in quarantine. It is NOT deleted from AWS automatically โ operators must confirm deletion.
Scenario: AWS tags on the secret are modified externally (e.g., compliance team adds a data_classification tag).
Resolution: Non-ss_-prefixed tags are owned by AWS and are preserved through sync operations. The connector never overwrites tags that don't begin with ss_. This allows parallel tag governance from both systems.
Quarantine Queue
Secrets that cannot be automatically resolved are placed in the quarantine queue, visible at Admin โ Sync Connectors โ Conflicts. Operators must manually resolve or dismiss each item. Quarantined secrets are not synced until resolved.
Security Model for Cross-Platform Credential Sharing
The integration's security model is built on layered encryption, zero standing access, and auditable data flows. No plaintext credential material ever crosses system boundaries unencrypted.
kms:GenerateDataKey. Neither the connector nor Secret Server ever holds a plaintext DEK at rest.ExternalId condition. Session tokens have a 1-hour TTL and are not persisted. The role uses resource-level policies scoped to the ss-sync/ prefix only.ss_correlation_id field injected into CloudTrail's userAgent string.Shared Responsibility Model
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโ โ Responsibility โ Secret Server โ AWS KMS / SM โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโค โ Credential lifecycle mgmt โ โ Owner โ Replication โ โ Access policy enforcement โ โ Owner โ IAM complement โ โ Cryptographic key custody โ AES-256 at-rest โ โ Owner (CMK) โ โ Native AWS service delivery โ Via sync only โ โ Owner โ โ Rotation scheduling โ โ Owner โ Triggered by push โ โ Compliance audit trail โ SS Audit Log โ CloudTrail โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโ
Knowledge Check
Test your understanding of key integration concepts before deploying.
managed_by: secret-server-sync are eligible for pull. This prevents accidental import of unrelated AWS secrets.host field; Secret Server updated the password field simultaneously. What is the default merge outcome?Deployment Checklist
Complete all items before going live. This checklist is tracked per session โ check items off as you verify them.
Security Hardening
- ExternalId set on IAM trust policy and matches SS connector configuration
- IAM role permissions scoped to
ss-sync/*resource prefix only - CMK key policy restricts
kms:Decryptto sync role ARN exclusively - SCP in place to prevent unauthorized Secrets Manager access from other accounts
- VPC endpoint deployed for Secrets Manager and KMS (no public egress)
- CloudTrail and SS audit logs shipped to immutable S3 bucket with Object Lock
Operational Readiness
- Template mappings tested with sample secrets in non-production environment
- Conflict resolution policy documented and approved by security team
- SNS alerts configured for quarantine queue events
- Runbook created for manual conflict resolution procedures
- Rollback procedure documented (disable connector, clear sync state)
- AWS API quotas validated for expected secret volume and sync frequency
- Monitoring dashboard created for sync latency, error rates, and conflict counts