IAM 角色引用多个 EKS OIDC
IAM Role reference multiple EKS OIDC
每个阶段(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-2
和 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:*:*""
}
}
}
]
}
每个阶段(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-2
和 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:*:*""
}
}
}
]
}