agentsclimarketplace

Oci iam admin

Skill adibirzu/oci-skills/skills/oci-iam-admin

IAM and tenancy administration for any OCI tenancy via oci-cli: users, groups, group memberships, dynamic groups (matching rules), policies (author/scope a statement with least privilege, detect and rewrite tenancy-wide manage-all grants), compartments (create, move, delete, subtree traversal), budgets and alert rules, quotas, service limits / resource-availability pre-checks, tags (namespaces, defined, freeform, cost-tracking), regions, and Identity Domains vs legacy IAM. Use whenever a request mentions OCI IAM, OCID, compartment, policy, tenancy, dynamic group, budget, quota, service limit, tag namespace, auth token, generic OIDC/OAuth or SAML application integration, claims/scopes, or SCIM provisioning. A standalone compliance/CIS-style policy audit sweep (no authoring) is oci-security-compliance.From its SKILL.md

Install
npx -y skills add adibirzu/oci-skills --skill oci-iam-admin

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

8.2 KB, as published. Nobody here has run it

OCI IAM & Tenancy Admin

Administer identity and tenancy structure safely. This plugin leans on the shared tenancy-safety core — all CLI through oci_cli, all mutations through run_action.

First move (always)

  1. Confirm the target tenancy/compartment before any change:
    ./scripts/oci_preflight.sh -c <COMPARTMENT_OCID>
    
  2. Search the KB before deep debugging:
    python3 scripts/kb_lookup.py "symptom words" iam
    
  3. For a read-only posture snapshot:
    python3 scripts/iam_audit.py | redact
    

Read ../../references/iam-tenancy.md for command shapes and ../../references/tenancy-safety.md for the safety rules.

Routing — pick the task

Request mentions…Go to
compartment create/move/delete, hierarchy, subtreeCompartments
user, group, add-user, membershipUsers & groups
dynamic group, matching rule, instance/function principalDynamic groups
policy, allow statement, least privilege, manage-allPolicies
Identity Domain, OIDC/OAuth app, SAML app or IdP, scopes/claims, SCIM users/groups, userName filter, auth tokenIdentity Domains
budget, spend alert, forecast thresholdBudgets
quota policy, service limit, capacity, LimitExceededQuotas & limits
tag namespace, defined/freeform tag, cost-trackingTags

Common multi-step flows

TaskSequence
Onboard a team compartmentcompartment create → idempotent group create (search by name, 409 = exists) → scoped policy create (verb + resource-family in this compartment) → budget create + 80% forecast alert
Least-privilege reviewpolicy list → grep manage all-resources in tenancy → iam_audit.py for effective grants → propose a compartment-scoped rewrite
Grant a resource principaldynamic-group create with a matching rule (instance.id/resource.id) → policy allowing the dynamic-group → verify with dynamic-group get (KB-021)
Pre-flight a provisionlimits resource-availability get for the shape/limit → if blocked, request an increase before creating, not mid-create (KB-003, KB-015)
Register an OIDC/OAuth applicationidentify domain/app type → read integrations → define origins, grants, scopes and claims → credential-risk activation → validate discovery, audience and least privilege
Register a SAML integrationestablish IdP/SP roles → exchange reviewed metadata/certificates → map subject/attributes/groups → credential-risk activation → test signed SSO/SLO and failures
Provision users/groups with SCIMdefine authoritative source/conflict policy → read schemas/filters → least-privilege client → staged sync → reconcile users, groups, memberships and failures

Identity integration guidance is protocol-generic. Framework-specific recipes such as Better Auth remain application engineering, not an IAM control-plane contract.

Common tasks

# Compartments — traverse subtree in one read.
oci_cli iam compartment list --compartment-id <TENANCY_OCID> \
  --compartment-id-in-subtree true --all

# Idempotent group create — search by name, treat 409 as exists.
oci_cli iam group list --compartment-id <TENANCY_OCID> --all \
  --query "data[?name=='db-admins'].id | [0]" --raw-output
# only if empty/null:
run_action --risk additive --compartment <COMPARTMENT_OCID> --description "create group" -- oci_cli iam group create \
  --compartment-id <TENANCY_OCID> --name db-admins --description "DB admins"

# Policy least-privilege review — flag tenancy-wide manage-all.
oci_cli iam policy list --compartment-id <TENANCY_OCID> --all \
  --query "data[].statements[]" --raw-output \
  | grep -iE "manage +all-resources +in +tenancy"

# Dynamic group — grant a resource principal by matching rule.
run_action --risk additive --compartment <COMPARTMENT_OCID> --description "create dynamic group" -- oci_cli iam dynamic-group create \
  --name fn-runners --description "Function principals" \
  --matching-rule "any { instance.id = '<INSTANCE_OCID>' }"

# Budget + 80% forecast alert.
# <TMP_0600_TARGETS_JSON> contains ["<COMPARTMENT_OCID>"].
run_action --risk additive --compartment <COMPARTMENT_OCID> --description "create budget" -- oci_cli budgets budget create \
  --compartment-id <TENANCY_OCID> --target-type COMPARTMENT \
  --targets file://<TMP_0600_TARGETS_JSON> --amount 500 --reset-period MONTHLY \
  --display-name db-prod-budget

# Service-limit pre-check before provisioning (KB-003).
oci_cli limits resource-availability get --service-name compute \
  --limit-name standard-e4-core-count --compartment-id <COMPARTMENT_OCID>

Identity Domains: SCIM filters are camelCase (userName eq "x"), responses are kebab-case (KB-002). Auth tokens come from iam auth-token create, not identity-domains.

For OIDC/OAuth, SAML, or SCIM, read the domain and existing applications first. Treat client-secret generation, certificate/key association, token generation, and application activation as credential risk. Put secret payloads in a reviewed 0600 file:// command document with --from-json only after installed help validates the exact shape; never print sensitive claims. Validate issuer/audience, redirect origins, signing, scopes/roles, subject/group mapping, provisioning conflicts, deactivation, and rollback.

Safety notes

  • Read before write. get/list first; treat 409 Conflict as "exists".
  • Destructive = confirm or dry-run. Compartment/user/group deletes and region subscriptions go through confirm and/or OCI_SKILLS_DRY_RUN=true.
  • Never print OCIDs or auth tokens. Pipe output through redact; an auth token is shown once at creation — never log or commit it.
  • Flag manage all-resources in tenancy — effective admin; recommend scoping to a compartment with a verb and resource-family.
  • Never invent oci flags. Fetch the exact command shape first: python3 scripts/oci_cli_help.py <service> <op>.

Expected output

**Finding** — concrete IAM/tenancy state or issue (names, not OCIDs).
**Evidence** — redacted CLI/API result or iam_audit.py line.
**Action** — exact command(s); destructive ones gated by confirm/dry-run.
**Verification** — re-list/get showing the desired state.
**KB** — KB entry used (e.g. KB-002, KB-003), or new KB-<n> added.

Official documentation

IAM · Identity Domains · Identity Domains REST/SCIM API · OAuth scopes · Service Limits. Full list in the iam-tenancy reference.

Open Knowledge Format grounding — every doc link here is registered and liveness-checked in the oracle-docs.md index (the pack's single source of truth). When extending this skill to build an OCI customer solution, cite the most specific official page through that index so every claim stays verifiable; the non-official MCP gateway is never a source of truth.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.