amazon-web-services - IAM 角色引用多个 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
我深入研究了如何构建此类 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:*:*""
}
}
}
]
}
推荐阅读
- c++ - argv 数组中的 clion 通配符扩展
- python - 将字符串转换为具有新键名的字典
- flutter - 如何在无状态小部件中实例化最终变量?
- i2c - 描述您如何与 I2C 总线上的外部外围设备进行通信
- google-cloud-platform - GCP Kubeflow 和 GCP 云作曲家有什么区别?
- java - 如何将 1 个表实体映射到多个(2 个或 3 个)不同的数据库表中?
- hyperledger-fabric - Fabric 2:0 中“任何多数”的生命周期背书不起作用
- linux - 无法与 EC2 机器中的新用户 ssh
- java - Spring Boot 应用程序中的 @Context UriInfo 替换
- java - 模式java:2个字符少于n次,它们的外观总和也少于n