> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tensor9.com/llms.txt
> Use this file to discover all available pages before exploring further.

# EKS Pod Identity

> EKS Pod Identity APIs with Cloud Adapter.

This page describes how EKS Pod Identity maps to services in the environment where the application runs. Some profiles adapt origin API calls; others translate infrastructure or document target-native behavior.

## Supported environments

| Environment        | Mapping              |
| ------------------ | -------------------- |
| Akamai             | API                  |
| Azure              | API + Infrastructure |
| DigitalOcean       | API                  |
| Google Cloud       | API                  |
| OCI                | API                  |
| Private Kubernetes | API                  |
| Scaleway           | API                  |

API means the profile adapts origin API behavior. Infrastructure means the profile changes provisioned resources or documents a target-native alternative without promising an origin API endpoint. Check the operation and capability tables for the behavior your application depends on.

## How the targets compare

Each row compares a capability of EKS Pod Identity with its adaptation on each target.
A dash means this profile does not state the capability for that target.

### Cloud Adapter

| Capability   | EKS Pod Identity | Akamai, Azure, DigitalOcean, Google Cloud, OCI, Private Kubernetes, and Scaleway · Cedar | Azure · IAM |
| ------------ | ---------------- | ---------------------------------------------------------------------------------------- | ----------- |
| API coverage | full             | high                                                                                     | partial     |

## On Akamai, Azure, DigitalOcean, Google Cloud, OCI, Private Kubernetes, and Scaleway

### Cedar

| Operation                                                                                                                                                 | Area         | Support   | Depth  | Notes                                                                                                                                                            |
| --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | --------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| CreatePodIdentityAssociation / DescribePodIdentityAssociation / ListPodIdentityAssociations / UpdatePodIdentityAssociation / DeletePodIdentityAssociation | Associations | Supported | Common | Maintains the cluster, namespace and service-account binding to one AWS role. Role chaining, inline session policies and disabling session tags are unsupported. |
| AssumeRoleForPodIdentity                                                                                                                                  | Credentials  | Supported | Common | Verifies the relaying agent and pod token, looks up the server-side association and evaluates role trust.                                                        |

#### AWS credential exchange

The EKS association records a role for a cluster, namespace and service account. The EKS Auth broker verifies the relaying agent and projected pod token, looks up that association and evaluates role trust before issuing a temporary AWS session. The caller cannot choose an arbitrary role in the credential request.

#### Permissions and native resource access

The AssumeRoleForPodIdentity response supplies a temporary AWS role session. With enforcement enabled, receiving adapters authorize AWS API requests against the role's supported IAM permissions using Cedar, the policy engine underpinning the adapter's authorization decisions. The adapter handles the AWS credential exchange; Cedar evaluates the supported permissions. Native cloud APIs use separate provider credentials and grants; Kubernetes RBAC governs access to the cluster API.

Each Cloud Adapter deployment has its own identities and policies. Cloud Adapter deployments do not share policies or distribute policy updates to one another. Policy changes are eventually consistent within that Cloud Adapter deployment. New grants may not be usable immediately, and revoked permissions may remain effective until the change propagates. Verify the dependent operation before relying on a policy change; a successful update alone does not prove propagation.

#### Deployment and renewal

Deploy association management, the EKS Auth broker and the cluster's credential agent together. Register the broker's backend role, authorize the agent to request credentials for the cluster, and configure an HTTPS broker address the agent can resolve and reach. The broker must be able to verify the cluster's token issuer and signing keys.

Configure admission to project a pod-bound token for audience `pods.eks.amazonaws.com` and select the AWS container credential provider. Check for other credentials that would take precedence. Verify the intended role in a newly admitted pod, a denied exchange and a denied resource action. Long-running pods must renew credentials; existing sessions and later exchanges can have different outcomes after an association or policy change.

#### Association and trust limits

