home / skills / markus41 / claude / harness-platform

This skill enables comprehensive Harness Platform administration including delegates, RBAC, connectors, secrets, templates, OPA policies, and governance.

npx playbooks add skill markus41/claude --skill harness-platform

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
7.5 KB
---
name: harness-platform
description: Harness Platform administration including delegates, RBAC, connectors, secrets, templates, policy as code (OPA), user management, audit logs, and governance
allowed-tools: [Bash, Read, Write, Edit, Glob, Grep, Task, WebFetch, WebSearch]
dependencies: [harness-mcp, harness-cd, harness-ci]
triggers: [harness delegate, harness rbac, harness connector, harness secret, harness template, harness policy, harness opa, harness user, harness admin]
---

# Harness Platform Administration Skill

Comprehensive Harness Platform administration for delegates, RBAC, connectors, secrets, templates, OPA policies, and governance.

## Platform Hierarchy

```
Account (Root)
├── Organization
│   ├── Project
│   │   ├── Pipelines, Services, Environments
│   │   ├── Connectors (project-level)
│   │   └── Secrets (project-level)
│   ├── Connectors (org-level)
│   └── Secrets (org-level)
├── Delegates
├── Secrets (account-level)
└── User Management
```

## Harness Delegates

**Types:** Kubernetes (Helm, YAML), Docker, Shell, ECS

**Kubernetes Helm Install:**
```bash
helm repo add harness-delegate https://app.harness.io/storage/harness-download/delegate-helm-chart/
helm install harness-delegate harness-delegate/harness-delegate-ng \
  --namespace harness-delegate --create-namespace \
  --set accountId="${HARNESS_ACCOUNT_ID}" \
  --set delegateToken="${DELEGATE_TOKEN}" \
  --set delegateName="prod-delegate" \
  --set replicas=2
```

**Delegate Selectors:** Route tasks to specific delegates with labels (e.g., production, aws, k8s)

**Troubleshooting:**
```bash
kubectl get pods -n harness-delegate
kubectl logs -n harness-delegate -l app=harness-delegate --tail=100
kubectl exec deployment/harness-delegate -n harness-delegate -- curl -s localhost:8080/api/health
```

## RBAC (Role-Based Access Control)

**Built-in Roles:**
- Account Admin (full access)
- Account Viewer (read-only)
- Organization Admin (org-level)
- Project Admin (project-level)
- Pipeline Executor (execute only)
- Pipeline Viewer (view only)

**Resource Types:** PIPELINE, SERVICE, ENVIRONMENT, CONNECTOR, SECRET, INFRASTRUCTURE

**Custom Role Example:**
```yaml
role:
  name: Deployment Manager
  permissions:
    - resourceType: PIPELINE
      actions: [core_pipeline_view, core_pipeline_execute]
    - resourceType: SERVICE
      actions: [core_service_view, core_service_access]
    - resourceType: ENVIRONMENT
      actions: [core_environment_view, core_environment_access]
```

**User Groups & Role Binding:**
- Create groups by team/function
- Bind roles to groups with resource groups
- Support SAML/SSO integration
- Service accounts for automation with API keys (90-day default expiry)

## Connectors

**Cloud Connectors:**
- **AWS:** ManualConfig (access/secret key) or IRSA (recommended for EKS)
- **GCP:** Service account key
- **Azure:** App ID, Tenant ID, Client Secret

**Kubernetes:**
- Manual: Master URL + Service Account token
- In-cluster: InheritFromDelegate (simplest)

**Container Registries:** Docker Hub, ECR, GCR, ACR

**Test Connector:**
```bash
curl -X POST "https://app.harness.io/gateway/ng/api/connectors/testConnection/${CONNECTOR_ID}" \
  -H "x-api-key: ${HARNESS_API_KEY}" \
  -d '{"accountIdentifier":"...", "orgIdentifier":"...", "projectIdentifier":"..."}'
```

## Secrets Management

**Secret Managers:** Harness Built-in (Google KMS), HashiCorp Vault, AWS Secrets Manager, GCP Secret Manager, Azure Key Vault

**Vault Connector:**
```yaml
connector:
  type: Vault
  spec:
    vaultUrl: https://vault.company.com
    basePath: harness
    authToken: <+secrets.getValue("vault_root_token")>
    renewalIntervalMinutes: 60
    secretEngineVersion: 2
```

**Secret References:**
- Harness: `<+secrets.getValue("my_secret")>`
- Vault: `<+secrets.getValue("vault://secret/data/myapp#api_key")>`
- AWS SM: `<+secrets.getValue("awsSecretsManager://prod/database")>`

## Templates

**Types:** Step, Stage, Pipeline, StepGroup (reusable across pipelines)

**Step Template Example:**
```yaml
template:
  name: Notify Slack
  type: Step
  spec:
    type: ShellScript
    spec:
      shell: Bash
      script: |
        curl -X POST $SLACK_WEBHOOK \
          -H 'Content-Type: application/json' \
          -d '{"text":"<+input>"}'
```

**Using Templates in Pipeline:**
```yaml
template:
  templateRef: standard_k8s_deploy
  versionLabel: "1.0.0"
  templateInputs:
    spec:
      service:
        serviceRef: my_service
      environment:
        environmentRef: production
```

## Policy as Code (OPA)

**Policy Structure (Rego):**
```rego
package pipeline

# Deny production deploys without approval
deny[msg] {
    some stage in input.pipeline.stages
    stage.stage.spec.environment.environmentRef == "production"
    not has_approval_step(input.pipeline)
    msg := "Production requires approval step"
}

# Require delegate selectors
deny[msg] {
    some stage in input.pipeline.stages
    stage.stage.spec.environment.environmentRef == "production"
    not stage.stage.spec.infrastructure.spec.delegateSelectors
    msg := "Production must specify delegate selectors"
}
```

