Alluxio
ProductsLanguageHome
  • Alluxio概览
  • 用户指南
    • 快速上手指南
    • 架构
    • FAQ
    • 作业服务器
    • 应用场景
  • 核心功能
    • 缓存
    • 统一命名空间
  • 部署 Alluxio
    • 在Kubernetes上部署Alluxio
    • 本地运行Alluxio
    • 在集群上独立运行Alluxio
    • 在Docker上运行Alluxio
    • 在具有HA的群集上部署Alluxio
    • 使用Docker部署AlluxioFuse加速深度学习训练(试验)
    • 基本要求
  • 云源生
    • Tencent EMR
  • 计算应用
    • Apache Spark
    • Presto
    • Spark on Kubernetes
    • Apache Flink
    • Apache Hadoop MapReduce
    • Presto on Iceberg (Experimental)
    • Trino
    • Apache Hive
    • 深度学习框架
    • Tensorflow
  • 底层存储系统
    • Alluxio集成Amazon AWS S3作为底层存储
    • Alluxio集成GCS作为底层存储
    • Alluxio集成Azure Blob Store作为底层存储
    • Azure Data Lake Storage Gen2
    • Azure 数据湖存储
    • Alluxio集成HDFS作为底层存储
    • Alluxio集成COS作为底层存储
    • Alluxio集成COSN作为底层存储
    • Alluxio集成Ceph Object Storage作为底层存储
    • Alluxio集成NFS作为底层存储
    • Alluxio集成Kodo作为底层存储
    • Alluxio集成Swift作为底层存储
    • Alluxio集成WEB作为底层存储
    • Alluxio集成Minio作为底层存储
    • 阿里云对象存储服务
    • Alluxio集成Ozone作为底层存储
    • Alluxio集成CephFS作为底层存储
  • 安全设置
    • 安全性
  • 运维指南
    • 配置项设置
    • 命令行接口
    • 管理员命令行接口
    • Web界面
    • 日志
    • 度量指标系统
    • 远程记录日志
  • 管理
    • 升级
    • 异常诊断与调试
  • APIs
    • Filesystem API
    • S3 Client
    • POSIX API
    • REST API
    • Python Client
    • 兼容Hadoop的Java
    • Go 客户端
  • 开发者资源
    • 编译Alluxio源代码
    • 开发指南
    • 代码规范
    • 如何开发单元测试
    • 文档规范
  • 参考
    • 配置项列表
    • List of Metrics
  • REST API
    • Master REST API
    • Worker REST API
    • Proxy REST API
    • Job REST API
  • Javadoc
Powered by GitBook
On this page
  • 安全认证
  • SIMPLE
  • NOSASL
  • CUSTOM
  • 访问权限控制
  • 用户-组映射
  • 目录和文件初始访问权限
  • 更新目录和文件访问权限
  • 用户模拟
  • 服务端配置
  • 客户端配置
  • 异常
  • 审计
  • 加密
  • 部署
  1. 安全设置

安全性

Last updated 6 months ago

该文档介绍Alluxio安全性相关的的功能。

  1. : 如果alluxio.security.authentication.type=SIMPLE(默认情况下), Alluxio文件系统将区分使用服务的用户。要使用其他高级安全特性(如访问权限控制以及审计日志),SIMPLE身份验证需要被开启。 Alluxio还支持其它身份验证模式,如NOSASL和CUSTOM。

  2. : 如果是 alluxio.security.authorization.permission.enabled=true (默认情况下),根据请求用户和要访问的文件或目录的POSIX权限模型,Alluxio文件系统将授予或拒绝用户访问。 注意,身份验证不能是NOSASL,因为授权需要用户信息。

  3. :Alluxio支持用户模拟,以便某一个用户可以代表其他用户访问Alluxio。这个机制在Alluxio客户端需要为多个用户提供数据访问的服务的一部分时相当有用。

  4. : 如果是 alluxio.master.audit.logging.enabled=true, Alluxio 文件系统 维护用户访问文件元数据的审计日志(audit log)。

参考的信息以启用不同安全特性。

安全认证

SIMPLE

