+ All Categories
Transcript

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

李萌 AWS解决方案架构师

AWS IAM权限策略管理

2019/12/31

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

议程

1. AWS IAM简介

2. AWS多账号权限管理

3. AWS IAM权限管控场景实践

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

AWS IAM简介

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

AWS Identity and Access Management (IAM)

策略 临时权限 角色AWSIAM服务

MFA令牌

AWS Identity and Access Management (IAM) 是一种 Web 服务,可以帮助您安全地控制对 Amazon Web Services (AWS) 资源的访问。您可以使用 IAM 控制对哪个用户进行身份验证 (登录) 和授权 (具有权限) 以使用资源。

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

访问AWS的方式

• Web Console → 用户名密码

• API, CLI, SDK → Access keys

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

AWS IAM策略概览

JSON格式的文档规范

包含指定的语句(权限): • AWS IAM主体可以采取什

么行动• 可以访问哪些资源

策略指定允许用户和系统在哪些资源上执行的AWS服务操作

注意: 默认情况下是Access is denied{ "Statement":[{

"Effect":"effect",

"Principal":"principal",

"Action":"action",

"Resource":"arn",

"Condition":{

"condition":{

"key":"value" }

}

}

]

}

Principal Action Resource Condition

支持多段statement语句,每段语句都包含PARC

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

Principal – 举例• 允许或拒绝访问资源的实体

• 通过ARN来表示 ( Amazon Resource Name )<!-- Everyone (anonymous users) -->

"Principal":"AWS":"*.*"

<!-- Specific account or accounts -->

"Principal":{"AWS":"arn:aws:iam::123456789012:root" }

"Principal":{"AWS":"123456789012"}

<!-- Individual IAM user -->

"Principal":"AWS":"arn:aws:iam::123456789012:user/username"

<!-- Federated user (using web identity federation) -->

"Principal":{"Federated":"www.amazon.com"}

"Principal":{"Federated":"graph.facebook.com"}

"Principal":{"Federated":"accounts.google.com"}

<!-- Specific role -->

"Principal":{"AWS":"arn:aws:iam::123456789012:role/rolename"}

<!-- Specific service -->

"Principal":{"Service":"ec2.amazonaws.com"}

用你的AWS账号ID替换

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

Action – 举例

• 描述应允许或拒绝的访问类型

• 您可以在文档中找到这些内容,或使用策略编辑器获取下拉列表

• 语句必须包含Action或NotAction元素

<!-- EC2 action -->

"Action":"ec2:StartInstances"

<!-- IAM action -->

"Action":"iam:ChangePassword"

<!– Amazon S3 action -->

"Action":"s3:GetObject"

<!-- Specify multiple values for the Action element-->

"Action":["sqs:SendMessage","sqs:ReceiveMessage"]

<-- Wildcards (* or ?) in the action name. Below covers create/delete/list/update-->

"Action":"iam:*AccessKey*"

Action的四种访问级别:• List – 查看资源列表• Read – 读取资源中的内容• Write – 创建,删除或修改资源• Permissions – 授予或修改资源权限

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

Resource – 举例

• 正在请求的一个或多个对象

• 语句必须包含Resource或NotResource元素

<-- S3 Bucket -->

"Resource":"arn:aws:s3:::my_corporate_bucket/*"

<-- Amazon SQS queue-->

"Resource":"arn:aws:sqs:us-west-2:123456789012:queue1"

<-- Multiple Amazon DynamoDB tables -->

"Resource":["arn:aws:dynamodb:us-west-2:123456789012:table/books_table",

"arn:aws:dynamodb:us-west-2:123456789012:table/magazines_table"]

<-- All EC2 instances for an account in a region -->

"Resource": "arn:aws:ec2:us-east-1:123456789012:instance/*"

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

Condition - 举例

"Condition" : {

"DateGreaterThan" : {"aws:CurrentTime" : "2016-11-30T11:00:00Z"},

"DateLessThan": {"aws:CurrentTime" : "2016-11-30T15:00:00Z"},

"IpAddress" : {"aws:SourceIp" : ["192.0.2.0/24", "203.0.113.0/24"]}

}

• 允许用户在以下条件下访问资源:• The time is after 11:00 A.M. on 11/30/2016 AND• The time is before 3:00 P.M. on 11/30/2016 AND• The request comes from an IP address in the 192.0.2.0 /24 OR

203.0.113.0 /24 range

必须满足所有条件才能使语句评估为TRUE.

AND

OR

如果您想限制对时间范围和IP地址范围的访问,该怎么办?

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

访问控制策略的类型

基于IAM策略 基于资源的策略

绑定在IAM user, group, role上.

Managed policies

Inline polices

绑定在resource上. Amazon S3 buckets