Associations use one role in the cluster's Cloud Adapter deployment account. Role chaining, inline session policies and disabling session tags are unsupported. Omit `targetRoleArn`, `policy` and `disableSessionTags` from create and update requests, including an explicit `false` for `disableSessionTags`.

The role must trust `pods.eks.amazonaws.com` for both `sts:AssumeRole` and `sts:TagSession`. The broker derives the Kubernetes session tags from the verified pod. Supported trust conditions use `StringEquals` or `StringLike` on the six derived `aws:RequestTag` keys; other trust conditions are refused.

## On Azure

### IAM

#### Association management and AWS credential exchange

Maximum adaptation retains the EKS association API and the EKS Auth credential exchange as separate services. The association records which role belongs to a cluster, namespace and service account. For AssumeRoleForPodIdentity, the broker verifies the relaying agent and the pod's projected token, looks up that server-side association and evaluates the role's current trust policy. The caller does not choose an arbitrary role in the exchange request.

The result for an unchanged AWS SDK is an AWS role session. Azure workload-identity federation is a separate native access mechanism that produces Azure tokens; it does not replace the AWS session format. Verify the pod token issuer and audience, the association and role trust, and any Azure identity needed to access target resources. Changing an association affects subsequent exchanges; already issued sessions retain their own expiration.

Associations use one role in the cluster's Cloud Adapter deployment account. Role chaining, inline session policies and disabling session tags are unsupported. Omit `targetRoleArn`, `policy` and `disableSessionTags` from create and update requests, including an explicit `false` for `disableSessionTags`.

The role must trust `pods.eks.amazonaws.com` for both `sts:AssumeRole` and `sts:TagSession`. The broker derives the Kubernetes session tags from the verified pod. Supported trust conditions use `StringEquals` or `StringLike` on the six derived `aws:RequestTag` keys; other trust conditions are refused.

Deploy association management, the EKS Auth broker and the cluster's credential agent together. Register the broker's backend role, authorize the agent to request credentials for the cluster, and configure an HTTPS broker address the agent can resolve and reach. The broker must be able to verify the cluster's token issuer and signing keys.

Configure admission to project a pod-bound token for audience `pods.eks.amazonaws.com` and select the AWS container credential provider. Check for other credentials that would take precedence. Verify the intended role in a newly admitted pod, a denied exchange and a denied resource action. Long-running pods must renew credentials; existing sessions and later exchanges can have different outcomes after an association or policy change.

#### Native Azure identity

EKS Pod Identity associates a Kubernetes service account with an IAM role. An agent in the cluster gives the pod temporary credentials, without an OpenID Connect (OIDC) provider.

Azure uses **OIDC federation**. The pod authenticates with its service-account token as a user-assigned managed identity. A federated identity credential records the AKS cluster's issuer and the service account that may use that identity.

This diagram shows the native Azure binding. Maximum adaptation separately retains EKS association management and EKS Auth credential exchange for AWS SDK calls.

The pod still receives permissions without a stored client secret, but the AKS cluster must have its OIDC issuer enabled. Deployments moving from Pod Identity need to configure this additional dependency.

