inside tae - it168.com –...

39
Inside TAE

Upload: vonga

Post on 18-Feb-2018

225 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

Inside TAE

Page 2: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

TAE

SAE

BAE

GAE

Page 3: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

• 定位:淘宝的受控第三方开放基础设施

• 最初需求来自店铺装修市场

– 个性化展示和交互

– 更复杂的后台业务逻辑

• 现在已经是一个完备的AE系统

– PHP

– JAVA

TAE

Page 4: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

淘宝U站(优站) uz.taobao.com

Page 5: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存
Page 6: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

uz.taobao.com

• 800+ TAE App

• 2000+ App版本

• 日均UV 130W+,PV 1200+

• 平均单用户浏览页面9.08个

• 平均访问时长7分38秒

Page 7: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

PHP 容器篇

Page 8: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

负载均衡(LVS/F5)

Nginx

App Container

App Container

Cache File 业务服务

Mysql

开发者后台

小二 后台

应用中心

小二

ISV

浏览者

Nginx

日志系统

弹性计算

监控系统

部署系统

Nginx资源池

应用容器池

系统概览

Page 9: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

xiaoxiqi │app.yml └view │─a.php └templates └ a.tpl

grid xiaoxiqi

… appx

开发者后台

部署

<?php $a = $appEngine->find("xService"); echo "<br>".$a->someMethod(); ?>

Page 10: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

grid xiaoxiqi

… appx

负载均衡设备

Nginx Nginx

xiaoxiqi │app.yml └view │─a.php └templates └ a.tpl

<?php $a = $appEngine->find("xService"); echo "<br>".$a->someMethod(); ?>

Page 11: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

PhpProgram └─BlockStatement │─ExpressionStatement │ └─ … └─EchoStatement └─ MethodInvokeStatement grid xiaoxiqi

… appx xService

负载均衡设备

Nginx

$a = $appEngine->find("xService"); echo "<br>".$a->someMethod();

Page 12: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

店铺装修

grid

app1 app2

grid

app2 app3

grid

app3 app1

RPC

淘 宝 基 础 服 务 Tair TFS MySql OceanBase Meta HSF

LB/LVS

Tae Nginx Tae Nginx

RPC

HSF HSF

HTTP

店铺浏览

LB/LVS LB/LVS

路由

Page 13: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

用户域 编程规范

JVM (For TAE)

Linux Security Container(T4 for TAE)

Linux OS With Sandbox

服务接入(proxy)

Smarty模板

TAE Servlet层

前端组件

安全

JBoss/Jetty(With Java Security)

DB服务

文件服务

日志服务

缓存服务

业务服务

Tae Common Engine层

PDO组件

应用逻辑

系统域

动态配置

PHP容器结构

PHP Groovy Velocity 缓存 加载 编译 执行

权限 Context 分派 缓存 过滤 流控 绑定 Caja

部署 监控

服务API

Page 14: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

对Quercus的改进

没有大规模商用的实验室产品

能够工业化,大规模使用的产品 U站 -- 9个月 -- 800+ ISV,应用版本

Page 15: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

PHP安全

• 没有PHP原生环境

– 第三方代码:PHP;容器代码:java

– 弱类型语言操作强类型语言

– 代码执行引擎和代码本身处于不同的层级

• 前端安全

– Caja沙箱 + HTML/CSS 白名单过滤

– 上线前黑白盒扫描,上线后定时黑盒扫描

• 资源安全

– 死循环;耗时操作

– 大内存

Page 16: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

JS安全解决方案

Page 17: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

物理机

Linux Container

IpTables

JVM 4 TAE Grid 进程

Java SandBox

JBOSS/Jetty

Quercus Engine

PHP 白名单

app1 app2 appx …

Page 18: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

物理机

Linux Container

IpTables

JVM 4 TAE Grid 进程

Java SandBox

JBOSS/Jetty

Quercus Engine

PHP 白名单

app1 app2 request response

Caja SandBox TB

MLFilter

TaoBao Header

站点类型定制前端

TaoBao Footer

AppCode HtmlOut

js/css

Page 19: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

JAVA 容器篇

Page 20: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

需要解决什么问题?

• 安全问题!

– ISV代码、数据安全

– *淘宝买家数据安全

– *淘宝数据安全

• 提供JAVA运行容器

Page 21: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

难点 - 安全

• 应用层安全问题 – Cookie & session 泄漏用户信息

– Html、js、css、pic 等问题

– 调用未授权的服务

– Sql 注入

– XSS CSRF

• 系统层安全问题 – 资源竞争 (死循环、线程数耗尽)

– 攻破Java沙箱

– 系统0day

后果 很严重

Page 22: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

难点– 安全

• 设计时基本考虑 – 需要的是安全体系,每一层有具体的职责

– “Java沙箱被by pass”是网络、系统层防御措施的基本假设

• 安全体系层级 – 应用层

– JVM层

– 系统层

– 网络层

– 运行时监控

Page 23: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

JAVA应用安全体系

单用户单进程

IPtables

监控审计

普通用户权限

T4 chroot T4 Capability Instance

selinux

Iptables 监控

危险指令调用监控

JVM

JDK定制

Java Policy File

Security Manager

应用层

CA

JA

Dru

id

TBM

L

Co

okie&

Session

资源限制

系统层

网络层

JVM

上线前TopScan黑盒扫描

上线后定期TopScan黑盒扫描

上线前STC代码扫描

Page 24: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

单进程多应用方案

• 单进程 多app

• 问题

– 权限无法隔离

– 资源也无法隔离

App1 App2

VM

Jetty

App3 App n

