文档首页> 湖仓构建 LakeFormation> API参考> 权限和授权项> 基于策略授权的服务授权项
更新时间:2024-04-08 GMT+08:00
分享

基于策略授权的服务授权项

云服务在IAM预置了常用授权项,称为系统策略。如果IAM系统策略无法满足授权要求,管理员可以根据各服务支持的授权项,创建IAM自定义策略来进行精细的访问控制,IAM自定义策略是对系统策略的扩展和补充。

除IAM服务外,Organizations服务中的服务控制策略(Service Control Policies,以下简称SCP)也可以使用这些授权项元素设置访问控制策略。

SCP不直接进行授权,只划定权限边界。将SCP绑定到组织单元或者成员账号时,并没有直接对组织单元或成员账号授予操作权限,而是规定了成员账号或组织单元包含的成员账号的授权范围。IAM策略授予权限的有效性受SCP限制,只有在SCP允许范围内的权限才能生效。

本章节介绍IAM服务基于策略授权场景中自定义策略和组织服务中SCP使用的元素,这些元素包含了操作(Action)、资源(Resource)和条件(Condition)。

操作(Action)

操作(Action)即为策略中支持的操作项。

  • “访问级别”列描述如何对操作进行分类(list、read和write等)。此分类可帮助您了解在策略中相应操作对应的访问级别。
  • “资源类型”列指每个操作是否支持资源级权限。
    • 资源类型支持通配符号*表示所有。如果此列没有值(-),则必须在策略语句的Resource元素中指定所有资源类型(“*”)。
    • 如果该列包含资源类型,则必须在具有该操作的语句中指定该资源的URN。
    • 资源类型列中必需资源在表中用星号(*)标识,表示使用此操作必须指定该资源类型。

    关于LakeFormation定义的资源类型的详细信息请参见资源类型(Resource)

  • “条件键”列包括了可以在策略语句的Condition元素中支持指定的键值。
    • 如果该操作项资源类型列存在值,则表示条件键仅对列举的资源类型生效。
    • 如果该操作项资源类型列没有值(-),则表示条件键对整个操作项生效。
    • 如果此列没有值(-),表示此操作不支持指定条件键。

    关于LakeFormation定义的条件键的详细信息请参见条件(Condition)

  • LakeFormation支持的操作项、API与操作项的关系请参见以下详细介绍:
  • LakeFormation支持企业项目授权的API:
    • GET /v1/{project_id}/instances
    • API请求中包含“instance_id”的API,例如:GET /v1/{project_id}/instances/{instance_id}

LakeFormation Console API

您可以在自定义策略语句的Action元素中指定LakeFormation Console API相关操作。详细操作如表1所示。

表1 LakeFormation支持的操作项

操作项

描述

访问级别

资源类型(*为必须)

条件键

lakeformation:job:create

创建LakeFormation任务的权限。

write

-

-

lakeformation:job:describe

查询LakeFormation任务的权限。

read

-

-

lakeformation:job:drop

删除LakeFormation任务的权限。

write

-

-

lakeformation:job:alter

修改LakeFormation任务的权限。

write

-

-

lakeformation:job:exec

执行LakeFormation任务的权限。

write

-

-

lakeformation:instanceJob:create

创建LakeFormation任务的权限。

write

-

-

lakeformation:instanceJob:describe

查询LakeFormation任务的权限。

read

-

-

lakeformation:instanceJob:drop

删除LakeFormation任务的权限。

write

-

-

lakeformation:instanceJob:alter

修改LakeFormation任务的权限。

write

-

-

lakeformation:instanceJob:exec

执行LakeFormation任务的权限。

write

-

-

lakeformation:instance:create

创建LakeFormation实例的权限。

write

-

-

lakeformation:instance:describe

查询LakeFormation实例的权限。

read

-

-

lakeformation:instance:drop

删除LakeFormation实例的权限。

write

-

-

lakeformation:instance:alter

修改LakeFormation实例的权限。

write

-

-

lakeformation:access:describe

查询LakeFormation接入客户端的权限。

read

-

-

lakeformation:instance:access

查询或申请接入LakeFormation实例的权限。

write

-

-

lakeformation:access:create

创建LakeFormation接入客户端的权限。

write

-

-

lakeformation:access:delete

删除LakeFormation接入客户端的权限。

write

-

-

lakeformation:agency:create

创建LakeFormation委托的权限。

write

-

-

lakeformation:agency:drop

删除LakeFormation委托的权限。

write

-

-

lakeformation:agency:describe

查询LakeFormation委托的权限。

read

-

-

lakeformation:accessService:describe

查看LakeFormation接入服务的权限。

permission_management

-

-

