AWS IAM 身份

2025年1月30日 | 阅读 7 分钟

引言

AWS 身份和访问管理 (IAM) 是一项 Web 服务,旨在让我们集中管理用户对 AWS 服务和资源的访问。 IAM 允许定义谁可以访问什么以及何时访问,因为资源被分配了权限。 这提供了对 AWS 和组的安全 AWS 的配置和管理,以及接受或拒绝 AWS 上任何资源的权限。 IAM 还意味着我们可以创建特殊角色来委派访问控制和联合访问,以及有效且安全地管理 AWS 环境。

IAM 用户

什么是 IAM 用户?

IAM 用户是我们在 AWS IAM 服务中定义的账户实体,用于代表需要访问 AWS 资源的实际个人、程序、应用程序等。 每个用户都存在于特定的 AWS 账户中,并且可以被授予特殊权限或添加到 IAM 组中。

IAM 用户如何工作?

身份验证: IAM 用户可以拥有特定于 IAM 用户的登录选项,其中包括 AWS 管理控制台的密码或 AWS CLI 和 SDK 的访问密钥。

授权: IAM 用户权限由授予策略(基于 JSON 的文档)确定。 用户策略也可以分为三种类型,包括 AWS 托管策略、客户托管策略和内联策略。 这些定义了用户可以或不能对 AWS 资源执行的操作。

用户管理: 通过管理控制面板,管理员可以授权用户的 MFA、设置密码,并在必要时停用用户账户。

IAM 用户的用途

细粒度权限控制:IAM 用户可以对 AWS 资源进行非常具体的权限控制,从而仅在需要时启用对其他资源的授权访问。

跟踪个人操作: 这样,当管理员分配各种用户时,他们可以通过 CloudTrail 跟踪和审计每个人的活动。

应用程序访问:IAM 用户代表需要访问 AWS API 或任何资源的应用程序。

IAM 组

什么是 IAM 组?

IAM 组实际上是 IAM 用户的集合。 我们可以逐个授予用户权限,但有一种方法可以允许特定组,然后属于该组的所有人都会自动获得该组的同意。 这使得管理大型团队及其成员获得常规访问的手段变得更容易。

IAM 组如何工作?

成员资格管理:虽然可以成为多个组的成员,但我们通常只使用所有这些。 将用户提升或降级到特定组或从特定组中删除意味着用户获得了或失去了该组的特权。

权限分配:与组关联的策略可以是 AWS 托管的或客户托管的。 这些策略确定该组的成员可以获取以及就相关资源执行的操作。

分层管理:IAM 组使权限更容易,但 AWS 不支持子组或嵌套组。 必须单独为组设置权限。

IAM 组的用途

简化访问控制:最好一次为许多员工授予对角色的权限和人员,而不是为相同权限的许多人员和许多员工授予权限。

基于角色的访问管理:个人可以分组到角色下,例如“开发人员”、“管理员”或“支持”,仅举几例,以便根据特定团队的角色拥有不同级别的访问权限。

动态更新:一旦新用户注册团队或项目,将他们置于组中会自动授予所需的权限设置。

IAM 角色

什么是 IAM 角色?

AWS 中的 IAM 角色是授予 AWS 服务权限的有效方法,无需提供访问密钥。 与用户或组不同,角色由任何需要临时访问 AWS 实体(应用程序、服务、用户等)承担。

IAM 角色如何工作?

信任关系: IAM 角色基于信任策略,该策略说明了哪个实体、用户、应用程序或 AWS 服务可以担任该角色。 这些实体可以在同一个 AWS 账户中或在不同的账户中。

临时安全凭证:当实体担任角色时,会触发身份验证过程,AWS 向其提供访问密钥 ID、秘密访问密钥和会话令牌作为 AWS 资源的凭证,这些凭证在所担任角色的权限策略中定义。

会话持续时间:基于角色的凭证(在担任角色时授予)具有默认会话时间,范围从 15 分钟到 12 小时,以防止未经授权使用该角色。

IAM 角色的用途

服务访问:IAM 角色用于向 AWS 服务(如 EC2 或 Lambda)授予权限,这些服务需要访问另一个独立资源,而无需硬编码密钥。

跨账户访问: 角色有助于安全地将资源和对象从一个账户移动到另一个账户。 在此过程中,账户 A 中的实体可以承担账户 B 中实体的身份,因此,可以完全访问账户 B 中的资源,而无需任何人知道密码。

联合访问: IAM 角色对于授予来自公司外部人员(由身份提供者(如 SSO、Google 或 Facebook)验证)的有限访问权限是必要的。

IAM 策略

什么是 IAM 策略?

