更新时间:2024-11-25 GMT+08:00

IAM权限介绍

IAM概述

如果您需要对华为云上购买LakeFormation资源,为企业中的员工设置不同的访问权限,以达到不同员工之间的权限隔离,您可以使用统一身份认证服务(Identity and Access Management,简称IAM)进行精细的权限管理。该服务提供用户身份认证、权限分配、访问控制等功能,可以帮助您安全的控制华为云资源的访问。

通过IAM,您可以在华为云账号中给员工创建IAM用户,并授权控制其对华为云资源的访问范围。例如您希望其拥有LakeFormation的使用权限,但是不希望其拥有删除数据库等高危操作的权限,那么您可以使用IAM创建用户,通过授予仅能查询LakeFormation实例,但是不允许删除的权限,控制其对云服务资源的使用范围。

如果华为云账号已经能满足您的要求,不需要创建独立的IAM用户进行权限管理,您可以跳过对应权限管理操作。

IAM是华为云提供权限管理的基础服务,无需付费即可使用,您只需要为您账号中的资源进行付费。关于IAM的详细介绍,请参见IAM产品介绍

IAM权限

默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。

LakeFormation授权时,在全局级服务中设置权限,不需要切换区域。

权限根据授权精细程度分为角色和策略。

  • 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。
  • 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对LakeFormation服务,管理员能够控制IAM用户仅能对某一类云服务器资源进行指定的管理操作。

IAM系统策略

表1介绍了LakeFormation的默认系统策略。

表1 LakeFormation系统策略

系统角色/策略名称

描述

类别

依赖关系

LakeFormation FullAccess

LakeFormation管理员权限,拥有该权限的用户可以操作并使用所有LakeFormation服务功能。

系统策略

  • IAM AgencyFullAccess
  • OBS OperateAccess
  • VPC FullAccess
  • VPCEndpoint FullAccess

LakeFormation ReadOnlyAccess

LakeFormation只读权限,拥有该权限的用户可以执行LakeFormation所有查询类功能。

系统策略

  • IAM ReadOnlyAccess
  • OBS ReadOnlyAccess
  • VPC ReadOnlyAccess
  • VPCEndpoint ReadOnlyAccess

LakeFormation CommonOperations

LakeFormation基础权限,包含LakeFormation服务协议查看/授权/取消,以及OBS、TMS等周边依赖服务的基础权限集合。

系统策略

  • IAM ReadOnlyAccess
  • OBS ReadOnlyAccess
  • VPC FullAccess
  • VPCEndpoint FullAccess

表2介绍了lakeFormation常用操作与系统权限的授权关系,您可以参考该表选择合适的系统权限。

表2 LakeFormation常用操作与系统策略的授权关系

操作

LakeFormation FullAccess

LakeFormation CommonOperations

LakeFormation ReadOnlyAccess

查询LakeFormation实例

创建LakeFormation实例

x

x

变更LakeFormation实例

x

删除LakeFormation实例

x

x

恢复LakeFormation实例

x

x

查询租户所有标签

更新LakeFormation实例的标签

x

创建元数据迁移/发现任务

x

修改元数据迁移/发现任务

x

删除元数据迁移/发现任务

x

查询元数据迁移/发现任务

查询元数据迁移/发现任务日志

运行/停止元数据迁移/发现任务

x

同意用户协议

查询用户协议

删除用户协议

授权LakeFormation服务创建委托

x

x

查询LakeFormation服务创建的委托

删除LakeFormation服务创建的委托

x

x

授权资源

x

x

查询授权资源

取消授权资源

x

x

查询OBS桶列表

查询OBS桶对象列表

创建服务接入客户端

x

查询服务接入客户端

删除服务接入客户端

x

订阅元数据事件

x

取消订阅元数据事件

x

查询元数据事件

查询Catalog元数据

创建Catalog元数据

x

修改Catalog元数据

x

删除Catalog元数据

x

查询Database元数据

创建Database元数据

x

修改Database元数据

x

删除Database元数据

x

查询Table元数据

创建Table元数据

x

修改Table元数据

x

删除Table元数据

x

查询Partition元数据

创建Partition元数据

x

修改Partition元数据

x

删除Partition元数据

x

查询列统计信息

创建列统计信息

x

修改列统计信息

x

删除列统计信息

x

查询Function元数据

创建Function元数据

x

修改Function元数据

x

删除Function元数据

x

查询Model元数据

创建Model元数据

x

修改Model元数据

x

删除Model元数据

x

查询ModelFile元数据

创建ModelFile元数据

x

修改ModelFile元数据

x

删除ModelFile元数据

x

查询dataset元数据

创建dataset元数据

x

修改dataset元数据

x

