零基础5分钟上手亚马逊云科技核心云架构知识 - 权限管理最佳实践
简介:
欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。
我会每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿云开发/架构技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS最佳实践,并应用到自己的日常工作里。本次介绍的是如何通过用户组管理亚马逊云科技上的用户,基于工作职责的角色划分不同的用户组,并通过最小权限原则为用户组分配权限。本方案架构图如下:

方案所需基础知识
亚马逊云科技 IAM 服务介绍
亚马逊云科技 Identity and Access Management (IAM) 是一项强大的服务,帮助用户安全地管理对亚马逊云科技资源的访问权限。通过 IAM,用户可以创建和管理用户、用户组以及权限策略,从而控制谁可以访问哪些资源,以及可以执行哪些操作。
什么是用户、用户组和权限策略?
用户:
IAM 用户是亚马逊云科技账户中的个人实体,通常代表某个个人或应用程序。每个用户拥有唯一的身份认证信息,用于访问和管理 AWS 资源。
用户组:
用户组是一组 IAM 用户的集合。通过将用户分配到用户组,并为用户组附加权限策略,可以简化权限管理。所有属于该用户组的用户将继承该组的权限。
权限策略:
权限策略是定义用户或用户组可以访问哪些 AWS 资源以及可以执行哪些操作的规则。权限策略可以基于 JSON 格式编写,并附加到用户或用户组上,实现精细化的访问控制。

基于职责为用户分配最小权限的好处
增强安全性:
分配最小权限意味着用户只获得执行其职责所需的最低限度的访问权限,减少了意外操作或恶意活动带来的风险。
降低误操作风险:
限制用户只能执行与其工作相关的操作,降低了用户误操作导致数据泄露、删除关键资源等问题的可能性。
简化管理:
基于职责的最小权限策略使得权限管理更加清晰、简洁,便于管理员快速调整权限,确保系统在安全和管理方面的最佳状态。
符合合规性要求:
最小权限原则是许多安全法规和标准(如 GDPR、HIPAA)的要求,通过分配最小权限,可以帮助企业遵守相关合规性规定。
本方案包括的内容:
1. 创建用户组和用户,并将用户基于工作职责分配到用户组中。
2. 基于最小权限原则为不同职责的用户组分配权限
项目搭建具体步骤:
1. 首先我们进入亚马逊云科技控制台,进入到IAM用户权限管理服务。

2.点击”Create Group“创建用户组,通过群组管理多个用户

3.为用户组命名为”SupportEngineers“

4.为用户组添加对EC2服务器的只读最小权限,在点击Create创建。

5. 接下来点击”Create User“创建user用户
6. 设置用户名为”support-engineer-1“,并勾选”为用户提供亚马逊云科技控制台访问“,为用户添加密码”supportPassword!123“。

7. 选择”将用户添加到用户组中“,并选择添加的用户组”SupportEngineers“,点击Create User创建用户

8. 创建好用户后会生成一个控制台登录网址URL。

9. 在浏览器打开后,填入我们刚刚注册时填入的用户名和密码
10. 登入后我们进入EC2服务主页。

11. 接下来我们测试我们的EC2只读权限是否生效,我们选中一台EC2服务器,点击"Instance State"再点击”Terminate“删除EC2服务器。

12. 控制台上显示报错,提示我们没有权限删除服务器,这是因为我们只为该用户分配了对EC2的只读权限(查看EC2配置等),这说明我们的最小权限分配的测试成功。

