Azure cosmosdb 未强制使用ResourcePartitionKey的CosmosDB UserPermission
我试图通过对用户权限的附加ResourcePartitionKey限制来实现本文中描述的行为,以将资源令牌限制为仅访问属于指定分区密钥的文档,但我无法使其工作 使用SQL REST API,我在使用resourcepartitionkey密钥对创建UserPermission对象的POST中没有收到任何错误,初始返回的对象以及后续GET在获取资源令牌时也显示“resourcepartitionkey” 对权限中指定的适当集合使用资源令牌,我可以列出集合中的所有文档。当使用“x-ms-documentdb-partitionkey”标题时,我可以针对我喜欢的任何paritionkey。没有“x-ms-documentdb-partitionkey”头,它只返回整个集合 该集合是一个全新的、无限制的1000 RU,分区键为“/rpk”。集合的创建后查询显示分区键,配置如下Azure cosmosdb 未强制使用ResourcePartitionKey的CosmosDB UserPermission,azure-cosmosdb,azure-cosmosdb-sqlapi,Azure Cosmosdb,Azure Cosmosdb Sqlapi,我试图通过对用户权限的附加ResourcePartitionKey限制来实现本文中描述的行为,以将资源令牌限制为仅访问属于指定分区密钥的文档,但我无法使其工作 使用SQL REST API,我在使用resourcepartitionkey密钥对创建UserPermission对象的POST中没有收到任何错误,初始返回的对象以及后续GET在获取资源令牌时也显示“resourcepartitionkey” 对权限中指定的适当集合使用资源令牌,我可以列出集合中的所有文档。当使用“x-ms-docume
"partitionKey": {
"paths": [
"\/rpk"
],
"kind": "Hash"
}
下面是创建过程中返回的用户权限,其中显示了“resourcepartitionkey”
我假设我遗漏了一些明显的内容,或者在UserPermission中为“resourcepartitionkey”使用了不正确的值,但我无法确定是什么。非常感谢您的任何想法。经过多个小时的尝试和错误,我终于解决了在用户权限的后期创建过程中出现的问题 首先,虽然创建用户权限将验证名称“resourcePartitionKey”,但它不会检查大小写敏感度。敏感度不正确时,返回的UserPermission对象的值存在,但不提供任何安全控制(危险情况#1) 其次,未验证输入值是否为数组类型。它再次在用户权限对象中被接受并返回给您,但同样不提供安全控制(危险情况#2) 下面是一个完整的工作示例,其中权限ID被称为“读取集合”,resourcePartitionKey被配置为“rpk1”,最终显示了请求需要“x-ms-documentdb-partitionkey”的预期行为,并且仅从指定的分区键返回值
POST https://accountname.documents.azure.com/dbs/dbName/users/userName/permissions HTTP/1.1
authorization: type%3dmaster%26ver%3d1.0%26sig<signature>
x-ms-version: 2017-02-22
x-ms-date: Thu, 16 Aug 2018 04:09:44 GMT
User-Agent: Mozilla/5.0 (Windows NT; Windows NT 10.0; en-AU) WindowsPowerShell/5.1.17134.165
Content-Type: application/json
Host: accountname.documents.azure.com
Content-Length: 215
{
"resource": "dbs/dbName/colls/collectionName/",
"id": "read-collection",
"resourcePartitionKey": [
"rpk1"
],
"permissionMode": "read"
}
POSThttps://accountname.documents.azure.com/dbs/dbName/users/userName/permissions HTTP/1.1
授权:类型%3dmaster%26ver%3d1.0%26sig
x-ms-version:2017-02-22
x-ms-date:2018年8月16日星期四04:09:44 GMT
用户代理:Mozilla/5.0(Windows NT;Windows NT 10.0;en-AU)Windows PowerShell/5.1.17134.165
内容类型:application/json
主机:accountname.documents.azure.com
内容长度:215
{
“资源”:“dbs/dbName/colls/collectionName/”,
“id”:“读取集合”,
“resourcePartitionKey”:[
“rpk1”
],
“许可模式”:“读取”
}
如果有人知道在何处记录CosmosDB SQL Rest API的DCR或bug,请告诉我,因为在创建资源权限期间,如果没有适当的验证,资源令牌可能会分发给低信任客户机,从而获得对收集数据的意外完全访问权
GET https://accountname.documents.azure.com/dbs/dbName/colls/collectionName/docs HTTP/1.1
authorization: type%3dresource%26ver%3d1%26sig<resource token signature>
x-ms-version: 2017-02-22
x-ms-max-item-count: -1
x-ms-date: Wed, 15 Aug 2018 12:11:35 GMT
User-Agent: Mozilla/5.0 (Windows NT; Windows NT 10.0; en-AU) WindowsPowerShell/5.1.17134.165
Content-Type: application/json
Host: accountname.documents.azure.com
{
"_rid": "lH9FAKbDh4c=",
"Documents": [
{
"id": "blue",
"rpk": "rpk1",
"_rid": "lH9FAKbDh4cCAAAAAAAAAA==",
"_self": "dbs\/lH9FAA==\/colls\/lH9FAKbDh4c=\/docs\/lH9FAKbDh4cCAAAAAAAAAA==\/",
"_etag": "\"ec012ca1-0000-0000-0000-5b73ab440000\"",
"_attachments": "attachments\/",
"_ts": 1534307140
},
{
"id": "red",
"rpk": "rpk2",
"_rid": "lH9FAKbDh4cDAAAAAAAAAA==",
"_self": "dbs\/lH9FAA==\/colls\/lH9FAKbDh4c=\/docs\/lH9FAKbDh4cDAAAAAAAAAA==\/",
"_etag": "\"ec012da1-0000-0000-0000-5b73ab580000\"",
"_attachments": "attachments\/",
"_ts": 1534307160
}
],
"_count": 2
}
POST https://accountname.documents.azure.com/dbs/dbName/users/userName/permissions HTTP/1.1
authorization: type%3dmaster%26ver%3d1.0%26sig<signature>
x-ms-version: 2017-02-22
x-ms-date: Thu, 16 Aug 2018 04:09:44 GMT
User-Agent: Mozilla/5.0 (Windows NT; Windows NT 10.0; en-AU) WindowsPowerShell/5.1.17134.165
Content-Type: application/json
Host: accountname.documents.azure.com
Content-Length: 215
{
"resource": "dbs/dbName/colls/collectionName/",
"id": "read-collection",
"resourcePartitionKey": [
"rpk1"
],
"permissionMode": "read"
}