Identity, access, and secrets
In modern cloud environments, identity serves as the primary security perimeter. Every interaction with a cloud platform—whether an engineer deploying infrastructure, a compute instance reading an object from a bucket, or a serverless function publishing an event to a queue—is an authenticated API call evaluated against granular authorization policies. Even the most robust private network topology cannot protect an infrastructure estate if identity policies grant excessive administrative privileges.
Structuring identity, access control, and secrets correctly guarantees that compromised components have a strictly confined blast radius.
Identities
A cloud provider's Identity and access managementthe provider's service holding every identity and the policies that bind identities to actions on resources. Every API call is checked against it.Full glossary entryIntroduced in Identity, access, and secrets (IAM) service oversees two distinct categories of principals:
- Human identities: Represent individual engineers, operators, and administrators. Organizations should federate human access directly from enterprise identity providers using SAML 2.0 or OpenID Connect (OIDC). This guarantees that Multi-Factor Authentication (MFA) is enforced globally and that employee departure immediately revokes all cloud privileges across every environment.
- Service identities: A Service identityan identity belonging to a piece of software rather than a person. It is created with the workload and never reuses a person's credentials.Full glossary entryIntroduced in Identity, access, and secrets (such as an IAM role or service account) belongs to an autonomous software workload—such as a virtual machine, a container pod, or a serverless function. Service identities do not possess passwords and authenticate using temporary cryptographic tokens issued directly by the cloud control plane.
Workloads should never execute using human credentials, and engineers should never perform interactive tasks using service account keys. Pledging credentials between human and machine contexts obscures audit trails and leads to orphaned access that persists indefinitely.
Policies and least privilege
A Policya statement of which identity may perform which actions on which resources. Anything not allowed is denied.Full glossary entryIntroduced in Identity, access, and secrets is a declarative document defining which actions an identity is authorized to execute against specific resource targets. Cloud policy engines evaluate permissions on an implicit default-deny basis: any action not explicitly granted by an allow rule is forbidden, and an explicit deny always overrides any matching allow.
The foundational principle of cloud security is Least privilegegiving an identity the permissions its job needs and nothing more, because the policy is the blast radius if the identity is compromised.Full glossary entryIntroduced in Identity, access, and secrets: granting an identity only the exact permissions necessary to accomplish its intended function, and nothing more. For instance, a background worker responsible for processing image uploads should receive read access exclusively to the incoming upload bucket and write access to the processed thumbnail bucket, rather than broad administrative rights across all storage resources.
While cloud providers provide broad, pre-packaged administrative roles to simplify initial setup, using these wildcard roles in production represents a severe security risk. A service identity configured with administrator privileges grants an attacker complete operational control if that specific service is ever compromised.
Assign dedicated, tightly scoped service identities to each application component.
- Provision a unique service identity for the specific workload rather than sharing credentials across components.
- Draft an explicit policy defining only the exact API actions and resource identifiers the service requires.
- Attach the policy directly to the identity, avoiding wildcard permissions and broad administrator roles.
- Periodically audit access logs and revoke unused permissions as service responsibilities evolve.
Workload identity versus static access keys
Historically, software running on servers authenticated to cloud APIs using long-lived Access keya long-lived static credential that must be copied to wherever it is used, and so ends up in source control, config files, and images.Full glossary entryIntroduced in Identity, access, and secrets pairs (a public key ID and a private secret). However, static keys represent a significant security risk: they are frequently committed to source code repositories, embedded in container image layers, or stored unencrypted on developer laptops where they remain unrotated for months or years.
Modern cloud architectures eliminate static credentials in favor of Workload identityshort-lived credentials issued automatically to a machine, pod, or function through its attached identity, with nothing to store and nothing to leak.Full glossary entryIntroduced in Identity, access, and secrets. Under this model, compute platforms leverage local metadata services or Kubernetes projected service account tokens to request short-lived, dynamically rotated authorization tokens from the cloud provider. The platform refreshes these credentials automatically before they expire. Because no static secrets are written to persistent storage, there are no credentials for attackers to exfiltrate.
When external workloads (such as third-party CI/CD runners) need to authenticate to cloud resources, configuring OIDC federation allows those external systems to exchange temporary identity tokens for short-lived cloud credentials, completely eliminating the need for static access keys.
Secrets management
Applications inevitably require access to third-party API tokens, database passwords, and private signing keys that cannot be modeled as cloud IAM identities. These sensitive assets belong in a dedicated Secrets managera store that keeps secrets encrypted, logs every read, rotates what it can, and hands values only to identities allowed to fetch them.Full glossary entryIntroduced in Identity, access, and secrets.
A secrets manager stores sensitive strings encrypted at rest, audits every read request, and orchestrates automated rotation schedules for database credentials. Workloads authenticate to the secrets manager at startup using their workload identity, retrieve required credentials into memory, and avoid writing plaintext secrets to disk or configuration files.
Encryption and key management
Cloud providers encrypt data at rest by default using platform-managed keys. For sensitive or highly regulated datasets, organizations use a Key management servicea service that holds encryption keys and controls which identities may use each one, adding a second gate on the most sensitive data.Full glossary entryIntroduced in Identity, access, and secrets (KMS) to maintain Customer Managed Encryption Keys (CMEK).
KMS platforms utilize Hardware Security Modules (HSMs) and envelope encryption, where local data encryption keys are protected by root keys stored within the KMS. This architecture introduces a secondary authorization gate: accessing encrypted data requires explicit IAM permissions on both the storage resource and the underlying cryptographic key. Data in transit is protected using TLS 1.3, terminating on managed load balancers and private service endpoints.
Immutable audit logging
Cloud control planes record every administrative and data-plane API call in centralized audit logs—capturing timestamps, calling identities, source IP addresses, and request parameters. These audit logs are vital for forensics during security incidents and for validating regulatory compliance. Audit trails should be routed to a dedicated, locked-down security account with write-once-read-many (WORM) storage to prevent compromised credentials from altering or deleting their own activity records.
Multi-account governance
Hosting all environments within a single cloud account creates an unmanageable blast radius where a single mistake can impact the entire organization. Modern enterprises structure their cloud footprint across multiple isolated accounts or projects organized under a centralized parent organization.
Separating environments (such as development, staging, and production) into distinct accounts provides strong isolation boundaries: quotas are independent, networks are decoupled, and IAM policies cannot cross account boundaries without explicit trust relationships. Organizational guardrail policies enforced at the parent root establish non-bypassable constraints, preventing individual accounts from disabling audit logging or creating unencrypted storage buckets.
Terms introduced
- Identity and access management: the provider's service holding identities and the policies that bind them to actions on resources.
- Service identity: an identity belonging to a piece of software rather than a person.
- Policy: a statement of which identity may do which actions on which resources.
- Least privilege: giving an identity the permissions its job needs and nothing more.
- Workload identity: short-lived credentials issued to a workload automatically, with nothing to store.
- Access key: a long-lived static credential that must be stored, and so can leak.
- Secrets manager: a store that keeps secrets encrypted, logs reads, and hands values only to allowed identities.
- Key management service: a service that holds encryption keys and controls which identities may use them.
How providers do it
Identity and access management systems enforce access control across all three clouds through three core components: an authenticated principal, a defined set of permissions, and an architectural scope where those permissions take effect.
| Concept | AWS | Azure | Google Cloud |
|---|---|---|---|
| Identity and access management | AWS IAM | Microsoft Entra ID with Azure RBAC | Google Cloud IAM |
| Human administrative identity | IAM Identity Center permission set | Entra ID tenant user | Cloud Identity or Google Workspace account |
| Machine service identity | IAM role | Managed identity, App registration service principal | Service account |
| Access policy definition | JSON policy statement (Actions, Resources, Conditions) | Role definition assigned at a management scope | IAM policy binding roles to members on a resource |
| Dynamic workload identity | EC2 instance profile, EKS Pod Identity | Azure Managed Identity, Entra Workload ID | Attached service account, Workload Identity Federation |
| Static access credential | Long-lived IAM user access keys | App registration client secrets, storage access keys | Service account JSON private key files |
| Encrypted secrets vault | AWS Secrets Manager, SSM Parameter Store | Azure Key Vault | Google Cloud Secret Manager |
| Cryptographic key management | AWS Key Management Service (KMS) | Azure Key Vault Keys, Azure Managed HSM | Google Cloud KMS |
| Control plane audit trail | AWS CloudTrail | Azure Activity Log, Entra audit logs | Google Cloud Audit Logs |
| Organizational governance guardrails | Service Control Policies (SCPs) | Azure Policy | Google Cloud Organization Policies |
| Resource boundary container | AWS Account (organized under AWS Organizations) | Azure Subscription (organized under Management Groups) | Google Cloud Project (organized in Folders and Organizations) |
| Least-privilege policy analyzer | AWS IAM Access Analyzer | Entra Access Reviews | Google Cloud IAM Recommender |
Every product name and technical mapping above is confirmed against official documentation. Automated privilege analysis capabilities and external credential federation limits are detailed in the provider tabs below.
Two policy evaluation and auditing nuances require careful operational attention:
- Explicit Deny Precedence: In AWS IAM, an explicit
Denystatement in any applicable policy immediately overrides allAllowstatements across all evaluation layers. In Google Cloud IAM, standard role bindings only grant permissions (allows); enforcing explicit denials requires configuring specialized Deny Policies, which operate as an independent control plane layer. - Data-Plane Audit Logging: While control plane administrative actions are logged automatically across all platforms, data-plane access (such as reading individual objects from a bucket or querying a database table) is not enabled by default in Google Cloud Audit Logs due to volume considerations. Organizations subject to compliance audits must explicitly enable Data Access audit logs for sensitive services.
- AWS
- Azure
- Google Cloud
What this maps to: AWS IAM holds identities and policies. People signing in from a directory go through IAM Identity Center. Secrets live in Secrets Manager or Systems Manager Parameter Store, keys in AWS KMS, and the audit log is CloudTrail.
| Concept | On AWS | Status |
|---|---|---|
| Human identity | Preferably a permission set in IAM Identity Center, backed by your directory. IAM users exist but are discouraged for people | confirmed |
| Service identity | An IAM role. Roles are assumed, not logged into, and hand out short-lived credentials | confirmed |
| Policy | A JSON document of Allow and Deny statements over actions and resource ARNs. Explicit deny wins | confirmed |
| Workload identity | An instance profile on EC2, an execution role on Lambda, EKS Pod Identity or IRSA on Kubernetes, a task role on ECS | confirmed |
| Access key | An access key ID and secret access key on an IAM user. Rotate, or better, replace with a role | confirmed |
| Secrets manager | Secrets Manager, with built-in rotation for RDS and a few others. Parameter Store SecureString for cheaper, simpler secrets | confirmed |
| Key management | KMS. Customer managed keys carry their own key policy, which gates use separately from the resource's policy | confirmed |
| Audit | CloudTrail, per region or as an organisation trail, delivered to S3 with log file validation | confirmed |
| Organisation-wide guardrails | Service control policies (SCPs) in AWS Organizations set the maximum permissions for every identity in an account | confirmed |
| Finding over-broad access | IAM Access Analyzer reports resources shared outside the account and unused permissions | confirmed |
Their vocabulary
| Standard term | Their term |
|---|---|
| Service identity | Role |
| Attach an identity to a machine | Instance profile |
| Least privilege review | Access Analyzer, unused access findings |
| Resource name | ARN |
Where to look
The IAM console's credential report lists every user and how old each key is. When someone asks "who did that", start with CloudTrail Event history.
Last verified: never.
What this maps to: Every identity lives in Microsoft Entra ID, formerly Azure Active Directory. Azure RBAC binds an identity to a role on a scope. Secrets, keys, and certificates all go in Key Vault, one product for the three. For the audit trail you have the Activity log plus Entra's sign-in and audit logs.
| Concept | On Azure | Status |
|---|---|---|
| Human identity | A user in the Entra tenant, usually synced from on-premises Active Directory or created in Entra, in groups, with Conditional Access policies on sign-in | confirmed |
| Service identity | A managed identity (system-assigned, tied to one resource, or user-assigned, shared) or a service principal with a secret or certificate | confirmed |
| Policy | A role assignment: a role, a principal, and a scope. Scopes nest from management group to subscription to resource group to resource, and assignments inherit down | confirmed |
| Roles | The broad built-in roles are Owner, Contributor, and Reader. Finer-grained access comes from per-service roles such as Storage Blob Data Reader, or from custom roles you write yourself | confirmed |
| Workload identity | A managed identity on a VM, function app, Container App, or AKS pod through Entra Workload ID | confirmed |
| Access key | A client secret or certificate on a service principal, or the storage account's own access keys, which bypass RBAC and should be disabled where possible | confirmed |
| Secrets manager | Key Vault secrets, with versions, soft delete, and RBAC or access-policy permission models | confirmed |
| Key management | Key Vault keys, and Managed HSM for a dedicated hardware module; customer-managed keys on most services | confirmed |
| Audit | The Activity log for control-plane operations per subscription; Entra sign-in and audit logs for identity events; resource logs for data-plane reads where a service supports them | confirmed |
| Organisation-wide guardrails | Azure Policy at management group scope, and Entra Privileged Identity Management for time-limited elevation | confirmed |
| Finding over-broad access | Entra access reviews and Microsoft Defender for Cloud's recommendations | confirmed |
Their vocabulary
| Standard term | Their term |
|---|---|
| Identity provider | Entra ID (formerly Azure AD) |
| Service identity | Managed identity, or service principal |
| Policy | Role assignment |
| Guardrail | Azure Policy (which is not RBAC) |
Where to look
The Access control (IAM) blade on any resource shows assignments at that scope and inherited ones. The Activity log answers "who changed this".
Last verified: never.
What this maps to: Cloud IAM for policies, Cloud Identity or Google Workspace for people, service accounts for software, Secret Manager for secrets, Cloud KMS for keys, and Cloud Audit Logs for the audit trail.
| Concept | On Google Cloud | Status |
|---|---|---|
| Human identity | A Google account in Cloud Identity or Workspace, ideally synced from your directory, in groups | confirmed |
| Service identity | A service account, which is a resource in a project and also an identity | confirmed |
| Policy | An IAM policy is a list of bindings from a role to principals, attached to a resource. Policies inherit down from organization to folder to project to resource. There is no deny by default; deny policies exist as a separate feature | confirmed |
| Roles | Basic roles (Owner, Editor, Viewer) are the over-broad ones to avoid. Predefined roles are per service and fine-grained. Custom roles are yours | confirmed |
| Workload identity | A service account attached to a VM or Cloud Run service, and Workload Identity Federation for GKE pods and for workloads outside Google Cloud | confirmed |
| Access key | A service account key, a downloaded JSON file. An organization policy can forbid creating them, and it is a good idea to | confirmed |
| Secrets manager | Secret Manager, with versions and per-secret IAM. Rotation is a notification you act on rather than automatic | confirmed |
| Key management | Cloud KMS, with customer-managed encryption keys (CMEK) usable on most services | confirmed |
| Audit | Cloud Audit Logs: admin activity logs are always on; data access logs are opt-in per service and are the ones that record reads | confirmed |
| Organisation-wide guardrails | Organization policies constrain what any project may do, such as forbidding external IPs or service account keys | confirmed |
| Finding over-broad access | IAM Recommender suggests removing unused permissions from a binding | confirmed |
Their vocabulary
| Standard term | Their term |
|---|---|
| Service identity | Service account |
| Policy | IAM binding |
| Attach an identity to a machine | Attach a service account |
| Resource hierarchy | Organization, folder, project |
Where to look
The IAM page for a project lists every binding. Policy Analyzer answers "who can do X on Y". After an incident, start in Logs Explorer with the audit log filter.
Last verified: never.