我想使用EKS来托管giitlab - ci runner,它将在AWS上部署我的基础设施。我想pod创建,但gitlab经理能够承担正确的IAM角色时,工作被触发,所以团队部署它的基础设施只能访问自己的帐户。请问使用gitlab-ci运行器可以吗?
感谢;
是的,您完全可以将CI作业访问范围限定为适当的AWS角色。
理想情况下,默认的作业环境应该是非特权——根本没有AWS角色或AWS凭证。执行作业的运行者应该只有在作业实际运行时才接收到凭据。例如,通过从秘密存储服务(如Vault秘密)或类似的服务中检索凭据。使用AWS执行此操作的最佳方法之一是在作业运行时使用OIDC检索临时凭据。
- 创建具有适当权限范围的IAM角色
- 使用GitLab web identity (
CI_JOB_JWT_V2
)配置角色,并设置相应的条件以匹配相应的项目/分支或其他属性。 - 配置GitLab作业运行
aws sts assume-role-with-web-identity ...
获取临时角色凭证 - 访问AWS并使用临时凭证执行部署。
内置的CI_JOB_JWT_V2
允许您承担相应的角色
另一种选择可能是简单地将AWS凭据添加到每个项目的CICD变量中,但这并不理想。