**Policy Set Configuration:**
```yaml
policySet:
  name: Production Governance
  policySetType: Pipeline
  policies:
    - policyRef: require_approval
      severity: error
    - policyRef: require_delegate_selectors
      severity: error
  entitySelector:
    - type: PIPELINE
      filter:
        - key: projectIdentifier
          value: production_project
```

**Evaluation Points:** On Save, On Run

## Audit Logs

**Query Logs:**
```bash
curl -X POST "https://app.harness.io/gateway/ng/api/audits/list" \
  -H "x-api-key: ${HARNESS_API_KEY}" \
  -d '{"accountIdentifier":"...", "pageIndex":0, "pageSize":20}'
```

**Event Types:** CREATE, UPDATE, DELETE, LOGIN, PIPELINE_START, PIPELINE_END

## API Reference

**Authentication:**
```bash
# API Key
curl -H "x-api-key: ${HARNESS_API_KEY}"

# Bearer Token
curl -H "Authorization: Bearer ${TOKEN}"
```

**Common Endpoints:**
- Users: `GET /ng/api/user/users`
- User Groups: `GET /ng/api/user-groups`
- Roles: `GET /ng/api/roles`
- Resource Groups: `GET /ng/api/resourcegroup`
- Connectors: `GET /ng/api/connectors`
- Secrets: `GET /ng/api/v2/secrets`
- Delegates: `GET /ng/api/delegate-token-ng`
- Templates: `GET /template/api/templates`
- Audit Logs: `POST /ng/api/audits/list`

**Create Project:**
```bash
curl -X POST "https://app.harness.io/gateway/ng/api/projects" \
  -H "x-api-key: ${HARNESS_API_KEY}" \
  -d '{"project":{"name":"My Project","identifier":"my_project","orgIdentifier":"default"}}'
```

## Best Practices

**Delegate Management:**
1. Deploy 2+ replicas for HA
2. Resource sizing: 2GB RAM, 0.5 CPU minimum
3. Use meaningful tags for routing
4. Enable auto-upgrade
5. Monitor and export metrics

**Security:**
1. Least privilege RBAC
2. Use external secret managers with rotation
3. Service accounts for automation
4. Regular audit log review
5. OPA for governance enforcement

**Organization:**
1. Logical org/project hierarchy
2. Consistent naming conventions
3. Reuse templates across projects
4. Document all resources

## Related Documentation

- [Harness Docs](https://developer.harness.io/docs/platform)
- [Delegate Guide](https://developer.harness.io/docs/platform/delegates)
- [RBAC Guide](https://developer.harness.io/docs/platform/role-based-access-control)
- [Connectors](https://developer.harness.io/docs/platform/connectors)
- [Secrets](https://developer.harness.io/docs/platform/secrets)
- [Templates](https://developer.harness.io/docs/platform/templates)
- [Governance](https://developer.harness.io/docs/platform/governance)

Overview

This skill provides Harness Platform administration guidance and tooling for delegates, RBAC, connectors, secrets, templates, policy-as-code (OPA), user management, audit logs, and governance. It consolidates operational commands, configuration patterns, and best practices to run and secure Harness at account, org, and project scope. Use it to standardize deployments, access controls, secrets handling, and policy enforcement across your organization.

How this skill works

The skill inspects and describes platform hierarchy and resource scopes (account, org, project) and walks through delegate deployment, connector configuration, and secret manager integrations. It maps RBAC roles, custom role examples, and group bindings, and shows how to author and apply OPA policies and policy sets for pipeline governance. It also provides API examples for managing users, connectors, templates, delegates, and querying audit logs.

When to use it

  • Onboard or audit a new Harness account and set up org/project structure
  • Deploy or troubleshoot Harness delegates (Kubernetes, Docker, Shell, ECS)
  • Implement least-privilege RBAC, custom roles, and service accounts for automation
  • Configure connectors and external secret managers (Vault, AWS SM, Azure Key Vault)
  • Enforce pipeline governance with OPA policies and policy sets
  • Query audit logs and integrate operational monitoring or compliance workflows

Best practices

  • Deploy delegates with 2+ replicas and minimum sizing (2GB RAM, 0.5 CPU) for HA
  • Use meaningful delegate selectors/tags to route tasks and enforce environment boundaries
  • Follow least-privilege RBAC, bind roles to groups, and use service accounts for automation
  • Prefer external secret managers with rotation (Vault, AWS/GCP/Azure) and reference secrets securely
  • Standardize templates (step, stage, pipeline) and reuse across projects to reduce drift
  • Enforce policies as code (Rego) to block unsafe pipeline runs and ensure required approvals

Example use cases

  • Install Kubernetes delegates with Helm and validate health for production workloads
  • Create a Deployment Manager custom role and bind it to a team resource group
  • Configure an AWS connector using IRSA for EKS and test connectivity via API
  • Author OPA policy that denies production deploys without approval and enforce on save/run
  • Integrate HashiCorp Vault connector and reference secrets in pipeline templates
  • Query audit logs to investigate who triggered a pipeline start or configuration change

FAQ

How do I route tasks to specific delegates?

Add delegate selectors (labels) when installing delegates and reference those selectors in pipeline infrastructure or step configurations to ensure tasks target intended delegates.

Which secret manager should I use?

Prefer external managers (Vault, AWS Secrets Manager, GCP Secret Manager, Azure Key Vault) for rotation and centralized control; use Harness built-in only for non-production or simple use cases.