获取 API 密钥信息 API
编辑获取 API 密钥信息 API编辑
检索一个或多个 API 密钥的信息。
请求编辑
GET /_security/api_key
先决条件编辑
-
要使用此 API,您至少需要拥有
manage_own_api_key
或read_security
集群权限。-
如果您只有
manage_own_api_key
权限,此 API 仅返回您拥有的 API 密钥。使用具有
manage_own_api_key
权限的 API 密钥进行身份验证,不允许检索已认证用户的自身密钥。相反,请使用基本凭据对用户进行身份验证。 - 如果您拥有
read_security
、manage_api_key
或更高权限(包括manage_security
),此 API 将返回所有 API 密钥,无论所有权如何。
-
路径参数编辑
以下参数可以在 GET 请求的查询参数中指定,并与检索 API 密钥相关。
-
id
- (可选,字符串) API 密钥 ID。此参数不能与
name
、realm_name
或username
同时使用。 -
name
- (可选,字符串) API 密钥名称。此参数不能与
id
、realm_name
或username
同时使用。它支持使用通配符进行前缀搜索。 -
realm_name
- (可选,字符串) 身份验证域的名称。此参数不能与
id
或name
同时使用,也不能在owner
标志设置为true
时使用。 -
username
- (可选,字符串) 用户的用户名。此参数不能与
id
或name
同时使用,也不能在owner
标志设置为true
时使用。 -
owner
- (可选,布尔值) 一个布尔值标志,可用于查询当前已认证用户拥有的 API 密钥。默认为 false。当此参数设置为 true 时,不能指定 realm_name 或 username 参数,因为它们被假定为当前已认证的。
-
with_limited_by
- (可选,布尔值) 一个布尔值标志,用于返回与 API 密钥关联的拥有者用户角色描述符的快照。API 密钥的实际权限是其 分配的角色描述符 和拥有者用户角色描述符(实际上受其限制)的交集。API 密钥必须具有
manage_api_key
或更高权限才能检索任何 API 密钥(包括自身)的受限角色描述符。 -
with_profile_uid
- (可选,布尔值) 确定是否还检索 用户配置文件
uid
,用于 API 密钥拥有者用户。如果存在,配置文件 uid 将在每个 API 密钥的profile_uid
响应字段下返回。默认为false
。 -
active_only
- (可选,布尔值) 一个布尔值标志,可用于查询当前处于活动状态的 API 密钥。如果 API 密钥既未失效,也未在查询时过期,则它被视为活动状态。您可以将此参数与其他参数(如
owner
或name
)一起指定。如果active_only
为false
,则响应将包含活动密钥和非活动密钥(已过期或已失效)。默认为false
。
当未指定任何参数 "id"、"name"、"username" 和 "realm_name",并且 "owner" 设置为 false 时,如果用户已授权,则将检索所有 API 密钥。如果用户未被授权检索其他用户的 API 密钥,则将返回错误。
示例编辑
如果您创建 API 密钥如下
POST /_security/api_key { "name": "my-api-key", "role_descriptors": {}, "metadata": { "application": "myapp" } }
成功调用将返回一个 JSON 结构,其中提供 API 密钥信息。例如
{ "id":"VuaCfGcBCdbkQm-e5aOx", "name":"my-api-key", "api_key":"ui2lp2axTNmsyakw9tvNnw", "encoded": "VnVhQ2ZHY0JDZGJrUW0tZTVhT3g6dWkybHAyYXhUTm1zeWFrdzl0dk5udw==" }
您可以使用以下示例通过 ID 检索 API 密钥
GET /_security/api_key?id=VuaCfGcBCdbkQm-e5aOx&with_limited_by=true
成功调用将返回一个 JSON 结构,其中包含 API 密钥的信息
{ "api_keys": [ { "id": "VuaCfGcBCdbkQm-e5aOx", "name": "my-api-key", "creation": 1548550550158, "expiration": 1548551550158, "invalidated": false, "username": "myuser", "realm": "native1", "realm_type": "native", "metadata": { "application": "myapp" }, "role_descriptors": { }, "limited_by": [ { "role-power-user": { "cluster": [ "monitor" ], "indices": [ { "names": [ "*" ], "privileges": [ "read" ], "allow_restricted_indices": false } ], "applications": [ ], "run_as": [ ], "metadata": { }, "transient_metadata": { "enabled": true } } } ] } ] }
此请求检索到的 API 密钥列表。 |
|
API 密钥的 ID |
|
API 密钥的名称 |
|
API 密钥的创建时间(以毫秒为单位) |
|
API 密钥的可选过期时间(以毫秒为单位) |
|
API 密钥的失效状态。如果密钥已失效,则其值为 |
|
为其创建此 API 密钥的委托人 |
|
为其创建此 API 密钥的委托人的域名称 |
|
API 密钥的元数据 |
|
与 API 密钥关联的拥有者用户的权限。它是 创建 和后续 更新 时捕获的某个时间点的快照。API 密钥的有效权限是其分配的权限和拥有者用户权限的交集。 |
您可以使用以下示例通过名称检索 API 密钥
GET /_security/api_key?name=my-api-key
API 密钥名称支持使用通配符进行前缀搜索
GET /_security/api_key?name=my-*
以下示例检索 native1
域的所有 API 密钥
GET /_security/api_key?realm_name=native1
以下示例检索所有域中用户 myuser
的所有 API 密钥
GET /_security/api_key?username=myuser
以下示例检索当前已认证用户拥有的所有 API 密钥
GET /_security/api_key?owner=true
以下示例检索所有 API 密钥(如果用户有权这样做)
GET /_security/api_key
以下示例检索所有活动 API 密钥(如果用户有权这样做)
GET /_security/api_key?active_only=true
以下操作创建 API 密钥
POST /_security/api_key { "name": "my-api-key-1", "metadata": { "application": "my-application" } }
以下示例检索由指定 id
标识的 API 密钥(如果它由当前已认证用户拥有)
GET /_security/api_key?id=VuaCfGcBCdbkQm-e5aOx&owner=true
最后,以下示例立即检索 native1
域中用户 myuser
的所有 API 密钥
GET /_security/api_key?username=myuser&realm_name=native1
成功调用将返回一个 JSON 结构,其中包含检索到的一个或多个 API 密钥的信息。
{ "api_keys": [ { "id": "0GF5GXsBCXxz2eDxWwFN", "name": "hadoop_myuser_key", "creation": 1548550550158, "expiration": 1548551550158, "invalidated": false, "username": "myuser", "realm": "native1", "realm_type": "native", "metadata": { "application": "myapp" }, "role_descriptors": { "role-a": { "cluster": [ "monitor" ], "indices": [ { "names": [ "index-a" ], "privileges": [ "read" ], "allow_restricted_indices": false } ], "applications": [ ], "run_as": [ ], "metadata": { }, "transient_metadata": { "enabled": true } } } }, { "id": "6wHJmcQpReKBa42EHV5SBw", "name": "api-key-name-2", "creation": 1548550550158, "invalidated": false, "username": "user-y", "realm": "realm-2", "metadata": {}, "role_descriptors": { } } ] }