当alluxio.security.authentication.type 被设置为SIMPLE时,身份验证被启用。 在客户端访问Alluxio服务之前,该客户端将按以下列次序获取用户信息以汇报给Alluxio服务进行身份验证:

  1. 如果属性alluxio.security.login.username在客户端上被设置,其值将作为 此客户端的登录用户。

  2. 否则,将从操作系统获取登录用户。

客户端检索用户信息后,将使用该用户信息进行连接该服务。在客户端创建目录/文件之后,将用户信息添加到元数据中 并且可以在CLI和UI中检索。

NOSASL

当alluxio.security.authentication.type为NOSASL时,身份验证被禁用。Alluxio服务将忽略客户端的用户, 并不把任何用户信息与创建的文件或目录关联。

CUSTOM

当alluxio.security.authentication.type为CUSTOM时,身份验证被启用。Alluxio客户端 检查alluxio.security.authentication.custom.provider.class类的名称 用于检索用户。此类必须实现alluxio.security.authentication.AuthenticationProvider接口。

这种模式目前还处于试验阶段,应该只在测试中使用。

访问权限控制

Alluxio文件系统为目录和文件实现了一个访问权限模型,该模型与POSIX标准的访问权限模型类似。

每个文件和目录都与以下各项相关联:

  1. 一个所属用户,即在client进程中创建该文件或文件夹的用户。

  2. 访问权限。

访问权限包含以下三个部分:

  1. 所属用户权限,即该文件的所有者的访问权限

  2. 所属组权限,即该文件的所属组的访问权限

  3. 其他用户权限,即上述用户之外的其他所有用户的访问权限

每项权限有三种行为:

  1. read (r)

  2. write (w)

  3. execute (x)

对于文件,读取该文件需要r权限,修改该文件需要w权限。对于目录,列出该目录的内容需要r权限,在该目录下创建、重命名或者删除其子文件或子目录需要w权限,访问该目录下的子项需要x权限。

例如,当启用访问权限控制时,运行shell命令ls -R后其输出如下:

$ ./bin/alluxio fs ls /
drwxr-xr-x jack           staff                       24       PERSISTED 11-20-2017 13:24:15:649  DIR /default_tests_files
-rw-r--r-- jack           staff                       80   NOT_PERSISTED 11-20-2017 13:24:15:649 100% /default_tests_files/BASIC_CACHE_PROMOTE_MUST_CACHE

用户-组映射

当用户确定后,其组列表通过一个组映射服务确定,该服务通过alluxio.security.group.mapping.class配置,其默认实现是 alluxio.security.group.provider.ShellBasedUnixGroupsMapping,该实现通过执行groups shell命令获取一个给定用户的组关系。 用户-组映射默认使用了一种缓存机制,映射关系默认会缓存60秒,这个可以通过alluxio.security.group.mapping.cache.timeout进行配置,如果这个值设置成为"0",缓存就不会启用.

alluxio.security.authorization.permission.supergroup属性定义了一个超级组,该组中的所有用户都是超级用户。

目录和文件初始访问权限

初始创建访问权限是777,并且目录和文件的区别为111。默认的umask值为022,新创建的目录权限为755,文件为644。umask可以通过alluxio.security.authorization.permission.umask属性设置。

更新目录和文件访问权限

所属用户、所属组以及访问权限可以通过以下两种方式进行修改:

所属用户只能由超级用户修改。 所属组和访问权限只能由超级用户和文件所有者修改。

用户模拟

Alluxio支持用户模拟,以便用户代表另一个用户访问Alluxio。这个机制在Alluxio客户端需要为多个用户提供数据访问的服务的一部分时相当有用。 在这种情况下,可以将Alluxio客户端配置为用特定用户(连接用户)连接到Alluxio服务器,但代表其他用户(模拟用户)行事。 为了让Alluxio支持用户模拟功能,需要在客户端和服务端进行配置。

服务端配置

