角色限制

编辑

角色限制可用于指定角色生效的条件。当条件不满足时,角色将被禁用,这将导致访问被拒绝。不指定限制意味着该角色不受限制,因此始终有效。这是默认行为。

目前,角色限制仅支持API 密钥,并且限制为 API 密钥只能有一个角色描述符。

工作流

编辑

工作流允许将角色限制为仅在调用某些 REST API 时生效。调用工作流不允许的 REST API 将导致该角色被禁用。以下部分列出了您可以限制角色使用的工作流

search_application_query
此工作流将角色限制为仅可使用 搜索应用程序搜索 API

工作流名称区分大小写。

示例

编辑

以下示例创建一个 API 密钥,其中包含针对 search_application_query 工作流的限制,这允许仅调用 搜索应用程序搜索 API

resp = client.security.create_api_key(
    name="my-restricted-api-key",
    role_descriptors={
        "my-restricted-role-descriptor": {
            "indices": [
                {
                    "names": [
                        "my-search-app"
                    ],
                    "privileges": [
                        "read"
                    ]
                }
            ],
            "restriction": {
                "workflows": [
                    "search_application_query"
                ]
            }
        }
    },
)
print(resp)
const response = await client.security.createApiKey({
  name: "my-restricted-api-key",
  role_descriptors: {
    "my-restricted-role-descriptor": {
      indices: [
        {
          names: ["my-search-app"],
          privileges: ["read"],
        },
      ],
      restriction: {
        workflows: ["search_application_query"],
      },
    },
  },
});
console.log(response);
POST /_security/api_key
{
  "name": "my-restricted-api-key",
  "role_descriptors": {
    "my-restricted-role-descriptor": {
      "indices": [
        {
          "names": ["my-search-app"],
          "privileges": ["read"]
        }
      ],
      "restriction":  {
        "workflows": ["search_application_query"]
      }
    }
  }
}