在腾讯云向量存储桶中,资源(存储桶、索引、向量等)默认是私有的。只有资源拥有者(腾讯云主账号)可以访问和修改这些资源。其他用户(例如子账号、匿名用户等)在未授权的情况下无法直接通过 URL 访问资源。向量存储桶支持基于 CAM 用户的访问权限管理和基于资源的访问权限管理两种维度:
用户策略(CAM 策略):以用户为中心的权限管理。配置策略时无需指定用户,需要指定资源、操作和条件。可在 CAM 控制台 进行设置。
资源策略(桶策略):将权限直接关联到具体资源上,用于授权其他腾讯云账户、子账户或匿名用户访问指定的向量资源。可通过 COS 控制台或 COS Vectors API 进行配置。
向量存储桶的资源
存储桶(Bucket)、索引(Index)和向量(Vector)是向量存储桶的三种主要资源类型。目前,访问权限的配置支持到桶级和索引级,暂不支持向量级。您可以通过配置访问策略,对存储桶整体或桶内指定的索引进行授权管理。
需要注意的是,在资源六段式中,向量存储桶的资源标识为 cosvector,资源 ID 以层次结构展现,这点与对象存储 COS 有较大区别。向量桶的资源六段式的具体格式如下表所示。
资源级别 | 格式 | 示例 |
当前账号下所有向量存储桶资源 | qcs::cosvector:uid/{appid}:bucket/* | 授权访问当前账号下所有向量桶资源: qcs::cosvector:uid/1250000000:bucket/* |
向量存储桶 | qcs::cosvector:{region}:uid/{appid}:bucket/{bucketname}/* | 授权访问指定向量桶: qcs::cosvector:ap-guangzhou:uid/1250000000:bucket/my-vector-bucket-1250000000/* |
向量索引 | qcs::cosvector:{region}:uid/{appid}:bucket/{bucketname}/index/{indexname}/* | 授权访问指定向量桶内的指定索引: qcs::cosvector:ap-guangzhou:uid/1250000000:bucket/my-vector-bucket-1250000000/index/my-index/* |
说明:
appid 是您在成功申请腾讯云账户后所得到的账号,由系统自动分配,具有固定性和唯一性,可在 账号信息 中查看。
region:指向量存储桶所在的地域简称。关于地域简称的完整列表,请参考 地域和访问域名。
bucketname:指您创建的向量存储桶的完整名称,由自定义名称 + "-" + appid 组成,例如:my-vector-bucket-1250000000。
indexname:指您创建的向量索引的名称。
在授权时,如果资源字段如上表所示带有末尾的通配符 "*",那么这三类资源表示是包含关系,例如为资源 qcs::cosvector:{region}:uid/{appid}:bucket/{bucketname}/* 授权了 GetVectors 操作,那么意味着授权了该桶下的所有 index 的 GetVectors 操作权限。
支持的 Action
向量存储桶使用了一套跟 COS 完全不同的 API 接口,完整的 API 与对应的 Action 如下表所示。
模块 | API | Action | 接口描述 |
向量桶操作 | cos:PutVectorBucket | 创建向量存储桶。 | |
| cos:GetVectorBucket | 获取向量存储桶的详细信息。 | |
| cos:ListVectorBuckets | 列举请求者拥有的所有向量存储桶。 | |
| cos:DeleteVectorBucket | 删除向量存储桶。 | |
向量桶策略 | cos:PutVectorBucketPolicy | 设置指定向量存储桶的授权策略。 | |
| cos:GetVectorBucketPolicy | 获取指定向量存储桶的授权策略。 | |
| cos:DeleteVectorBucketPolicy | 删除指定向量存储桶的授权策略。 | |
向量索引操作 | cos:PutVectorIndex | 创建向量索引。 | |
| cos:GetVectorIndex | 获取向量索引的详细信息。 | |
| cos:ListVectorIndexes | 列举向量存储桶中的所有向量索引。 | |
| cos:DeleteVectorIndex | 删除向量索引。 | |
向量操作 | cos:PutVectors | 写入向量数据。 | |
| cos:GetVectors | 获取指定的向量数据。 | |
| cos:ListVectors | 列举向量索引中的所有向量数据。 | |
| cos:QueryVectors | 进行向量相似性检索。 | |
| cos:DeleteVectors | 删除向量索引中的指定向量数据。 | |
支持的条件(Condition)
当前 COS 向量存储桶不支持条件表达式。
向量存储桶策略示例
示例一:授予子账号对向量桶的操作权限
授予子账号 700001234567 对向量桶 example-bucket-1250000000的部分操作权限,包含获取向量桶信息、创建向量索引、列举向量索引。
{"Statement": [{"Action": ["name/cos:GetVectorBucket","name/cos:PutVectorIndex","name/cos:ListVectorIndexes"],"Effect": "allow","Principal": {"qcs": ["qcs::cam::uin/700000000000:uin/700001234567"]},"Resource": ["qcs::cosvector:ap-guangzhou:uid/1250000000:bucket/example-bucket-1250000000/*"],"Sid": "bucket_action"}],"Version": "2.0"}
示例二:授予子账号对向量桶的索引操作和向量操作权限
授予子账号 700001234567 对向量桶 example-bucket-1250000000内的索引 idx-dim3 的索引操作和向量操作权限。
{"Statement": [{"Action": ["name/cos:GetVectorIndex","name/cos:PutVectors","name/cos:GetVectors","name/cos:ListVectors","name/cos:QueryVectors"],"Effect": "allow","Principal": {"qcs": ["qcs::cam::uin/700000000000:uin/700001234567"]},"Resource": ["qcs::cosvector:ap-guangzhou:uid/1250000000:bucket/example-bucket-1250000000/index/idx-dim3/*"],"Sid": "index_idx_dim3_action"}],"Version": "2.0"}
示例三:授予子账号对向量桶的桶操作、索引操作和向量操作权限
授予子账号 700001234567 对向量桶 example-bucket-1250000000的桶操作权限以及桶内所有索引的索引操作和向量操作权限。
注意:
"qcs::cosvector:ap-guangzhou:uid/1250000000:bucket/example-bucket-1250000000/*" 这条 resource 已经包含了桶 example-bucket-1250000000 下的所有 index 资源,这种情况下设置同一向量桶下某个具体 index 的 resource 没有意义。
如果想要分别管理桶权限和索引权限,可以设置多条 Statement,请参考示例四。
{"Statement": [{"Action": ["name/cos:DeleteVectorBucket","name/cos:GetVectorBucket","name/cos:PutVectorIndex","name/cos:DeleteVectorIndex","name/cos:GetVectorIndex","name/cos:ListVectorIndexes","name/cos:PutVectorBucketPolicy","name/cos:GetVectorBucketPolicy","name/cos:DeleteVectorBucketPolicy","name/cos:PutVectors","name/cos:GetVectors","name/cos:DeleteVectors","name/cos:ListVectors","name/cos:QueryVectors"],"Effect": "allow","Principal": {"qcs": ["qcs::cam::uin/700000000000:uin/700001234567"]},"Resource": ["qcs::cosvector:ap-guangzhou:uid/1250000000:bucket/example-bucket-1250000000/*"],"Sid": "total_action"}],"Version": "2.0"}
示例四:授予子账号对向量桶的桶操作权限,以及对向量索引的索引操作和向量操作权限
授予子账号 700001234567 对向量桶 example-bucket-1250000000 的桶操作权限,同时授予子账号 700001234567 对向量桶 example-bucket-1250000000 内的 idx-dim3 索引的索引操作和向量操作权限。
在这种情况下,子账号 700001234567 虽然拥有对向量桶 example-bucket-1250000000 的 GetVectorBucket 等操作权限,也拥有对索引 idx-dim3 的 GetVectors 等操作权限,但是却没有对其他索引如 idx-dim3-other 的 GetVectors 操作权限。
{"Statement": [{"Action": ["name/cos:DeleteVectorBucket","name/cos:GetVectorBucket","name/cos:PutVectorIndex","name/cos:ListVectorIndexes","name/cos:PutVectorBucketPolicy","name/cos:GetVectorBucketPolicy","name/cos:DeleteVectorBucketPolicy"],"Effect": "allow","Principal": {"qcs": ["qcs::cam::uin/700000000000:uin/700001234567"]},"Resource": ["qcs::cosvector:ap-guangzhou:uid/1250000000:bucket/example-bucket-1250000000/*"],"Sid": "bucket_action"},{"Action": ["name/cos:DeleteVectorIndex","name/cos:GetVectorIndex","name/cos:PutVectors","name/cos:GetVectors","name/cos:DeleteVectors","name/cos:ListVectors","name/cos:QueryVectors"],"Effect": "allow","Principal": {"qcs": ["qcs::cam::uin/700000000000:uin/700001234567"]},"Resource": ["qcs::cosvector:ap-guangzhou:uid/1250000000:bucket/example-bucket-1250000000/index/idx-dim3/*"],"Sid": "idx_dim3_action"}],"Version": "2.0"}
示例五:同时使用允许和拒绝两类 Statement
授予子账号 700001234567 对向量桶 example-bucket-1250000000 桶操作权限以及桶内所有索引的操作和向量操作权限,同时显式拒绝对桶内 idx-dim3 索引的写操作权限。
这种情况下,子账号 700001234567 对向量桶 example-bucket-1250000000 内的其他索引都具有写操作权限,唯独无法对 idx-dim3 索引进行写操作。
{"Statement": [{"Action": ["name/cos:DeleteVectorBucket","name/cos:GetVectorBucket","name/cos:PutVectorIndex","name/cos:DeleteVectorIndex","name/cos:GetVectorIndex","name/cos:ListVectorIndexes","name/cos:PutVectorBucketPolicy","name/cos:GetVectorBucketPolicy","name/cos:DeleteVectorBucketPolicy","name/cos:PutVectors","name/cos:GetVectors","name/cos:DeleteVectors","name/cos:ListVectors","name/cos:QueryVectors"],"Effect": "allow","Principal": {"qcs": ["qcs::cam::uin/700000000000:uin/700001234567"]},"Resource": ["qcs::cosvector:ap-guangzhou:uid/1250000000:bucket/example-bucket-1250000000/*"],"Sid": "total_action"},{"Action": ["name/cos:DeleteVectorIndex","name/cos:PutVectors","name/cos:DeleteVectors"],"Effect": "deny","Principal": {"qcs": ["qcs::cam::uin/700000000000:uin/700001234567"]},"Resource": ["qcs::cosvector:ap-guangzhou:uid/1250000000:bucket/example-bucket-1250000000/index/idx-dim3/*"],"Sid": "deny_idx_dim3_write_action"}],"Version": "2.0"}