使用 AWS Secrets and Configuration Provider CSI 搭配服務帳戶 (IRSA) 的 IAM 角色 - AWS Secrets Manager

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

使用 AWS Secrets and Configuration Provider CSI 搭配服務帳戶 (IRSA) 的 IAM 角色

先決條件

  • Amazon EKS 叢集 (1.17 版或更新版本)

  • 透過 存取 AWS CLI 和 Amazon EKS 叢集 kubectl

設定存取控制

ASCP 會擷取 Amazon EKS Pod 身分識別,並將其交換為 IAM 角色。您可以在 IAM 政策中為該 IAM 角色設定許可。當 ASCP 擔任 IAM 角色時,它會存取您授權的秘密。除非您也將其與 IAM 角色建立關聯,否則其他容器無法存取秘密。

授予 Amazon EKS Pod 存取 Secrets Manager 中的秘密的權限
  1. 建立許可政策,將 Pod 需要存取的秘密授予 secretsmanager:GetSecretValuesecretsmanager:DescribeSecret許可。如需政策範例,請參閱 範例:讀取和描述個別秘密的許可

  2. 如果尚未建立,請為叢集建立 IAM OpenID Connect (OIDC) 提供者。如需詳細資訊,請參閱《Amazon EKS 使用者指南》中的為您的叢集建立 IAM OIDC 身分提供者

  3. 建立服務帳戶的 IAM 角色,並將政策連接至該角色。如需詳細資訊,請參閱《Amazon EKS 使用者指南》中的建立服務帳戶的 IAM 角色

  4. 如果您使用私有 Amazon EKS 叢集,請確定叢集所在的 VPC 具有 AWS STS 端點。如需有關建立端點的資訊,請參閱 AWS Identity and Access Management User Guide 中的 Interface VPC endpoints

識別要掛載的機密

若要確定 ASCP 在 Amazon EKS 中掛載哪些機密作為檔案系統上的檔案,請建立 SecretProviderClass YAML 檔案。SecretProviderClass 列出要掛載的秘密和要掛載的檔案名稱。SecretProviderClass 必須與其參考的 Amazon EKS Pod 位於同一命名空間。

將秘密掛載為檔案

下列指示說明如何使用範例 YAML 檔案 ExampleSecretProviderClass.yamlExampleDeployment.yaml 將秘密掛載為檔案。

在 Amazon EKS 中掛載秘密
  1. SecretProviderClass 套用至 Pod:

    kubectl apply -f ExampleSecretProviderClass.yaml
  2. 部署您的 Pod:

    kubectl apply -f ExampleDeployment.yaml
  3. ASCP 可掛載檔案。

疑難排解

您可以透過描述 Pod 部署來檢視大多數錯誤。

若要查看容器的錯誤訊息
  1. 使用下列命令取得 Pod 名稱清單。如果不使用預設命名空間,請使用 -n nameSpace

    kubectl get pods
  2. 若要描述 Pod,請在下列命令中,針對 podId 使用您在上一個步驟中找到的 Pod 中的 Pod ID。如果不使用預設命名空間,請使用 -n nameSpace

    kubectl describe pod/podId
若要查看 ASCP 的錯誤
  • 若要在提供者日誌中尋找詳細資訊,請在下列命令中,針對 podId 使用 csi-secrets-store-provider-aws Pod 的 ID。

    kubectl -n kube-system get pods kubectl -n kube-system logs Pod/podId
  • 驗證是否已安裝 SecretProviderClass CRD:
    kubectl get crd secretproviderclasses.secrets-store.csi.x-k8s.io

    此命令應會傳回有關 SecretProviderClass 自訂資源定義的資訊。

  • 驗證是否已建立 SecretProviderClass 物件。
    kubectl get secretproviderclass SecretProviderClassName -o yaml