在AWS 上实现 SaaS u中 的 身份认证与隔离 ·...

45
AWS 中国(北京)区域由光环新网运营 AWS 中国(宁夏)区域由西云数据运营 AWS 中国(北京)区域由光环新网运营 AWS 中国(宁夏)区域由西云数据运营 AWS 上实现 SaaS 平台中的 身份认证与隔离 谷雷,AWS 解决方案架构师

Transcript of 在AWS 上实现 SaaS u中 的 身份认证与隔离 ·...

Page 1: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

在 AWS 上实现 SaaS 平台中的身份认证与隔离

谷雷,AWS 解决方案架构师

Page 2: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

日程

• 常见身份验证和授权标准及其使用场景

• 多租户 SaaS 平台的身份认证与隔离

Page 3: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

常见身份验证和授权标准及其使用场景

Page 4: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

常见国际身份鉴别标准

https://arch.idmanagement.gov/ Ref: 云计算身份鉴别服务密码标准体系 - 密码行业标准化技术委员会

结构化信息标准促进组织(Organization for the Advancement of Structured Information Standards,简称 OASIS)。OASIS 发布的 SAML、WS-Federation 系列标准已被广泛应用,主要应用于单点登录、身份联合和授权技术,在云计算身份鉴别服务中提供强身份鉴别和联合身份鉴别。

国际互联网工程任务组(The Internet Engineering Task Force,简称 IETF)。 IETF发布的 Oauth 系列实现了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,IETF 提出的《跨域身份管理系统》(RFC 7642、RFC7643、 RFC7644), JSON Web Token (JWT)标准( RFC7515、RFC 7516)为云计算身份鉴别服务的跨域身份鉴别和身份管理提供重要的参考。

开放的身份标识联盟(OpenID)。该组织制定的 OpenID 系列标准是一种分布式的可解决用户使用同一种身份凭据访问多个网络应用或云服务的身份鉴别问题的解决方案,是以用户为中心的数字身份识别框架,该标准在云计算身份鉴别中应用较为广泛,是云计算身份鉴别标准体系重要组成部分。

国际电信联盟-电信标准化部(International Telecommunication Union- Telecommunication

Standardization Sector,简称 ITU-T)。该组织发布了对 OpenID 和 OAuth 的支持标准,推进了 OAuth 和OpenID 在云计算中的应用。

Page 5: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

身份和访问权限管理的常见场景

企业级业务单点登录场景 http://saml.xml.org/saml-specifications

用户在企业或者组织内部有多个应用时,登陆其中一个应用后可以直接登陆其他应用,不需要再次对用户进行身份鉴别(例如重新输入用户名/

口令)。典型的解决方案可以采用 SAML 协议。

=========================

SAML 标准是一种基于 XML 的单点登录开放标准,是实现站点之间相互操作的安全访问控制框架,适用于复杂环境下交换用户的身份识别信息

Page 6: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

身份和访问权限管理的常见场景

OIDC 身标识鉴别场景 https://www.oasis-open.org/committees/download.php/27819/sstc-saml-

tech-overview-2.0-cd-02.pdf

SAML 是一个基于 XML 的标准,用于在不同的安全域(security domain)之间交换认证和授权数据。SAML 标准定义了身份提供者(Identity Provider,即 IDP)和服务提供者(Service Provider)两个参与实体,二者构成了不同的安全域。

SAML 标准是一种基于 XML 的单点登录开放标准,是实现站点之间相互操作的安全访问控制框架,适用于复杂环境下交换用户的身份识别信息

Page 7: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

身份和访问权限管理的常见场景

开放的身份认证和授权场景 http://openid.net/connect/

http://openid.net/certification/

用户使用某一种身份标识可以随时登陆不同的应用,典型的实现方案是采用基于 Oauth 的OpenID 协议,用户标识是一个 URI,身份提供方和依赖方一般部署在不同的云中,并且当用户登录某个依赖方时可以选择使用其在某一个身份提供方注册的身份信息。

例如常见的互联网站点及应用,特别是云计算环境下,第三方应用的身份鉴别场景。

=======================

OpenID 是一种分布式、去中心化可解决用户使用多个网络应用或云服务时的身份鉴别问题的解决方案,是以用户为中心的数字身份识别框架,其核心思想是通过 URI 来标识一个合法用户,即,用户可以在一个 OpenID 服务提供商处注册一个账号,然后利用该账号登录支持该OpenID 的所有第三方应用。

Page 8: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

身份和访问权限管理的常见场景

http://openid.net/connect/

OpenID 协议建立在 OAuth 2.0 授权框架基础之上,将用户身份信息作为一种资源:

