当前位置: 首页 > news >正文

零基础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,对于确保数据的完整性、性能和安全性至关重…...

基于单片机的智能晾衣系统设计

摘 要 :在网络信息技术的推动下,智能家居得到了广泛应用,文章根据当前的市场动态,针对基于单片机的智能晾衣系统设计展开论述,具体包括两个方面的内容———硬件设计和软件设计。 关键词 :单片机&#xff…...

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)&#xff…...

python监听环境内是否有声音

python监听环境内是否有声音 首先使用pyaudio打开麦克风,并开始录音。然后使用一个while循环来不断读取麦克风录取的音频数据,然后使用numpy来分析音频数据是否有声音。当检测到有声音时,会打印"有声音"并退出循环。最后关闭录音流…...

合并两个有序链表--力扣

题目如下: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例如下: 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入:l1 [], l2 …...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...