IAM 策略是 AWS 中的 JSON 文档,专门用于定义用户、组或角色的权限。 它们以清晰的方式确定在特定 AWS 资产上允许或禁止的操作。 策略在使用最小权限原则时很重要,即仅提供完成任务的正确权限级别。

IAM 策略的类型

托管策略

AWS 托管策略: 这些是 AWS 本身提供的以下预定义策略:管理员、高级用户和只读访问权限。

客户托管策略:由客户为特定目的设置,从而带来更大的灵活性和客户输入。

内联策略: 策略以最基本的形式包含在用户、组或角色中。 这些活动标签与实体紧密耦合,无法重复使用。

服务控制策略 (SCP):在 AWS Organizations 中提供,用于设置许多 AWS 账户中的权限边界。

权限边界: 其他可选的托管策略(如果使用)允许设置实体可以获得的最高权限。

IAM 策略如何工作?

结构: IAM 策略使用 JSON 编写,并具有版本、语句、效果(允许/拒绝)、操作、资源和条件等参数。

评估逻辑: 对于策略,AWS 在确定策略时会考虑以下顺序:明确声明时拒绝 → 允许 → 默认拒绝。 这有助于确保权限的限制性将取代它们之前的权限。

应用范围: 策略可以分配给用户、组或角色,以允许或拒绝对任何资源或活动的访问。

IAM 策略的用途

细粒度访问控制: IAM 中的策略允许对 AWS 中的任何资源进行特定控制,并限制任何身份和身份的操作,从而提供更好的保护。

特定于资源的权限: 策略允许基于资源的权限,例如 S3 存储桶或 EC2 实例。

临时访问: IAM 策略与角色结合使用时效果很好,可为用户或应用程序提供临时访问权限。

案例研究

Netflix

AWS IAM 角色帮助 Netflix 管理支持每天流式传输内容的数百万用户所需的复杂基础设施。 通过角色分配,Netflix 的微服务以及 EC2 实例提供了对资源的、安全的、临时的和简洁的访问。 IAM 角色还使开发人员能够安全地执行更新,而无需使用长期凭证。 IAM 角色确保 Netflix 的推荐算法能够访问 S3 存储桶,而无需人为干预。

Capital One

Capital One 能够使用 AWS IAM 身份联合集成 Active Directory。 它允许员工使用其公司帐户登录 AWS 管理控制台。 由于该银行在资源保护方面遵循最严格的财务法规,因此银行使用开发人员和管理员的 IAM 角色来访问 AWS。 联合身份验证还使为 Capital One 项目工作的外部承包商可以轻松访问他们所需的内容。

Airbnb

使用 AWS IAM 策略,Airbnb 可以访问资源。 具有客户策略的 IAM 用户被分配给开发人员和数据科学家,这些人员创建或处理机器学习模型。 这些策略指定了它可以与之交互的 S3 存储桶。 Airbnb 的定价算法团队被允许读取 S3 中的客户数据,但不能写入它,以提高安全性和隐私性。

Expedia 集团

Expedia 为其他子公司运营多个 AWS 账户。 为了跨这些账户进行访问,它提供了一个 AWS IAM 跨账户角色。 允许在一个账户中工作的开发人员可以切换到另一个账户并在安全区域中执行活动。 例如,在使用托管在不同 AWS 账户中的 S3 存储桶中的数据时,IAM 角色使 Expedia 的营销团队更容易处理这些数据。

Spotify

Spotify 的 EC2 实例使用 IAM 角色来获取临时凭证。 例如,托管音乐推荐引擎的实例可以因式分解地委托具有访问 S3 用于存储数据或 DynamoDB 用于快速搜索的受限权限的角色。 这种方法增强了安全性,并保证了在其演进环境中对短期资源使用的优化。

西门子

西门子在工业物联网 (IIoT) 设备的保护中提供了 AWS IoT Core 和 IAM 角色。 每个设备都与一个 IAM 角色相关联,该角色将其限制为特定的 AWS IoT 策略。 按照设计,温度传感器只能将数据提交到特定 IoT 主题,这意味着没有任何设备可以请求其他资源,从而提高了其智能工厂的安全性。

结论

AWS 身份和访问管理 (IAM) 提供了云基础设施安全和利用中的基本点之一。 IAM 允许配置用户、组、角色和策略;这确保了对权限的坚定控制,从而最大限度地降低了风险并促进了运营灵活性。 每个行业都提供 IAM,以实现更安全的隔离、角色控制以及与其他身份解决方案的同步。 它的规模和适用性帮助企业和组织保护其信息、管理其资源并遵守行业的最佳法律实践。


下一主题IAM 角色