零基础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 None

def 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 None

def 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,例如:AmazonS3ReadOnlyAccess
        minimal_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云开发/云架构方案!

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

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

相关文章

宠物空气净化器是智商税吗吗?哪款最好用?

在当今社会,随着生活节奏不断加快,许多人会感到孤独。因此养猫已成为许多家庭的生活方式之一。他们期待着家里有欢声笑语的出现,希望家里一推开门都是有猫咪等着自己,在自己无人诉说心事的时候,猫咪能给自己一份陪伴。…

Linux日常运维-任务计划(crontab)

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 本小章内容就是Linux进阶部分的日常运维部分,掌握这些日常运维技巧或者方法在我们的日常运维过程中会带来很多方…

微信云开发云存储 下载全部文件

一、安装 首先按照这个按照好依赖,打开cmd 安装 | 云开发 CloudBase - 一站式后端云服务 npm i -g cloudbase/cli 安装可能遇到的问题 ‘tcb‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。-CSDN博客 二、登录 在cmd输入 tcb login 三、…

如何将CSDN文章导出为pdf文件

第一步: 打开想要导出的页面,空白处点击鼠标右键⇒点击“检查”或“check”,或直接在页面按F12键。 第二步: 复制以下代码粘贴到控制台,并按回车。 若提示让输入“允许粘贴”或“allow pasting”,按提示…

win10安装docker,打包python、java然后centos执行镜像

一、win10安装Docker Desktop docker官网(需要魔法)下载:https://www.docker.com/products/docker-desktop/ 安装方法参考:https://blog.csdn.net/beautifulmemory/article/details/137970794 下载完毕后界面安装,不勾…

CPU内部单总线数据通路各阶段的微操作序列利控制信号

1.内部总线与系统总线 内部总线是指同一部件,如CPU内部连接各寄存器及运算部件之间的总线; 系统总线是指同一台计算机系统的各部件,如CPU、内存、通道和各类/0接口间互相连接的总线。 2.寄存器之间数据传送 比如把PC内容送至MAR&#xff…

2024开源资产管理系统推荐 8款免费开源IT资产管理系统/软件

开源资产管理系统 开源资产管理系统是帮助企业管理、跟踪和优化其资产的强大工具。这些系统能够自动记录资产的详细信息,如采购日期、使用情况、维护记录等,从而实现资产的全生命周期管理。企业可以通过这些系统优化资产使用效率,减少资产闲…

什么是视频比特率?与视频时长是什么关系

​ ‌比特率是指单位时间内传输或处理的比特的数量,单位为‌bps(‌bit per second)。‌ 比特率经常用于描述在电信和计算领域中数据传输的速度,也可以作为衡量音频和视频文件数据率的指标。比特率越高,传送的数据越大,音频或视频…

345345

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话: 知不足而奋进,望远山而前行&am…

LevelDB源码分析(一)安装编译和简单Demo

初识LevelDB 认识LevelDB & 源码下载编译Mac源码下载和编译运行 认识LevelDB & 源码下载编译 LevelDB是 Google 编写的key-value存储库,提供从Key到Value的有序映射。 LevelDB的代码量相比其他开源项目较少,除了测试之外大约有不到两万行代码。 …

Mantel Test分析与绘图

目录 1.前言 2.步骤 3.在R语言中,除了mantel_test函数,还有其他几个工具和方法可以用于进行Mantel Test分析: 4.利用ggcor包在进行Mantel Test分析 5.使用ggcor包进行Mantel Test分析 6.两个距离矩阵的行名和列名不完全相同的处理方法 …

ES 模糊查询 wildcard 的替代方案探索

一、Wildcard 概述 Wildcard 是一种支持通配符的模糊检索方式。在 Elasticsearch 中,它使用星号 * 代表零个或多个字符,问号 ? 代表单个字符。 其使用方式多样,例如可以通过 {"wildcard": {"field_name": "value&…

【软件测试】功能测试理论基础

目录 项目的测试流程🏴 需求评审 评审形式 测试人员在需求评审中职责 测试计划与方案 测试计划 问题 测试方案🏴 测试计划与方案的对比 功能测试设计🏴 测试设计的步骤 项目的测试流程🏴 作用: 有序有效开展…

MT2523AS 原边10瓦无外围方案PCB设计要点

MT2523AS 是自供电原边反馈5V2A(10瓦)电源芯片。MT2523AS 内置功率三极管,采用脉冲频率调制(PFM)建立非连续导电模式(DCM)的反激式电源,外围设计极简化。MT2523AS 具有可变原边峰值电流,通过最大…

编程中数据字典介绍

目录 第一章、快速了解数据字典1.1)数据字典介绍1.2)主动数据字典1.2.1)主动数据字典对表字段的描述1.2.2)主动数据字典对表索引的描述1.2.3)主动数据字典对表外键的描述1.3)被动数据字典1.4)数…

CompletableFuture-应用

可以看到CompletableFuture实现了CompletionStage 和Future的两个接口。CompletionStage提供了任务之间的衔接能力,而Future则是经常用于阻塞获取结果。 CompletableFuture 的内部使用了基于 ForkJoinPool 的线程池,这种线程池可以高效地调度和执行任务…

WPF如何获取DataGrid的选中行

在DataGrid中加入这一行 <MouseBindingCommand"{Binding OpenWindowCommand}"CommandParameter"{Binding ElementNameNewPlanDataGrid, PathSelectedItem}"Gesture"LeftDoubleClick" /> </DataGrid.InputBindings> 然后ViewModel中…

与AI共创未来:Blackbox AI让工作更轻松

一、前言 还在为如何提升工作效率而烦恼吗&#xff1f;让 Blackbox AI 帮助你解锁全新生产力&#xff01;Blackbox AI 是一个功能强大的AI平台&#xff0c;集成了多种智能GPT对话助手和智能代码插件&#xff0c;专为满足现代工作的多样需求而设计。不管是在处理文本生成、数据…

ubuntu查看CPU、内存、硬盘

1、查看CPU cat /proc/cpuinfo 我这台机器CPU是2核&#xff0c;所以这里是2核 或者使用如下命令也可以查看 lscpu 查看CPU使用率 top 2、查看内存 查看内存信息&#xff1a; free -h 查看内存使用情况&#xff1a; vmstat 3、硬盘 查看硬盘使用情况&#xff1a; df -…

用IDEA创建Servlet实例

一.首先&#xff0c;Servlet是什么&#xff1f; &#x1f379;参考博文&#xff1a;servlet介绍 &#x1f387;参考视频&#xff1a;servlet原理 &#x1f340;参考网站&#xff1a;servlet教程 下图的web容器可以理解为tomcat服务器&#xff0c;servlet就是用来处理w…