阿里云云原生一体化数仓 – 数据安全能力解读

MaxCompute产品简介

MaxCompute是一款多功能、低成本、高性能、高可靠、易于使用的数据仓库和支持全部数据湖能力的大数据平台,支持超大规模、serverless和完善的多租户能力,内建企业级安全能力和管理功能,支持数据保护和安全共享,数据/生态开放,可以满足数据仓库/BI、数据湖非结构化数据处理和分析、湖仓一体联邦计算、机器学习等多业务场景需求。

阿里云MaxCompute提供了全托管的服务,用户开箱即用,只需要关注自己的业务和资源使用,真正做到Paas平台Saas模式使用。MaxCompute是一个真正的云原生多租户平台,可以做到较低的资源成本,让用户获得更低的TCO。租户之间可以方便的共享数据,而不必在多个Hadoop实例之间开接口。从接入和使用角度看,简单易用,支持多引擎, 可上可下。很多使用MC的客户反馈,不是业务不能迁移,只是再也没有其他更好用更经济的选择了。从数仓管理能力上看,MaxCompute提供统一元数据、统一的账号和权限体系,完善的企业级安全能力。从资源使用角度上看,自适应的按需弹性资源,避免资源浪费或不足,节省成本又满足需求。业务负载隔离,消除业务间资源争抢。从规模和数据存储角度看,支持TB到EB级的大规模部署应用和扩展。连接广泛外部数据源,支持结构化和非结构化数据存储和处理,支持联邦计算。

MaxCompute积累了阿里多年双11自动优化和稳定可靠能力,这一点是任何Hadoop商业版产品所不具备的, MaxCompute凭借先发优势和阿里持续自身业务锤炼,让产品非常成熟稳定。

MaxCompute产品架构和周边生态

MaxCompute是基于大数据技术的数仓,采用了自研的分布式存储引擎pangu、分布式资源管理调度器fuxi,和分布式高性能SQL引擎,与开源的HDFS、Yarn、Hive+Spark SQL关系对等,但能力全面领先开源。MaxCompute的存储包括数仓schema on write模式所需的库表,也包括最近开放的volume非结构化存储。MaxCompute采用了大数据存算分离的架构,可以在大规模场景下进一步的降低成本,降低客户TCO。MaxCompute提供了沙箱运行环境,让用户的UDF和业务代码更安全也更灵活的运行在多租环境中,免去了在数据外部由用户管理私有代码的麻烦和限制。

MaxCompute通过tunnel服务,收敛了数据入仓的通道,对外只暴漏tunnel endpoint,让数据出入仓更安全,同时检查文件格式、收集元数据,用于后续读写优化,以极小的代价获得相比Hive 近一个数量级的性能领先差异,这正是数仓模式的优势所在。MaxCompute还提供了web控制台、IDE studio、CMD、SDK等多种连接方式, MMA迁移工具帮助用户快速迁移到MaxCompute,Lemming提供边缘端的采集、计算和云边协同计算。

MaxCompute对接OSS数据湖对象存储,通过DLF获取湖上元数据,可以做到湖仓一体联邦,这时MaxCompute是仓,OSS是湖。对接客户的Hadoop系统,通过自动获取hms中元数据,自动映射hive database为MaxCompute 项目的external project,免去建外表即可直接将仓内数据与hive、HDFS数据关联计算,这时MaxCompute是仓,Hadoo是湖。

MaxCompute周边的二方生态和三方生态也构成了完整的数据链路和大数据解决方案。MaxCompute可以通过Dataworks数据集成获取批加载的数据,还可以直接对接Flink、Kafka、Datahub等消息队列或流式数据,实时入仓。Hologres可与MaxCompute无缝集成,权限互认、pangu直读,基于数仓模型直接获得交互式分析的高并发、低延时能力。MaxCompute的黄金搭档DataWorks是一套与MaxCompute一起发展起来的开发治理工具,有了DataWorks可以更好的发挥MC的能力和优势。

MaxCompute还支持PAI、ES、OS以及ADB、SLS等二方引擎,实现机器学习、检索、数据集市分析、日志处理等能力。并支持QuickBI、DataV等 表、dashboard、大屏应用。数据中台治理工具Dataphin、DataQ都将基于MaxCompute的多年阿里最佳实践,产品化赋能客户。更有Tableau、帆软等三方生态工具已经与MaxCompute互认,给用户更多选择。

关于数据安全的问题

可以从四个方面预设数据安全问题,下面对MaxCompute数据安全能力的解读会对应到这些问题上,解决企业数据安全的问题,保障数据安全。