• 每个第三方应用使用 OpenID 提供方发放的 ID 令牌来确认用户的身份,使用与 ID 令牌同时发放的访问令牌获取用户详细的身份信息;

• 用户只需要记忆其在 OpenID 提供方上的口令凭据,不需要在第三方应用程序执行注册流程就可以使用第三方应用程序提供的服务。

OpenID Connect(OIDC)的认证流程• Authorization Code Flow:使用 OAuth2 的授权码

来换取Id Token 和Access Token。• Implicit Flow:使用 OAuth2 的 Implicit 流程获取 Id

Token 和 Access Token。• Hybrid Flow:混合 Authorization Code

Flow+Implici Flow。

Page 9: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

AWS Identity and Access 管理相关服务

AWS Identity and Access

Management (IAM) 细粒度的 AWS resources 资源管理。

AWS Organizations基于策略的多 AWS accounts 管理。

AWS Directory ServiceAWS Cloud 中的 Microsoft

Active Directory 管理。

Amazon Cognito快速轻松地为 Web 和移动应用程序添加用户注册/登录和访问控制功能。

OIDC+OAuth 2.0

SAML 2.0

AWS Single Sign-OnAWS accounts 和企业应用间的单点登录管理(SSO)

SAML 2.0

AWS Secrets Manager在整个生命周期中,轻松轮换、管理和检索数据库凭证、API 密钥和其他私密信息。

Page 10: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

多租户 SaaS 平台的身份认证和隔离

Page 11: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

为什么 SaaS 要建立在 AWS 云上?

访问 SaaS on AWS:https://amazonaws-china.com/cn/partners/saas-on-aws/

Page 12: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

身份认证和授权重要,合适的力度

最小化用户干扰 不能成为扩展的瓶颈安全永远第一

客户信息所有权 客户关系网络安全和访问控制 用户体验

Page 13: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

传统的服务认证方式

Cart ServiceCatalog

Service

Checkout

Service

Tenant

Management

ServiceUser

SelectProductLookupTenant

TenantID

AddToCartLookupTenant

TenantID

Checkout

LookupTenant

TenantID

当服务较多时,身份认证容易成为瓶颈

Page 14: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

更高效的方式

Identity Broker

Token

User Identity

Tenant Identity

Cart ServiceCatalog

Service

Checkout

Service

User Identity + Tenant Identity = SaaS Identity

Page 15: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

基于 OIDC 的联合身份认证

us-east-1

App

Security Token

Service

Amazon

DynamoDB

符合 OpenID Connect

的身份提供者

2

4

使用 AWS 临时凭证访问 AWS 资源

重定向以进行身份认证并收到 ID token

用 ID token 交换Cognito token

3End

User1

开始使用 App

Amazon Cognito用 Cognito token交换 AWS 临时凭证

Developer’s AWS Account

5

使用情景

• 前端 App 访问 Amazon DynamoDB 存放数据,并可以通过 Salesforce 账号登录;

好处

• 开发者不需要维护用户数据库

• App 不会持有长期的 AWS 凭证

• 用户不需要记住多个用户名和密码

• 开发者和用户可以选择多个身份提供者(identity providers)

Page 16: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

SaaS 身份认证和授权的考虑因素

Tenant Context 的注入

安全和管理

租户(Tenant)访问

基于角色(Roles)的访问

租户(Tenant)开通

Page 17: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

Amazon Cognito 服务

AWS 资源访问控制 • 支持 OpenID Connect 和 OAuth 2.0

• 安全且可扩展的用户目录 • 社交和企业联合身份验证 • 与您的应用程序轻松集成

Page 18: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

Amazon Cognito 服务概述

User Pools Federated Identity (Identity Pools)

Sign-up/Sign-in

User Profiles

Issue Tokens

Hosted UIs

OAuth2/OIDC IdP & RP

SAML2 SP

Federation

Guest Access

AWS Credentials

Cross Device Sync

Page 19: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

Amazon Cognito授权场景

Cognito User Pool( CUP)

AWS Credentials

Google Facebook

Page 20: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

SaaS 平台中的各类用户

Tenant-1

User

Tenant-1

User

Tenant-1

User

Tenant-2

User

Tenant-2

User

Tenant-2

User

Tenant-1

Admin

Tenant-2

Admin

System

Admin

System

Ops

System

Support

Page 21: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

多重身份的部署

Page 22: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

SaaS 平台租户(Tenant)的注册

New Tenant

On-BoardingTenant

Identity BrokerIdentity

Provider

Tenant

ManagementBilling

• User: [email protected]

• TenantID: 491048735

• TenantID: 491048735

• Domain: abc.com

• Tier: Platinum

• Status: Active

Domain

ProvisioningSSL

Certificate

IAM Policy

Page 23: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