Amazon Glacier vaults

Amazon SNS topics

Amazon SQS queues

Amazon VPC Endpoint Policy

• 策略生成器:

• https://awspolicygen.s3.cn-north-1.amazonaws.com.cn/policygen.html

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

AWS IAM策略的逻辑和顺序,如下图

AWS IAM策略的执行过程

Yes

有允许吗?No

Yes

No

1)用户权限策略检查——检查该IAM实体是否被授予权限2)资源权限策略检查——检查存储桶所有者是否已授予权限(1,2是OR的关系)3)具体策略检查——查找策略中明确的“允许”

策略执行:任何策略中的明确拒绝均会覆盖所有允许条件

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

{"Version": "2012-10-17","Statement": [

{"Effect": "Allow","Action": [

"ec2:Describe*","ec2:GetConsole*"

],"Resource": "*"

},{

"Sid": "THISLIMITSACCESSTOOWNINSTANCES","Effect": "Allow","Action": [

"ec2:RebootInstances","ec2:StartInstances","ec2:StopInstances","ec2:TerminateInstances"

],"Resource": "arn:aws:ec2:*:123456789012:instance/*","Condition": {

"StringEquals": {"ec2:ResourceTag/OwnerTag": "${aws:username}"

}}

}]

}}

允许从EC2控制台查看所有内容

仅在此标记条件为真时才允许

在此处指定键值(使用标签)和值(变量)

锁定对Amazon EC2实例的访问

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

利用标签(Tag)功能实现ABAC(Attribute Based Access

Control)

IAM user: Anders

Project=Blue

i-a4321b12Project=Green

i-a1234b12

i-a4321b12

{"Version": "2012-10-17","Statement": [{

"Effect": "Allow","Action": "ec2:*","Resource": "*","Condition": {

"StringEquals": {"ec2:ResourceTag/Project" : "Blue"

}}

}]

}

Anders 的IAM策略里赋予他访问所有带有Project=Blue 标签的EC2实例的所有API操作

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

Top 11 AWS IAM 最佳实践

0. Users – 为每个用户创建单独的IAM User.

1. Permissions –最小权限原则.

2. Groups –利用IAM Group简化用户组权限管理.

3. Conditions –利用Conditions实现精细化权限管控.

4. Auditing –开启 AWS CloudTrail 以记录所有AWS API访问.

5. Password –配置强密码策略.

6. Rotate –定期轮换密钥.

7. MFA – 为高权限用户开启 MFA 认证.

8. Sharing –利用IAM Role共享权限.

9. Roles –利用 IAM roles赋予和控制某服务访问其他服务的权限.

10. Root –根用户禁止用于日常运维.

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

AWS 多账号权限管理

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营© 2017 Amazon Web Services, Inc. 或其附属公司。保留所有权利。

安全/资源边界 API 限制/节流 计费分离

AWS 账号

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

为什么一个账号不够

计费

多团队

安全/合规性控制 业务流程

隔离

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

单账号,通过 AWS IAM 和 Amazon VPC 隔离

“灰色”边界

逐渐变得复杂和混乱

资源难以追踪

用户之间可能互相影响

所有资源

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营© 2017 Amazon Web Services, Inc. 或其附属公司。保留所有权利。

我应该创建什么账号?

安全 共享服务 计费

开发 生产沙箱 其他预生产

组织账号

日志存档 网络

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营© 2017 Amazon Web Services, Inc. 或其附属公司。保留所有权利。

多 账 号 设 计

开发人员沙箱

开发 预生产

团队/群组账号

安全

核心账号

AWS Organizations

共享服务

网络

日志存档 生产团队共享

服务

网络路径

开发人员账号 数据中心

组织:账号管理

日志存档:安全日志

安全:安全工具、AWS Config 规则

共享服务:目录、限值监控

网络:AWS Direct Connect

开发沙箱:实验、学习

Dev:开发

Pre-Prod:Staging

Prod: 生产

团队共享服务: 团队共享服务、数据湖

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

AWS Landing Zone解决方案

一种易于部署的解决方案,可自动启用如下设置

AWS 多账户新环境

基于 AWS 最佳实践和建议

初始安全

和管理控制

账号分配器 自动部署

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

AWS Landing Zone架构AWS Organizations

共享服务 日志 安全

Parameter

store

Organizations 账号

• 新账号创建/准备

• 账号登录管理(SSO)

共享服务账号

• Active Directory

• 日志分析

日志账号

• 安全日志存储

安全账号

• 审计、安全管控

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

AWS IAM权限管控场景实践

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

使用案例 1 - 用户通过SSO访问 AWS 账户和资源

用户使用自己现有的企业凭证登录 AWS 账户:

