You need to enable JavaScript to run this app.
导航
CloudFS授权项
最近更新时间:2023.06.28 17:27:24首次发布时间:2022.05.26 14:18:32

本文介绍了 CloudFS 支持的授权项和常用的权限策略示例。

背景信息

策略是对权限的一种描述,IAM 提供基于身份的策略(Identity-based policies)和基于资源的策略(Resource-based policies。不论是用户、用户组还是角色,都需要通过关联策略来赋予权限。更多信息,请参考策略语法
每个策略由以下元素组成:

  • Statement:策略的声明是对策略语句的封装,可包含单条语句或由多条语句组成的数组。
  • Effect:值为" Allow "或者" Deny ",标识是否允许有操作指定资源的权限。
  • Action:授权项。表示具体的操作,与 API 的 Action 含义相同。
  • Resource:指定动作(Action)作用的资源。格式为:trn: {service}:{region}:{account}: {resourceType}/{id}

支持的授权项

CloudFS 支持的授权项如下表所示。

权限

授权项 Action

Resource

查看文件系统列表。

cfs:ListFs

trn:cfs:${region-id}:${account-id}:cfs/*

创建文件系统实例。

cfs:CreateFs

trn:cfs:${region-id}:${account-id}:cfs/*

删除文件系统。

cfs:DeleteFs

trn:cfs:${region-id}:${account-id}:cfs/fsName

更新文件系统,扩容或开启加速。

cfs:UpdateFs

trn:cfs:${region-id}:${account-id}:cfs/fsName

查看可用区和地域。

cfs:ListRegionAndZone

trn:cfs:${region-id}:${account-id}:cfs/*

查看指定文件系统下的特定目录的文件信息。

cfs:ListDir

trn:cfs:${region-id}:${account-id}:cfs/fsName

查看 VPC 列表。

cfs:DescribeVpcs
vpc:DescribeVpcs (跨服务授权中已包含)

trn:cfs:${region-id}:${account-id}:cfs/*

查看安全组信息。

cfs:DescribeSecurityGroups
vpc:DescribeSecurityGroups (跨服务授权中已包含)

trn:cfs:${region-id}:${account-id}:cfs/*

查看指定 VPC 下的子网列表。

cfs:DescribeSubnetIds
vpc:DescribeSubnets (跨服务授权中已包含)

trn:cfs:${region-id}:${account-id}:cfs/*

查看对象存储的 Bucket 列表。

cfs:ListTosBuckets
tos:ListBuckets (跨服务授权中已包含)

trn:cfs:${region-id}:${account-id}:cfs/*

读取指定文件。

cfs:Read

trn:cfs:${region-id}:${account-id}:${file-system-name}${path}

上传文件。

cfs:Write

trn:cfs:${region-id}:${account-id}:${file-system-name}${path}

查看指定 TOS Bucket 的文件和子目录。

cfs:List

trn:cfs:${region-id}:${account-id}:${file-system-name}/${ns_id}

接口与 Action 对应表

接口与授权策略中的 Action 的对应关系。

API

Action

append

cfs:Write

create

cfs:Write

delete

cfs:Write 及 父目录 cfs:Write 权限

getBlockLocations

cfs:Read

mkdirs

cfs:Write

rename

cfs:Write (sources), cfs:Write (destination)

listPaths

父目录 cfs:Read

concat

cfs:Read (sources), cfs:Write (destination)

getStoragePolicy

cfs:Read

getXAttrs

cfs:Read

listXAttrs

cfs:Read

getContentSummary

cfs:Read

removeXAttr

cfs:Write

setReplication

cfs:Write

setStoragePolicy

cfs:Write

setTimes

cfs:Write

setXAttr

cfs:Write

getFileInfo

cfs:Read

getFileLinkInfo

cfs:Read

getLinkTarget

cfs:Read

getListing

cfs:List

说明

您在使用cfs:List权限时,需要了解以下事项:

  • 当权限策略中显式指定 Deny cfs:List时,getListing 就会鉴权失败。
  • 当权限策略中显式指定 Allow 或不指定cfs:List时,fallback 到对 cfs:Read 的鉴权。只要用户有cfs:Read权限,就可以调用 getListing 接口。

授权策略示例

示例一:对某个路径的完全控制权限

授权用户对路径 /path 及其子路径的完全控制权限。

{
     "Statement" : [
        {
             "Effect" : "Allow",
             "Action" : [
                 "cfs:*" 
            ],
             "Resource": [
                 "trn:cfs:*:*:{file-system-name}/path/*"
                 ]
        }
    ]
}

示例二:对某个路径的读取权限

授权用户对 /readPath 路径及其子路径的读取权限。

{
     "Statement" : [
        {
             "Effect" : "Allow",
             "Action" : [
                 "cfs:Read" 
            ],
             "Resource": [
                 "trn:cfs:*:*: {file-system-name}/readPath/*"
                 ]
        }
    ]
}

示例三:对某个路径的写权限,并拒绝某子路径的删除操作

授权用户对 /writePath 及其子路径的写权限。同时禁止对路径 /writePath/subPath/ 的写权限,则对该路径的删除操作将被禁止。

{
     "Statement" : [
        {
             "Effect" : "Allow",
             "Action" : [
                 "cfs:Write" 
            ],
             "Resource": [
                 "trn:cfs:*:*: {file-system-name}/writePath/*"
                 ]
        }
        {
              "Effect" : "Deny",
              "Action" : [
                "cfs:Write" 
             ],
              "Resource": [
                  "trn:cfs:*:*: {file-system-name}/writePath/subPath/"
                  ]
        }
    ]
}

示例四:数据湖模式下禁用 List 权限

禁用用户对某个 TOS Bucket 挂载的 List 权限。禁用后可以正常进行 FUSE 挂载,可以做 cd、cat、cp 等读写操作,但是不能 ls。
以下权限策略作用为:

  • 授权用户对 Namespace ID 为 12345 Bucket 的完全控制权限。
  • 禁用用户对 Namespace ID 为 12345 Bucket 的 List 权限。
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cfs:*"
      ],
      "Resource": [
          "trn:cfs:*:*:{file-system-name}/12345"
          ]
    },
    {
      "Effect": "Deny",
      "Action": [
        "cfs:List"
      ],
      "Resource": [
          "trn:cfs:*:*:{file-system-name}/12345"
          ]
    }
  ]
}