什么是 AWS IAM?如何使用 IAM 数据库身份验证连接到 Amazon RDS(上)

驾驭云服务的安全环境可能很复杂,但 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)icon-default.png?t=N7T8https://www.evget.com/product/1708/download

什么是 IAM?

IAM(即身份和访问管理)是 Amazon Web Services (AWS) 提供的一项 Web 服务,可帮助您安全地控制对 AWS 资源的访问。它允许您管理用户、安全凭证(例如访问密钥)以及控制用户和应用程序可以访问哪些 AWS 资源的权限。

简而言之,IAM 身份验证通过身份验证令牌启用数据库连接,该身份验证令牌是使用与特定角色或用户关联的 IAM 策略生成的。身份验证令牌的有效期为 15 分钟。

什么是 IAM?

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 区域,然后单击创建数据库

创建 IAM 数据库

或者,您可以从“数据库”部分创建数据库。

如何创建 IAM 数据库

将打开“创建 数据库” 页面。单击“轻松创建” ,然后在 “配置”中选择 “MySQL”

创建 Amazon RDS 数据库

接下来,对于 数据库实例大小,选择免费层。对于 数据库实例标识符,输入所需的数据库标识符。对于 Master username,输入主用户的名称,或保留默认名称。

要让数据库自动创建主密码,请选择自动生成密码选项。如果您希望设置自己的主密码,请确保未选择“自动生成密码”选项,然后在“主密码”“确认主密码”字段中输入您选择的密码。

配置 AWS RDS 数据库的创建

完成后,单击创建数据库。新创建的数据库将出现在数据库列表中。请注意,新数据库最多可能需要 20 分钟才能可用。

要了解有关如何在 Amazon RDS 上部署 MySQL 数据库实例的更多信息,请参阅连接到 Amazon RDS MySQL 数据库。

2.1.1在数据库上启用 IAM DB 身份验证

现在我们已经创建了一个新数据库,我们需要在其上启用 IAM 数据库身份验证。

  1. 在导航窗格中,选择数据库
  2. 选择您想要启用 IAM 身份验证的数据库实例。
  3. 单击“修改”

在数据库上启用 IAM DB 身份验证

4.将打开“修改数据库实例”页面。向下滚动到数据库身份验证部分,然后单击选择密码和 IAM 数据库身份验证

启用密码和 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)。然后,在导航窗格中选择策略并单击创建策略。

创建 IAM 策略

将打开“创建 策略”页面。转到JSON选项卡以输入策略。

在 AWS Web 控制台中创建 IAM 策略页面

上图中显示的策略示例包含单个语句,其结构如下:

