选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

第 1 步:配置 Amazon EKS 集群并设置 IAM 权限

聚焦模式
第 1 步:配置 Amazon EKS 集群并设置 IAM 权限 - Amazon Keyspaces(Apache Cassandra 兼容)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

配置 Amazon EKS 集群并创建允许 Amazon EKS 服务账户连接到 Amazon Keyspaces 表所需的 IAM 资源
  1. 为 Amazon EKS 集群创建 Open ID Connect(OIDC)身份提供者。需要执行此操作才能将 IAM 角色用于服务账户。有关 OIDC 身份提供者以及如何创建它们的更多信息,请参阅《Amazon EKS 用户指南》中的为集群创建 IAM OIDC 提供商

    1. 使用以下命令为您的集群创建 IAM OIDC 身份提供商。此示例假定集群名称为 my-eks-cluster。如果集群名称不同,请务必在所有未来的命令中更新名称。

      eksctl utils associate-iam-oidc-provider --cluster my-eks-cluster --approve
    2. 使用以下命令,确认 OIDC 身份提供者已在 IAM 中注册。

      aws iam list-open-id-connect-providers --region aws-region

      输出应如下所示:记下 OIDC 的 Amazon 资源名称(ARN),下一步为服务账户创建信任策略时需要该名称。

      { "OpenIDConnectProviderList": [ .. { "Arn": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.aws-region.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" } ] }
  2. 为 Amazon EKS 集群创建服务账户。服务账户为在容器组(pod)中运行的进程提供身份。容器组是最小、最简单的 Kubernetes 对象,可以用来部署容器化应用程序。接下来,创建一个 IAM 角色,服务账户可代入该角色来获取资源权限。您可以从配置为使用服务账户的容器组访问任何 AWS 服务,该服务账户可以代入具有该服务访问权限的 IAM 角色。

    1. 为服务账户创建新的命名空间。命名空间有助于隔离为本教程创建的集群资源。您可以使用以下命令创建新的命名空间。

      kubectl create namespace my-eks-namespace
    2. 要使用自定义命名空间,必须将其与 Fargate 配置文件关联。下面是一个代码示例。

      eksctl create fargateprofile \ --cluster my-eks-cluster \ --name my-fargate-profile \ --namespace my-eks-namespace \ --labels *=*
    3. 使用以下命令在 Amazon EKS 集群的命名空间 my-eks-namespace 中创建一个名为 my-eks-serviceaccount 的服务账户。

      cat >my-serviceaccount.yaml <<EOF apiVersion: v1 kind: ServiceAccount metadata: name: my-eks-serviceaccount namespace: my-eks-namespace EOF kubectl apply -f my-serviceaccount.yaml
    4. 运行以下命令来创建信任策略文件,指示 IAM 角色信任您的服务账户。主体必须先建立这种信任关系,然后才能代入角色。需要对文件进行以下编辑:

      • 对于 Principal,输入 IAM 返回给 list-open-id-connect-providers 命令的 ARN。ARN 包含您的账号和区域。

      • condition 语句中,替换 AWS 区域和 OIDC ID。

      • 确认服务账户名称和命名空间正确无误。

      在下一步中创建 IAM 角色时,需要附加该信任策略文件。

      cat >trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.aws-region.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.aws-region.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:my-eks-namespace:my-eks-serviceaccount", "oidc.eks.aws-region.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com" } } } ] } EOF

      可选:您还可以在 StringEqualsStringLike 条件中添加多个条目,以允许多个服务账户或命名空间代入角色。要允许您的服务账户在其他 AWS 账户中代入 IAM 角色,请参阅《Amazon EKS 用户指南》中的跨账户 IAM 权限

  3. 创建一个名为 my-iam-role 的 IAM 角色,供 Amazon EKS 服务账户代入。将上一步中创建的信任策略文件附加到该角色。信任策略指定了 IAM 角色可以信任的服务账户和 OIDC 身份提供者。

    aws iam create-role --role-name my-iam-role --assume-role-policy-document file://trust-relationship.json --description "EKS service account role"
  4. 通过附加访问策略向 IAM 角色分配 Amazon Keyspaces 权限。

    1. 附加访问策略以定义 IAM 角色可以对特定 Amazon Keyspaces 资源执行的操作。在本教程中,我们使用 AWS 托管式策略 AmazonKeyspacesFullAccess,因为我们的应用程序将向您的 Amazon Keyspaces 表写入数据。但是,作为最佳实践,建议创建实现最低权限原则的自定义访问策略。有关更多信息,请参阅 Amazon Keyspaces 是如何使用的 IAM

      aws iam attach-role-policy --role-name my-iam-role --policy-arn=arn:aws:iam::aws:policy/AmazonKeyspacesFullAccess

      使用以下语句确认策略已成功附加到 IAM 角色。

      aws iam list-attached-role-policies --role-name my-iam-role

      输出应如下所示:

      { "AttachedPolicies": [ { "PolicyName": "AmazonKeyspacesFullAccess", "PolicyArn": "arn:aws:iam::aws:policy/AmazonKeyspacesFullAccess" } ] }
    2. 使用服务账户可以代入的 IAM 角色的 Amazon 资源名称(ARN)为服务账户添加注释。确保使用您的账户 ID 更新角色 ARN。

      kubectl annotate serviceaccount -n my-eks-namespace my-eks-serviceaccount eks.amazonaws.com/role-arn=arn:aws:iam::111122223333:role/my-iam-role
  5. 确认 IAM 角色和服务账户均已正确配置。

    1. 使用以下语句确认 IAM 角色的信任策略已正确配置。

      aws iam get-role --role-name my-iam-role --query Role.AssumeRolePolicyDocument

      输出应如下所示:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.aws-region.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.aws-region/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.aws-region.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:my-eks-namespace:my-eks-serviceaccount" } } } ] }
    2. 确认已使用 IAM 角色为 Amazon EKS 服务账户添加注释。

      kubectl describe serviceaccount my-eks-serviceaccount -n my-eks-namespace

      输出应如下所示:

      Name: my-eks-serviceaccount Namespace:my-eks-namespace Labels: <none> Annotations: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/my-iam-role Image pull secrets: <none> Mountable secrets: <none> Tokens: <none> [...]

创建 Amazon EKS 服务账户、IAM 角色并配置所需的关系和权限后,请继续第 2 步:配置应用程序

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。