

 **協助改進此頁面** 

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

若要為本使用者指南貢獻內容，請點選每個頁面右側面板中的**在 GitHub 上編輯此頁面**連結。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 了解 EKS Pod 身分識別的運作方式
<a name="pod-id-how-it-works"></a>

Amazon EKS Pod 身分識別關聯提供管理應用程式憑證的功能，類似 Amazon EC2 執行個體設定檔將憑證提供給 Amazon EC2 執行個體的方式。

Amazon EKS Pod 身分識別透過其他 *EKS 驗證* API 和在每個節點上執行的代理程式 Pod，為您的工作負載提供憑證。

在您的附加元件中，例如 *Amazon EKS 附加元件*和自我管理控制器、運算子和其他附加元件，作者需要更新其軟體，才能使用最新的 AWS SDKs。如需 EKS Pod 身分識別與 Amazon EKS 產生的附加元件之間的相容性清單，請參閱上節 [EKS Pod 身分識別限制](pod-identities.md#pod-id-restrictions)。

## 在程式碼中使用 EKS Pod 身分識別
<a name="pod-id-credentials"></a>

在程式碼中，您可以使用 AWS SDKs來存取 AWS 服務。您可以編寫程式碼，以使用 SDK 為 AWS 服務建立用戶端，根據預設， SDK 會在位置鏈中搜尋要使用的 AWS Identity and Access Management 憑證。找到有效的憑證後，系統就會停止搜尋。如需使用的預設位置的詳細資訊，請參閱《 AWS SDKs和工具參考指南》中的[登入資料提供者鏈結](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html#credentialProviderChain)。

EKS Pod 身分識別已新增至*容器憑證提供者*，系統會在預設憑證鏈中的某個步驟搜尋此提供者。如果您的工作負載目前使用憑證鏈中較早的憑證，那麼即使您為相同工作負載設定 EKS Pod 身分識別關聯，系統仍會繼續使用這些憑證。如此一來，您就可以先建立關聯，然後再移除舊憑證，以安全地從其他類型的憑證遷移。

容器憑證提供者會從每個節點上執行的代理程式提供臨時憑證。在 Amazon EKS 中，代理程式為 Amazon EKS Pod 身分識別代理程式，而在 Amazon Elastic Container Service 上，代理程式則為 `amazon-ecs-agent`。SDK 使用環境變數來尋找要連線的代理程式。

相反地，*服務帳戶的 IAM 角色*提供 *Web 身分*字符， AWS 開發套件必須使用 與 AWS Security Token Service 交換`AssumeRoleWithWebIdentity`。

## EKS Pod 身分識別代理程式如何搭配 Pod 使用
<a name="pod-id-agent-pod"></a>

1. 當 Amazon EKS 啟動使用具有 EKS Pod 身分識別關聯之服務帳戶的全新 Pod 時，叢集會將下列內容新增至 Pod 資訊清單：

   ```
       env:
       - name: AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE
         value: "/var/run/secrets/pods.eks.amazonaws.com/serviceaccount/eks-pod-identity-token"
       - name: AWS_CONTAINER_CREDENTIALS_FULL_URI
         value: "http://169.254.170.23/v1/credentials"
       volumeMounts:
       - mountPath: "/var/run/secrets/pods.eks.amazonaws.com/serviceaccount/"
         name: eks-pod-identity-token
     volumes:
     - name: eks-pod-identity-token
       projected:
         defaultMode: 420
         sources:
         - serviceAccountToken:
             audience: pods.eks.amazonaws.com
             expirationSeconds: 86400 # 24 hours
             path: eks-pod-identity-token
   ```

1. Kubernetes 會選取要在哪個節點上執行 Pod。然後，節點上的 Amazon EKS Pod 身分識別代理程式會使用 [AssumeRoleForPodIdentity](https://docs.aws.amazon.com/eks/latest/APIReference/API_auth_AssumeRoleForPodIdentity.html) 動作以從 EKS 驗證 API 擷取臨時憑證。

1. EKS Pod Identity Agent 可讓您在容器內執行 AWS SDKs 使用這些登入資料。

1. 您可以在應用程式中使用 SDK，無需指定憑證提供者來使用預設憑證鏈。或者，您可以指定容器憑證提供者。如需使用的預設位置的詳細資訊，請參閱《 AWS SDKs和工具參考指南》中的[登入資料提供者鏈結](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html#credentialProviderChain)。

1. SDK 會使用環境變數來連線至 EKS Pod 身分識別代理程式，並擷取憑證。
**注意**  
如果您的工作負載目前使用憑證鏈中較早的憑證，那麼即使您為相同工作負載設定 EKS Pod 身分識別關聯，系統仍會繼續使用這些憑證。