lakeformation:accessService:grant

授权LakeFormation接入服务的权限。

permission_management

-

-

lakeformation:accessTenant:grant

授权LakeFormation接入租户的权限。

permission_management

-

-

lakeformation:accessAgency:describe

查询LakeFormation接入委托信息的权限。

permission_management

-

-

lakeformation:agreement:describe

查看LakeFormation服务协议的权限。

permission_management

-

-

lakeformation:agreement:cancel

取消LakeFormation服务协议授权的权限。

permission_management

-

-

lakeformation:agreement:grant

授权LakeFormation服务协议的权限。

permission_management

-

-

lakeformation:obs:describe

查询OBS桶列表

read

-

-

lakeformation:tag:describe

查询LakeFormation预定义资源标签的权限。

read

-

-

LakeFormation Console API通常对应着一个或多个操作项。表2展示了API与操作项的关系,以及该API需要依赖的操作项。

表2 API与操作项的关系

API

对应的操作项

依赖的操作项

POST /v1/{project_id}/instances

lakeformation:instance:create

-

GET /v1/{project_id}/instances

lakeformation:instance:describe

-

DELETE /v1/{project_id}/instances/{instance_id}

lakeformation:instance:drop

-

GET /v1/{project_id}/instances/{instance_id}

lakeformation:instance:describe

-

PUT /v1/{project_id}/instances/{instance_id}

lakeformation:instance:alter

-

POST /v1/{project_id}/instances/{instance_id}/default

lakeformation:instance:alter

-

POST /v1/{project_id}/instances/{instance_id}/scale

lakeformation:instance:alter

-

POST /v1/{project_id}/instances/{instance_id}/recover

lakeformation:instance:create

-

POST /v1/{project_id}/access-service

lakeformation:accessService:grant

-

GET /v1/{project_id}/access-service

lakeformation:accessService:describe

-

POST /v1/{project_id}/agreement

lakeformation:agreement:grant

-

GET /v1/{project_id}/agreement

lakeformation:agreement:describe

-

DELETE /v1/{project_id}/agreement

lakeformation:agreement:cancel

-

GET /v1/{project_id}/obs/buckets

lakeformation:obs:describe

obs:bucket:ListAllMyBuckets

GET /v1/{project_id}/obs/buckets/{bucket_name}

lakeformation:obs:describe

  • obs:bucket:ListBucket
  • obs:bucket:HeadBucket

GET /v1/{project_id}/instances/{instance_id}/access

lakeformation:instance:access

-

POST /v1/{project_id}/instances/{instance_id}/access

lakeformation:instance:access

-

GET /v1/{project_id}/instances/{instance_id}/access-clients

lakeformation:access:describe

-

POST /v1/{project_id}/instances/{instance_id}/access-clients

lakeformation:access:create

-

GET /v1/{project_id}/instances/{instance_id}/access-clients/{client_id}

lakeformation:access:describe

-

DELETE /v1/{project_id}/instances/{instance_id}/access-clients/{client_id}

lakeformation:access:delete

-

PUT /v1/{project_id}/instances/{instance_id}/access-clients/{client_id}

lakeformation:instance:alter

-

PUT /v1/{project_id}/instances/{instance_id}/tags

lakeformation:instance:alter

-

POST /v1/{project_id}/agency

lakeformation:agency:create

-

DELETE /v1/{project_id}/agency

lakeformation:agency:drop

-

GET /v1/{project_id}/agency

lakeformation:agency:describe

-

GET /v1/{project_id}/lakeformation-instance/tags

lakeformation:tag:describe

tms:predefineTags:list

-

lakeformation:instance:describe

-

-

lakeformation:instance:alter

-

LakeFormation LakeCat API

您可以在自定义策略语句的Action元素中指定LakeFormation LakeCat API相关操作。详细操作如表3所示。

表3 LakeFormation支持的操作项

操作项

描述

访问级别

资源类型(*为必须)

条件键

lakeformation:function:describe

查询LakeFormation元数据的函数的权限。

read

-

-

lakeformation:function:drop

删除LakeFormation元数据的函数的权限。

write

-

-

lakeformation:function:alter

修改LakeFormation元数据的函数的权限。

write

-

-

lakeformation:function:create

创建LakeFormation元数据的函数的权限。

write

-

-

lakeformation:catalog:describe

查询LakeFormation元数据的数据目录的权限。

read

-

-

lakeformation:catalog:create

创建LakeFormation元数据的数据目录的权限。

write

-

-

lakeformation:catalog:alter

修改LakeFormation元数据的数据目录的权限。

write

-

-

lakeformation:catalog:drop

删除LakeFormation元数据的数据目录的权限。