what

where

who

whether

有什么数据?

数据在哪里?

谁能用数据?

是否被滥用?

有什么用户?

从哪里可以访问数据?

谁用了数据?

是否有泄露风险?

有什么权限?

数据能下载到哪里?

是否有丢失风险?

MaxCompute安全体系

按照防数据滥用、防数据泄露、防数据丢失这个三个点,看下MaxCompute的安全体系核心功能。先从MaxCompute的数据安全核心能力开始。

防数据滥用包含:细粒度的权限管理(ACL/Policy/Role)、Label Security分级管理

防数据泄露包含:认证、租户隔离、项目空间保护、 络隔离

MaxCompute和DataWorks关系,以及MaxCompute隔离机制

在当前云上体系中,用户需在阿里云注册一个主账号,才可以申请开通MaxCompute,创建项目空间。

MaxCompute的付费模式有两种,按量付费(后付费共享资源)和包年包月(预付费独享资源),当开通MaxCompute项目时,需要开通DataWorks工作空间,DataWorks可以理解为一站式开发治理工具,包含数据采集、脚本开发、调度、数据服务等。MaxCompute包含表、字段、UDF、resource、元数据等。DataWorks一个工作空间可以帮忙两个项目,也就是两个MaxCompute project,一个开发环境一个生产环境,这两个project是隔离的,防止生产环境中关键敏感数据的泄露。

MaxCompute访问与控制

当前MaxCompute访问认证鉴权经过以下步骤,身份认证用于身份识别;请求源检查(ip白名单)用户检查是否设置 络隔离;项目空间状态检查,检查项目空间是否开启项目保护等安全设置;检查MaxCompute项目的labelsecurity|rle|policy|acl等权限管理规则。接下来就按照这个顺序讲一下MaxCompute的安全机制,到权限管理部分再详细展开讲一下权限体系。

