AWS资源控制策略示例:限制仅信任的OIDC身份提供者访问
什么是OIDC身份提供者
OpenID Connect(OIDC)是一种基于OAuth 2.0协议的身份验证层,允许客户端验证用户的身份并获取基本用户信息。在AWS环境中,OIDC联盟允许通过兼容的身份提供者(IdP)认证的用户获取临时安全凭证,访问AWS资源。
为什么需要限制OIDC身份提供者
随着越来越多的第三方服务通过OIDC与AWS集成,确保只有受信任的身份提供者能够访问您的AWS资源变得至关重要。未经控制的OIDC访问可能导致:
- 未经授权的第三方服务访问您的AWS资源
- 多租户OIDC提供商中其他租户的潜在访问风险
- 安全凭证被滥用的可能性
核心控制策略
1. 强制执行受信任的OIDC提供商
此策略限制sts:AssumeRoleWithWebIdentity
操作,仅允许与特定OIDC提供商关联的联合身份执行该操作。这是基础安全控制,确保只有您明确配置的OIDC提供商能够为您的AWS资源颁发凭证。
2. 强制执行受信任的OIDC租户
对于多租户OIDC提供商,此策略确保只有来自您租户的联合身份能够执行sts:AssumeRoleWithWebIdentity
操作。这对于使用共享颁发者URL的服务特别重要。
3. 限制GitHub默认颁发者的组织访问
当使用GitHub的默认颁发者URL(tokens.actions.githubusercontent.com
)时,此策略确保只有来自您组织的仓库和作业能够通过AssumeRoleWithWebIdentity
在您的AWS账户中担任角色。策略使用"sub"(主题)声明值的一部分来识别令牌所属的租户。
4. 拒绝内置Web身份提供商
此策略明确拒绝四种内置Web身份提供商(Google、Facebook、AWS Cognito和Login with Amazon)使用AssumeRoleWithWebIdentity
在您的AWS账户中担任角色。
共享颁发者URL的特殊考虑
某些第三方服务在其OIDC集成中使用共享的"颁发者"(iss)URL。这意味着配置为使用这些服务的IAM角色需要在角色信任策略中添加条件键检查,以确保只有您预期的租户能够担任您的IAM角色。
支持的第三方服务示例
以下是一些使用共享颁发者URL的常见服务及其控制策略:
-
Terraform Cloud
- 颁发者URL:
https://app.terraform.io
- 策略示例: 使用条件键确保只有您的Terraform Cloud租户能够担任角色
- 颁发者URL:
-
GitLab
- 颁发者URL:
https://gitlab.com
- 策略示例: 限制仅您的GitLab项目能够访问AWS资源
- 颁发者URL:
-
IBM Turbonomic SaaS
- 多个颁发者URL
- 策略示例: 针对不同区域的IBM Turbonomic服务提供细粒度控制
-
GitHub Actions自托管运行器
- 颁发者URL:
https://vstoken.actions.githubusercontent.com
- 策略示例: 确保只有您的自托管运行器能够访问AWS资源
- 颁发者URL:
-
Pulumi
- 颁发者URL:
https://api.pulumi.com
- 策略示例: 限制Pulumi仅访问您授权的AWS资源
- 颁发者URL:
实施建议
-
评估需求:首先确定您需要使用哪些第三方服务的OIDC集成
-
选择策略:从示例中选择适用于您使用场景的策略语句
-
定制化:
- 替换策略中的占位符(如
<octo-org>
)为您的实际租户标识 - 删除不使用的服务策略以减少策略大小
- 替换策略中的占位符(如
-
测试验证:在生产环境部署前,在测试环境中验证策略效果
-
持续监控:设置CloudTrail日志监控,跟踪OIDC身份验证活动
策略大小限制注意事项
完整的示例策略包含所有服务提供商时可能会超过AWS资源控制策略的大小限制。实施时:
- 仅保留您实际使用的服务策略
- 删除不必要的空白字符
- 考虑将大型策略拆分为多个较小的策略
安全最佳实践
-
最小权限原则:仅授予OIDC身份执行其功能所需的最小权限
-
定期审查:定期审查OIDC集成和相关的IAM角色
-
多因素认证:在可能的情况下,为OIDC身份启用MFA
-
会话持续时间:设置适当的会话持续时间,平衡安全性和可用性
-
条件限制:使用条件键(如IP限制、时间限制等)增加额外的安全层
通过实施这些控制策略,您可以有效管理通过OIDC身份提供者访问AWS资源的方式,降低安全风险,同时保持与第三方服务的必要集成。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考