【AWS】什么是AWS Security Token Service (AWS STS)
AWS Security Token Service (AWS STS) 是一项由 Amazon Web Services (AWS) 提供的 Web 服务,它允许您为 AWS 账户中的用户(或您信任的外部用户)请求临时、有限权限的凭证,以访问您的 AWS 资源。
您可以将 AWS STS 想象成一个**“临时身份验证和授权中心”。它不会直接管理用户或权限(那是 AWS IAM 的职责),而是专注于发放短期有效的安全令牌**,这些令牌可以用来代替长期存在的 IAM 用户凭证(如访问密钥),从而大大增强安全性。
AWS STS 的核心特点和优势
AWS STS 的主要目标是提高 AWS 环境的安全性,特别是通过减少长期凭证的使用。
发放临时安全凭证:
短期有效: 这是 STS 最核心的特点。它生成的凭证(包括访问密钥 ID、秘密访问密钥和会话令牌)只在短时间内有效(最短 15 分钟,最长可配置到 12 小时或更长,具体取决于 API 和场景)。
自动失效: 临时凭证到期后会自动失效,无需手动撤销或轮换。这大大降低了凭证泄露的风险。
不存储在用户账户中: 临时凭证是动态生成的,不会像 IAM 用户的长期访问密钥那样存储在用户账户中。
增强安全性:
降低泄露风险: 由于凭证是临时的,即使被泄露,其有效时间也有限,从而降低了潜在的损害。
无需分发长期凭证: 应用程序或用户无需存储或嵌入长期有效的 AWS 访问密钥。
支持多种身份验证场景:
IAM 角色扮演 (AssumeRole): 允许 IAM 用户、联合用户或 AWS 服务临时承担某个 IAM 角色,从而获得该角色定义的权限。这是 STS 最常用的功能。
联合身份验证 (Federation):
企业身份(SAML 2.0): 允许您将企业目录(如 Active Directory)中的用户联合到 AWS。用户使用其企业凭证登录,通过 STS 获得临时凭证来访问 AWS 资源,而无需在 AWS 中创建单独的 IAM 用户。
Web 身份(OpenID Connect/OIDC): 允许移动或 Web 应用程序的用户使用公共身份提供商(如 Amazon Cognito、Google、Facebook、Apple)登录,然后通过 STS 获得临时凭证来访问 AWS 资源。
跨账户访问: 允许一个 AWS 账户中的用户或角色临时访问另一个 AWS 账户中的资源,而无需在目标账户中创建重复的用户。
临时用户会话 (GetSessionToken): 为 IAM 用户生成临时凭证,通常用于多因素身份验证 (MFA) 场景。
联合令牌 (GetFederationToken): 为自定义身份提供商生成临时凭证。
精细的权限控制:
即使是临时凭证,其权限也是由其所扮演的角色或关联的策略所定义,确保了对 AWS 资源的精细控制。
全球可用性:
AWS STS 默认是一个全球服务,但您也可以选择在特定区域的 STS 端点进行 API 调用,以减少延迟。生成的凭证在全球范围内有效。
AWS STS 的工作原理(以 AssumeRole 为例)
定义 IAM 角色: 首先,您在 AWS IAM 中创建一个角色。这个角色定义了它被承担后将拥有的权限,以及信任策略(即谁可以承担这个角色)。
用户请求承担角色: 一个 IAM 用户(或联合用户、AWS 服务)调用 AWS STS 的 AssumeRole API 操作,并指定要承担的角色 ARN。
STS 验证信任: AWS STS 验证调用者是否有权限承担该角色(根据角色的信任策略)。
STS 发放临时凭证: 如果验证成功,STS 会生成一组临时安全凭证(包括 AccessKeyId、SecretAccessKey 和 SessionToken),并将其返回给调用者。这些凭证的有效期是有限的。
使用临时凭证访问资源: 调用者可以使用这些临时凭证来对后续的 AWS API 请求进行签名。当 AWS 服务收到这些请求时,它会验证凭证的有效性,并根据角色定义的权限来决定是否允许操作。
凭证到期: 当临时凭证到期时,它们将不再有效。如果用户需要继续访问,他们必须重新请求新的临时凭证。
AWS STS 的典型用例
跨账户访问: 允许开发或测试账户中的用户访问生产账户中的特定资源,而无需在生产账户中创建用户。
企业身份联合: 将企业内部的身份目录(如 Active Directory)与 AWS 集成,员工可以使用现有的企业凭证登录 AWS,无需管理单独的 AWS 凭证。
Web 和移动应用程序身份验证: 允许您的应用程序用户使用 Google、Facebook、Amazon 等身份登录,然后通过 STS 获取临时凭证,安全地访问 S3 存储桶、DynamoDB 表等 AWS 资源,而无需在应用程序中嵌入长期凭证。
AWS 服务间的权限委派: 允许一个 AWS 服务(如 EC2 实例)临时承担一个角色,以访问另一个 AWS 服务(如 S3 存储桶)。例如,一个 EC2 实例可以扮演一个角色,从而获得将日志写入 S3 的权限。
第三方应用程序集成: 允许第三方应用程序或服务以受限的权限访问您的 AWS 资源,而无需共享您的长期凭证。
命令行界面 (CLI) 和 SDK 使用: 在某些自动化脚本或 CI/CD 流程中,可以使用 STS 获取临时凭证,避免在脚本中硬编码长期凭证。
总结来说,AWS Security Token Service 是一项关键的安全服务,它通过发放临时、有限权限的凭证,极大地增强了 AWS 环境的安全性、灵活性和可管理性,特别是在处理联合身份、跨账户访问和应用程序权限管理等复杂场景时。
过去考试题
信頼できるユーザーに一時的なセキュリティ認証情報を作成し提供し、AWSリソースへのアクセスを制御するために使用するサービス/ツールはどれですか?
AWS Security Token Service(AWS STS)は、信頼できるユーザーに一時的なセキュリティ認証情報を作成し提供し、AWSリソースへのアクセスを制御するためのサービスです。
一方、AWS IAM Identity CenterはIAMの管理を支援するツール、
AWS WAFはWebアプリケーションのセキュリティを強化するサービス、
Amazon Cognitoはユーザー認証とデータ同期を提供するサービスです。これらは一時的なセキュリティ認証情報の作成と提供には使用されません。