为了能够让特定的用户模拟其他用户,需要配置Alluxio服务端(master和worker)。服务端的配置属性包括:alluxio.master.security.impersonation.<USERNAME>.users 和 alluxio.master.security.impersonation.<USERNAME>.groups。 对于alluxio.master.security.impersonation.<USERNAME>.users,你可以指定由逗号分隔的用户列表,这些用户可以被<USERNAME> 模拟。 通配符*表示任意的用户可以被<USERNAME> 模拟。以下是例子。

  • alluxio.master.security.impersonation.alluxio_user.users=user1,user2

    • Alluxio用户alluxio_user被允许模拟用户user1以及user2。

  • alluxio.master.security.impersonation.client.users=*

    • Alluxio用户client被允许模拟任意的用户。

对于alluxio.master.security.impersonation.<USERNAME>.groups,你可以指定由逗号分隔的用户组,这些用户组内的用户可以被<USERNAME>模拟。 通配符*表示该用户可以模拟任意的用户。以下是一些例子。

  • alluxio.master.security.impersonation.alluxio_user.groups=group1,group2

    • Alluxio用户alluxio_user可以模拟用户group1以及group2中的任意用户。

  • alluxio.master.security.impersonation.client.groups=*

    • Alluxio用户client可以模拟任意的用户。

为了使得用户alluxio_user能够模拟其他用户,你至少需要设置alluxio.master.security.impersonation.<USERNAME>.users和 alluxio.master.security.impersonation.<USERNAME>.groups的其中一个(将<USERNAME>替换为alluxio_user)。你可以将两个参数设置为同一个用户。

客户端配置

如果服务端配置为允许某些用户模拟其他的用户,client端也要进行相应的配置。使用alluxio.security.login.impersonation.username进行配置。 这样Alluxio的客户端连接到服务的方式不变,但是该客户端模拟的是其他的用户。参数可以设置为以下值:

  • 不设置

    • 不启用Alluxio client用户模拟

  • _NONE_

    • 不启用Alluxio client用户模拟

  • _HDFS_USER_

    • Alluxio client会模拟HDFS client的用户(当使用Hadoop兼容的client来调用Alluxio时)

异常

应用程序中最可能常见的错误类似于

Failed to authenticate client user="yarn" connecting to Alluxio server and impersonating as
impersonationUser="foo" to access Alluxio file system. User "yarn" is not configured to
allow any impersonation.

审计

Alluxio支持审计日志以便系统管理员能追踪用户对文件元数据的访问操作。

审计日志文件(master_audit.log) 包括多个审计记录条目,每个条目对应一次获取文件元数据的记录。 Alluxio审计日志格式如下表所示:

key
value

succeeded

如果命令成功运行,值为true。在命令成功运行前,该命令必须是被允许的。

allowed

如果命令是被允许的,值为true。即使一条命令是被允许的它也可能运行失败。

ugi

用户组信息,包括用户名,主要组,认证类型。

ip

客户端IP地址。

cmd

用户运行的命令。

src

源文件或目录地址。

dst

目标文件或目录的地址。如果不适用,值为空。

perm

user:group:mask,如果不适用值为空。

加密

目前,服务层的加解密方案还没有完成,但是用户可以在应用层对敏感数据进行加密,或者是开启底层系统的加密功能,比如,HDFS的透明加解密,Linux的磁盘加密。

部署

推荐由同一个用户启动Alluxio master和workers。Alluxio集群服务包括master和workers,每个worker需要通过RPC与master通信以进行某些文件操作。如果一个worker的用户与master的不一致,这些文件操作可能会由于权限检查而失败。

一个所属组,即从用户-组映射(user-groups-mapping)服务中获取到的组。参考。

用户应用可以调用FileSystem API或Hadoop API的setAttribute(...)方法,参考。

CLI命令,参考 , , 。

这个错误意味着用户yarn正在试图模拟用户foo连接到Alluxio,但是Alluxio服务并没有配置允许用户yarn启用模拟。 为了解决这个问题,Alluxio服务器必须配置允许有问题的用户启用模拟(示例中用户yarn) 更多的建议可参考该 。

它和HDFS审计日志的格式很像。

为了使用Alluxio的审计功能,你需要将JVM参数alluxio.master.audit.logging.enabled设置为true,具体可见。

文件系统API
文档
wiki
配置文档
用户-组映射
身份验证
访问权限控制
用户模拟
审计
系统安全相关的配置参数列表
chown
chgrp
chmod