{
"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

完成后,单击“下一步”

查看并创建 IAM 政策

在下一页上,为您的策略指定一个有意义的名称和描述。然后,单击“创建策略”进行保存。

由于本文篇幅较长,继续浏览,请跳转至下一章,《什么是 AWS IAM?如何使用 IAM 数据库身份验证连接到 Amazon RDS(下)》也欢迎在评论区发表你的想法 一起交流~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/239334.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++类模板分文件编写

问题: 类模板中成员函数创建时机是在调用阶段,导致分文件编写时链接不到 解决: 解决方式最常用的:将声明和实现写到同一个文件,并更改后缀名为.hpp,hpp是约定的名称,并不是强制的

Windows/Linux混合刻录后,Windows显示空白盘解决思路

概述 因为工作环境问题,需要在Windows和Linux之间来回光盘刻录,没有多余光盘的时候经常多次使用,同一光盘在Windows刻录文件到Linux,然后从Linux刻录文件到Windows,Windows用“类似U盘”格式化的光盘,在Wi…

洛谷 P8802 [蓝桥杯 2022 国 B] 出差

文章目录 [蓝桥杯 2022 国 B] 出差题目链接题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 思路解析CODE [蓝桥杯 2022 国 B] 出差 题目链接 https://www.luogu.com.cn/problem/P8802 题目描述 A \mathrm{A} A 国有 N N N 个城市,编号为 1 … N …

三天精通Selenium Web 自动化 - Selenium(Java)环境搭建

1 下载JDK JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 2 安装和配置JDK 安装目录尽量不要有空格 D:\Java\jdk1.8.0_91; D:\Java\jre8设置环境变量: “我的电脑”->右键->“属性”->…

LeetCode刷题日志-73矩阵置零

思路一: 用一个同样大小的矩阵记录0的位置,然后遍历矩阵置0, 空间复杂度为O(mn) class Solution {public void setZeroes(int[][] matrix) {int [][] matrix_new new int[matrix.length][matrix[0].length];for(int …

postgresql自带指令命令系列三

目录 简介 bin目录 28.pg_verifybackup 29.pg_waldump 30.postgres 31.postmaster -> postgres 32.psql 33.reindexdb 34.vacuumdb 35.vacuumlo 总结: 简介 在安装postgresql数据库的时候会需要设置一个关于postgresql数据库的PATH变量 export PATH/…

1845_emacs中一个中文乱码问题分析解决

Grey 全部学习内容汇总:GitHub - GreyZhang/editors_skills: Summary for some common editor skills I used. 1845_emacs中一个中文乱码问题分析解决 曾经有一次放弃过我自己的emacs配置,一个原因就是中文的支持。感觉我的配置跟其他人的配置显得有些…

优雅玩转实验室服务器(一)登录服务器

这篇文章更加偏向于使用python程序进行研究的朋友们 原料 Windows主机实验室Linux服务器(可以访问互联网)一点点耐心 step.0 windows terminal is all you need 别跟我说什么putty,什么winscp,我就是单推Win11自带的软件——win…

deepface:实现人脸的识别和分析

deepface介绍 deepface能够实现的功能 人脸检测:deepface 可以在图像中检测出人脸的位置,为后续的人脸识别任务提供基础。 人脸对齐:为了提高识别准确性,deepface 会将检测到的人脸进行对齐操作,消除姿态、光照和表…

Python 进阶(十六):二进制和ASCII码的转换(binascii 模块)

大家好,我是水滴~~ 本文详细介绍了Python中的binascii模块及其使用方法。通过binascii模块,我们可以方便地进行二进制和ASCII字符串之间的转换操作。文章中包含大量的示例代码,希望能够帮助新手同学快速入门。 《Python入门核心技术》专栏总…

【unity】【WebRTC】从0开始创建一个Unity远程媒体流app-设置输入设备

【项目源码】 包括本篇需要的脚本都打包在项目源码中,可以通过下面链接下载: 【背景】 目前我们能投射到远端浏览器(或者任何其它Peer)的媒体流只有默认的MainCamera画面,其实我们还可以通过配置输入来传输操作输入信息,比如键鼠等。 【追加input processing组件】 …

在AWS Lambda中使用FFmpeg处理m3u8视频流

大纲 1 部署有FFmpeg功能的Lambda环境1.1 部署层1.2 部署代码1.2.1 FFmpeg指令1.2.2 代码 2 配置Lambda角色权限2.1 选择角色类型2.2 设置权限2.3 保存角色2.4 绑定角色 参考文献 在直播里领域,我们经常需要对视频流进行处理。FFmpeg则是该领域中处理的利器。这篇文…

Spring 面向切面编程(AOP)

一、aop介绍 (一)前言 一般的后端开发流程是纵向开发,就是controller(控制层)->service(业务层)->mapper(数据持久层),Spring采用动态代理技术可以在…

关于mars3d通过zIndex参数实现控制图层层级叠加效果说明

问题: 1.项目中使用了GraphicLayer、GeoJSONLayer、ArcGISLayer,期望mars3d能够提供方法进行设置每个图层的zindex顺序 解决方案: 1.首先在mars3d的开发教程中查询三个Layer属于的图层类型,GraphicLayer、GeoJSONLayer均属于矢…

鸿蒙系统最近删除文件夹的路径

鸿蒙手机上删除文件,会将文件移动到类似回收站的路径下,如何找到这个路径? 先找用文件管理器找到一个文件 比如aaa.jpg ,这时在调试的shell下面运行 find . -name aaaa.jpg 得到如下 这时再删除该文件 再次运行 find . -name a…

单片机——通信协议(FPGA+c语言应用之iic篇)

一.I2C的功能特点 (1)功能包括: 1.只需要两条总线; 2.没有严格的波特率要求,例如使用RS232,主设备生成总线时钟; 3.所有组件之间都存在简单的主/从关系,连接到总线的每个设备均可通…

【PTA刷题】 求子串(代码+详解)

【PTA刷题】 求子串(代码详解) 题目 请编写函数,求子串。 函数原型 char* StrMid(char *dst, const char *src, int idx, int len);说明:函数取源串 src 下标 idx 处开始的 len 个字符,保存到目的串 dst 中,函数值为 dst。若 len…

BERT大模型:英语NLP的里程碑

BERT的诞生与重要性 BERT(Bidirectional Encoder Representations from Transformers)大模型标志着自然语言处理(NLP)领域的一个重要转折点。作为首个利用掩蔽语言模型(MLM)在英语语言上进行预训练的模型&…

sylar高性能服务器-配置(P10-p11)代码解析+调试分析

文章目录 p9:配置模块搭建一、ConfigvarBase二、ConfigVar三、Config四、小结 p10:YAML的使用一、安装yaml-cpp二、使用yaml-cpp三、代码解析 P11:YAML与日志的整合一、方法函数二、代码调试三、test_config结果四、小结 p9:配置模…

josef 静态电压继电器 RWY-D1/3 额定电压:AC380V电压范围180~440V

系列型号 RWY-D1型电压继电器; RWY-D2型电压继电器; 一、 概述 RYW-D系列电压继电器(以下简称本继电器)用于发电机、变压器和输电线的电器保护装置中,作为过电压保护或低电压闭锁的启动原件。本继电器为集成电路静…
最新文章