SKILLS/performing-access-recertification-with-saviynt/SKILL.md
Configure and execute access recertification campaigns in Saviynt Enterprise Identity Cloud to validate user entitlements, revoke excessive access, and maintain compliance with SOX, SOC2, and HIPAA.
npx skillsauth add pinkpixel-dev/skills-collection-2 performing-access-recertification-with-saviyntInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Access recertification (also called access certification or access review) is a periodic process where designated reviewers validate that users have appropriate access to systems and data. Saviynt Enterprise Identity Cloud (EIC) automates this process through certification campaigns that present reviewers with current access assignments and collect approve/revoke/conditionally-certify decisions. Campaigns can be triggered on schedule (quarterly, semi-annually), event-driven (department transfer, role change), or on-demand. Saviynt provides intelligence features including risk scoring, usage analytics, and peer-group analysis to help reviewers make informed decisions.
| Type | Scope | Trigger | Certifier | |------|-------|---------|-----------| | User Manager | All access for users under a manager | Scheduled (quarterly) | Direct manager | | Entitlement Owner | All users with a specific entitlement | Scheduled (semi-annually) | Entitlement/app owner | | Application | All access to a specific application | Scheduled | Application owner | | Role-Based | All users assigned to a specific role | Scheduled | Role owner | | Event-Based | Users whose attributes changed | Attribute change trigger | New manager | | Micro-Certification | Single user, single entitlement | On-demand | Manager or owner |
| Decision | Effect | Use Case | |----------|--------|----------| | Certify (Approve) | Access maintained | Access is still required | | Revoke | Access removal ticket created | Access no longer needed | | Conditionally Certify | Access maintained with conditions | Access needed temporarily, review again | | Delegate | Reassign to another certifier | Certifier lacks knowledge to decide | | Abstain | No decision recorded | Conflict of interest |
CONFIGURATION → PREVIEW → ACTIVE → IN PROGRESS → COMPLETED → REMEDIATION
│ │ │ │ │ │
│ │ │ │ │ └── Revoke tickets
│ │ │ │ │ executed
│ │ │ │ │
│ │ │ │ └── All decisions
│ │ │ │ collected
│ │ │ │
│ │ │ └── Certifiers reviewing
│ │ │ and making decisions
│ │ │
│ │ └── Campaign launched,
│ │ notifications sent
│ │
│ └── Read-only preview for validation
│
└── Campaign parameters defined
In Saviynt Admin Console:
| Parameter | Value | |-----------|-------| | Campaign Name | Q1 2025 Manager Access Review | | Campaign Type | User Manager | | Description | Quarterly review of all user access | | Certifier Type | Manager (dynamic - user's direct manager) | | Secondary Certifier | Application Owner (fallback if manager unavailable) | | Due Date | 14 days from launch | | Reminder Schedule | Day 7, Day 10, Day 13 | | Escalation | Auto-revoke on Day 15 if no decision |
Configure scope filters:
Configure intelligence features:
Customize what certifiers see during the review:
Columns Displayed:
Decision Options:
Bulk Actions:
import requests
SAVIYNT_URL = "https://tenant.saviyntcloud.com"
SAVIYNT_TOKEN = "your-api-token"
def create_certification_campaign(campaign_config):
"""Create and launch a Saviynt certification campaign."""
headers = {
"Authorization": f"Bearer {SAVIYNT_TOKEN}",
"Content-Type": "application/json"
}
# Create campaign
response = requests.post(
f"{SAVIYNT_URL}/ECM/api/v5/createCampaign",
headers=headers,
json={
"campaignname": campaign_config["name"],
"campaigntype": campaign_config["type"],
"description": campaign_config["description"],
"certifier": campaign_config["certifier_type"],
"duedate": campaign_config["due_date"],
"reminderdays": campaign_config["reminder_days"],
"autorevoke": campaign_config.get("auto_revoke", True),
"autorevokedays": campaign_config.get("auto_revoke_days", 15),
"scope": campaign_config.get("scope", {}),
}
)
response.raise_for_status()
campaign_id = response.json().get("campaignId")
# Launch campaign
launch_response = requests.post(
f"{SAVIYNT_URL}/ECM/api/v5/launchCampaign",
headers=headers,
json={"campaignId": campaign_id}
)
launch_response.raise_for_status()
return {
"campaign_id": campaign_id,
"status": "launched",
"certifications_created": launch_response.json().get("certificationCount", 0)
}
def get_campaign_status(campaign_id):
"""Get current status and progress of a campaign."""
headers = {"Authorization": f"Bearer {SAVIYNT_TOKEN}"}
response = requests.get(
f"{SAVIYNT_URL}/ECM/api/v5/getCampaignDetails",
headers=headers,
params={"campaignId": campaign_id}
)
response.raise_for_status()
data = response.json()
return {
"campaign_id": campaign_id,
"status": data.get("status"),
"total_items": data.get("totalLineItems", 0),
"certified": data.get("certifiedCount", 0),
"revoked": data.get("revokedCount", 0),
"pending": data.get("pendingCount", 0),
"completion_rate": data.get("completionPercentage", 0),
}
Track certification progress and send escalations:
After campaign closes:
development
A cryptographic audit systematically reviews an application's use of cryptographic primitives, protocols, and key management to identify vulnerabilities such as weak algorithms, insecure modes, hardco
tools
Extract stored credentials from compromised endpoints using the LaZagne post-exploitation tool to recover passwords from browsers, databases, system vaults, and applications during authorized red team operations.
testing
Analyze and bypass Content Security Policy implementations to achieve cross-site scripting by exploiting misconfigurations, JSONP endpoints, unsafe directives, and policy injection techniques.
testing
Scan container images, filesystems, and Kubernetes manifests for vulnerabilities, misconfigurations, exposed secrets, and license compliance issues using Aqua Security Trivy with SBOM generation and CI/CD integration.