零基础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创建。

  1. 接下来点击"Create User"创建user用户

  2. 设置用户名为"support-engineer-1",并勾选"为用户提供亚马逊云科技控制台访问",为用户添加密码"supportPassword!123"。

  1. 选择"将用户添加到用户组中",并选择添加的用户组"SupportEngineers",点击Create User创建用户
  1. 创建好用户后会生成一个控制台登录网址URL。
  1. 在浏览器打开后,填入我们刚刚注册时填入的用户名和密码

  2. 登入后我们进入EC2服务主页。

  1. 接下来我们测试我们的EC2只读权限是否生效,我们选中一台EC2服务器,点击"Instance State"再点击"Terminate"删除EC2服务器。
  1. 控制台上显示报错,提示我们没有权限删除服务器,这是因为我们只为该用户分配了对EC2的只读权限(查看EC2配置等),这说明我们的最小权限分配的测试成功。

利用代码实现最小权限原则管理

以下是一个使用 Python 和 Boto3 创建 IAM 用户、用户组,并基于最小权限分配权限的代码示例。

python 复制代码
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云开发/云架构方案!

相关推荐
数字供应链安全产品选型18 分钟前
公示 | 悬镜安全通过首批《信息技术 软件物料清单数据格式规范》行业标准符合性试点验证
安全
AWS官方合作商19 分钟前
AWS Lambda的安全之道:S3静态加密与运行时完整性检查的双重保障
安全·云计算·aws
MarkHD20 分钟前
蓝牙钥匙 第69次 蓝牙钥匙安全与便捷性平衡:从理论到实践的全方位解析
网络·人工智能·安全
还是奇怪39 分钟前
隐藏在字符编码中的陷阱:深入剖析宽字节注入
数据库·sql·安全·web安全
花落已飘1 小时前
openEuler安全特性深度评测:构建企业级安全防护体系
安全·ai
数据智能老司机2 小时前
构建一个 DeepSeek 模型——通过键值缓存(Key-Value Cache, KV Cache)解决推理瓶颈
架构·llm·deepseek
码界奇点2 小时前
解密AI语言模型从原理到应用的全景解析
人工智能·语言模型·自然语言处理·架构
pingao1413783 小时前
冰雪环境无忧测:冬季加热激光雪深监测站保障道路安全与气象研究
人工智能·安全
七宝大爷9 小时前
多GPU并行计算互联架构解析:NVLink的诞生与SLI CrossFire的落幕
架构·nvlink·sli
智驱力人工智能10 小时前
基于视觉分析的人脸联动使用手机检测系统 智能安全管理新突破 人脸与手机行为联动检测 多模态融合人脸与手机行为分析模型
算法·安全·目标检测·计算机视觉·智能手机·视觉检测·边缘计算