零基础5分钟上手亚马逊云科技核心云架构知识 - 权限管理最佳实践

news2024/9/20 8:28:29

简介:

欢迎来到小李哥全新亚马逊云科技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云开发/云架构方案!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

信息学奥赛初赛天天练-67-NOIP2018普及组-完善程序2-计数排序、排列、链表、单向链表、双向链表

PDF文档公众号回复关键字:20240817 1 完善程序 (单选题 ,每小题3分,共30分) 最大公约数之和 对于一个 1到 n的排列 P(即 1 到 n 中每一个数在 P中出现了恰好一次),令 q[i] 为第 i个位置之后第一个比 P[i] 值更大的位…

【数学建模】趣味数模问题-状态转移模型的应用

概述 状态转移模型结合图论,通过经典的智力问题展示了其在求解实际问题中的巧妙应用。虽然这些问题不需要复杂的数学知识,但通过建立数学模型,可以将其转化为标准的图论模型来解决。 问题1:人、狼、羊、菜渡河问题 问题描述&…

CUDA Out of Memory :CUDA内存不足的完美解决方法

CUDA Out of Memory 🛑:CUDA内存不足的完美解决方法 CUDA Out of Memory 🛑:CUDA内存不足的完美解决方法摘要 📝引言 🌟 什么是 CUDA Out of Memory 错误? 🤔基本定义常见场景 常见的…

基于spring boot的小型诊疗预约平台的设计与开发

TOC springboot262基于spring boot的小型诊疗预约平台的设计与开发 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进…

canal数据同步工具介绍与应用

canal服务 canal介绍canal版本与环境canal 服务集canal应用场景: canal常见问题xml配置问题连接认证问题jar版本问题连接问题 canal介绍 ‌1、Canal是‌阿里巴巴开源的‌MySQL增量数据订阅和消费工具,通过模拟MySQL的‌slave与‌master交互,捕…

XSS- DOMclobbering与svg深度利用

目录 源码展示 解法一&#xff1a;绕过过滤-DOM clobbering 什么是DOM clobbering DOM clobbering原理 全局变量自动创建 属性名冲突 影响脚本执行 逐过程分析 源码展示 <script>const data decodeURIComponent(location.hash.substr(1));;const root documen…

深度学习------------池化层

目录 池化层二维最大池化填充、步幅和多个通道平均池化层 总结池化层的代码部分实现池化层的正向传播验证二维最大池化层的输出该部分总代码 验证平均池化层该部分总代码 填充和步幅深度学习框架中的步幅与池化窗口的大小相同该部分总代码 填充和步幅可以手动设定该部分总代码 …

adb查看当前运行的应用的包名和Activity(模拟器也可以)

adb查看当前运行的应用的包名和Activity(模拟器也可以) 在adb 中&#xff0c;输入命令&#xff1a;adb shell 进入adb模式 adb shell dumpsys window w |findstr / |findstr name 输入完成后会显示当前运行的应用的包名和Activity(模拟器也可以) 例如抖音 ** **

布隆过滤器--极致的速度

前言 上一篇博客提到了位图&#xff0c;位图是十分高效的数据结构&#xff0c;但可惜的是只支持整型&#xff0c;今天这篇博客的主角是布隆过滤器&#xff0c;他与位图有异曲同工之妙。&#xff08;不了解位图可以点击下面这篇博客快速了解&#xff09;位图&#xff08;bitse…

【初阶数据结构】链表(附题)

目录 一、顺序表的问题及思考 二、单链表 2.1链表的概念及结构 2.2.单链表的实现 2.2.1.节点的定义 2.2.2.链表的打印 2.2.3.头部插入删除/尾部插入删除 a.创建节点 b.尾插 c.头插 d.尾删 e.头删 2.2.4.查找数据 2.2.5.在指定位置之前插入数据 2.2.6删除pos节点 …

rabbitmq镜像集群搭建

