全部产品
阿里云办公

权限简介

更新时间:2018-06-22 11:03:14

访问控制服务 RAM (Resource Access Management) 是阿里云提供的资源访问控制服务。

在使用函数计算构建应用时,通常您需要管理各种权限。具体如下:

  • 当您想使用阿里云日志服务(SLS)收集函数运行日志时,您需要授权函数计算能将函数运行日志写入到您指定的日志库中。
  • 当您想使用阿里云对象存储服务(OSS) 触发器时,您需要授权 OSS 调用函数的权限。
  • 当您的函数需要访问账户中的阿里云资源时,例如 OSS 中的数据,您可以创建 RAM 角色并授予相关权限。函数计算在执行函数时将扮演该角色,代表您执行函数。

函数计算使用 RAM 基于角色的权限管理机制。授权的基本思想如下:策略(policy)表示访问某个服务的能力,为 角色(role)绑定指定策略,那么角色就具有了访问该服务的能力。当有第三方需要访问这个服务的时候,只需要扮演具有访问能力的角色即可。

权限的类型

在对阿里云产品进行访问时, 需要拥有对该产品的访问权限。函数计算涉及的权限主要有两种:

  • 函数计算访问阿里云其他产品,需要授予函数计算访问其他产品的权限。
  • 事件源触发函数的执行,需要授权事件源来访问函数计算的权限。

这个是两个层面的授权,第一个是 service 层面的角色授权,第二个是 trigger 层面的角色授权,下面我们分别对两种权限进行介绍。

服务角色

service 层的角色授权:是授予函数计算访问其他服务的权限,在函数计算里,执行策略是赋予函数计算本身,角色设置在 service 这层,同一 service 下的所有函数都继承该角色的执行策略。以函数计算访问日志服务为例

  • RAM 提供系统授权策略 AliyunLogFullAccess 具有对日志服务完全的操作权限。
  • 在创建 service 时,为 service 绑定一个角色(可以新建一个角色也可以使用已有角色)
  • 将策略 AliyunLogFullAccess 绑定到该角色上这样函数计算就可以访问日志服务了。

service-role

配置方式

下面展示如何为函数计算的服务配置角色。为服务配置服务角色是在创建服务时/更新服务时。

控制台示例

创建服务时,为服务添加角色示例:创建服务授权

更新服务时,为服务添加角色示例:更新服务时授权更新服务授权

  • fcli 示例
  1. // 创建一个 RAM 角色:fc-service-role
  2. mksr fc-service-role
  3. // 创建一个可以读取和写入 OSS 的策略:fc-oss-gp。
  4. mkrp fc-oss-gp -a '["oss:GetObject", "oss:PutObject"]' -r '"*"'
  5. // 将 fc-oss-gp 策略赋予角色 fc-service-role,这样角色 fc-service-role 就能读写 OSS 上的资源了。
  6. attach -p /ram/policies/fc-oss-gp -r /ram/roles/fc-service-role
  7. // 创建 oss_demo 服务,并把 fc-service-role 作为其服务角色,oss_demo 服务下所有的函数都能扮演角色 fc-service-role 对 OSS 上资源进行读取或者写入。
  8. mks oss_demo -r acs:ram::12345:role/fc-service-role

最后一条命令中的 12345 改成自己阿里云的 Account ID。

触发器角色

trigger 层的授权:是授权给某个产品的事件源可以触发函数计算执行代码的权限, 是授权给其他的产品,例如使用 OSS 触发器,需要授权 OSS 事件源触发函数计算执行的权限,这样当有对象上传/删除时,才可以触发函数执行。

当用户建立触发器的时候,需要配置一个角色,当事件源被触发的时候,使用该角色来执行函数。

配置角色

下面展示如何为触发器配置角色。trigger-role

控制台示例

创建触发器时配置角色

创建触发器时配置角色

fcli 示例
  1. // 创建触发器
  2. mkt testTrigger -t oss -r acs:ram::12345:role/AliyunOSSEventNotificationRole -s acs:oss:cn-shanghai:12345:bucketName -c ossTrigger.yaml

命令中的 12345 改成自己阿里云的 Account ID。

ossTrigger.yaml 的内容

  1. triggerConfig:
  2. events:
  3. - oss:ObjectCreated:PostObject
  4. - oss:ObjectCreated:PutObject
  5. filter:
  6. key:
  7. prefix: source/

您在使用过程中遇到任何问题,都可以 联系我们