基于策略授权的服务授权项
云服务在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所示。
操作项 |
描述 |
访问级别 |
资源类型(*为必须) |
条件键 |
---|---|---|---|---|
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需要依赖的操作项。
API |
对应的操作项 |
依赖的操作项 |
---|---|---|
lakeformation:instance:create |
- |
|
lakeformation:instance:describe |
- |
|
lakeformation:instance:drop |
- |
|
lakeformation:instance:describe |
- |
|
lakeformation:instance:alter |
- |
|
lakeformation:instance:alter |
- |
|
lakeformation:instance:alter |
- |
|
lakeformation:instance:create |
- |
|
lakeformation:accessService:grant |
- |
|
lakeformation:accessService:describe |
- |
|
lakeformation:agreement:grant |
- |
|
lakeformation:agreement:describe |
- |
|
lakeformation:agreement:cancel |
- |
|
lakeformation:obs:describe |
obs:bucket:ListAllMyBuckets |
|
lakeformation:obs:describe |
|
|
lakeformation:instance:access |
- |
|
lakeformation:instance:access |
- |
|
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 |
- |
lakeformation:instance:alter |
- |
|
lakeformation:agency:create |
- |
|
lakeformation:agency:drop |
- |
|
lakeformation:agency:describe |
- |
|
lakeformation:tag:describe |
tms:predefineTags:list |
|
- |
lakeformation:instance:describe |
- |
- |
lakeformation:instance:alter |
- |
LakeFormation LakeCat API
您可以在自定义策略语句的Action元素中指定LakeFormation LakeCat API相关操作。详细操作如表3所示。
操作项 |
描述 |
访问级别 |
资源类型(*为必须) |
条件键 |
---|---|---|---|---|
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需要依赖的操作项。
API |
对应的操作项 |
依赖的操作项 |
---|---|---|
GET /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/functions |
lakeformation:function:describe |
- |
lakeformation:function:describe |
- |
|
lakeformation:function:describe |
- |
|
lakeformation:function:drop |
- |
|
lakeformation:function:alter |
- |
|
lakeformation:function:create |
- |
|
lakeformation:function:describe |
- |
|
lakeformation:catalog:describe |
- |
|
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 |
- |
lakeformation:table:describe |
- |
|
lakeformation:table:describe |
- |
|
lakeformation:table:create |
- |
|
lakeformation:table:describe |
- |
|
lakeformation:table:alter |
- |
|
lakeformation:table:drop |
- |
|
lakeformation:table:describe |
- |
|
lakeformation:table:describe |
- |
|
lakeformation:table:alter |
- |
|
lakeformation:table:alter |
- |
|
lakeformation:table:alter |
- |
|
lakeformation:table:describe |
- |
|
lakeformation:table:alter |
- |
|
lakeformation:table:alter |
- |
|
lakeformation:table:describe |
- |
|
lakeformation:table:describe |
- |
|
lakeformation:table:describe |
- |
|
lakeformation:table:describe |
- |
|
lakeformation:table:alter |
- |
|
lakeformation:table:alter |
- |
|
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 |
- |
lakeformation:policy:describe |
- |
|
lakeformation:policy:export |
- |
|
lakeformation:group:describe |
- |
|
- |
lakeformation:group:alter |
- |
- |
lakeformation:group:alter |
- |
- |
lakeformation:group:alter |
- |
- |
lakeformation:group:describe |
- |
lakeformation:instance:describe |
- |
|
lakeformation:role:create |
- |
|
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 |
- |
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 |
- |
lakeformation:credential:describe |
- |
|
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 |
- |
lakeformation:metadataEvent:describe |
- |