<div className="t9-diagram-scroll" role="region" aria-label="Scrollable diagram" tabIndex={0}>
  <img className="t9-diagram-light" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjA4IiB2aWV3Qm94PSIwIDAgODM2IDIwOCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJCZWZvcmU6IG9uIEFXUyBhbiBFS1MgUG9kIElkZW50aXR5IGFzc29jaWF0aW9uIGJpbmRzIGEgc2VydmljZSBhY2NvdW50IHRvIGFuIElBTSByb2xlIGFuZCBhbiBvbi1jbHVzdGVyIGFnZW50IGhhbmRzIGNyZWRlbnRpYWxzIHRvIHRoZSBwb2QsIHdpdGggbm8gT0lEQyBwcm92aWRlciBpbnZvbHZlZC4gTmF0aXZlIEF6dXJlIGFjY2VzczogdGhlIHBvZCB0b2tlbiBpc3N1ZWQgYnkgQUtTIGF1dGhlbnRpY2F0ZXMgYSBtYW5hZ2VkIGlkZW50aXR5IHRocm91Z2ggYSBmZWRlcmF0ZWQgY3JlZGVudGlhbC4gVGhlIHNlcGFyYXRlIEVLUyBhc3NvY2lhdGlvbiBhbmQgRUtTIEF1dGggYWRhcHRlciBwYXRoIGlzIGRlc2NyaWJlZCBpbiB0aGUgQVdTIGNyZWRlbnRpYWwgZXhjaGFuZ2Ugc2VjdGlvbi4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiMzMzQxNTV9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0icGkxIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiM5NGEzYjgiLz48L21hcmtlcj48L2RlZnM+CjxyZWN0IHg9IjE2IiB5PSI0NCIgd2lkdGg9IjM4NCIgaGVpZ2h0PSIxNDYiIHJ4PSIxNCIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA1Ii8+Cjx0ZXh0IHg9IjMwIiB5PSI2MiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6Izk0YTNiOCI+T04gQVdTIFRPREFZPC90ZXh0Pgo8cmVjdCB4PSIzMCIgeT0iODgiIHdpZHRoPSIxMDYiIGhlaWdodD0iNjYiIHJ4PSIxMSIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI4MyIgeT0iMTE4IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzBmMTcyYTsgZm9udC1zaXplOjEycHgiPlBvZDwvdGV4dD4KPHRleHQgeD0iODMiIHk9IjEzNCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPnNlcnZpY2UgYWNjb3VudDwvdGV4dD4KPGxpbmUgeDE9IjEzNiIgeTE9IjEyMSIgeDI9IjIwMCIgeTI9IjEyMSIgc3Ryb2tlPSIjOTRhM2I4IiBzdHJva2Utd2lkdGg9IjIiIG1hcmtlci1lbmQ9InVybCgjcGkxKSIvPgo8dGV4dCB4PSIxNjgiIHk9IjExMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDEwcHggJ1NGIE1vbm8nLCB1aS1tb25vc3BhY2UsICdKZXRCcmFpbnMgTW9ubycsIE1lbmxvLCBtb25vc3BhY2U7IGZpbGw6ICM2NDc0OGI7IGZvbnQtc2l6ZTo4cHgiPmFnZW50PC90ZXh0Pgo8cmVjdCB4PSIyMDQiIHk9Ijg0IiB3aWR0aD0iMTgyIiBoZWlnaHQ9Ijc0IiByeD0iMTEiIGZpbGw9IiNmZmYiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iMjk1IiB5PSIxMTAiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2NTAgMTMuNXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMGYxNzJhOyBmb250LXNpemU6MTJweCI+UG9kIElkZW50aXR5IGFzc29jaWF0aW9uPC90ZXh0Pgo8dGV4dCB4PSIyOTUiIHk9IjEyNiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPkVLUyBiaW5kcyBTQSDihpIgcm9sZTwvdGV4dD4KPHRleHQgeD0iMjk1IiB5PSIxNDIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiA2MDAgMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzA1OTY2OTsgZmlsbDojYjQ1MzA5Ij5ubyBPSURDIHByb3ZpZGVyPC90ZXh0Pgo8bGluZSB4MT0iNDE4IiB5MT0iNDAiIHgyPSI0MTgiIHkyPSIxODAiIHN0cm9rZT0iI2UyZThmMCIgc3Ryb2tlLXdpZHRoPSIxLjQiLz4KPHJlY3QgeD0iNDM2IiB5PSI0NCIgd2lkdGg9IjM4NCIgaGVpZ2h0PSIxNDYiIHJ4PSIxNCIgZmlsbD0iI2Y4ZmFmYyIgc3Ryb2tlPSIjY2JkNWUxIiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA1Ii8+Cjx0ZXh0IHg9IjQ1MCIgeT0iNjIiIHN0eWxlPSJmb250OiA3MDAgMTBweCBJbnRlciwgc2Fucy1zZXJpZjsgbGV0dGVyLXNwYWNpbmc6IDEuM3B4OyBmaWxsOiAjOTRhM2I4OyBmaWxsOiMwNDc4NTciPk5BVElWRSBBWlVSRSBBQ0NFU1M8L3RleHQ+CjxyZWN0IHg9IjQ1MCIgeT0iODgiIHdpZHRoPSIxMDYiIGhlaWdodD0iNjYiIHJ4PSIxMSIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI1MDMiIHk9IjExOCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMnB4Ij5Qb2Q8L3RleHQ+Cjx0ZXh0IHg9IjUwMyIgeT0iMTM0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YiI+c2VydmljZSBhY2NvdW50PC90ZXh0Pgo8bGluZSB4MT0iNTU2IiB5MT0iMTIxIiB4Mj0iNjIwIiB5Mj0iMTIxIiBzdHJva2U9IiMwNDc4NTciIHN0cm9rZS13aWR0aD0iMiIgbWFya2VyLWVuZD0idXJsKCNwaTEpIi8+Cjx0ZXh0IHg9IjU4OCIgeT0iMTEyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogIzY0NzQ4YjsgZm9udC1zaXplOjhweCI+dG9rZW48L3RleHQ+CjxyZWN0IHg9IjYyNCIgeT0iODAiIHdpZHRoPSIxODIiIGhlaWdodD0iODIiIHJ4PSIxMSIgZmlsbD0iI2ZmZiIgc3Ryb2tlPSIjZTJlOGYwIiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI3MTUiIHk9IjEwMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICMwZjE3MmE7IGZvbnQtc2l6ZToxMnB4Ij5NYW5hZ2VkIGlkZW50aXR5PC90ZXh0Pgo8dGV4dCB4PSI3MTUiIHk9IjExOCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM2NDc0OGIiPmZlZGVyYXRlZCBvbiB0aGU8L3RleHQ+Cjx0ZXh0IHg9IjcxNSIgeT0iMTM0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogIzY0NzQ4YiI+QUtTIE9JREMgaXNzdWVyPC90ZXh0Pgo8dGV4dCB4PSI3MTUiIHk9IjE1MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDYwMCAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjMDU5NjY5OyBmaWxsOiMwNDc4NTciPk9JREMgaXNzdWVyIHJlcXVpcmVkPC90ZXh0Pgo8L3N2Zz4=" alt="Before: on AWS an EKS Pod Identity association binds a service account to an IAM role and an on-cluster agent hands credentials to the pod, with no OIDC provider involved. Native Azure access: the pod token issued by AKS authenticates a managed identity through a federated credential. The separate EKS association and EKS Auth adapter path is described in the AWS credential exchange section." />

  <img className="t9-diagram-dark" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4MzYiIGhlaWdodD0iMjA4IiB2aWV3Qm94PSIwIDAgODM2IDIwOCIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJCZWZvcmU6IG9uIEFXUyBhbiBFS1MgUG9kIElkZW50aXR5IGFzc29jaWF0aW9uIGJpbmRzIGEgc2VydmljZSBhY2NvdW50IHRvIGFuIElBTSByb2xlIGFuZCBhbiBvbi1jbHVzdGVyIGFnZW50IGhhbmRzIGNyZWRlbnRpYWxzIHRvIHRoZSBwb2QsIHdpdGggbm8gT0lEQyBwcm92aWRlciBpbnZvbHZlZC4gTmF0aXZlIEF6dXJlIGFjY2VzczogdGhlIHBvZCB0b2tlbiBpc3N1ZWQgYnkgQUtTIGF1dGhlbnRpY2F0ZXMgYSBtYW5hZ2VkIGlkZW50aXR5IHRocm91Z2ggYSBmZWRlcmF0ZWQgY3JlZGVudGlhbC4gVGhlIHNlcGFyYXRlIEVLUyBhc3NvY2lhdGlvbiBhbmQgRUtTIEF1dGggYWRhcHRlciBwYXRoIGlzIGRlc2NyaWJlZCBpbiB0aGUgQVdTIGNyZWRlbnRpYWwgZXhjaGFuZ2Ugc2VjdGlvbi4iPjxzdHlsZT50ZXh0e2ZvbnQtZmFtaWx5OkludGVyLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCdTZWdvZSBVSScsUm9ib3RvLCdIZWx2ZXRpY2EgTmV1ZScsQXJpYWwsc2Fucy1zZXJpZjtmaWxsOiNjYmQ1ZTF9PC9zdHlsZT4KPGRlZnM+PG1hcmtlciBpZD0icGkxIiB2aWV3Qm94PSIwIDAgMTAgMTAiIHJlZlg9IjgiIHJlZlk9IjUiIG1hcmtlcldpZHRoPSI3IiBtYXJrZXJIZWlnaHQ9IjciIG9yaWVudD0iYXV0by1zdGFydC1yZXZlcnNlIj48cGF0aCBkPSJNMCwwIEwxMCw1IEwwLDEwIHoiIGZpbGw9IiM5NGEzYjgiLz48L21hcmtlcj48L2RlZnM+CjxyZWN0IHg9IjE2IiB5PSI0NCIgd2lkdGg9IjM4NCIgaGVpZ2h0PSIxNDYiIHJ4PSIxNCIgZmlsbD0iIzFhMjYzMSIgc3Ryb2tlPSIjM2Q0ZjY2IiBzdHJva2Utd2lkdGg9IjEuNCIgc3Ryb2tlLWRhc2hhcnJheT0iNSA1Ii8+Cjx0ZXh0IHg9IjMwIiB5PSI2MiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6ICM5NGEzYjgiPk9OIEFXUyBUT0RBWTwvdGV4dD4KPHJlY3QgeD0iMzAiIHk9Ijg4IiB3aWR0aD0iMTA2IiBoZWlnaHQ9IjY2IiByeD0iMTEiIGZpbGw9IiMyNjI2MjYiIHN0cm9rZT0iIzNkNGU2NiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz4KPHRleHQgeD0iODMiIHk9IjExOCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMnB4Ij5Qb2Q8L3RleHQ+Cjx0ZXh0IHg9IjgzIiB5PSIxMzQiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij5zZXJ2aWNlIGFjY291bnQ8L3RleHQ+CjxsaW5lIHgxPSIxMzYiIHkxPSIxMjEiIHgyPSIyMDAiIHkyPSIxMjEiIHN0cm9rZT0iIzQxNGU2MiIgc3Ryb2tlLXdpZHRoPSIyIiBtYXJrZXItZW5kPSJ1cmwoI3BpMSkiLz4KPHRleHQgeD0iMTY4IiB5PSIxMTIiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMHB4ICdTRiBNb25vJywgdWktbW9ub3NwYWNlLCAnSmV0QnJhaW5zIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlOyBmaWxsOiAjYzljZmQ4OyBmb250LXNpemU6OHB4Ij5hZ2VudDwvdGV4dD4KPHJlY3QgeD0iMjA0IiB5PSI4NCIgd2lkdGg9IjE4MiIgaGVpZ2h0PSI3NCIgcng9IjExIiBmaWxsPSIjMjYyNjI2IiBzdHJva2U9IiMzZDRlNjYiIHN0cm9rZS13aWR0aD0iMS41Ii8+Cjx0ZXh0IHg9IjI5NSIgeT0iMTEwIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjUwIDEzLjVweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2VkODsgZm9udC1zaXplOjEycHgiPlBvZCBJZGVudGl0eSBhc3NvY2lhdGlvbjwvdGV4dD4KPHRleHQgeD0iMjk1IiB5PSIxMjYiIHRleHQtYW5jaG9yPSJtaWRkbGUiIHN0eWxlPSJmb250OiAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjYzljZmQ4Ij5FS1MgYmluZHMgU0Eg4oaSIHJvbGU8L3RleHQ+Cjx0ZXh0IHg9IjI5NSIgeT0iMTQyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogNjAwIDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICM5MGRlYzY7IGZpbGw6ICNkZWIyOTAiPm5vIE9JREMgcHJvdmlkZXI8L3RleHQ+CjxsaW5lIHgxPSI0MTgiIHkxPSI0MCIgeDI9IjQxOCIgeTI9IjE4MCIgc3Ryb2tlPSIjM2Q0ZTY2IiBzdHJva2Utd2lkdGg9IjEuNCIvPgo8cmVjdCB4PSI0MzYiIHk9IjQ0IiB3aWR0aD0iMzg0IiBoZWlnaHQ9IjE0NiIgcng9IjE0IiBmaWxsPSIjMWEyNjMxIiBzdHJva2U9IiMzZDRmNjYiIHN0cm9rZS13aWR0aD0iMS40IiBzdHJva2UtZGFzaGFycmF5PSI1IDUiLz4KPHRleHQgeD0iNDUwIiB5PSI2MiIgc3R5bGU9ImZvbnQ6IDcwMCAxMHB4IEludGVyLCBzYW5zLXNlcmlmOyBsZXR0ZXItc3BhY2luZzogMS4zcHg7IGZpbGw6ICM5NGEzYjg7IGZpbGw6ICM5MGRlYzgiPk5BVElWRSBBWlVSRSBBQ0NFU1M8L3RleHQ+CjxyZWN0IHg9IjQ1MCIgeT0iODgiIHdpZHRoPSIxMDYiIGhlaWdodD0iNjYiIHJ4PSIxMSIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q0ZTY2IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI1MDMiIHk9IjExOCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMnB4Ij5Qb2Q8L3RleHQ+Cjx0ZXh0IHg9IjUwMyIgeT0iMTM0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+c2VydmljZSBhY2NvdW50PC90ZXh0Pgo8bGluZSB4MT0iNTU2IiB5MT0iMTIxIiB4Mj0iNjIwIiB5Mj0iMTIxIiBzdHJva2U9IiMwNDc4NTciIHN0cm9rZS13aWR0aD0iMiIgbWFya2VyLWVuZD0idXJsKCNwaTEpIi8+Cjx0ZXh0IHg9IjU4OCIgeT0iMTEyIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTBweCAnU0YgTW9ubycsIHVpLW1vbm9zcGFjZSwgJ0pldEJyYWlucyBNb25vJywgTWVubG8sIG1vbm9zcGFjZTsgZmlsbDogI2M5Y2ZkODsgZm9udC1zaXplOjhweCI+dG9rZW48L3RleHQ+CjxyZWN0IHg9IjYyNCIgeT0iODAiIHdpZHRoPSIxODIiIGhlaWdodD0iODIiIHJ4PSIxMSIgZmlsbD0iIzI2MjYyNiIgc3Ryb2tlPSIjM2Q0ZTY2IiBzdHJva2Utd2lkdGg9IjEuNSIvPgo8dGV4dCB4PSI3MTUiIHk9IjEwMiIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDY1MCAxMy41cHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNlZDg7IGZvbnQtc2l6ZToxMnB4Ij5NYW5hZ2VkIGlkZW50aXR5PC90ZXh0Pgo8dGV4dCB4PSI3MTUiIHk9IjExOCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDExcHggSW50ZXIsIHNhbnMtc2VyaWY7IGZpbGw6ICNjOWNmZDgiPmZlZGVyYXRlZCBvbiB0aGU8L3RleHQ+Cjx0ZXh0IHg9IjcxNSIgeT0iMTM0IiB0ZXh0LWFuY2hvcj0ibWlkZGxlIiBzdHlsZT0iZm9udDogMTFweCBJbnRlciwgc2Fucy1zZXJpZjsgZmlsbDogI2M5Y2ZkOCI+QUtTIE9JREMgaXNzdWVyPC90ZXh0Pgo8dGV4dCB4PSI3MTUiIHk9IjE1MCIgdGV4dC1hbmNob3I9Im1pZGRsZSIgc3R5bGU9ImZvbnQ6IDYwMCAxMXB4IEludGVyLCBzYW5zLXNlcmlmOyBmaWxsOiAjOTBkZWM2OyBmaWxsOiAjOTBkZWM4Ij5PSURDIGlzc3VlciByZXF1aXJlZDwvdGV4dD4KPC9zdmc+" alt="Before: on AWS an EKS Pod Identity association binds a service account to an IAM role and an on-cluster agent hands credentials to the pod, with no OIDC provider involved. Native Azure access: the pod token issued by AKS authenticates a managed identity through a federated credential. The separate EKS association and EKS Auth adapter path is described in the AWS credential exchange section." />