使用 AWS IAM 配置对您的各个 AWS 账户的联合 SSO 访问

AWS SSO 帮您在 AWS 范围内创建本地用户和群体,连接至

现有用户目录,设置权限并集中管理用户对多个 AWS 账户和

应用程序的访问。

使用 IAM 策略在您的 AWS 账户中定义精细用户权限

AWS Organizations 帮您管理多个 AWS 账户对 AWS 服务 API 的使用

情况

AWS中国区用户可采用SAML集成与企业AD域进行集成,实现AD账号登

录AWS控制台。

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

使用案例 2 - 应用程序访问数据和资源

避免在源代码中嵌入安全凭证

您可以使用 IAM 角色替代:

• IAM 角色与 Amazon EC2/Amazon EC2 容器以及

AWS Lambda 函数配合使用

AWS Secrets Manager 使您能够轻松地在整个生命周期轮换、管

理和检索数据库安全凭证、API 密钥和其他密钥。

您可以使用 IAM 策略定义对 AWS 资源的精细访问权限

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

案例2延伸: 应用程序的用户直接访问AWS资源

1

Corporate SSO

4

58

Client

Application

Amazon RDS Mysql

AWS IAM STS

1. Client 访问应用登录页面2. Client浏览器重定向到企业SSO登录页, 用户输入企业用户名密码登录;3. 登录成功后,SSO返回token给到应用程序;4. 应用程序向Amazon RDS数据库查询用户权限;5. 数据库返回;6. 应用调用AWS IAM STS API 获取AWS临时凭证;7. STS 返回临时凭证给应用;8. 应用返回token和AWS临时凭证给Client.

需求:

• 不同用户不同权限• 与企业现有SSO集成• 客户端直接与

S3/DynamoDB交互以提升性能

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

使用案例 3 - 用户访问您自己的应用程序

利用 Amazon Cognito,使用户携带来自于社会和企业身份供应

商的自身身份

Facebook、Google 及 Amazon 内置集成

与支持 OAuth 2.0、SAML 2.0 以及 OpenID

Connect (OIDC) 的企业身份供应商相集成

AWS中国区用户可利用AWS Cognito Identity Pool

与微信、微博等集成实现OpenID认证登录。

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

[email protected] ID: 111122223333

ddb-role

{ "Statement": [{ "Action":

["dynamodb:GetItem","dynamodb:BatchGetItem","dynamodb:DescribeTable",

"dynamodb:ListTables"],"Effect": "Allow","Resource": "*“

}]}

[email protected] ID: 123456789012

利用临时权限调用AWS APIs

{ "Statement": [{"Effect":"Allow","Principal":{"AWS":"123456789012"},"Action":"sts:AssumeRole"

}]}

IAM user: Anders

STS

获取到对应ddb-role权限的临时访问密钥

ddb-role的Policy里允许来自[email protected]

(123456789012)账号的AssumeRole操作

ddb-role的IAM策略

用Anders用户的 access

keys做认证

{ "Statement": [{"Effect": "Allow","Action": "sts:AssumeRole","Resource":

"arn:aws:iam::111122223333:role/ddb-role"}]}

Anders的IAM User权限是允许他 assume account B

中的ddb-role 这个角色

使用案例 4 – 跨账号访问AWS资源

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

其他资源

• AWS IAM home page: http://aws.amazon.com/iam

• Documentation

• http://aws.amazon.com/documentation/iam/

• http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ec2-api-permissions.html

• AWS Security Blog

• https://aws.amazon.com/blogs/security/demystifying-ec2-resource-level-permissions/

• https://aws.amazon.com/blogs/security/granting-users-permission-to-work-in-the-amazon-ec2-console/

• https://aws.amazon.com/blogs/security/how-to-create-a-limited-iam-administrator-by-using-managed-policies/

• IAM forum: https://forums.aws.amazon.com/forum.jspa?forumID=76

AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营AWS 中国(宁夏)区域由西云数据运营AWS 中国(北京)区域由光环新网运营

我们希望您喜欢今天的内容!也请帮助我们完成反馈问卷。

欲获取关于 AWS 的更多信息和技术内容,可以通过以下方式找到我们:

感谢参加 AWS 在线研讨会

微信订阅号:AWS 云计算(awschina)

新浪微博:https://www.weibo.com/amazonaws/

领英:https://www.linkedin.com/company/aws-china/

知乎:https://www.zhihu.com/org/aws-54/activities/

视频中心:http://aws.amazon.bokecc.com/

更多线上活动:https://aws.amazon.com/cn/about-aws/events/webinar/

微信服务号:AWS Builder 俱乐部(amazonaws)

抖音:亚马逊云计算(抖音号:266052872)


Top Related