本文介绍了IAM角色参考多个EKS OIDC的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的每个阶段(开发、试运行、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-3)。我翻了翻官方doc关于如何构建这样的IAM JSON策略,但找不到任何可以帮助我的东西。我想我可能遗漏了什么。

推荐答案

最佳做法可能是将您的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:*:*""
        }
      }
    }
  ]
}

这篇关于IAM角色参考多个EKS OIDC的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-01 20:53