【问题标题】:IAM Role reference multiple EKS OIDCIAM 角色引用多个 EKS OIDC
【发布时间】:2023-03-10 00:09:01
【问题描述】:

每个阶段(dev、staging、prd)我有 3 个不同的 EKS 集群 而且我需要为集群中部署的每个应用程序设置多个 IAM 角色。

我们的想法是能够在该 IAM 角色的信任关系中引用多个 EKS OIDC,因此我最终会跨集群为每个应用程序使用 1 个 IAM 角色,而不是 3 个。

配置一个 IAM 角色 + 信任关系很简单,如下所示:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "arn:aws:iam::xxxxx:oidc-provider/oidc.eks.eu-west-1.amazonaws.com/id/xxxx-oidc-cluster-1"
      },
      "Action": "sts:AssumeRoleWithWebIdentity",
      "Condition": {
        "StringLike": {
          "oidc.eks.eu-west-1.amazonaws.com/id/xxxx-oidc-cluster-1:sub": "system:serviceaccount:*:*"
        }
      }
    }
  ]
}

我要做的是在相同的信任关系中引用我的其他集群(xxxx-oidc-cluster-2xxxx-oidc-cluster-3)。我深入研究了官方doc 来了解如何构建这样的 IAM JSON 策略,但找不到任何可以提供帮助的东西。我想也许我错过了什么。

【问题讨论】:

    标签: amazon-web-services openid-connect amazon-iam amazon-eks


    【解决方案1】:

    最佳做法可能是将您的 IAM 角色限定为每个集群的每个应用程序一个,但如果您真的想这样做,则需要在您的假设角色策略(信任关系)中使用多个单独的语句。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "arn:aws:iam::xxxxx:oidc-provider/oidc.eks.eu-west-1.amazonaws.com/id/xxxx-oidc-cluster-1"
          },
          "Action": "sts:AssumeRoleWithWebIdentity",
          "Condition": {
            "StringEquals": {
              "oidc.eks.eu-west-1.amazonaws.com/id/xxxx-oidc-cluster-1:sub": "system:serviceaccount:*:*"
            }
          }
        },
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "arn:aws:iam::xxxxx:oidc-provider/oidc.eks.eu-west-1.amazonaws.com/id/xxxx-oidc-cluster-2"
          },
          "Action": "sts:AssumeRoleWithWebIdentity",
          "Condition": {
            "StringEquals": {
              "oidc.eks.eu-west-1.amazonaws.com/id/xxxx-oidc-cluster-2:sub": "system:serviceaccount:*:*""
            }
          }
        }
      ]
    }
    

    【讨论】:

    • 很不幸,我们需要这样做,因为我们有多个 EKS 集群(联合的)用于多个环境(tst、dev、stg、prd)。如果我们不按照您建议的方式进行操作,我们最终将拥有许多 IAM 角色:耸耸肩:
    • 好吧,如果您将这些 IAM 角色作为集群创建或应用程序部署的一部分进行管理,即它们在集群/应用程序部署时创建并在集群/部署时销毁,则IAM 角色的数量无关紧要,重要的是它们的生命周期。您是否使用 Terraform 之类的工具来管理您的集群?
    • 是的,但是我们有多个用户部署到集群中,并且找不到对 IAM 角色创建进行 Terraform 的好方法...
    猜你喜欢
    • 2020-02-18
    • 2022-07-28
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 2018-07-09
    • 2020-10-28
    • 2021-07-24
    • 2016-04-13
    相关资源
    最近更新 更多