Page 25: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

单用户单进程方案

• 单进程单App

• 优点

– 资源隔离有好转

– 可以初步做到文件访问权限隔离

App1

VM

Jetty 1

App2

Jetty 2

App4

Jetty 3

App n

Jetty n

Page 26: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

• 单用户单进程 – 文件权限的设置 用户最小权限

• 问题 – 用户管理需要root权限,root权限如果被拿到,其他app就危险了

– 文件权限的管理复杂

– 如果root权限需要开通,没有办法将instance的capability全部去除,那安全级别就会降低

– 资源隔离还不够彻底

setfacl -m g:tae_apps:x / setfacl -m g:tae_apps:x / setfacl -d -m g:tae_apps:- /etc setfacl --set u::rw,g::r,o::r,g:tae_apps:- /etc/group setfacl --set u::rw,g::r,o::r,g:tae_apps:- /etc/passwd setfacl --set u::rw,g::r,o::r,g:tae_apps:- /etc/shadow setfacl -b -R /root setfacl -m g:tae_apps:- /root setfacl -m g:tae_apps:x /home setfacl -d -m g:tae_apps:- /home setfacl -m g:tae_apps:- /home/admin setfacl -m g:tae_apps:- /home/hubble setfacl -m g:tae_apps:- /home/tops

Page 27: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

单VM单用户单进程方案

• 单Instance 单进程 – 每个instance有且只有一个java进程

– lxc Instance去除所有的capability

– Instance的root帐号降级为普通帐号

• 优点 – 安全模型更简单粗暴 – 架构更简单 ,管理更方便: 不需要在instance内在搞多用户

PHY

App1

Jetty 1

lxc Instance1

App2

Jetty 2

lxc Instance2

Page 28: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

单VM单用户单进程方案

• 问题

– 资源问题 – 会生成大量的lxc incetance

• 需要休眠方案

– IP不够用

• 需要lxc incetance无IP方案

Page 29: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

资源问题应对方案

– 按需启动 将长时间不访问的应用进程关掉 当有访问时,启动进程,提供服务

– 两种方式

• 端口转发

• 通道

Nginx

Xinetd

Jetty

在所有定义的服务端口监听连接 守护进程

Fork

Channel channel = System.inheritedChannel();

Page 30: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

安全体系回顾

单用户单进程

IPtables

监控审计

普通用户权限

chroot Linux Capability Instance

selinux

Iptables 监控

kernel patch监控

危险指令调用监控

JVM

JDK定制

Java Policy File

Security Manager

应用层

CA

JA

Dru

id

TBM

L

Co

okie&

Session

资源限制

系统层

网络层

JVM

上线前TopScan黑盒扫描

上线后定期TopScan黑盒扫描

上线前STC代码扫描

Page 31: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

Service Center引入

负载均衡(LVS/F5)

Nginx

App Container

App Container

Cache File 业务服务

Mysql

开发者后台

小二 后台

应用中心

小二

ISV

浏览者

Service Center

Nginx

日志系统

弹性计算

监控系统

部署系统

Nginx资源池

应用容器池

Page 32: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

Service Center

• Service Center带来的好处

– 所有的服务调用都通过服务中心

– 网络层设置白名单,只允许访问服务中心

• 潜在性能问题

Page 33: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

Service Center性能

• 本地进程通讯 - Tcp Friends – when both endpoints of a TCP connection are on the same machine, the two

sockets are marked as being "friends" in the kernel. Data written to such a socket will be immediately queued for reading on the friend socket, bypassing the network stack entirely

– Google 采用了类似的技术

– 每台物理机上部署一个service center, 加速物理机上的instance与service center的通讯

– 解决总线的问题,但不限于总线

TCP friends :http://lwn.net/Articles/511254/

Page 34: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

Put it together

物理机

App1

Jetty 1

T4 Instance1

App2

Jetty n

T4 Instance n

Xinetd

Xinet daemon

Xinet daemon

Service Center

IPC Over TCP Friends

HTTP Requests

Port: 7001 Port: 70096

Page 35: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

用户域

编程规范

JVM (For TAE)

Linux Security Container(T4 for TAE)

Linux OS With Sandbox

服务接入(Client)

服务API

MVC

页面组件API

Net (Iptables)

安全

Componet Render Engine

组件管理

Page Meta

动态服务

数据绑定

数据校验

并发渲染

Jetty(With Java Security)

数据源

队列服务

文件服务

日志服务

缓存服务

动态配置

业务服务

Common Engine

Qu

ercu

s

Velo

city

Gro

ovyy

Servlet API

应用逻辑

系统域

动态配置

容器结构

Page 36: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

淘宝开放的三种形态

TOP 聚石塔 TAE

服务 数据 运营 导购 行业 垂直

频道 无线 建站 SNS 活动 促销

设计师 开发者 达人 品牌商 TP/ISV

开发小二 运营小二 开发小二 运营小二 开发小二

Page 37: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

Q & A

Page 38: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存

欢迎加入TAE团队

• 这里是第三方代码的执行引擎,运行容器 • 这里涉及从前端到内核的各种技术 • 这里在支持着数千个开发团队和创业公司 • 这里客户是你的上帝,客户代码的上帝是你 • 加入我们,请联系:

– 邮箱: [email protected] [email protected] – 微博:

淘宝林轩 ludvik_淘宝伯昊

– 微信: 床前明月光 ludvik

Page 39: Inside TAE - IT168.com – 电商时代IT导购第一站topic.it168.com/factory/adc2013/doc/liuhaoyu.pdf · •定位:淘宝的受控第三方开放基础设施 ... –大内存