简介:
欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。
我会每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿云开发/架构技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS最佳实践,并应用到自己的日常工作里。本次介绍的是如何通过用户组管理亚马逊云科技上的用户,基于工作职责的角色划分不同的用户组,并通过最小权限原则为用户组分配权限。本方案架构图如下:
方案所需基础知识
亚马逊云科技 IAM 服务介绍
亚马逊云科技 Identity and Access Management (IAM) 是一项强大的服务,帮助用户安全地管理对亚马逊云科技资源的访问权限。通过 IAM,用户可以创建和管理用户、用户组以及权限策略,从而控制谁可以访问哪些资源,以及可以执行哪些操作。
什么是用户、用户组和权限策略?
用户:
IAM 用户是亚马逊云科技账户中的个人实体,通常代表某个个人或应用程序。每个用户拥有唯一的身份认证信息,用于访问和管理 AWS 资源。
用户组:
用户组是一组 IAM 用户的集合。通过将用户分配到用户组,并为用户组附加权限策略,可以简化权限管理。所有属于该用户组的用户将继承该组的权限。
权限策略:
权限策略是定义用户或用户组可以访问哪些 AWS 资源以及可以执行哪些操作的规则。权限策略可以基于 JSON 格式编写,并附加到用户或用户组上,实现精细化的访问控制。
基于职责为用户分配最小权限的好处
增强安全性:
分配最小权限意味着用户只获得执行其职责所需的最低限度的访问权限,减少了意外操作或恶意活动带来的风险。
降低误操作风险:
限制用户只能执行与其工作相关的操作,降低了用户误操作导致数据泄露、删除关键资源等问题的可能性。
简化管理:
基于职责的最小权限策略使得权限管理更加清晰、简洁,便于管理员快速调整权限,确保系统在安全和管理方面的最佳状态。
符合合规性要求:
最小权限原则是许多安全法规和标准(如 GDPR、HIPAA)的要求,通过分配最小权限,可以帮助企业遵守相关合规性规定。
本方案包括的内容:
1. 创建用户组和用户,并将用户基于工作职责分配到用户组中。
2. 基于最小权限原则为不同职责的用户组分配权限
项目搭建具体步骤:
- 首先我们进入亚马逊云科技控制台,进入到IAM用户权限管理服务。
2.点击"Create Group"创建用户组,通过群组管理多个用户
3.为用户组命名为"SupportEngineers"
4.为用户组添加对EC2服务器的只读最小权限,在点击Create创建。
-
接下来点击"Create User"创建user用户
-
设置用户名为"support-engineer-1",并勾选"为用户提供亚马逊云科技控制台访问",为用户添加密码"supportPassword!123"。
- 选择"将用户添加到用户组中",并选择添加的用户组"SupportEngineers",点击Create User创建用户
- 创建好用户后会生成一个控制台登录网址URL。
-
在浏览器打开后,填入我们刚刚注册时填入的用户名和密码
-
登入后我们进入EC2服务主页。
- 接下来我们测试我们的EC2只读权限是否生效,我们选中一台EC2服务器,点击"Instance State"再点击"Terminate"删除EC2服务器。
- 控制台上显示报错,提示我们没有权限删除服务器,这是因为我们只为该用户分配了对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云开发/云架构方案!