驾驭云服务的安全环境可能很复杂,但 AWS IAM 为安全访问管理提供了强大的框架。在本文中,我们将探讨什么是 AWS Identity and Access Management (IAM) 以及它如何增强安全性。我们还将提供有关使用 IAM 连接到 Amazon Relational Database Service (RDS) 进行数据库身份验证的分步指南,确保您的数据库交互既安全又简化。
dbForge Studio for MySQL是一款专业的数据库管理、开发软件,它能够使MySQL开发人员和管理人员在一个方便的环境中与他人一起完成创建和执行查询,开发和调试MySQL程序,自动化管理MySQL数据库对象等工作。 在本文中,我们将使用该工具进行演示~
1.什么是 IAM? AWS IAM 的优势
1.1AWS IAM 的工作原理
1.2AWS IAM 的组件
1.3身份管理的特点
1.4MariaDB、MySQL 和 PostgreSQL 的 IAM 身份验证的限制
2.如何设置 IAM 数据库身份验证
2.1在 Amazon RDS 中创建 MySQL 数据库实例
2.1.1在数据库上启用 IAM DB 身份验证
2.1.2创建使用 AWS 身份验证令牌的数据库用户帐户
2.2 创建 IAM 策略
2.3 创建 IAM 角色
3.如何使用 dbForge Studio for MySQL 连接到 AWS RDS
3.1步骤 1:生成 IAM 身份验证令牌以识别 IAM 角色
3.2步骤 2:使用 dbForge Studio for MySQL 连接到 AWS RDS 实例
4.概括
dbForge Studio for MySQL 下载(qun:765665608)https://www.evget.com/product/1708/download
什么是 IAM?
IAM(即身份和访问管理)是 Amazon Web Services (AWS) 提供的一项 Web 服务,可帮助您安全地控制对 AWS 资源的访问。它允许您管理用户、安全凭证(例如访问密钥)以及控制用户和应用程序可以访问哪些 AWS 资源的权限。
简而言之,IAM 身份验证通过身份验证令牌启用数据库连接,该身份验证令牌是使用与特定角色或用户关联的 IAM 策略生成的。身份验证令牌的有效期为 15 分钟。
AWS IAM 的优势
IAM 对于管理 AWS 环境的安全性至关重要。它允许对谁可以访问哪些资源、在什么条件下以及使用什么权限进行精细控制。这不仅对于安全的系统架构很重要,而且对于遵守法规要求也很重要。IAM 服务免费提供,并在您的整个 AWS 账户中实施。AWS IAM 的其他优势包括:
- 多重身份验证 (MFA): AWS IAM 允许您通过要求用户提供密码和第二个身份验证因素来增强安全性,从而显着降低未经授权访问的可能性。
- **角色和临时凭据:**您可以将角色分配给自己组织内的用户和应用程序或第三方帐户的用户。这样,您可以授予临时权限,仅在所需的时间内限制访问。
- **联合访问:**借助 AWS IAM,您可以允许已在其他位置(例如公司目录中)拥有密码的用户使用该身份访问 AWS 管理控制台或调用 AWS API,而无需 IAM 用户凭证。
- **身份联合:**您可以将 IAM 与外部身份提供商(例如 Active Directory)或任何支持 SAML 2.0 的提供商连接。这样就无需为需要访问 AWS 环境的每个实体创建单独的 IAM 用户。
- 与 AWS 服务集成: IAM 与所有 AWS 服务集成,因此您可以定义角色和权限来控制对 AWS 上运行的任何服务或应用程序的访问。
- **默认安全性:**在遵循"最小权限"的安全原则明确授予权限之前,新用户无法访问 AWS 资源。
AWS IAM 的工作原理
IAM 提供控制 AWS 账户的身份验证和授权所需的基础设施。
最初,当个人或应用程序尝试访问 AWS 时,他们需要通过提供登录详细信息来证明自己的身份。此步骤称为身份验证,涉及根据 AWS 识别的身份验证凭证,例如 IAM 用户、IAM 角色、来自外部身份提供商的联合用户或使用 AWS 安全凭证配置的应用程序。
身份验证成功后,实体会寻求使用 AWS 资源的许可。这就是授权发挥作用的地方。在这个过程中,AWS 评估是否以及如何允许经过身份验证的身份与特定服务或资源进行交互。例如,登录 AWS 管理控制台后,您不会立即与任何 AWS 服务交互。但是,一旦您导航到特定服务,授权检查就会根据适用的策略确定您的身份是否具有使用该服务所需的权限。这些授权请求可以由您的 AWS 账户内的委托人或您信任的其他 AWS 账户发出。
一旦授权得到确认,该身份就可以在AWS环境中执行各种任务。这些任务的范围可能包括在 Amazon EC2 中启动实例、调整 IAM 组配置以及管理 S3 存储桶的生命周期,具体取决于授予的权限。
AWS IAM 的组件
AWS Identity and Access Management (IAM) 由多个关键组件组成,这些组件协同工作以安全地管理对 AWS 服务和资源的访问。AWS IAM 的关键组件包括:
IAM用户
用户是在 IAM 中创建的个人身份,每个身份都有其独特的一组凭证。这些凭证可用于在与 AWS 服务交互时对真人或应用程序进行身份验证。每个用户都可以被授予特定的权限来控制他们可以在 AWS 中执行哪些操作。这种粒度确保每个用户都按照最小权限原则进行操作,仅访问其角色所需的资源。
IAM 组
组作为用户的集合,简化了权限分配过程。您可以创建一个组,向该组应用必要的权限,然后添加用户,而不是单独将策略附加到每个用户。分配给组的任何权限都会自动应用于该组内的所有用户。这不仅简化了用户权限的管理,而且还可以更轻松地同时更新多个用户的权限。
IAM 角色
IAM 中的角色旨在委派特定任务的权限。与用户不同,角色没有一组永久的凭据。相反,角色提供可由受信任实体(例如 AWS 服务、应用程序或来自不同 AWS 账户的用户)承担的临时安全凭证。当应用程序需要代表您在 AWS 中执行操作或当您需要临时向其他 AWS 账户的用户授予访问权限时,这特别有用。
IAM 政策
策略是定义 IAM 内权限的文档。这些文档以 JSON 编写,指定用户、组或角色允许或拒绝的操作。可以微调策略来控制对特定 AWS 服务或资源的访问,并且可以包括何时以及如何应用权限的条件。这种详细的控制级别对于保护资源和确保用户只能执行履行其工作职责所需的操作至关重要。
身份管理的特点
- 细化权限。IAM 允许组织为用户、组、角色和资源分配精细的权限,从而精确控制谁可以执行哪些操作。
- 多重身份验证 (MFA)。IAM 支持 MFA,在用户名和密码之上添加额外的安全层。
- 身份联合。IAM 允许身份联合,允许用户使用外部身份提供商而不是 IAM 凭证进行身份验证。这有利于单点登录 (SSO) 功能,使用户只需登录一次即可访问多个 AWS 服务。
- 跨账户访问的角色。可以创建角色来将权限委托给需要代表您执行操作的用户、应用程序或服务。此功能对于允许用户从一个 AWS 账户访问另一 AWS 账户中的资源特别有用。
- 政策模拟器。IAM 包含一个策略模拟器工具,可帮助管理员了解和测试其权限策略的效果,确保它们在上线前按预期工作。
- 访问顾问。IAM 访问顾问显示授予用户的服务权限以及上次访问这些服务的时间,从而提供根据实际使用情况收紧权限的见解。
- 访问分析器。此功能有助于识别组织和账户中与外部实体共享的资源,例如 S3 存储桶或 IAM 角色。
- 可定制的密码轮换策略。管理员可以强制执行密码复杂性要求和轮换策略,从而提高帐户安全性。
- **符合 PCI DSS。**支付卡行业数据安全标准 (PCI DSS) 代表了一组要求,旨在确保所有处理、存储或传输信用卡信息的公司维持安全的环境。IAM 遵守此标准。
MariaDB、MySQL 和 PostgreSQL 的 IAM 身份验证的限制
连接限制:如果您的应用程序每秒需要超过 200 个新连接,则 IAM 数据库身份验证可能不适合。
身份验证令牌大小注意事项:IAM 数据库身份验证令牌的大小受多种因素影响,包括 IAM 标签的数量、IAM 服务策略的具体情况、ARN(Amazon 资源名称)的长度以及其他相关的 IAM 和数据库属性。虽然此令牌的最小大小通常约为 1 KB,但根据这些因素,它可能会更大。验证您的数据库驱动程序(例如 ODBC)和您使用的任何工具是否可以不受限制地处理令牌的大小非常重要。如果令牌被截断,它将使其对于身份验证过程无效,因为数据库和 IAM 将无法验证它。
SSL/TLS 要求:IAM 数据库身份验证需要与数据库的 SSL 连接。您必须确保您的数据库连接配置为使用 SSL,否则身份验证过程将失败。
PostgreSQL 中的身份验证优先级:对于运行 PostgreSQL 的实例,如果rds_iam角色与用户(包括 RDS 主用户)关联,则 IAM 身份验证将优先于密码身份验证。因此,该用户必须作为 IAM 用户进行身份验证。这意味着一旦为用户启用 IAM 身份验证,您必须使用 IAM 方法登录,因为密码验证将不再适用于该用户。
IAM 和 Kerberos 身份验证的排他性:在 Amazon RDS for PostgreSQL 上,存在阻止同时使用 IAM 和 Kerberos 身份验证方法的限制。如果启用 IAM 身份验证,则无法使用 Kerberos,反之亦然。这种排他性要求在为 PostgreSQL 配置 RDS 实例时在两种身份验证方法之间进行选择。
IAM 身份验证和复制:对于 Amazon RDS 上的 PostgreSQL,IAM 身份验证无法用于建立复制连接。这意味着,对于任何需要数据库复制的操作,您将需要依靠传统的密码身份验证或其他支持的方法(而不是 IAM)来设置和管理复制流程。
区域可用性:IAM 数据库身份验证仅在某些 AWS 区域可用,因此您需要确保部署 RDS 实例的区域支持它。
AWS RDS 版本:仅与 AWS RDS 平台兼容的特定 MySQL 版本支持 IAM 身份验证。您需要验证您的 MySQL 版本是否支持 IAM 身份验证。
二、如何设置 IAM 数据库身份验证
2.1创建 IAM 数据库
首先,登录 AWS 管理控制台。然后导航到 RDS 仪表板,选择要在其中创建数据库的 AWS 区域,然后单击创建数据库。
**或者,您可以从"数据库"**部分创建数据库。
将打开"创建 数据库" 页面。单击**"轻松创建"** ,然后在 "配置" 中选择 "MySQL"。
接下来,对于 数据库实例大小 ,选择免费层 。对于 数据库实例标识符 ,输入所需的数据库标识符。对于 Master username,输入主用户的名称,或保留默认名称。
要让数据库自动创建主密码,请选择自动生成密码 选项。如果您希望设置自己的主密码,请确保未选择"自动生成密码"选项,然后在 "主密码" 和**"确认主密码"**字段中输入您选择的密码。
完成后,单击创建数据库 。新创建的数据库将出现在数据库列表中。请注意,新数据库最多可能需要 20 分钟才能可用。
要了解有关如何在 Amazon RDS 上部署 MySQL 数据库实例的更多信息,请参阅连接到 Amazon RDS MySQL 数据库。
2.1.1在数据库上启用 IAM DB 身份验证
现在我们已经创建了一个新数据库,我们需要在其上启用 IAM 数据库身份验证。
- 在导航窗格中,选择数据库。
- 选择您想要启用 IAM 身份验证的数据库实例。
- 单击**"修改"**。
4.将打开**"修改数据库实例"** 页面。向下滚动到数据库身份验证 部分,然后单击选择密码和 IAM 数据库身份验证。
2.1.2创建使用 AWS 身份验证令牌的数据库用户帐户
运行以下 SQL 命令来创建使用 AWS IAM 身份验证令牌的新用户。
CREATE USER 'new_user'@'%' IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS';
替换new_user为您想要的用户名。
2.2创建 IAM 策略
现在,您需要创建一个将数据库用户映射到 IAM 角色的 IAM 策略。为此,请导航至身份和访问管理 (IAM)。然后,在导航窗格中选择策略并单击创建策略。
将打开"创建 策略"页面。转到JSON选项卡以输入策略。
上图中显示的策略示例包含单个语句,其结构如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "rds-db:connect", "Resource": "arn:aws:rds-db:region:account-id:dbuser:db-instance-identifier/database-username" } ] }
它由以下元素组成:
作用:指定Allow授予对数据库的访问权限。如果未明确指定访问,则默认情况下会拒绝访问。
操作:指定允许连接到数据库。rds-db:connect
资源:定义唯一标识特定数据库上的单个数据库账户的 Amazon 资源名称 (ARN)。
region将、、和替换为您的实际 AWS 区域、您的 AWS 账户 ID、您的 RDS 实例标识符以及您想要映射到 IAM 角色的数据库用户名。account-iddb-instance-identifierdatabase-username
完成后,单击**"下一步"**。
在下一页上,为您的策略指定一个有意义的名称和描述。然后,单击"创建策略"进行保存。
由于本文篇幅较长,继续浏览,请跳转至下一章,《什么是 AWS IAM?如何使用 IAM 数据库身份验证连接到 Amazon RDS(下)》也欢迎在评论区发表你的想法 一起交流~