利用代码实现最小权限原则管理
以下是一个使用 Python 和 Boto3 创建 IAM 用户、用户组,并基于最小权限分配权限的代码示例。
import boto3
from botocore.exceptions import ClientError# 创建 IAM 客户端
iam_client = boto3.client('iam')def create_user(user_name):try:# 创建用户response = iam_client.create_user(UserName=user_name)print(f"User {user_name} created successfully.")return response['User']except ClientError as e:print(f"Error creating user {user_name}: {e}")return Nonedef create_user_group(group_name):try:# 创建用户组response = iam_client.create_group(GroupName=group_name)print(f"Group {group_name} created successfully.")return response['Group']except ClientError as e:print(f"Error creating group {group_name}: {e}")return Nonedef attach_policy_to_group(group_name, policy_arn):try:# 为用户组附加策略iam_client.attach_group_policy(GroupName=group_name, PolicyArn=policy_arn)print(f"Policy {policy_arn} attached to group {group_name}.")except ClientError as e:print(f"Error attaching policy {policy_arn} to group {group_name}: {e}")def add_user_to_group(user_name, group_name):try:# 将用户添加到用户组iam_client.add_user_to_group(GroupName=group_name, UserName=user_name)print(f"User {user_name} added to group {group_name}.")except ClientError as e:print(f"Error adding user {user_name} to group {group_name}: {e}")def main():# 定义用户名称和用户组名称user_name = 'minimal_privilege_user'group_name = 'minimal_privilege_group'# 创建用户和用户组user = create_user(user_name)group = create_user_group(group_name)if group:# 定义最小权限策略的ARN,例如:AmazonS3ReadOnlyAccessminimal_privilege_policy_arn = 'arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess'# 将最小权限策略附加到用户组attach_policy_to_group(group_name, minimal_privilege_policy_arn)# 将用户添加到用户组add_user_to_group(user_name, group_name)if __name__ == '__main__':main()
代码说明
- 创建 IAM 客户端:使用
boto3.client('iam')创建 IAM 客户端。 - 创建用户:
create_user函数通过create_user方法创建一个新的 IAM 用户。 - 创建用户组:
create_user_group函数通过create_group方法创建一个新的 IAM 用户组。 - 附加最小权限策略:
attach_policy_to_group函数将指定的最小权限策略(例如,只读访问 S3)附加到用户组。 - 将用户添加到用户组:
add_user_to_group函数将创建的用户添加到用户组中。 - 运行脚本:
main()函数定义了要创建的用户和用户组的名称,并调用上述函数进行操作。
以上就是在亚马逊云科技上根据安全最佳实践,利用用户组管理云端用户并分配最小权限的全部步骤。欢迎大家关注0基础5分钟上手AWS系列,未来获取更多国际前沿的AWS云开发/云架构方案!
相关文章:
零基础5分钟上手亚马逊云科技核心云架构知识 - 权限管理最佳实践
简介: 欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。 我会每天介绍一个基于亚马逊云科技…...
[数据库][知识]SQL Server、MySQL 和 Oracle 的默认端口和数据库链接
SQL Server、MySQL 和 Oracle 的默认端口号、连接 URL 和驱动类名。以下是对每个数据库连接信息的简要说明: SQL Server 默认端口号:1433JDBC URL 格式:jdbc:sqlserver://localhost:1433;DatabaseNamedbnameJDBC 驱动类名:com.mic…...
【Unity教程】使用 Animation Rigging实现IK制作程序化的动画
在 Unity 开发中,为角色创建逼真且自适应的动画是提升游戏体验的关键。在本教程中,我们将结合 Animation Rigging 工具和 IK(Inverse Kinematics,反向运动学)插件来实现程序化的动画。 视频教程可以参考b战大佬的视频 …...
OBS混音器(Mixers)的重要性和配置指南
在进行直播或录制时,音频管理是非常关键的一环,特别是在需要同时处理多个音频源的复杂设置中。OBS Studio提供了强大的音频管理工具,其中“混音器”功能扮演了核心角色。混音器(Mixers)在OBS中用于控制不同音频源的输出路由,允许用户精确控制哪些音源出现在最终的直播或录…...
Ubuntu安装Anaconda3
本文详细阐述了在 Ubuntu 系统中安装 Anaconda3 的完整流程。包括 Anaconda3 安装包的获取途径,具体安装过程中的每一个步骤及注意事项,还有安装后的环境变量设置和安装成功的验证方法。旨在为 Ubuntu 用户提供清晰、易懂且准确的 Anaconda3 安装指南&am…...
数据类型解码:INT、VARCHAR、DATETIME的深度解析与实践
标题:数据类型解码:INT、VARCHAR、DATETIME的深度解析与实践 在软件开发和数据库设计中,数据类型是构建数据模型的基础。准确理解和使用数据类型,如INT、VARCHAR、DATETIME,对于确保数据的完整性、性能和安全性至关重…...
基于单片机的智能晾衣系统设计
摘 要 :在网络信息技术的推动下,智能家居得到了广泛应用,文章根据当前的市场动态,针对基于单片机的智能晾衣系统设计展开论述,具体包括两个方面的内容———硬件设计和软件设计。 关键词 :单片机ÿ…...
Python实战项目:天气数据爬取+数据可视化(完整代码)
一、选题的背景 随着人们对天气的关注逐渐增加,天气预报数据的获取与可视化成为了当今的热门话题,天气预报我们每天都会关注,天气情况会影响到我们日常的增减衣物、出行安排等。每天的气温、相对湿度、降水量以及风向风速是关注的焦点。通过…...
知识改变命运 数据结构【链表面试题】
1. 删除链表中等于给定值 val 的所有节点。 OJ链接 public ListNode removeElements(ListNode head, int val) {if (headnull) {return null;}ListNode curhead.next;ListNode prehead;while(cur!null) {if(cur.valval) {pre.nextcur.next;curcur.next;}else {precur;curcur.ne…...
计算机毕业设计 医院问诊系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...
掌握CSS的:any-link伪类:统一链接样式的高效方法
在网页设计中,链接是用户导航和交互的重要组成部分。CSS提供了多种伪类选择器来定义链接的不同状态,例如:link用于选择未访问的链接,:visited用于选择已访问的链接。然而,有时候我们需要同时为所有状态的链接设置统一的样式&#…...
虚幻5|角色武器装备的数据库学习(不只是用来装备武器,甚至是角色切换也很可能用到)
虚幻5|在连招基础上,给角色添加武器并添加刀光|在攻击的时候添加武器并返回背后(第一部分,下一部分讲刀光)_unreal 如何给角色添加攻击-CSDN博客 目的:捡起各种不同的武器,捡起的武器跟装备的武器相匹配 …...
防火墙技术与地址转换
文章目录 前言一、四种区域二、实验拓扑图基础配置防火墙配置测试结果 前言 防火墙是计算机网络中的一种安全设备或软件功能,旨在监控和控制进出网络的网络流量。其核心目的是保护内部网络免受外部攻击或不必要的访问。防火墙通过设定一系列安全规则,允…...
C++11中的Lambda表达式
文章目录 C11中的Lambda表达式1.lambda表达式形式2.向lambda传递参数3.使用捕获列表4.lambda捕获和返回1.值捕获2.引用捕获3.隐式捕获4.可变lambda5.指定lambda的返回类型 C11中的Lambda表达式 1.lambda表达式形式 lambda表达式具有以下形式 [capture list] (parameter list)…...
Unity图形系统
Unity的图形系统是一个复杂且功能强大的模块,它支持多种渲染技术和API,能够满足从移动设备到高端游戏机和桌面平台的各种需求。以下是关于Unity图形系统的详细解析: 渲染流程与技术 Unity的渲染流程可以分为应用程序阶段(CPU&…...
Ceph篇之利用shell脚本实现批量创建bucket桶
Ceph创建bucket桶 在 Ceph 中创建桶(bucket)需要使用 Ceph 对象网关(RGW)。 注:如果查看shell批量创建脚本请直接参见目录3 1. 利用radosgw-admin工具创建桶 确保 Ceph 集群和对象网关已正确配置 确保你的 Ceph 集群…...
周末总结(2024/08/17)
工作 人际关系核心实践: 要学会随时回应别人的善意,执行时间控制在5分钟以内 坚持每天早会打招呼 遇到接不住的话题时拉低自己,抬高别人(无阴阳气息) 朋友圈点赞控制在5min以内,职场社交不要放在5min以内 职场的人际关系在面对利…...
SQL高级编程:掌握自定义函数和过程的艺术
标题:SQL高级编程:掌握自定义函数和过程的艺术 在SQL的世界里,数据操作不仅仅局限于简单的查询和更新。通过自定义函数(User-Defined Functions, UDFs)和存储过程(Stored Procedures)ÿ…...
python监听环境内是否有声音
python监听环境内是否有声音 首先使用pyaudio打开麦克风,并开始录音。然后使用一个while循环来不断读取麦克风录取的音频数据,然后使用numpy来分析音频数据是否有声音。当检测到有声音时,会打印"有声音"并退出循环。最后关闭录音流…...
合并两个有序链表--力扣
题目如下: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例如下: 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入:l1 [], l2 …...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
