Skip to content

IAM Practical Design and Security Operations

Last reviewed: August 2026

This document focuses on the practical operation of IAM — choosing credentials, applying them by identity type, practicing least privilege, and security checks.

There are broadly three ways to authenticate in the cloud. Which credential you use for which identity is the core of security.

Method Characteristics Suitable for
Long-term credentials (Access Key, API Key) Never expire. Immediately exploitable if leaked ❌ Avoid using if at all possible
Role-based temporary credentials (IAM Role, Managed Identity) Automatically issued/expired. No secrets needed in code ✅ Devices/services (workloads)
Federation (OIDC, SAML, Workload Identity) Exchanges an external IdP token for cloud permissions ✅ People (SSO), third parties, CI/CD

There are broadly three types of identity managed under IAM. Each has a different method for creation, granting permissions, and revocation.

Lifecycle stage What to do Vendor-specific method
Onboarding Create the account + assign to a group + enforce MFA AWS: create a user in Identity Center or integrate an external IdP (Okta, Microsoft Entra ID). Azure: create an Entra ID user. Google Cloud: Cloud Identity or Workspace. OCI: create an Identity Domain user
Department transfer Remove existing groups + assign new groups If permissions are group-based, only the group needs to change. If individual policies were attached, manual cleanup is required
Offboarding Disable the account → invalidate sessions → delete after a retention period Deleting immediately makes audit tracing impossible. Retaining a disabled account for 90 days is recommended
Periodic review Detect unused accounts/excessive permissions AWS: Access Analyzer, Azure: Access Reviews, Google Cloud: IAM Recommender

Practical principles:

  • Don’t attach policies directly to individual users → manage permissions on a group basis
  • Console access must require SSO + MFA
  • Include “disable cloud account” in the HR offboarding checklist

How to grant permissions to non-human workloads such as EC2, Lambda, containers, and CI/CD pipelines.

Vendor Recommended method Description
AWS IAM Role (Instance Profile, Task Role, Execution Role) Attaching a role to EC2/ECS/Lambda automatically injects temporary credentials
Azure Managed Identity (System-assigned / User-assigned) Attached to VM/App Service/Function. Tokens are automatically issued/renewed
Google Cloud Attached Service Account + Workload Identity Attach a Service Account to a GKE Pod. No key file needed
OCI Instance Principal / Resource Principal Grant permissions to Compute/Function via dynamic group matching

Never do this:

  • Hardcode an Access Key/Service Account Key in an environment variable or code
  • Share a single service account across multiple workloads (prevents permission separation)

Do this instead:

  • Create a separate role/identity per workload (enables least privilege)
  • Issue temporary credentials for CI/CD pipelines via OIDC Federation (e.g., GitHub Actions → AWS Role)

Third Parties (external partners/SaaS/vendors)

Section titled “Third Parties (external partners/SaaS/vendors)”

For when an external organization or SaaS service needs access to your cloud resources.

Scenario Recommended method Caution
External SaaS accessing your S3/Blob Cross-account Role (AWS), Service Principal + RBAC (Azure), Workload Identity Federation (Google Cloud) Specify the external account ID explicitly in the trust policy. No wildcards (*)
Partner engineer accessing the console Create a dedicated role + time limit + enforce MFA No standing access. Activate only when needed via a JIT approach
Auditing/consulting firms Read-only role + limited to specific resources Don’t grant full-account read access. Only the necessary services
External CI/CD services (e.g., GitHub Actions) OIDC Federation (keyless token exchange) Use OIDC instead of long-term keys. Restrict by repository/branch conditions

Vendor-specific external access mechanisms:

Vendor Cross-account/tenant External IdP integration
AWS Cross-account IAM Role (external account ID specified in trust policy) OIDC/SAML Federation, IAM Identity Center
Azure B2B Collaboration (Entra ID guests), Lighthouse (for MSPs) Entra External ID, Workload Identity Federation
Google Cloud Cross-project IAM binding, Workload Identity Pool Workforce Identity Federation, Workload Identity Federation
OCI Cross-tenancy Policy (define tenancy), Identity Domain Federation SAML/OIDC Federation

To uphold the principle of least privilege, you need to continuously monitor actual permission usage and remove unnecessary permissions. IAM anomaly detection (abnormal API calls, etc.) integrates with the threat detection services covered in Security Posture Management.

Vendor Product Function
AWS IAM Access Analyzer Detects unused roles/permissions. Automatically generates least-privilege policies based on CloudTrail
AWS CloudTrail Records every API call. Audits who did what
Azure Entra ID Governance (Access Reviews) Automates periodic permission reviews. Detects excessive permissions
Google Cloud IAM Recommender Detects unused permissions + recommends reductions
Google Cloud Policy Analyzer Analyzes who can access which resources
  • Start with broad permissions, then narrow them down after a period of time to only what was actually used.
  • Review unused roles and permissions regularly (quarterly).
  • Use roles/managed identities for service-to-service access instead of long-term credentials (Access Keys).

Multi-Cloud Unified Identity (Identity Federation)

Section titled “Multi-Cloud Unified Identity (Identity Federation)”

Creating separate accounts with each vendor when using multiple clouds leads to fragmented management. Configuring SSO (Single Sign-On) to all clouds from a single IdP (Identity Provider) is the starting point for multi-cloud IAM.

Approach Description Tools
Central IdP + federation Authenticate once with a single IdP, then federate to each cloud via SAML/OIDC Microsoft Entra ID, Okta, Google Workspace
AWS Identity Center AWS-native SSO. Can integrate with an external IdP AWS IAM Identity Center
Cross-cloud workload identity Handles service-to-service authentication without long-term keys OIDC Federation, Workload Identity
  • Is MFA configured on the root/global admin account?
  • Is the root account avoided for day-to-day work?
  • Are there no services still using long-term credentials (Access Keys)? (Convert to role-based)
  • Have accounts/roles unused for 90+ days been disabled?
  • Are there no users with excessive permissions (e.g., AdministratorAccess)?
  • Does service-to-service access use roles/Managed Identity/Instance Principal?
  • Are time limits and conditions set for external (third-party) access?
  • Is CloudTrail/Activity Log/Audit Log enabled?
  • Are periodic (quarterly) permission reviews performed?
  • Is disabling departed employees’ accounts included in the HR process?
  • When using multiple clouds, is SSO configured through a central IdP?
  • Attaching policies directly to individual users — without group-based management, permission cleanup gets missed during offboarding/transfers, and excessive permissions accumulate
  • Using long-term Access Keys in CI/CD — storing long-term keys as secrets instead of using OIDC Federation makes them immediately exploitable if leaked
  • Deleting departed employees’ accounts immediately — deleting without first disabling makes audit tracing impossible. Retaining a disabled account for 90 days is recommended