删除dataset元数据

x

查询元数据数量

查询授权主体

创建角色

x

删除角色

x

修改角色

x

查询角色

将用户/用户组加入角色

x

将用户/用户组移除角色

x

更新角色中的用户/用户组

x

将元数据权限授权给授权主体

x

取消授权元数据权限给授权主体

x

查询授权信息

获取访问数据的STSToken

x

LakeFormation系统策略所包含的详细内容如下:

  • LakeFormation FullAccess策略内容
    {
        "Version": "1.1",
        "Statement": [
            {
                "Action": [
                    "lakeformation:*:*",
                    "vpc:*:get",
                    "vpc:*:list",
                    "tms:predefineTags:list",
                    "obs:bucket:ListAllMyBuckets",
                    "obs:bucket:ListBucket",
                    "obs:bucket:HeadBucket",
                    "obs:object:GetObject"
                ],
                "Effect": "Allow"
            }
        ]
    }
  • LakeFormation CommonOperations策略
    {
    	"Version": "1.1",
    	"Statement": [
    		{
    			"Effect": "Allow",
    			"Action": [
    				"lakeformation:*:describe*",
    				"lakeformation:*:list*",
    				"lakeformation:policy:export",
    				"lakeformation:access:create",
    				"lakeformation:access:delete",
    				"lakeformation:accessAgency:describe",
    				"lakeformation:accessService:describe",
    				"lakeformation:accessService:grant",
    				"lakeformation:accessTenant:grant",
    				"lakeformation:agreement:cancel",
    				"lakeformation:agreement:describe",
    				"lakeformation:agreement:grant",
    				"lakeformation:catalog:alter",
    				"lakeformation:catalog:create",
    				"lakeformation:catalog:drop",
    				"lakeformation:database:alter",
    				"lakeformation:database:create",
    				"lakeformation:database:drop",
    				"lakeformation:dataset:alter",
    				"lakeformation:dataset:alterFile",
    				"lakeformation:dataset:alterFileGroup",
    				"lakeformation:dataset:create",
    				"lakeformation:dataset:createFile",
    				"lakeformation:dataset:createFileGroup",
    				"lakeformation:dataset:drop",
    				"lakeformation:dataset:dropFile",
    				"lakeformation:dataset:dropFileGroup",
    				"lakeformation:function:alter",
    				"lakeformation:function:create",
    				"lakeformation:function:drop",
    				"lakeformation:group:alter",
    				"lakeformation:instance:access",
    				"lakeformation:instance:alter",
    				"lakeformation:instanceJob:alter",
    				"lakeformation:instanceJob:create",
    				"lakeformation:instanceJob:drop",
    				"lakeformation:instanceJob:exec",
    				"lakeformation:job:alter",
    				"lakeformation:job:create",
    				"lakeformation:job:drop",
    				"lakeformation:job:exec",
    				"lakeformation:model:alter",
    				"lakeformation:model:alterFile",
    				"lakeformation:model:create",
    				"lakeformation:model:createFile",
    				"lakeformation:model:drop",
    				"lakeformation:model:dropFile",
    				"lakeformation:policy:create",
    				"lakeformation:policy:drop",
    				"lakeformation:role:alter",
    				"lakeformation:role:create",
    				"lakeformation:role:drop",
    				"lakeformation:table:alter",
    				"lakeformation:table:create",
    				"lakeformation:table:drop",
    				"lakeformation:transaction:operate",
    				"lakeformation:user:alter",
    				"vpc:*:get",
    				"vpc:*:list",
    				"tms:predefineTags:list",
    				"obs:bucket:ListAllMyBuckets",
    				"obs:bucket:ListBucket",
    				"obs:bucket:HeadBucket",
    				"obs:object:GetObject"
    			]
    		}
    	]
    }
  • LakeFormation ReadOnlyAccess策略
    {
    	"Version": "1.1",
    	"Statement": [
    		{
    			"Action": [
    				"lakeformation:*:describe*",
    				"lakeformation:*:list*",
    				"lakeformation:policy:export",
                                    "lakeformation:agreement:cancel",
                                    "lakeformation:agreement:describe",
                                    "lakeformation:agreement:grant",
    				"vpc:*:get",
    				"vpc:*:list",
    				"tms:predefineTags:list",
    				"obs:bucket:ListAllMyBuckets",
    				"obs:bucket:ListBucket",
    				"obs:bucket:HeadBucket",
    				"obs:object:GetObject"
    			],
    			"Effect": "Allow"
    		}
    	]
    }

LakeFormation的IAM权限列表

表3列举了LakeFormation的所有IAM权限。

表3 LakeFormationIAM权限列表

操作类型

操作项

描述

只读

