Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Cyberark

ASecurity

Expert agent for CyberArk PAM and Conjur. Covers Digital Vault, PVWA, CPM (auto-rotation), PSM (session recording), PTA (threat analytics), Privilege Cloud SaaS, Conjur for DevOps secrets, and Secrets Hub (sync to AWS SM/AKV). WHEN: \"CyberArk\", \"PAM\", \"privileged access\", \"PVWA\", \"CPM\", \"PSM\", \"Conjur\", \"Secrets Hub\", \"vault rotation\", \"session recording\", \"CyberArk machine identity\".

4 stars
0 votes
0 copies
0 views
Added 9/24/2026
devopspythongoshellbashsqlkubernetesawsgcpazuregit

Works with

cliapi

Security Analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned 9/24/2026

$npx -y skills add chrishuffman5/domain-expert --skill cyberark --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Cyberark?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Cyberark
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/chrishuffman5-cyberark/badge)](https://www.skillsdirectory.com/skills/chrishuffman5-cyberark)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: cyberark
description: "Expert agent for CyberArk PAM and Conjur. Covers Digital Vault, PVWA, CPM (auto-rotation), PSM (session recording), PTA (threat analytics), Privilege Cloud SaaS, Conjur for DevOps secrets, and Secrets Hub (sync to AWS SM/AKV). WHEN: \"CyberArk\", \"PAM\", \"privileged access\", \"PVWA\", \"CPM\", \"PSM\", \"Conjur\", \"Secrets Hub\", \"vault rotation\", \"session recording\", \"CyberArk machine identity\"."
license: MIT
---

# CyberArk PAM + Conjur

This skill covers CyberArk Privileged Access Management (PAM) and the Conjur secrets management platform. It has deep knowledge of PAM architecture, privileged credential management, session recording, DevOps secrets patterns, and the Secrets Hub synchronization service.

> **Note**: CyberArk acquired Venafi in October 2024. Venafi products are now under the CyberArk Machine Identity Security portfolio. For Venafi/TLS Protect specifics, see the `venafi` skill.

## How to Approach Tasks

When you receive a request:

1. **Classify** the request:
   - **PAM/Vault setup** — Apply Digital Vault and PVWA guidance
   - **Credential rotation** — Apply CPM guidance
   - **Session management** — Apply PSM guidance
   - **Threat detection** — Apply PTA guidance
   - **DevOps/CI/CD secrets** — Conjur guidance
   - **Cloud secrets sync** — Secrets Hub guidance
   - **Architecture** — Load `references/architecture.md`

2. **Identify deployment model** — Self-hosted (on-premises or IaaS) vs. Privilege Cloud (SaaS).

3. **Clarify persona** — PAM admin, developer, auditor, or end user. The interface and permissions differ significantly.

## CyberArk PAM Architecture Overview

```
┌─────────────────────────────────────────────────────────────┐
│                    CyberArk PAM Platform                     │
│                                                              │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐ │
│  │ Digital     │  │ PVWA        │  │ CPM                 │ │
│  │ Vault       │◄─┤ (Web Portal)│  │ (Password Rotation) │ │
│  │ (Core Store)│  └─────────────┘  └─────────────────────┘ │
│  └──────┬──────┘                                            │
│         │         ┌─────────────┐  ┌─────────────────────┐ │
│         │         │ PSM         │  │ PTA                 │ │
│         └────────►│ (Session    │  │ (Threat Analytics)  │ │
│                   │  Proxy)     │  │                     │ │
│                   └─────────────┘  └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
```

## Digital Vault

The Digital Vault (formerly EPV — Enterprise Password Vault) is the core secure storage component:

- Hardened Windows Server with custom kernel-level security
- All data encrypted with AES-256 (server key + Master CD key)
- No direct database access — all operations via authenticated API
- Network-isolated: typically only CPM, PVWA, and PSM have inbound access
- Clustered for HA: Active-Active with shared storage (SAN/NAS)

### Vault Hierarchy

```
Vault
├── Safe (access-controlled container, like a folder)
│   ├── Account (a privileged credential record)
│   │   ├── Properties (username, address, platform, last rotation)
│   │   └── Password (encrypted at rest, never logged in plaintext)
│   └── File (arbitrary file stored securely)
└── Safe (another safe for another team/service)
```

**Safes** are the primary access control unit. Users/groups are assigned to safes with specific permissions: List Accounts, Retrieve Accounts, Add Accounts, Modify Accounts, Delete Accounts, Manage Safe, etc.

### Safe Administration

```powershell
# CyberArk REST API (PVWA API)
# Authenticate
$Token = Invoke-RestMethod -Method POST \
    -Uri "https://pvwa.example.com/PasswordVault/API/auth/CyberArk/Logon" \
    -Body (@{username="admin"; password="password"} | ConvertTo-Json) \
    -ContentType "application/json"

# Create a safe
Invoke-RestMethod -Method POST \
    -Uri "https://pvwa.example.com/PasswordVault/API/Safes" \
    -Headers @{Authorization=$Token} \
    -Body (@{
        SafeName = "APP-MYAPP-PROD"
        Description = "Production credentials for MyApp"
        ManagingCPM = "PasswordManager"
        NumberOfVersionsRetention = 5
    } | ConvertTo-Json) \
    -ContentType "application/json"

# Add a member to a safe
Invoke-RestMethod -Method POST \
    -Uri "https://pvwa.example.com/PasswordVault/API/Safes/APP-MYAPP-PROD/Members" \
    -Headers @{Authorization=$Token} \
    -Body (@{
        MemberName = "Domain\ServiceAccount"
        MemberType = "User"
        Permissions = @{
            ListAccounts = $true
            RetrieveAccounts = $true
            UseAccounts = $true
        }
    } | ConvertTo-Json -Depth 5)
```

## PVWA (PrivateArk Web Access)

The web interface for end-users and administrators:
- Password checkout and check-in (one-time use or timed)
- Session launch (via PSM integration — connects through PVWA/PSM to target)
- Policy management (platform policies, safe permissions)
- Reporting and audit
- REST API: `https://pvwa.example.com/PasswordVault/API/`

### Account Management via API

```python
import requests

class CyberArkClient:
    def __init__(self, pvwa_url, username, password):
        self.base_url = pvwa_url
        self.token = self._authenticate(username, password)
    
    def _authenticate(self, username, password):
        resp = requests.post(
            f"{self.base_url}/API/auth/CyberArk/Logon",
            json={"username": username, "password": password}
        )
        return resp.text.strip('"')
    
    def get_accounts(self, safe_name=None, search=None):
        params = {}
        if safe_name:
            params['safeName'] = safe_name
        if search:
            params['search'] = search
        return requests.get(
            f"{self.base_url}/API/Accounts",
            headers={"Authorization": self.token},
            params=params
        ).json()
    
    def get_password(self, account_id, reason="Automated retrieval"):
        return requests.post(
            f"{self.base_url}/API/Accounts/{account_id}/Password/Retrieve",
            headers={"Authorization": self.token},
            json={"reason": reason, "TicketingSystemName": "", "TicketId": ""}
        ).text.strip('"')
    
    def logoff(self):
        requests.post(
            f"{self.base_url}/API/auth/Logoff",
            headers={"Authorization": self.token}
        )
```

## CPM (Central Policy Manager)

The CPM is responsible for automatic credential rotation. It runs as a service and periodically:
1. Connects to the target system (using the current password)
2. Changes the password to a newly generated value
3. Updates the Vault with the new password
4. Verifies the new password works

### Platform Policies

CPM rotation is driven by platform policies that define:
- How to connect (protocol: WinRM, SSH, REST, ODBC, etc.)
- How to change the password (OS-level, DB-level, API-level)
- Rotation schedule (periodic days, immediate after use)
- Password complexity requirements
- Reconcile account (fallback account for rotation failures)

```
Built-in platforms:
  WinServerLocal — Local Windows accounts
  WinDomain — Active Directory domain accounts
  UnixSSH — Unix/Linux root or service accounts
  Oracle — Oracle DBA accounts
  MySQL — MySQL admin accounts
  MSSQLServer — SQL Server sa or service accounts
  AWS — IAM access keys
  AzureAD — Azure service principals
  ...and hundreds more
```

### Rotation Scheduling

```
Platform policy configuration:
  ImmediatelyAfterRetrieve: "No"    → Password valid until next scheduled rotation
  ImmediatelyAfterRetrieve: "Yes"   → Password changed after each retrieval (one-time use)
  
  RequirePasswordChangeEveryX: 30   → Rotate every 30 days
  MinimumValidityPeriod: 1          → Minimum 1 hour before re-rotation allowed
```

### Reconcile Accounts

If rotation fails (e.g., because the current password in the Vault is out-of-sync with the actual password), CPM uses a reconcile account:
- A privileged account that can reset passwords on the target
- For Windows: local admin or domain admin
- For Unix: root account
- For Oracle: SYSDBA account

Configure reconcile accounts on the platform policy or per-account.

## PSM (Privileged Session Manager)

PSM acts as a proxy/jump server for privileged sessions:
- Users never directly connect to target servers
- All sessions are recorded (video + keystroke logging)
- Sessions can be terminated in real-time by security team
- Supports: RDP, SSH, HTTP/HTTPS (web apps), database connections

### Session Flow

```
User (PVWA) → Request Session
PVWA → PSM: Launch connection request
PSM → Vault: Retrieve password (user never sees it)
PSM → Target Server: Connect with retrieved credentials
User ↔ PSM ↔ Target: All traffic proxied and recorded
Session recording stored in Vault
```

### PSM for SSH

```bash
# User connects to PSM (not to target)
ssh user@psm.example.com -p 22

# PSM prompts for target selection via PVWA
# OR user specifies target in SSH command:
ssh PVWA:domain\user#targetserver.example.com@psm.example.com

# User's SSH session is proxied; PSM records everything
```

### Session Monitoring

From PVWA: Live Sessions dashboard shows:
- Active sessions by user, target, duration
- Real-time terminate option
- Recorded sessions searchable by user, target, date, keywords (transcript search)

## PTA (Privileged Threat Analytics)

PTA monitors for anomalous privileged access patterns:
- Detects use of credentials outside of CyberArk (credentials used without going through PVWA/PSM)
- Identifies unmanaged privileged accounts (discovered but not in the Vault)
- Monitors for suspected credential theft patterns
- Integrates with SIEM (Syslog, QRadar, Splunk)

```
PTA detects:
  ✓ Privileged account used without a Vault request ticket
  ✓ Login from unusual IP/time for this account
  ✓ Multiple failed logins followed by success (password spraying)
  ✓ Accounts connecting to systems they've never accessed before
  ✓ Kerberoasting attempts
  ✓ Pass-the-hash / Pass-the-ticket indicators
```

## Conjur (DevOps Secrets)

Conjur is CyberArk's developer-friendly secrets platform, designed for machine and application secrets in CI/CD and cloud-native environments.

### Key Differences from PAM

| Dimension | CyberArk PAM | Conjur |
|---|---|---|
| Primary use case | Human privileged access | Machine/application secrets |
| Interface | Web UI + REST API | REST API + SDKs |
| Rotation | CPM-driven | Dynamic (DB plugin) or manual |
| Auth methods | LDAP, RADIUS, SAML | JWT, Kubernetes, AWS IAM, OIDC |
| Audit | Session recording + keystrokes | API audit log |
| Learning curve | Higher (admin-focused) | Lower (developer-focused) |

### Conjur Architecture

```
Conjur Server (Leader)
├── Policy Store (YAML policies defining resources and permissions)
├── Secret Store (encrypted secret values)
└── Audit Log

Conjur Follower (read-only replica for HA)
```

### Conjur Policy (YAML)

```yaml
# policy.yml — Define resources and permissions
- !policy
  id: myapp
  body:
    # Define variables (secrets)
    - !variable db/password
    - !variable api/key
    
    # Define a host (machine identity)
    - !host myapp-production
    
    # Define a group
    - !group apps
    
    # Add host to group
    - !grant
      role: !group apps
      member: !host myapp-production
    
    # Grant read access to variables
    - !permit
      role: !group apps
      privileges: [read, execute]
      resources:
        - !variable db/password
        - !variable api/key
```

```bash
# Load policy
conjur policy replace -b root -f policy.yml

# Create secret
conjur variable values add myapp/db/password "s3cr3t"

# Retrieve secret (from application)
conjur variable value myapp/db/password
```

### Conjur Kubernetes Integration

```yaml
# Kubernetes authenticator setup
# Namespace annotation for Conjur auth
# In pod spec:
spec:
  serviceAccountName: myapp-sa
  containers:
  - name: secretless-broker
    image: cyberark/secretless-broker:latest
    env:
    - name: CONJUR_ACCOUNT
      value: "myorg"
    - name: CONJUR_APPLIANCE_URL
      value: "https://conjur.example.com"
    volumeMounts:
    - name: conjur-access-token
      mountPath: /run/conjur
  - name: app
    image: myapp:latest
    # App connects to secretless-broker on localhost
    # Broker handles auth, never exposes credentials to app
```

### Secretless Broker

CyberArk's Secretless Broker intercepts application connections (DB, HTTP, etc.) and injects credentials transparently. Applications use no-auth or placeholder credentials; the broker fetches real credentials from Conjur.

## Secrets Hub

Secrets Hub synchronizes CyberArk PAM or Conjur secrets to cloud-native secret stores:
- Push secrets to AWS Secrets Manager
- Push secrets to Azure Key Vault
- Applications in AWS/Azure use their native secret managers without knowing about CyberArk
- CyberArk retains governance, audit, and rotation control

```
CyberArk Vault (source of truth)
  → Secrets Hub (sync engine)
    → AWS Secrets Manager (consumer in AWS)
    → Azure Key Vault (consumer in Azure)

Benefits:
  - Cloud apps use native SM APIs (no Conjur/PVWA SDK needed)
  - PAM team controls rotation and governance centrally
  - Audit trail in CyberArk, consumption in cloud
```

## Reference Files

- `references/architecture.md` — CyberArk PAM component internals: Vault encryption, DR Vault, CPM rotation mechanics, PSM proxy architecture, PTA detection models, Conjur Leader/Follower replication, Secrets Hub sync architecture.

Attribution

chrishuffman5chrishuffman5
View sourceSee grades on GitHubMore from chrishuffman5 →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Terraform Module Library

Build reusable Terraform modules for AWS, Azure, and GCP infrastructure following infrastructure-as-code best practices. Use when creating infrastructure modules, standardizing cloud provisioning, or implementing reusable IaC components.

401991 votes

sematext-otel

Wire a service's OpenTelemetry output to Sematext Cloud. Walks through region, App-type, instrumentation flow (managed OTLP endpoint vs Sematext Agent), and signal selection (traces/metrics/logs), then produces the exact env-var block and points at a runnable reference example in this repo. Invoke when instrumenting a new app for Sematext.

01 votes

Deployment Patterns

Deployment workflows, CI/CD pipeline patterns, Docker containerization, health checks, rollback strategies, and production readiness checklists for web applications. Use when setting up deployment infrastructure or planning releases.

2699140 votes

Babysit

Watch a pull request or review cycle until it is ready to merge. Use when asked to babysit, monitor, or keep checking PR comments, reviews, and CI until all actionable issues are resolved.

968770 votes

V7 Roster

Interact with the Paperclip control plane API for task coordination and governance. Use when checking assignments, updating issue status, posting comments, delegating work, managing routines, or calling Paperclip API endpoints.

953190 votes
View all in devops →