write

-

-

lakeformation:database:describe

查询LakeFormation元数据的数据库的权限。

read

-

-

lakeformation:database:create

创建LakeFormation元数据的数据库的权限。

write

-

-

lakeformation:database:alter

修改LakeFormation元数据的数据库的权限。

write

-

-

lakeformation:database:drop

删除LakeFormation元数据的数据库的权限。

write

-

-

lakeformation:table:describe

查询LakeFormation元数据的数据表的权限。

read

-

-

lakeformation:table:alter

修改LakeFormation元数据的数据表的权限。

write

-

-

lakeformation:table:create

创建LakeFormation元数据的数据表的权限。

write

-

-

lakeformation:table:drop

删除LakeFormation元数据的数据表的权限。

write

-

-

lakeformation:transaction:operate

操作LakeFormation事务的权限。

write

-

-

lakeformation:user:describe

查询LakeFormation用户以及关联角色关系的权限。

read

-

-

lakeformation:policy:create

创建LakeFormation权限策略的权限。

write

-

-

lakeformation:policy:export

批量查询LakeFormation权限策略的权限。

read

-

-

lakeformation:policy:drop

删除LakeFormation权限策略的权限。

write

-

-

lakeformation:policy:describe

查询LakeFormation权限策略的权限。

read

-

-

lakeformation:group:describe

查询LakeFormation用户组以及关联角色关系的权限。

read

-

-

lakeformation:group:alter

修改LakeFormation用户组以及关联角色关系的权限。

write

-

-

lakeformation:instance:describe

查询LakeFormation实例的权限。

read

-

-

lakeformation:role:create

创建LakeFormation角色的权限。

write

-

-

lakeformation:role:describe

查询LakeFormation角色的权限。

read

-

-

lakeformation:role:drop

删除LakeFormation角色的权限。

write

-

-

lakeformation:role:alter

修改LakeFormation角色以及关联用户组关系的权限。

write

-

-

lakeformation:credential:describe

获取访问LakeFormation认证信息的权限。

read

-

-

lakeformation:configuration:describe

查询用户配置的权限。

read

-

-

lakeformation:user:alter

修改LakeFormation用户以及关联角色关系的权限。

write

-

-

lakeformation:tableFile:alter

修改文件的权限。

write

-

-

lakeformation:tableFile:describe

查询文件的权限。

read

-

-

lakeformation:tableFile:drop

删除文件的权限。

write

-

-

lakeformation:tableFile:create

创建文件的权限。

write

-

-

lakeformation:tableFileGroup:create

创建文件组的权限。

write

-

-

lakeformation:tableFileGroup:describe

查询文件组的权限。

read

-

-

lakeformation:tableFileGroup:alter

修改文件组的权限。

write

-

-

lakeformation:tableFileGroup:drop

删除文件组的权限。

write

-

-

lakeformation:metadata:restore

恢复元数据的权限。

write

-

-

lakeformation:metadataEvent:describe

查询元数据事件的权限。

read

-

-

LakeFormation LakeCat API通常对应着一个或多个操作项。表4展示了API与操作项的关系,以及该API需要依赖的操作项。

表4 API与操作项的关系

API

对应的操作项

依赖的操作项

GET /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/functions

lakeformation:function:describe

-

GET /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/functions/names

lakeformation:function:describe

-

GET /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/functions/{function_name}

lakeformation:function:describe

-

DELETE /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/functions/{function_name}

lakeformation:function:drop

-

POST /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/functions/{function_name}

lakeformation:function:alter

-

POST /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/functions

lakeformation:function:create

-

GET /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/functions

lakeformation:function:describe

-

GET /v1/{project_id}/instances/{instance_id}/catalogs

lakeformation:catalog:describe

-

POST /v1/{project_id}/instances/{instance_id}/catalogs

lakeformation:catalog:create

-

PUT /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}

lakeformation:catalog:alter

-

DELETE /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}

lakeformation:catalog:drop

-

GET /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}

lakeformation:catalog:describe

-

GET /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases

lakeformation:database:describe

-

POST /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases

lakeformation:database:create

-

GET /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}

lakeformation:database:describe

-

PUT /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}

lakeformation:database:alter

-

DELETE /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}

lakeformation:database:drop

-

GET /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/names

lakeformation:database:describe

-

GET /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/tables

lakeformation:table:describe

-

POST /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/list-by-names

lakeformation:table:describe

-

GET /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables

lakeformation:table:describe

-

POST /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables

lakeformation:table:create

-

GET /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/{table_name}

lakeformation:table:describe

-

PUT /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/{table_name}

lakeformation:table:alter

-

DELETE /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/{table_name}

