Planekeeper is currently in alpha development. Features and APIs may change. Feedback is welcome! Request early access to get started.

IAM Policy Documents

Reference guide for IAM-style policy documents used in Planekeeper role management.

Custom roles in Planekeeper use AWS IAM-style JSON policy documents to define permissions. This page explains the format, wildcards, deny behavior, and org scoping.

Policy Document Format

A policy document is a JSON object with a Statement array:

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["gather-jobs:list", "gather-jobs:get", "releases:*"],
      "Resource": "planekeeper:org:*:*:*"
    }
  ]
}

Each statement has three fields:

FieldTypeDescription
EffectstringAllow or Deny
Actionstring[]Array of resource:action patterns
ResourcestringARN-style resource identifier

Actions

Actions use the format resource:action. For example:

  • gather-jobs:list – list gather jobs
  • alerts:acknowledge – acknowledge an alert
  • roles:create – create a custom role

Available Resources

ResourceActions
agentslist
alert-configslist, create, get, update, delete, toggle
alertslist, get, get-summary, list-resolved, acknowledge, unacknowledge, resolve, bulk-acknowledge, list-actions, get-deliveries
api-keyslist, create, get, update, toggle, deactivate
dropdownslist
feedbackcreate
gather-jobslist, create, get, update, delete, run, clear-releases, get-summary
helm-sync-jobslist, create, get, update, delete, run, list-charts
monitoring-ruleslist, create, get, update, delete, toggle, evaluate
notification-channelslist, create, get, update, delete, toggle, test, validate, get-stats
notification-deliverieslist, list-dead, retry
notification-ruleslist, create, get, update, delete, toggle, simulate, get-stats
notification-settingsget, update
notification-templateslist, update, delete, preview
releaseslist, get, get-summary
roleslist, create, get, update, delete, assign
scrape-jobslist, create, get, update, delete, run, set-version, get-versions, get-summary
settingslist, get-effective, list-overrides, update-override, delete-override
submission-logslist
versionslist

Wildcards

Use * as a wildcard in either the resource or action position:

PatternMeaning
gather-jobs:*All actions on gather jobs
*:listList action on all resources
*:*Full access to everything

Resource ARN

The Resource field uses an ARN (Amazon Resource Name) format:

planekeeper:org:<org_id>:<resource>:<instance>
SegmentDescription
planekeeperFixed prefix
orgFixed segment
<org_id>Organization ID (number) or * for all orgs
<resource>Resource type (e.g., gather-jobs) or *
<instance>Resource instance (* for all)
info

Org ID is server-controlled

When you create or edit a role, the org ID in the Resource ARN is automatically set from your session. You cannot specify another organization’s ID – the server always stamps your own org. System roles use org:* to indicate they apply across all organizations.

Deny Statements

Use Effect: "Deny" to explicitly block specific actions. Deny always wins – if any statement denies an action, the action is blocked even if another statement allows it.

Example: Admin without role management

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["*:*"],
      "Resource": "planekeeper:org:*:*:*"
    },
    {
      "Effect": "Deny",
      "Action": ["roles:*"],
      "Resource": "planekeeper:org:*:roles:*"
    }
  ]
}

This grants full access to everything except role management.

Common Templates

Read-only (Viewer)

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["*:list", "*:get", "*:get-summary", "*:get-stats"],
      "Resource": "planekeeper:org:*:*:*"
    }
  ]
}

Operator (run jobs, acknowledge alerts)

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "*:list", "*:get", "*:get-summary",
        "gather-jobs:run",
        "scrape-jobs:run",
        "helm-sync-jobs:run",
        "alerts:acknowledge", "alerts:unacknowledge", "alerts:resolve"
      ],
      "Resource": "planekeeper:org:*:*:*"
    }
  ]
}

Full access except API keys and roles

{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["*:*"],
      "Resource": "planekeeper:org:*:*:*"
    },
    {
      "Effect": "Deny",
      "Action": ["api-keys:*", "roles:*"],
      "Resource": "planekeeper:org:*:*:*"
    }
  ]
}