赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 函数计算 FC 3.0
  4. 安全合规
  5. 使用RAM进行访问控制
  6. 基于身份的策略
  7. 授予函数计算访问其他云服务的权限

授予函数计算访问其他云服务的权限

  • 基于身份的策略
  • 发布于 2025-04-16
  • 0 次阅读
文档编辑
文档编辑

在使用函数计算提供的日志、VPC、异步调用目标服务等功能时,函数计算需要访问其他的云服务。例如配置函数日志时,用户需要授权函数计算对指定日志的Logstore的写入权限,才能够将函数日志写入Logstore。函数计算支持服务关联角色,用户授权后,创建的函数默认将使用服务关联角色,函数不需要配置角色即可使用日志、VPC、异步调用目标服务等功能。而用户代码逻辑如果需要访问其他云服务,或需要更细粒度的授权,可以选择使用函数角色来授权。

功能原理

函数计算根据函数配置的角色,通过AssumeRole获取一个临时密钥(STS Token)。然后通过上下文中的参数Credentials或credentials将临时密钥传递给您的函数。此临时密钥包含了您所配置的权限的所有资源,您可以在函数代码中使用其访问其他阿里云服务。

临时密钥的有效期为36小时,且不支持修改。函数的最大执行时间为24小时,因此,执行函数过程中,临时密钥不会过期。

不同的运行时,参数Credentials或credentials的位置不同,您可以点击以下链接访问对应的文档。需要强调的是,当您使用自定义运行时或自定义镜像运行环境的时候,临时密钥会被注入HTTP请求的Header中。

  • 内置Node.js运行时上下文

  • 内置Python运行时上下文

  • 内置PHP运行时上下文

  • 内置Java运行时上下文

  • 内置.NetCore运行时上下文

  • 内置Golang运行时上下文

  • 自定义运行时和自定义镜像公共请求头

示例:授予函数计算访问OSS的权限

本文以授予函数计算访问对象存储OSS管理权限为例进行介绍。如果需要指定函数具有管理对象存储服务的权限,可以为该函数绑定一个角色,然后为此角色授予管理对象存储的权限。

前提条件

创建函数

操作步骤

  1. 登录函数计算控制台,在左侧导航栏,单击函数。

  2. 在顶部菜单栏,选择地域,然后在函数页面,单击目标函数操作列的配置。

  3. 在函数详情页面,选择配置页签,然后在左侧导航栏选择权限,单击编辑,在编辑权限面板,单击创建角色跳转至RAM控制台,根据界面提示创建角色并为角色授予所需权限。

    您也可以使用已有的角色,如果权限不足,单击编辑策略根据需要添加权限策略。具体操作,请参见为RAM角色授权。

    image

    1. 在RAM控制台的角色页面,单击创建角色。

    2. 在选择类型页签,选择可信实体类型为阿里云服务,然后单击下一步。

      image.png

    3. 在配置角色页签,选择普通服务角色,设置角色名称(本文示例为mytestrole),选择受信服务为函数计算,然后单击完成。

      image.png

    4. 在创建完成页签,单击为角色授权,然后单击目标角色右侧操作列的新增授权。

    5. 在授权页面,选择资源范围,授权主体默认为选择的目标角色,选择所需系统策略或自定义策略,单击添加到右侧已选择列表,然后单击确定。更多信息,请参见权限策略及示例。

      • 账号级别:权限在当前阿里云账号内生效。

      • 资源组级别:权限在指定的资源组内生效。指定资源组授权生效的前提是该云服务已支持资源组。更多信息,请参见支持资源组的云服务。

      本文示例为管理对象存储OSS,因此,您需要为新建角色增加系统策略AliyunOSSFullAccess。

      image

  4. 为目标函数绑定上一步创建的新角色mytestrole。

    image

  5. 测试已绑定角色mytestrole的函数是否有管理OSS的权限。

    1. 在函数列表,单击目标函数,然后选择代码页签,单击测试函数右侧的下拉列表,选择配置测试参数配置,测试参数示例如下。

      {
         "endpoint": "http://oss-cn-hangzhou.aliyuncs.com",
         "bucket": "web****",
         "objectName": "myObj",
         "message": "your-message"
      }

      上述示例中,bucket需替换为与函数相同的地域下您已创建的bucket名称。

    2. 在代码页签的代码编辑器中,编写代码,然后单击部署代码。

      以Python内置运行时为例,您可以使用函数计算为您提供的临时密钥访问对象存储OSS。

      import json
      import oss2
      
      def handler(event, context):
          evt = json.loads(event)
          creds = context.credentials
          # 输入用户临时密钥,包括临时Token。
          # 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
          # 建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
          # 本示例以从上下文中获取AccessKey/AccessSecretKey为例。
          auth = oss2.StsAuth(creds.access_key_id, creds.access_key_secret, creds.security_token)
          bucket = oss2.Bucket(auth, evt['endpoint'], evt['bucket'])
          bucket.put_object(evt['objectName'], evt['message'])
          return 'success'
    3. 单击测试函数,执行成功后,登录对象存储OSS控制台,找到目标Bucket,您可以看到目标对象内容已替换为测试参数中message的内容。

    相关文档

    • 函数计算3.0支持使用服务关联角色最小化授权,关于服务关联角色的权限策略内容,请参见AliyunServiceRoleForFC。

    • 关于如何为目标函数配置角色,请参见创建函数。

相关文章

权限策略及示例 2025-04-16 14:38

函数计算权限管理通过阿里云的访问控制RAM实现。使用访问控制RAM可以让您避免与其他用户共享云账号密钥,即AccessKey(包含AccessKey ID和AccessKey Secret),按需为RAM用户分配最小权限。本文介绍函数计算的权限策略,包括系统策略、自定义策略及自定义策略示例。

授予函数计算访问其他云服务的权限 2025-04-16 14:38

在使用函数计算提供的日志、VPC、异步调用目标服务等功能时,

授予事件源访问函数计算的权限 2025-04-16 14:38

当您需通过事件源如对象存储OSS触发函数执行时,可授予该事件源触发函数的权限,该权限是触发器级别的,每个触发器的角色均可以被授予相应权限,该角色也可以同时被授予不同触发器。本文以授予OSS访问函数计算的权限为例,介绍授予事件源访问函数计算权限的应用场景和操作步骤。

通过阿里云账号给RAM用户授权 2025-04-16 14:38

借助访问控制的RAM用户,您可以实现阿里云账号和RAM用户的权限分割,避免因暴露阿里云账号密钥,造成安全风险。按需为RAM用户赋予权限后,您可以限定拥有指定权限的RAM用户在函数计算控制台访问或管理资源。本文介绍如何通过阿里云账号创建并授权RA

通过RAM角色实现跨云账号授权 2025-04-16 14:38

您可以使用RAM控制台和SDK获取阿里云临时安全令牌STS(Security Token Service)并实现跨账号授权查看或管理函数计算的资源。

授予不同RAM用户不同分组函数的操作权限 2025-04-16 14:38

函数计算支持将相同作用的函数资源通过标签Tag归类,便于搜索和资源聚合。您也可以通过标签功能将函数进行分组,实现不同RAM用户对不同分组的函数的操作权限。例如阿里云主账号在

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号