ESC
Type to search guides, tutorials, and reference documentation.
Verified by Garnet Grid

Cloud IAM & Access Management

Design cloud IAM architecture. Covers least-privilege policies, role hierarchy, service accounts, cross-account access, identity federation, and auditing cloud access.

Cloud IAM is the most critical infrastructure decision you’ll make. A misconfigured IAM policy is the root cause of most cloud breaches — overly permissive roles, long-lived credentials, and unmonitored service accounts. This guide covers practical IAM architecture for AWS, GCP, and Azure.


Least Privilege Framework

LayerWhat to RestrictHow
IdentityWho can accessNamed users, service accounts, no shared creds
ActionWhat they can doSpecific API actions, not * wildcard
ResourceWhat they can touchSpecific ARNs/resources, not *
ConditionWhen/where they can actIP range, MFA required, time window

AWS IAM Policy Example

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::company-data-bucket/team-alpha/*",
      "Condition": {
        "Bool": {"aws:MultiFactorAuthPresent": "true"},
        "IpAddress": {"aws:SourceIp": "10.0.0.0/8"}
      }
    }
  ]
}

Role Hierarchy

Organization Root
├── Admin Account (billing, org management)
│   └── OrgAdmin role (MFA + approval required)

├── Security Account
│   ├── SecurityAudit role (read-only across all accounts)
│   └── IncidentResponse role (break-glass, time-limited)

├── Production Account
│   ├── Developers → ReadOnly role
│   ├── SRE → OperationsRole (deploy, restart, investigate)
│   └── Service accounts → per-service minimal role

├── Staging Account
│   ├── Developers → PowerUser role
│   └── CI/CD → DeployRole (scoped to staging)

└── Development Account
    └── Developers → AdministratorAccess (sandbox)

Service Account Best Practices

PracticeImplementation
One per serviceorder-service-sa, not shared-service-account
Minimal permissionsOnly the APIs the service actually calls
No long-lived keysWorkload identity (GKE), IRSA (EKS), managed identity (Azure)
RotationIf keys required, rotate every 90 days automated
MonitoringAlert on unused service accounts, unusual API calls

Anti-Patterns

Anti-PatternProblemFix
Action: "*"Full access to every APIEnumerate specific actions
Resource: "*"Access to every resourceScope to specific ARNs
Shared service accountsCan’t audit who did whatOne SA per service, named users for humans
Long-lived access keysKeys leaked in code/logs used foreverWorkload identity, temporary credentials
No MFA on admin rolesPhished credentials = full accessMFA mandatory for all privileged roles
Permissions granted, never revokedPermissions accumulate over yearsQuarterly access review, auto-expire

Checklist

  • Least privilege: actions + resources scoped, no wildcards
  • MFA: mandatory for all human access to production
  • Service accounts: one per service, minimal permissions
  • No long-lived keys: workload identity or temporary credentials
  • Cross-account access: via roles, not shared credentials
  • Access review: quarterly, automated where possible
  • Break-glass: documented, time-limited, audited
  • CloudTrail/audit logs: enabled, monitored, alerted

:::note[Source] This guide is derived from operational intelligence at Garnet Grid Consulting. For cloud security consulting, visit garnetgrid.com. :::

Jakub Dimitri Rezayev
Jakub Dimitri Rezayev
Founder & Chief Architect • Garnet Grid Consulting

Jakub holds an M.S. in Customer Intelligence & Analytics and a B.S. in Finance & Computer Science from Pace University. With deep expertise spanning D365 F&O, Azure, Power BI, and AI/ML systems, he architects enterprise solutions that bridge legacy systems and modern technology — and has led multi-million dollar ERP implementations for Fortune 500 supply chains.

View Full Profile →