更新时间:2020-07-23 17:12
您通过云账号创建的OpenSearch应用,都是该账号自己拥有的资源。默认情况下,账号对自己的资源拥有完整的操作权限。
使用阿里云的RAM(Resource Access Management)服务,可以将您云账号下OpenSearch资源的访问及管理权限授予RAM中子用户。
注意:
RAM 子账号功能只支持V3 及以上API(SDK)版本,V2 版API(SDK)不支持 RAM子账号功能。
第三方数据源产品要严格遵守 RAM 权限体系,需要在第三方产品赋予子帐号对应权限。其中RAM子账号不支持授权odps服务权限。原因是:当主帐号授权project给子帐号后,子账号因云有云限制无权限列出主账号全部项目。因此子账号无法引用project作为数据源接入开放搜索。建议先使用主账号连ODPS,然后再通过子账号操作开放搜索应用。
使用RAM子账号在控制台中配置 RDS 数据源,必须要再对该RAM子账号进行数据源相关权限授权,否者会报错提示连接RDS服务失败,请稍后再试,参考下面的RDS访问授权。
以
:Search
开头的 ACTION 暂不支持 IP条件鉴权,在配置后会有问题,需注意(主要是:SearchApp
和:SearchSuggest
)。
对子用户设置或更新权限配置后,延迟5分钟后生效。
使用RAM子账号登录访问开放搜索控制台,最小常见组合权限包括应用列表权限、应用详情权限、监控与报警权限、RDS访问授权等,仅供参考。
通过SDK对应用发起搜索请求,实现文档召回功能的测试,所以需要搜索一个应用的权限,以下示例是应用名为app_schema_demo实现文档召回功能的搜索测试。
{
"Statement": [
{
"Effect": "Allow",
"Action": "opensearch:SearchApp",
"Resource": "acs:opensearch:*:*:apps/app_schema_demo"
},
{
"Effect": "Allow",
"Action": "opensearch:ListApp",
"Resource": "acs:opensearch:*:*:apps/app_schema_demo"
}
],
"Version": "1"
}
子账号登录后,需要查看控制台应用列表权限。
{
"Statement": [
{
"Action": [
"opensearch:ListApp"
],
"Effect": "Allow",
"Resource": [
"acs:opensearch:*:*:apps/*"
]
}
],
"Version": "1"
}
监控与报警功能是集成在应用详情界面中,因此需要查看应用详情权限,以下示例是查看应用名为app_schema_demo的应用详情。
{
"Statement": [
{
"Action": [
"opensearch:DescribeApp"
],
"Effect": "Allow",
"Resource": [
"acs:opensearch:*:*:apps/app_schema_demo"
]
}
],
"Version": "1"
}
监控与报警功能是基于阿里云监控系统,可以通过在RAM策略模板中搜索AliyunCloudMonitorReadOnlyAccess来查看云监控只读策略。
{
"Version": "1",
"Statement": [
{
"Action": [
"cms:Get*",
"cms:List*",
"cms:Query*",
"cms:BatchQuery*"
],
"Resource": "*",
"Effect": "Allow"
},
{
"Action": [
"opensearch:ListApps"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
访问RDS有两个接口,tables和fields。由于访问RDS需要添加白名单,因此还需要再为RAM子账号设置白名单权限(如果没有该权限,连接RDS时会报错提示设置RDS的IP白名单失败)。
RDS 的授权直接在 RAM控制台 配置,可以在概览页配置自定义授权策略或者角色,然后在用户管理页面对子账号进行授权(RDS授权参考文档)。
OpenSearch 使用 RDS 授权最小集合:
*
来表示。
{
"Version": "1",
"Statement": [
{
"Action": "rds:DescribeDBInstanceAttribute",
"Resource": "acs:rds:$regionid:$accountid:dbinstance/$dbinstanceid",
"Effect": "Allow"
},
{
"Action": "rds:ModifySecurityIps",
"Resource": "acs:rds:$regionid:$accountid:dbinstance/$dbinstanceid",
"Effect": "Allow"
},
{
"Action": "rds:DescribeDBInstanceIPArrayList",
"Resource": "acs:rds:$regionid:$accountid:dbinstance/$dbinstanceid",
"Effect": "Allow"
},
{
"Action": "rds:DescribeDBInstanceNetInfoForChannel",
"Resource": "acs:rds:$regionid:$accountid:dbinstance/$dbinstanceid",
"Effect": "Allow"
}
]
}
在确定要为子用户赋予某些需要操作的应用后,子用户正常登录控制台通常需要依赖多种 action 权限组合,可以考虑赋予子用户 Describe*
、List*
权限,当然也可以根据您的实际场景需求为子用户赋予特定的权限组合。
给accountId为1234的主账号下的某个子账号赋予所有区域、所有应用的所有操作权限,该策略在主账号控制台中创建后,需再通过主账号在 RAM 控制台中对子账号授权,或通过 RAM SDK对子账号授权。
1、创建一个策略。
{
"Statement": [
{
"Action": [
"opensearch:*"
],
"Effect": "Allow",
"Resource": [
"acs:opensearch:*:1234:apps/*"
]
}
],
"Version": "1"
}
2、把当前策略授权给您指定的子账号。
给accountId为1234的主账号下的某个子账号赋予华东1区域(cn-hangzhou)、所有应用的所有操作权限,该策略在主账号控制台中创建后,需再通过主账号在 RAM 控制台中对子账号授权,或通过 RAM SDK对子账号授权。
1、创建一个策略。
{
"Statement": [
{
"Action": [
"opensearch:*"
],
"Effect": "Allow",
"Resource": [
"acs:opensearch:cn-hangzhou:1234:apps/*"
]
}
],
"Version": "1"
}
2、把当前策略授权给您指定的子账号。
注意:
在resource格式中,如果是通过指定
*
通配符匹配,将包含所有资源类型。如果在resource格式中,是通过指定应用名匹配, 即使在该策略的Action中指定
opensearch:*
,也只会包含资源类别为应用名的所有Action,不包含opensearch:ListApp
和opensearch:CreateApp
。每一行Action都必须对应所在行的resource格式,例如
opensearch:ListApp
和opensearch:CreateApp
作用范围是所有应用,必须用*
表示。注意这2个Action对应resource格式和其它Action对应 resource格式有区别。如果您的授权策略中只包含指定应用名资源格式,并且您也依赖
opensearch:ListApp
和opensearch:CreateApp
权限。您需要再创建1个包含这2个资源格式为*
的Action策略,并累加授权给指定RAM子账号。
Action | Action Descripe | resource |
---|---|---|
opensearch:ListApp | app列表权限 | acs:opensearch:$regionId:$accountId:apps/* |
opensearch:CreateApp | 创建app权限,不限制app name | acs:opensearch:$regionId:$accountId:apps/* |
opensearch:DescribeApp | app详情权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:DeleteApp | 删除app权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:UpdateApp | app更新权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:SetCurrent | 多版本应用切换当前版本服务app | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:ReindexApp | app索引重建权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:PushDoc | app推送文档权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:SearchApp | app 查询权限,SearchApp Action鉴权暂不支持ip条件鉴权 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:DescribeFirstRank | 粗排详情权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:WriteFirstRank | 粗排创建,修改,删除权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:ListFirstRank | 粗排列表权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:DescribeSecondRank | 精排详情权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:WriteSecondRank | 精排创建,修改,删除权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:ListSecondRank | 精排列表权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:WriteDataSource | 数据源创建,修改,删除权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:ListDataSource | 数据源列表权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:DescribeDataSource | 数据源详情权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:WriteSummary | 摘要创建,修改,删除权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:ListSummary | 摘要列表权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:DescribeSuggest | 下拉提示详情权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:WriteSuggest | 下拉提示创建,修改,删除权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:SearchSuggest | 下拉提示搜索权限,SearchSuggest Action鉴权暂不支持ip条件鉴权 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:ReindexSuggest | 下拉提示索引重建权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:ListSuggest | 下拉提示列表权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:WriteQueryProcessor | qp创建,修改,删除权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:ListQueryProcessor | qp 列表权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:DescribeQueryProcessor | qp 详情页权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:DescribeTask | 任务详情权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:WriteTask | 任务创建,修改,删除权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:ListTask | 任务列表权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:ListLog | 日志列表权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:DescribeQuota | quota详情权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:WriteQuota | quota扩容权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:DescribeIndex | 全量导入进度权限 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:DescribeOptimizerSlowQuery | 查看慢query开通状态 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:WriteOptimizerSlowQuery | 开通(关闭)服务慢query服务 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:ListOptimizerSlowQueryCategories | 列出慢query服务优化建议 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:WriteOptimizerSlowQueryCategories | 立即执行慢query分析 | acs:opensearch:$regionId:$accountId:apps/$appName |
opensearch:ListOptimizerSlowQueries | 列出慢query服务中优化建议的Query | acs:opensearch:$regionId:$accountId:apps/$appName |
Action | Action Descripe | resource |
---|---|---|
opensearch:* | app列表权限 | acs:opensearch:$regionId:$accountId:user-analyzers/* |
在文档使用中是否遇到以下问题
更多建议
匿名提交