在插件、词典等上传场景中,如果您的原始文件在OSS中,您可以按照控制台引导使用提供OSS地址的方式完成文件的上传。该过程依赖普通服务角色,需要您授权阿里云Elasticsearch(简称ES)平台访问您提供的OSS路径的权限,从而加载您需要上传的文件。
ES普通服务角色介绍
普通服务角色(Service Role)是一种可信实体为阿里云服务的RAM角色,旨在解决跨云服务的授权访问问题。更多信息,请参见RAM角色概览。
在您根据控制台指引,使用提供OSS路径的方式更新词典时,如果不存在具有执行任务权限的角色,需要您主动授权,确认创建普通服务角色。ES通过扮演该角色访问您提供的OSS路径中的文件,更新ES实例中相应类型的词典,且无需您再将OSS Bucket的读权限修改为公共读,数据安全更有保障。
该角色的相关说明如下:
授权服务名称:elasticsearch.aliyuncs.com
角色名称:AliyunElasticsearchAccessingOSSRole
角色权限策略名称:AliyunElasticsearchAccessingOSSRolePolicy
角色权限策略内容
{ "Version": "1", "Statement": [ { "Action": [ "oss:GetObject", "oss:GetObjectMetadata", "oss:GetObjectMeta" ], "Resource": "*", "Effect": "Allow" } ] }
删除普通服务角色
普通服务角色您可以在RAM控制台手动删除。具体操作,请参见删除RAM角色。
删除普通服务角色后,依赖该角色的对应功能将无法正常使用,请谨慎删除。
服务角色权限收敛示例
普通服务角色的授权策略,还可进行二次干预和收敛。
设置Bucket标签
利用Bucket标签来管理OSS存储空间的权限。更多信息,请参见管理存储空间标签。
登录OSS管理控制台。
单击Bucket 列表,然后单击目标Bucket名称。
在左侧导航栏,选择 。
在Bucket 标签页面,单击创建标签。
设置Bucket标签
新建RAM策略。具体操作,请参见通过脚本编辑模式创建自定义权限策略。
可限制Bucket(修改Resource),或者指定标签下的Bucket(修改Condition)访问。脚本示例如下:
{ "Version": "1", "Statement": [ { "Action": [ "oss:GetObject", "oss:GetObjectMetadata", "oss:GetObjectMeta" ], "Resource": [ "acs:oss:*:193248xxxxxxx:*" ], "Effect": "Allow", "Condition": { "StingEquals": { "oss:BuckteTag/key1":"value1" } } } ] }
编辑 AliyunElasticsearchAccessingOSSRole 权限,新增上一步创建的自定义策略。
常见问题
Q:使用UpdateDict、UpdateHotIkDicts、UpdateSynonymsDicts、UpdateAliwsDict等OpenAPI请求出现错误码ElasticsearchNoPermissionForCurrentBucket
?
A:云原生管控实例(如7.16、8.5、8.9等版本实例),仅支持通过阿里云普通服务角色授权实现读取OSS内的词典文件功能,不支持直接访问公共读的OSS地址,请及时进入授权页完成授权。影响的场景包括以OSS方式更新同义词、IK词典冷更新和热更新、aliws词库更新等。