租户的身份策略管理

Tenant

• Password policies

• Validation policies

• MFA policies

Tenant Admin

Console

Amazon

Cognito

User Pool

(Tenant1)

User Pool

(Tenant2)

Policies

User group

(Tenant1.A)

User group

(Tenant1.A)

Page 24: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

租户开通的考虑点

• 租户身份登记时的平滑进行;

• 和第三方身份认证集成时,要考虑容错;

• 考虑租户的生命周期管理;

• 租户基本的身份策略管理;

• 租户管理应自动化和重复。

Page 25: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

身份认证和资源隔离的方式

全栈隔离

Web Tier

App Tier

Tenant 1

Web Tier

App Tier

Tenant 2

资源级隔离

Tenant 1 Tenant 2

Tenant 1 Tenant 2

Tenant 1 Tenant 2

应用级隔离

Tenant1

Tenant2

Tenant1

Tenant2

Tenant1

Tenant3

Key

Page 26: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

通过 IAM 策略限定租户 (Tenant) 访问范围

Web Tier

App Tier

Tenant1 Access

Policy

CustomerTable

Tenant2 Access

Policy

T1-Bucket T2-Bucket

Page 27: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

租户和访问策略的绑定

Web

Application

Tenant

Identity

Broker

Identity

Provider

AWS cloud

• 租户身份信息转换为STS token;• 获取令牌时,限定租户(Tenant)的访问范围;• 使用临时的token。

Page 28: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

管理 IAM 策略

{

"Version": "2012-10-17",

"Statement": {

"Effect": "Allow",

"Action": "s3:ListBucket",

"Resource":

"arn:aws:s3:::test_bucket"

}

}

Tenant IAM Policies

Tenant

Provisioning

• 租户相关的访问策略

• 基于 Role 的应用和租户访问策略设置

• 使用 AssumeRoleWithWebIdenity()

Role for Identity

Provider Access

Page 29: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

细粒度访问控制

细粒度的访问 Amazon DynamoDB 资源{

"Sid": "TenantReadOnlyOrderTable",

"Effect": "Allow",

"Action": [

"dynamodb:GetItem",

"dynamodb:BatchGetItem",

"dynamodb:Query",

"dynamodb:DescribeTable"

],

"Resource": [

"arn:aws:dynamodb:us-east-1:7000001000000:table/Order"

],

"Condition": {

"ForAllValues:StringEquals": {

"dynamodb:LeadingKeys": [

"${cognito-identity.amazonaws.com:sub}"

]

}}

}

Page 30: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

细粒度访问控制 - 基于角色的访问控制

Page 31: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

细粒度访问控制 - 基于角色的访问控制

Page 32: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

安全和隔离的考虑点(Security & Isolation)

• 根据实际情况来考虑资源隔离的方式和颗粒度;

• 避免不同的租户有不同的 AWS IAM 用户

• 对资源隔离进行自动化测试

• 在设置访问策略时要充分考虑扩展性、自动化和管理性等因素;使用AWS IAM 限制租户(Tenant)的访问范围

Page 33: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

开通 SaaS Provider Roles

Federated Identity

Provider

• User: [email protected]

• Role: Admin

• TenantID: None

>sudo create-user

Identity BrokerSaaS Provider

Admin Console

User Provisioning

Third-Party Tool

• 可查看多租户的资源

• 新的访问策略的设定

• 用户开通的定制(非正常注册流程)

Page 34: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

开通 Tenant User Roles

SaaS Application

Sales Marketing

SaaS User

On-Boarding

Application Roles

• 租户(Tenant)身份被传递到应用的用户上;

• 应用决定用户进入体验。

Page 35: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

配置 AWS IAM Roles and Policies

System Admin IAM Policy

"Version": "2018-06-17”,

"Statement": {

"Effect": "Allow",

"Action": ”*",

"Resource": "arn:aws:s3:::test_bucket”

}

"Version": "2018-06-17",

"Statement": {

"Effect": "Allow",

"Action": ” s3:ListBucket”

"Resource": "arn:aws:s3:::test_bucket”

}

Support IAM Policy

Role for Identity

Provider Access

Support Role

>provision

Role for Identity

Provider Access

System Admin Role

Page 36: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

使用 Roles 的考虑点

• 灵活使用“Roles” ,避免租户(tenant)直接访问 AWS 资源;

• 通过联合身份认证进行工具的集成;

• 对所有的 admin 操作进行多因素认证(MFA) (CLI or console)

• 自动的配置和管理系统访问策略。

Page 37: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

生成 SAAS IDENTITY

User Identity

Amazon

Cognito

Tenant Identity

• Tenant ID

• Company Name

• Status

• Billing Tier

SaaS Identity