lakeformation:table:drop

-

GET /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/names

lakeformation:table:describe

-

POST /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/{table_name}/column-statistics/batch-get

lakeformation:table:describe

-

POST /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/{table_name}/column-statistics

lakeformation:table:alter

-

DELETE /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/{table_name}/column-statistics

lakeformation:table:alter

-

POST /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/{table_name}/partitions/batch-alter

lakeformation:table:alter

-

GET /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/{table_name}/partitions

lakeformation:table:describe

-

POST /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/{table_name}/partitions/batch-create

lakeformation:table:alter

-

POST /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/{table_name}/partitions/batch-drop

lakeformation:table:alter

-

POST /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/{table_name}/partitions/batch-get

lakeformation:table:describe

-

GET /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/{table_name}/partitions/partition-names

lakeformation:table:describe

-

GET /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/{table_name}/partitions/names

lakeformation:table:describe

-

POST /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/{table_name}/partitions/column-statistics/batch-get

lakeformation:table:describe

-

POST /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/{table_name}/partitions/column-statistics

lakeformation:table:alter

-

DELETE /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/tables/{table_name}/partitions/column-statistics

lakeformation:table:alter

-

GET /v1/{project_id}/instances/{instance_id}/users

lakeformation:user:describe

-

POST /v1/{project_id}/instances/{instance_id}/policies/grant

lakeformation:policy:create

-

GET /v1/{project_id}/instances/{instance_id}/policies/policy

lakeformation:policy:export

-

POST /v1/{project_id}/instances/{instance_id}/policies/revoke

lakeformation:policy:drop

-

GET /v1/{project_id}/instances/{instance_id}/policies/show

lakeformation:policy:describe

-

GET /v1/{project_id}/instances/{instance_id}/policies

lakeformation:policy:export

-

GET /v1/{project_id}/instances/{instance_id}/groups

lakeformation:group:describe

-

-

lakeformation:group:alter

-

-

lakeformation:group:alter

-

-

lakeformation:group:alter

-

-

lakeformation:group:describe

-

POST /v1/{project_id}/instances/{instance_id}/metaobj/count

lakeformation:instance:describe

-

POST /v1/{project_id}/instances/{instance_id}/roles

lakeformation:role:create

-

GET /v1/{project_id}/instances/{instance_id}/roles

lakeformation:role:describe

-

DELETE /v1/{project_id}/instances/{instance_id}/roles/{role_name}

lakeformation:role:drop

-

GET /v1/{project_id}/instances/{instance_id}/roles/{role_name}

lakeformation:role:describe

-

PUT /v1/{project_id}/instances/{instance_id}/roles/{role_name}

lakeformation:role:alter

-

GET /v1/{project_id}/instances/{instance_id}/roles/names

lakeformation:role:describe

-

GET /v1/{project_id}/instances/{instance_id}/roles/{role_name}/principals

lakeformation:role:describe

-

POST /v1/{project_id}/instances/{instance_id}/roles/{role_name}/grant-principals

lakeformation:role:alter

-

POST /v1/{project_id}/instances/{instance_id}/roles/{role_name}/revoke-principals

lakeformation:role:alter

-

PUT /v1/{project_id}/instances/{instance_id}/roles/{role_name}/update-principals

lakeformation:role:alter

-

POST /v1/{project_id}/instances/{instance_id}/credential

lakeformation:credential:describe

-

GET /v1/{project_id}/instances/{instance_id}/configurations

lakeformation:configuration:describe

-

POST /v1/{project_id}/instances/{instance_id}/users/{user_name}/grant-roles

lakeformation:user:alter

-

POST /v1/{project_id}/instances/{instance_id}/users/{user_name}/revoke-roles

lakeformation:user:alter

-

PUT /v1/{project_id}/instances/{instance_id}/users/{user_name}/update-roles

lakeformation:user:alter

-

GET /v1/{project_id}/instances/{instance_id}/users/{user_name}/roles

lakeformation:user:describe

-

POST /v1/{project_id}/instances/{instance_id}/policies/check-permission

lakeformation:policy:describe

-

-

lakeformation:metadata:restore

-

GET /v1/{project_id}/instances/{instance_id}/metadata-event

lakeformation:metadataEvent:describe

-

资源类型(Resource)

LakeFormation服务不支持在身份策略中的资源中指定资源进行权限控制。如需允许访问LakeFormation服务,请在身份策略的Resource元素中使用通配符号*,表示身份策略将应用到所有资源。

条件(Condition)

LakeFormation服务不支持在策略中的条件键中配置服务级的条件键。LakeFormation可以使用适用于所有服务的全局条件键。

分享:

    相关文档

    相关产品