AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Iam Best Practices

skill-shieldnet-360-secure-vibe-iam-best-practices · by ShieldNet-360

Least-privilege IAM design, key rotation, MFA enforcement, role assumption, and cross-account access patterns for AWS / GCP / Azure / Kubernetes — Applies to: when generating IAM policies, roles, or trust documents; when wiring CI/CD service accounts or workload identities; when reviewing access-key creation, rotation, or revocation; when designing cross-account or cross-tenant access

No reviews yet
0 installs
43 views
0.0% view→install

Install

$ agentstack add skill-shieldnet-360-secure-vibe-iam-best-practices

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-shieldnet-360-secure-vibe-iam-best-practices)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
2mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Iam Best Practices? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Identity & Access Management Best Practices

Least-privilege IAM design, key rotation, MFA enforcement, role assumption, and cross-account access patterns for AWS / GCP / Azure / Kubernetes

ALWAYS

  • Grant the minimum permissions required for the workload's stated job (NIST AC-6). Start with a deny-by-default policy and add concrete actions with explicit Resource ARNs; never Action: "*" combined with Resource: "*".
  • Prefer workload identity (IAM roles for service accounts on EKS, GKE Workload Identity, Azure Managed Identity) over long-lived access keys. Static access keys are the exception, not the default.
  • Require MFA for every human IAM user, especially any principal that can assume a privileged role. Enforce MFA via an IAM policy condition (aws:MultiFactorAuthPresent: true), not just a directory-level setting.
  • Rotate access keys, service-account keys, and signing keys on a documented schedule (≤ 90 days). Detect inactive credentials (≥ 90 days unused) and disable them automatically.
  • Use role assumption with sts:AssumeRole + ExternalId for cross-account trust. The ExternalId must be unique per consumer and stored as a secret in both accounts.
  • Issue session-scoped credentials with MaxSessionDuration ≤ 1h for human roles and ≤ 12h for break-glass roles. Long-lived sessions defeat rotation.
  • Separate deploy and runtime identities. The CI/CD pipeline gets a deploy role; the running service gets a distinct runtime role with no IAM-mutating permissions.
  • For Kubernetes RBAC, scope Role / RoleBinding to a single namespace; use ClusterRole only for true cluster-wide objects. Audit cluster-admin bindings on every PR.
  • Log every IAM-mutating call (CloudTrail / Cloud Audit Logs / Azure Activity Log) to a tamper-evident sink. Alert on policy changes, iam:PassRole, iam:CreateAccessKey, and sts:AssumeRole from unexpected principals.
  • For break-glass access (root, owner, cluster-admin), require an out-of-band approval (e.g., PagerDuty incident + ticket) and emit an immediate alert on every use.
  • Tag every IAM principal with owner, environment, and purpose. Use these tags in SCPs / org policies to constrain blast radius.

NEVER

  • Use the root account for day-to-day operations. Root credentials get a hardware MFA device, are stored offline, and are used only for the small set of root-only tasks (e.g., closing the account, changing the support plan).
  • Embed long-lived access keys in source, container images, AMIs, or CI environment variables when a workload identity is available.
  • Grant iam:PassRole with Resource: "*". Always pin the role ARNs the caller may pass to downstream services.
  • Grant iam:* or sts:* to a runtime workload — these are deploy-time permissions only.
  • Share a single IAM user across multiple humans or services. One principal per identity is the audit invariant.
  • Use AdministratorAccess (or any *:*) managed policy on a routine basis; treat it as a break-glass-only attachment.
  • Trust any cross-account assume-role without an ExternalId condition for third-party integrations (Confused Deputy: AWS Security Bulletin 2021).
  • Hard-code AWS / GCP / Azure ARNs / resource IDs in policy documents without a corresponding tag-based or organization-path scope (when the number of resources can grow).
  • Disable MFA for a principal to "fix" a login problem — rotate the device, do not remove the requirement.
  • Persist OIDC / SAML assertion tokens beyond their stated TTL. Refresh by re-assertion, not by storing the original token.

KNOWN FALSE POSITIVES

  • Resource: "*" is acceptable for inherently account-scoped read operations like ec2:DescribeRegions or sts:GetCallerIdentity — those APIs do not accept a resource ARN.
  • Service-linked roles (e.g., AWSServiceRoleForAutoScaling) ship with broader permissions than your custom roles; that is by design and managed by the provider.
  • One-time bootstrap operators (Terraform-runners in a fresh account) often need elevated permissions; gate by tag / SCP and revoke after the bootstrap is complete.
  • Local-development emulators (LocalStack, GCS emulator) may accept any credentials; that is a property of the emulator, not a real grant.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.