lakeformation:access:describe

查询接入客户端。

lakeformation:agency:describe

查询委托。

lakeformation:catalog:describe

查询Catalog元数据。

lakeformation:configuration:describe

查询配置。

lakeformation:credential:describe

查询认证信息。

lakeformation:database:describe

查询数据库元数据。

lakeformation:file:describe

查询文件。

lakeformation:function:describe

查询函数元数据。

lakeformation:group:describe

查询用户组以及关联角色关系。

lakeformation:instance:describe

查询实例。

lakeformation:instance:listAuthorizedLocation

查询已授权给LakeFormation服务的OBS路径。

lakeformation:instanceJob:describe

查询实例级任务。

lakeformation:job:describe

查询任务。

lakeformation:metadataEvent:describe

查询元数据事件。

lakeformation:obs:describe

查询OBS桶列表。

lakeformation:part:describe

查询分区。

lakeformation:policy:describe

查询权限策略。

lakeformation:policy:export

批量查询权限策略。

lakeformation:role:describe

查询角色。

lakeformation:table:describe

查询表元数据。

lakeformation:tableFile:describe

查询文件。

lakeformation:tableFileGroup:describe

查询表文件组元数据。

lakeformation:tag:describe

查询资源标签。

lakeformation:user:describe

查询用户以及关联角色关系。

lakeformation:access:create

创建接入客户端。

lakeformation:access:delete

删除接入客户端。

lakeformation:agency:create

创建委托。

lakeformation:agency:drop

删除委托。

lakeformation:catalog:alter

修改Catalog元数据。

lakeformation:catalog:create

创建Catalog元数据。

lakeformation:catalog:drop

删除Catalog元数据。

lakeformation:database:alter

修改数据库元数据。

lakeformation:database:create

创建数据库元数据。

lakeformation:database:drop

删除数据库元数据。

lakeformation:dataset:create

创建数据集元数据。

lakeformation:file:create

创建文件。

lakeformation:file:drop

删除文件。

lakeformation:file:alter

修改文件。

lakeformation:function:alter

修改函数元数据。

lakeformation:function:create

创建函数元数据

lakeformation:function:drop

删除函数元数据。

lakeformation:group:alter

修改用户组以及关联角色关系。

lakeformation:instance:access

申请接入服务。

lakeformation:instance:alter

修改实例。

lakeformation:instance:create

创建实例。

lakeformation:instance:drop

删除实例。

lakeformation:instanceJob:alter

修改任务。

lakeformation:instanceJob:create

创建任务。

lakeformation:instanceJob:drop

删除任务。

lakeformation:instanceJob:exec

执行实例级任务。

lakeformation:instance:createSubscriber

创建元数据事件订阅者。

lakeformation:instance:deleteSubscriber

删除元数据事件订阅者。

lakeformation:job:alter

修改任务。

lakeformation:job:create

创建任务。

lakeformation:job:drop

删除任务。

lakeformation:job:exec

执行任务。

lakeformation:model:create

创建模型元数据。

lakeformation:metadata:restore

恢复元数据。

lakeformation:part:alter

修改分区。

lakeformation:part:drop

删除分区。

lakeformation:part:create

创建分区。

lakeformation:policy:create

创建权限策略。

lakeformation:policy:delegate

将权限策略委托给其他授权主体。

lakeformation:policy:drop

删除权限策略。

lakeformation:role:alter

修改角色以及关联用户组关系。

lakeformation:role:create

创建角色。

lakeformation:role:drop

删除角色。

lakeformation:table:alter

修改表元数据。

lakeformation:table:create

创建表元数据。

lakeformation:table:drop

删除表元数据。

lakeformation:tableFile:alter

修改表文件。

lakeformation:tableFile:create

创建表文件。

lakeformation:tableFile:drop

删除表文件。

lakeformation:tableFileGroup:alter

修改表文件组元数据。

lakeformation:tableFileGroup:create

创建表文件组元数据。

lakeformation:tableFileGroup:drop

删除表文件组元数据。

lakeformation:transaction:operate

操作事务。

lakeformation:user:alter

修改用户以及关联角色关系。

权限管理

lakeformation:accessService:grant

授权接入服务。

lakeformation:accessTenant:grant

授权接入租户。

lakeformation:accessAgency:describe

查询接入委托信息。

lakeformation:accessService:describe

查看接入服务。

lakeformation:agreement:describe

查询服务协议授权。

lakeformation:agreement:cancel

取消服务协议授权。

lakeformation:agreement:grant

授权服务协议授权。

lakeformation:instance:authorizeLocation

授权将OBS路径授权给LakeFormation服务。

lakeformation:instance:cancelAuthorizeLocation

取消授权OBS路径。