• SaaS 认证和授权• 隐式隔离(Implicit Isolation)• 应用租户(Tenant)策略• 嵌入 SaaS Context

A First-Class SaaS Token

Page 38: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

Tenant Context 的考虑点

• 避免跨界的 tenant context 解读

• 在 ID token 中声明 tenant

• 在从 Token 中解包 tenant 信息时,隐藏不必要的信息

• User identity + Tenant identity = SaaS identity

Page 39: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

举例:EMBEDDING TENANT CONTEXT IN CLAIMS

Access Token

ID Token

{

"sub” : ”jane",

"email” : ”[email protected]",

"email_verified” : true,

"name” : ”Jane Doe",

"given_name” : ”Jane",

"family_name” : ”Doe",

"phone_number” : ”(408) 555-1212",

"profile” :

"https://test.com”

}

{

"iss” : "https://test.auth.com/",

"aud” : "https://test.com/v1/",

"sub” : "usr_123",

"scope” : "read write",

"iat” : 1458785796,

"exp” : 1458872196

}

JSON Web Token (JWT)

JSON Web Token (JWT)

Tenant

Identity Claims

• TenantID

• Status

• Tier

Add tenant attributes

as custom claims

Page 40: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

Signed TokenJWT Token

TOKENS 的保护

{

"sub” : ”jane",

"email” :

[email protected]",

"email_verified” : true,

"name” : ”Jane Doe",

"given_name” : ”Jane",

"family_name” : ”Doe",

"phone_number” : ”(408) 555-1212",

"profile” : "https://test.com”

}

Certificate

eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.e

wogImlzcyI6ICJodHRwOi8vc2VydmVyLmV4YW1

wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5NzYxMDA

xIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9u

Y2UiOiAibi0wUzZfV3pBMk1qIiwKICJleHAiOiAxMz

ExMjgxOTcwLAogImlhdCI6IDEzMTEyODA5NzAKf

Q.ggW8hZ1EuVLuxNuuIJKX_V8a_OMXzR0EHR9R

6jgdqrOOF4daGU96Sr_P6qJp6IcmD3HP99Obi1P

Rs-

cwh3LOp146waJ8IhehcwL7F09JdijmBqkvPeB2T9

CJNqeGpegccMg4vfKjkM8FcGvnzZUN4_KSP0aAp

1tOJ1zZwgjxqGByKHiOtX7TpdQyHE5lcMiKPXfEI

QILVq0pc_E2DzL7emopWoaoZTF_m0_N0YzFC6g

6EJbOEoRoSK5hoDalrcvRYLSrQAZZKflyuVCyixEo

V9GfNQC3_osjzw2PAithfubEEBLuVVk4XUVrWOL

rLl0nx7RkKU8NXNHq-rvKMzqg

Page 41: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

对开发的简化

Web

AppClient

$rootScope.bearerToken = response.data.token;

var decodedToken = jwtHelper.decodeToken($rootScope.bearerToken);

$rootScope.userDisplayName = decodedToken['given_name'] + ' ' +

decodedToken['family_name'];

$rootScope.userRole = decodedToken['custom:role'];

Applicatin

Service

app.get('/order/:id', function(req, res) {

tokenManager.getCredentialsFromToken(req, function(credentials) {

var db = new DynamoDBHelper(orderSchema, credentials, config);

db.getItem(params, credentials, function (err, order)

}

}

Page 42: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

OIDC/SAML 联合认证使用场景

SAML

OIDC

OIDCExternal

InternalAD

OIDC OP

SAML IdP

Amazon Cognito

Amazon

Redshift

Amazon RDS

(Aurora, MySQL)

Amazon

QuickSight

Amazon

AppStream

Apps

Data plane APIs

SaaS Apps (Outside AWS)

Console API CLI

Page 43: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

SaaS 快速入门

https://aws.amazon.com/quickstart/saas/identity-with-cognito/

Page 44: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

AWS IAM 的 APN 合作伙伴

AWS Identity and Access Management (IAM) 已研发了一个 APN 合作伙伴生态系统,这些 APN 合作伙伴可向多个应用程序和基础设施服务提供单点登录 (SSO) 功能。

更多 AWS IAM 的 APN 合作伙伴信息,可访问: https://amazonaws-china.com/cn/iam/partners/

Page 45: 在AWS 上实现 SaaS u中 的 身份认证与隔离 · 了第三方应用使用授权服务器发放的访问令牌访问受保护资源。另外,ietf 提出的《跨域身份管理系统》

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

感谢参加 AWS INNOVATE 2018 在线技术大会我们希望您在这里找到感兴趣的内容!也请帮助我们完成投票打分和反馈问卷。

欲获取关于 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/