函数计算提供安全机制帮助用户减轻安全保障的负担,用户需要根据自身实际情况,运用好函数计算提供的安全机制来实现业务安全性。
用户身份凭证等鉴权信息不可泄露
如果用户泄露了身份凭证等鉴权信息,业务安全将无从保障。用户可以使用访问控制服务通过RAM用户以最小授权原则授权,结合STS提供临时身份凭证,减少身份凭证等鉴权信息泄露的风险。
函数代码及层安全性保障
函数计算为通过鉴权的用户提供临时代码及下载地址,用户需要避免临时下载地址泄露,减少代码或库泄露风险。
用户应该避免在代码或层中记录身份凭证等鉴权信息,避免身份凭证信息泄露。
用户应关注代码或层的大小,过大可能导致函数实例冷启动过慢或启动失败。
由于函数实例可能在不同的调用间复用,前面调用可能导致全局变量、环境变量和文件系统内容等发生修改,用户在代码里不可假设调用在全新的环境执行。
由于函数实例不能保障一定在不同调用间复用,用户在代码里不可假设其它调用修改的全局变量,环境变量,文件系统等内容在本次调用依然有效。
在异步调用及异步任务场景,函数计算帮助用户自动重试函数执行错误,一个事件保障至少执行一次,但用户不可假设同事件最多只触发一次调用。
当函数执行返回时,函数计算将冻结函数实例,用户不可假设调用返回时所有异步进程、线程、协程等执行完成,也不可假设本次异步写入的日志被刷新。
虽然函数计算单个函数实例可以执行多个并发,但并发能力与Runtime语言实现有关系,比如Node.js是单线程模式。Python有GIL全局锁,对计算密集型调用无法并发执行,用户不可假设并发执行数始终符合预期。
函数调用有多种资源限制,比如调用请求包和返回包
headers
大小不超过4 KB, 环境变量总大小不超过4 KB,请求包body
不超过16 MB等(资源限制可能调整,以官网文档为准),用户不可假设代码在超过资源限制时可以正常执行。函数计算运行时版本支持时间与社区同步,当社区停止支持时,函数计算也会启动停止支持流程,停止支持后不保证函数一直正常运行,用户需要及时弃用已停止支持的运行时版本。
用户需要自行保障代码及库的安全性,及时修复漏洞并更新函数。
函数配置安全性保障
函数资源配置
用户应合理的设置函数最大执行时长,设置过长在异常时可能产生更多的费用,设置过短可能影响服务可用性。
用户应合理设置函数的最大内存配置,设置过高会产生更多的费用,设置过少可能影响服务可用性或执行性能。
用户应合理设置单个函数实例的调用并发度,设置过多可能影响服务的可用性或执行性能。
用户应合理的设置最大资源配额,避免异常时消耗更多的费用。
函数访问权限配置
用户应使用访问控制服务合理的规划不同RAM用户访问函数计算的权限,以降低安全风险。
用户应合理的选择函数的访问权限,比如是否限定只能从指定的VPC网络访问。
用户应合理的开通触发器的访问权限,以免函数被非预期调用。
函数网络外访配置
用户应根据实际需要合理的选择网络外访配置,比如是否允许访问指定的VPC等,避免敏感信息泄露。
阿里云服务访问配置
用户应根据实际需要合理地为函数计算执行角色配置阿里云服务的访问权限,如OSS和OTS等,避免敏感信息泄露。
对于用户配置的NAS,目前通过VPC网络传输保障安全性,用户可以自主选择是否启用加密传输功能。更多信息,请参见NFS文件系统传输加密。