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的默认系统策略。
系统角色/策略名称 |
描述 |
类别 |
依赖关系 |
---|---|---|---|
LakeFormation FullAccess |
LakeFormation管理员权限,拥有该权限的用户可以操作并使用所有LakeFormation服务功能。 |
系统策略 |
|
LakeFormation ReadOnlyAccess |
LakeFormation只读权限,拥有该权限的用户可以执行LakeFormation所有查询类功能。 |
系统策略 |
|
LakeFormation CommonOperations |
LakeFormation基础权限,包含LakeFormation服务协议查看/授权/取消,以及OBS、TMS等周边依赖服务的基础权限集合。 |
系统策略 |
|
表2介绍了lakeFormation常用操作与系统权限的授权关系,您可以参考该表选择合适的系统权限。
操作 |
LakeFormation FullAccess |
LakeFormation CommonOperations |
LakeFormation ReadOnlyAccess |
---|---|---|---|
查询LakeFormation实例 |
√ |
√ |
√ |
创建LakeFormation实例 |
√ |
x |
x |
变更LakeFormation实例 |
√ |
x |
x |
删除LakeFormation实例 |
√ |
x |
x |
恢复LakeFormation实例 |
√ |
x |
x |
查询租户所有标签 |
√ |
√ |
√ |
更新LakeFormation实例的标签 |
√ |
√ |
x |
创建元数据迁移/发现任务 |
√ |
√ |
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权限。
操作类型 |
操作项 |
描述 |
---|---|---|
只读 |
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路径。 |