零基础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…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...