</div>

#### What the association becomes

One Pod Identity association becomes a **user-assigned managed identity**, a **role** (a built-in Azure role when the catalogue covers the policy statement exactly, a custom role definition otherwise), a **role assignment** scoped to the resource group, and a **federated identity credential** naming the cluster's issuer and your service account.

For native Azure access, the federated credential provides the binding. Its issuer, subject, and audience identify which service account and namespace may authenticate as the managed identity.

All federated credentials for one identity are generated together. Tensor9 checks Azure's per-identity credential limit during compilation and stops the build if it is exceeded. If many service accounts share an identity, divide them across additional identities to stay within the limit.

#### Limitations

△ Pod Identity limitations on Azure

* **An OIDC issuer is required.** Azure workload identity requires the AKS cluster's OIDC issuer to be enabled. EKS Pod Identity does not require an OIDC provider, so this adds a deployment requirement.
* **Association state and Azure federation are separate.** EKS tooling uses the association adapter. Native Azure access uses federated credentials on managed identities. Review both bindings; an Azure credential alone does not create an EKS association or issue an AWS role session.
* **Limit how many service accounts share an identity.** Azure caps federated credentials per managed identity, and the cap is enforced at compile time. Split service accounts across additional identities if their credential count exceeds the limit.
* **IAM Users and Groups have no native directory mapping.** The native Azure mapping creates workload identities, not directory objects for people or groups. Configure native grants to people in Azure's directory separately. AWS IAM objects served through the Max adapter have a separate scope.
* **Some permission conditions cannot be preserved.** AWS IAM statements become Azure RBAC roles over a scope hierarchy with a narrower condition model. Review effective access where a source IAM condition has no Azure equivalent.

#### Other considerations

* **Enable the cluster's OIDC issuer before deployment.** Without the issuer, federated credentials can be created but the first token exchange fails. The Cloud Adapter deployment template checks that the issuer is enabled when the stack is applied.
* **Workload-identity changes are in the manifests.** Pods keep their service accounts. Configure Azure workload-identity labels for native Azure access and the agent, association and credential route for unchanged AWS SDK calls. These paths produce different credentials and require separate validation.
* **Read the emitted roles before cutover.** The plan contains either built-in role names or custom definitions with explicit actions. Compare those actions with the original IAM policy before deployment, particularly where broader Azure scopes could grant additional access.

## Existing data and credentials

Selecting a backend does not copy existing data, credentials or access policies. Plan and verify migration separately before changing an application's endpoint. Do not assume an identifier, credential or encrypted value from the origin service works unchanged on the target.

## Configure, tune and debug

Start with [setup](/cloud-adapter/getting-started/overview) and [configuration](/cloud-adapter/configuration/overview). Use [tuning](/cloud-adapter/tuning/overview) to understand supported request tags, [debugging](/cloud-adapter/debugging/overview) to investigate a request, and [High Fidelity Cloud Emulators](/cloud-adapter/local-testing/overview) to validate a bounded reproduction.