认证流程

  • 每个阿里云账号都需要创建相应的访问密钥AccessKey,主要用于在阿里云各产品间互相认证使用权限。
  • 用户可以在云控制台中自行创建AccessKey。AccessKey由AccessKeyId和AccessKeySecret组成,其中AccessKeyId是公开的,用于标识用户身份,AccessKeySecret是秘密的,用于用户身份的鉴别。AccessKey可以更换。
  • 当用户向MaxCompute发送请求时,首先需要将发送的请求按照MaxCompute指定的格式生成签名字符串,然后使用AccessKeySecret对签名字符串进行加密以生成请求签名。MaxCompute收到用户请求后,通过AccessKeyId找到对应的AccessKeySecret,以同样的方法提取签名字符串和验证码,如果计算出来的验证码和提供的一致即认为该请求是有效的;否则,MaxCompute将拒绝处理这次请求,并返回HTTP 403错误。
  • 当用户真正发生请求时,会把(Accessld、请求时间、请求参数)+签名以固定的格式发送到MaxCompute前端,MaxCompute前端包含HttpServer和tunnel(数据上传下载通道)。这个过程需要检查用户请求是否过期。当MaxCompute拿到用户请求的AK信息,跟AK服务上的AK信息做对比,如果AK信息一致,则代表用户请求有效。MaxCompute的数据资源及计算资源的访问入口都需经过身份验证。用户认证 检查请求 Request 发送者的真实身份:正确验证消息发送方的真实身份,正确验证接收到的消息在途中是否被篡改。云账号认证使用消息签名机制,可以保证消息在传输过程中的完整性 Integrity 和真实性 Authenticity。

    RAM子账号

  • MaxCompute支持RAM鉴权。RAM(Resource Access Management)是阿里云提供的资源访问控制服务。通过RAM,主账号可以创建出子账号,子账号从属于主账号,所有资源都属于主账号,主账号可以将所属资源的访问权限授予给子账号。
  • 用户对MaxCompute资源访问分为两种,即用户主账号访问和用户子账号访问。主账号是阿里云的一个账号主体,主账号下可以包含不同的子账号以便用户可以灵活使用。MaxCompute支持主子账号的权限访问策略。
  • 当用户使用主账号访问时,MaxCompute会校验该主账号是否为对应资源的所有者,只有对应资源的所有者才具备访问该资源的权限。
  • 当用户使用子账号访问时,此时会触发子账号授权策略。MaxCompute会校验该子账号是否被对应主账号授予了访问该资源的权限,同时也会校验该子账号对应的主账号是否具有该资源的所有者权限。
  • 一个主账号可以把当前主账号下的RAM账号加入MaxCompute project,也可以把其他主账号加入MaxCompute project,但不可以把其他主账号下的RAM账号加入MaxCompute project。

    RAM Role

  • RAM角色(RAM role)与RAM用户一样,都是RAM身份类型的一种。RAM角色是一种虚拟用户,有确定的身份,可以被赋予一组权限策略,但没有确定的登录密码或访问密钥。RAM角色需要被一个受信的实体用户扮演,扮演成功后实体用户将获得RAM角色的安全令牌,使用这个安全令牌就能以角色身份访问被授权的资源。
  • 您可以通过RAM访问控制台创建RAM角色并修改RAM角色的权限策略,然后将RAM角色添加至MaxCompute项目。后续项目中的RAM用户可以扮演该RAM角色执行操作。
  • RAM角色为访问控制平台中的角色,非MaxCompute项目内的角色。
  • RAM Role是跨产品之间访问数据的一个角色
  • 角色

  • 角色(Role)是MaxCompute内一组访问权限的集合。当需要对一组用户赋予相同的权限时,可以使用角色来授权。基于角色的授权可以大大简化授权流程,降低授权管理成本。当需要对用户授权时,应当优先考虑是否应该使用角色来完成。
  • 一个用户可以被分配到多个角色。从而拥有这些角色的权限的合集。
  • MaxCompute角色有两种类别账户级别和项目级别。
  • 角色类别

    角色名称

    角色说明

    账户级别(tenant)

    Super_Administrator

    MaxCompute内置的管理角色。除了不能创建项目、删除项目、开通服务,其他在MaxCompute上的操作权限等同于阿里云账号。

    Admin

    MaxCompute内置的管理角色。用于管理所有对象及 络连接(Networklink)的权限。

    项目级别(Project)

    Project Owner

    项目所有者。用户创建MaxCompute项目后,该用户为此项目的所有者,拥有项目的所有权限。除项目所有者之外,任何人都无权访问此项目内的对象,除非有项目所有者的授权许可。

    Super_Administrator

    MaxCompute内置的管理角色。拥有操作项目内所有资源的权限和管理类权限。权限详细信息,请参见项目级别管理角色权限说明。项目所有者或具备Super_Administrator角色的用户可以将Super_Administrator角色赋予其他用户。

    Admin

    MaxCompute内置的管理角色。拥有操作项目内所有资源的权限和部分基础管理类权限。权限详细信息,请参见项目级别管理角色权限说明。项目所有者可以将Admin角色赋予其他用户。Admin角色不能将Admin权限赋予其他用户、不能设定项目的安全配置、不能修改项目的鉴权模型、所对应的权限不能被修改。

    自定义角色

    非MaxCompute内置的角色,需要用户自定义。

    租户

  • 每个账号是一个租户(建议一个一级部门对应一个独立的租户),租户间的数据安全隔离是在逻辑层控制的,并非物理隔离。
  • 租户是计量和计费的主体。
  • 通过多租户机制,各部门可以独立管理自己的数据。除非显式授权,否则租户之间无法访问对方的数据。
  • 租户可以拥有一个或多个项目。来自多个部门成员也可以共用一个项目(类似虚拟联合项目组)
  • 系统提供统一的权限管理模型,即不管是项目内部的数据授权,还是项目之间的数据授权,都遵循同一套权限管理机制。
  • 在物理层面,如果存在多个集群,那么每个租户归属其中一个集群,即一个租户不能跨多个集群存储数据。但是在逻辑层面,用户是无需关心该租户的实际物理存储集群的,底层集群的分布对用户透明。
  • 项目空间用户管理

    Alice 创建一个 名为 WonderLand的项目,自动成为 Owner

    没有 Alice 的授权,其他任何人都无法访问 WonderLand

    Alice 要授权 Bob 允许他访问 WonderLand中的一些对象:

    首先,Bob 要有一个合法的云账号或者是Alice的RAM子账号

    然后,Alice 要 把 Bob 的账号加到项目中来

    最后,赋一些对象的权限给 Bob

    Alice 要禁止 Bob 访问项目,则直接将他的账号从项目中移除即可

    Bob 虽然被移除出了项目,但他之前被授予的权限仍然保留在项目中。

    下次一旦他被 Alice 加入同一个项目,原有的权限将会被自动激活。 除非彻底清除Bob的权限。

    控制访问

    IP白名单

  • MaxCompute支持在访问认证基础上增强的一种以IP白名单的方式,进行访问控制。
  • 可以配置project访问机器的白名单来进行限制Ip访问。
  • 如果使用应用系统(如ODPSCMD或者SDK客户端)进行项目空间数据访问,需要配置ODPSCMD或者SDK客户端所在的部署机器的IP地址。如果使用了代理服务器或者经过了多跳代理服务器来访问MaxCompute服务实例,需要添加的IP地址为最后一跳代理服务器的IP地址。
  • 一些其他需要访问MaxCompute服务实例中所有project的其他上层业务系统IP发生变化的时候,如果没有全局性IP白名单配置,需要找到所有设置白名单的project列表一个个进行新IP的修改配置,非常容易出错。为此MaxCompute实现了系统级别IP白名单功能,系统级别IP白名单是MaxCompute实例服务级全局性配置。
  • 当用户请求提供的IP是否跟MaxCompute元数据存储的白名单匹配,做一个项目级别的检查,如果IP匹配允许访问。白名单格式允许固定IP、掩码或者IP段的方式。可以查看下面的例子

    作用范围:项目空间

    白名单格式:101.132.236.134、100.116.0.0/16、
    101.132.236.134-101.132.236.144

    设置白名单:adminConsole;
    setprojectodps.security.ip.whitelist=101.132.236.134,100.116.0.0/16

    关闭白名单:清空白名单*

    VPC访问MaxCompute

    MaxCompute作为阿里云开发的海量数据处理平台,在安全性方面需要满足安全隔离规范的要求。因此,MaxCompute团队增加了MaxCompute对专有 络(VPC)的支持,为MaxCompute配置使用限制,即MaxCompute VPC的限制。目前MaxCompute支持VPC的具体情况如下所示:

  • 经典 络/VPC 络/Internet 络三 隔离,只能访问各自对应的endpoint及VIP。
  • 经典 络能够访问所有project 。
  • 没有配置VPCID及IP白名单的project可以被三种 络中请求通过的相应域名访问,没有限制。
  • 配置了VPC_ID的project只能被对应的VPC访问。
  • 配置了IP白名单的project只能被对应的机器访问 。
  • 对于加了代理的访问请求,判断为最后一跳代理IP及VPCID为准 。
  • 下图为具体示例

    下图绿色部分为经典 络部分,蓝色为用户本身的VPC 络,红色为公共云访问。

  • 经典 络中只能访问Intranet_inner
  • VPC 络中中只能访问Intranet_public
  • Internet 络中只能访问Internet_vip
  • 经典 络能够访问所有project
  • 配置了VPC_ID的project只能被对应的VPC访问
  • 配置了Ip白名单的project只能被对应机器访问
  • 没有配置VPCID及Ip白名单的project可以被三种 络中请求通过相应域名访问,没有限制,如P5
  • 对于加了代理的访问请求,判断为最后一跳代理IP及VPCId为准
  • 左侧连接线为准,其他连接将不能访问
  • 公共云MaxCompute访问外部 络

    服务映射方案(外 )

    服务映射方案(VPC)

    适用于MaxCompute与VPC间的 络已连接,需要通过UDF或外部表访问处于VPC 络中的单个IP或域名的场景。只需要将MaxCompute项目所属地域的IP 段添加至VPC的安全组,并将目标IP或域名所属VPC实例添加至MaxCompute项目,完成双向授权后,即可访问目标IP或域名。

    专有 络连接方案

    适用于通过外部表、UDF或基于湖仓一体架构访问处于VPC 络下的RDS、HBase集群、Hadoop集群场景。您需要通过VPC 络管理控制台进行授权以及配置安全组,在MaxCompute控制台创建MaxCompute与VPC 络之间的连接,配置RDS、HBase集群、Hadoop集群等目标服务安全组,以此来建立MaxCompute与目标服务间的 络通路。

    直接连通方案

    适用于通过UDF或外部表访问阿里云OSS、OTS(Tablestore)服务的场景。OSS、OTS服务与MaxCompute连通无需申请开通专有 络。

    项目空间保护

    当有project:WonderLand、SecretGarden,可能有以下风险导致数据流出。
    1、SQL:create table SecretGarden.Gotit as select * from WonderLand.customers;

    2、MR:通过MR将表读出,然

    声明:本站部分文章内容及图片转载于互联 、内容不代表本站观点,如有内容涉及侵权,请您立即联系本站处理,非常感谢!

    (0)
    上一篇 2022年8月2日
    下一篇 2022年8月2日

    相关推荐