用到的ip地址 ip地址端口192.168.101.65&#xff08;主&#xff09;15672192.168.101.7515672192.168.101.8515672 安装erlang和rabbitmq 安装 安装三个包 yum install esl-erlang_23.0-1_centos_7_amd64.rpm -y yum install esl-erlang-compat-18.1-1.noarch.rpm -y rpm -…

联想电脑如何查看ip地址?详细介绍几种方法

随着互联网的普及和技术的飞速发展&#xff0c;IP地址已成为我们日常网络活动中不可或缺的一部分。无论是访问网站、远程办公还是进行网络游戏&#xff0c;IP地址都扮演着重要的角色。对于联想电脑用户来说&#xff0c;了解如何查看自己的IP地址是一项基本技能。虎观代理小二将…

leetcode 2221.数组的三角和

1.题目要求: 给你一个下标从 0 开始的整数数组 nums &#xff0c;其中 nums[i] 是 0 到 9 之间&#xff08;两者都包含&#xff09;的一个数字。nums 的 三角和 是执行以下操作以后最后剩下元素的值&#xff1a;nums 初始包含 n 个元素。如果 n 1 &#xff0c;终止 操作。否则…

拯救者杯OPENAIGC开发者大赛今日迎来决赛,现场179支参赛团队角逐AI桂冠

2024拯救者杯OPENAIGC开发者大赛于今日&#xff08;8月17日&#xff09;在上海中庚聚龙酒店迎来精彩决赛&#xff01; 创未来AI应用赛 拯救姬AI创意赛 AI Agent极限挑战赛 三大赛道决战巅峰 37位行业大咖评审 企业&高校179支顶尖开发团队同台竞技 挑战赛33支团队现场…

golang(gin框架)结合前端h5用户注册(演示版)

1、在宝塔上软件商店安装&#xff1a;GO语言版本管理器&#xff1b; 2、把本地文件上传到服务器端&#xff1b; 3、 4、 Go 语言官方提供了一个适合中国大陆用户使用的模块代理 goproxy.cn。你可以配置 Go 使用这个代理&#xff0c;具体操作如下&#xff1a; 临时设置代理…

【Verilog-CBB】开发与验证(5)——RS后向打拍器

引言 接上篇&#xff0c;完成了RS前向打拍器的CBB设计。RS后向打拍器的设计则主要是为了缓解ready信号的时序问题。后向打拍器是对ready以及数据信号进行寄存。 RS后向打拍器的设计逻辑是这样的&#xff0c;复位时&#xff0c;ready缓存器&#xff08;深度为1&#xff09;对上…

栈与递归——385、341、394

385. 迷你语法分析器(中等) 给定一个字符串 s 表示一个整数嵌套列表&#xff0c;实现一个解析它的语法分析器并返回解析的结果 NestedInteger 。 列表中的每个元素只可能是整数或整数嵌套列表 示例 1&#xff1a; 输入&#xff1a;s "324", 输出&#xff1a;324 解释…

8个Python实用技巧,让你的代码效率飞起来

想要成为一名Python编程高手&#xff0c;不仅需要掌握语言的基础知识&#xff0c;还需要了解一些高效编程的技巧。 一、列表推导式 列表推导式是Python中一种快速生成列表的方法&#xff0c;相比传统的循环方式&#xff0c;代码更简洁、更高效。 # 使用列表推导式生成0到9的平…

vuex刷新数据丢失解决方式(插件)

1、下载插件 npm install vuex-persistedstate --save2、引入即可 import Vue from vue import Vuex from vuex import createPersistedState from vuex-persistedstate Vue.use(Vuex)const store new Vuex.Store({state: {login: null},mutations: {setlogin(state, login) …

总结HashMap, HashTable, ConcurrentHashMap 之间的区别

HashMap, HashTable, ConcurrentHashMap都是使用同一种数据结构&#xff08;数组链表&#xff09;&#xff1b; HashMap多线程状态下是不安全的&#xff1b;HashTable和ConcurrentHashMap是在HashMap的基本的数据结构上进行优化&#xff0c;使他们在多线程下是安全的&#xff…