获取 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
- (可选,字符串)身份验证领域的名称。当
owner
标志设置为true
时,此参数不能与id
或name
一起使用。 -
username
- (可选,字符串)用户的用户名。当
owner
标志设置为true
时,此参数不能与id
或name
一起使用。 -
owner
- (可选,布尔值)一个布尔标志,可用于查询当前经过身份验证的用户拥有的 API 密钥。默认为 false。当此参数设置为 true 时,不能指定 realm_name 或 username 参数,因为它们被假定为当前经过身份验证的用户。
-
with_limited_by
- (可选,布尔值)一个布尔标志,用于返回与 API 密钥关联的所有者用户的角色描述符的快照。API 密钥的实际权限是其分配的角色描述符和所有者用户的角色描述符(实际上受其限制)的交集。API 密钥必须具有
manage_api_key
或更高的权限才能检索任何 API 密钥(包括其自身)的受限角色描述符。 -
with_profile_uid
- (可选,布尔值)确定是否也检索 API 密钥所有者用户的用户配置文件
uid
。如果存在,则每个 API 密钥的profile_uid
响应字段下会返回配置文件 uid。默认为false
。 -
active_only
- (可选,布尔值)一个布尔标志,可用于查询当前处于活动状态的 API 密钥。如果 API 密钥在查询时既未失效也未过期,则认为它是活动的。您可以与其他参数(例如
owner
或name
)一起指定此参数。如果active_only
为false
,则响应将包括活动和非活动(过期或失效)的密钥。默认为false
。
如果未指定任何参数“id”、“name”、“username”和“realm_name”,并且“owner”设置为 false,则如果用户已获得授权,它将检索所有 API 密钥。如果用户未被授权检索其他用户的 API 密钥,则将返回错误。
示例
编辑如果您按如下方式创建 API 密钥
resp = client.security.create_api_key( name="my-api-key", role_descriptors={}, metadata={ "application": "myapp" }, ) print(resp)
const response = await client.security.createApiKey({ name: "my-api-key", role_descriptors: {}, metadata: { application: "myapp", }, }); console.log(response);
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 密钥
resp = client.security.get_api_key( id="VuaCfGcBCdbkQm-e5aOx", with_limited_by=True, ) print(resp)
const response = await client.security.getApiKey({ id: "VuaCfGcBCdbkQm-e5aOx", with_limited_by: "true", }); console.log(response);
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 密钥继承所有者用户的权限。 |
|
与 API 密钥关联的所有者用户的权限。它是创建和后续更新时捕获的时间点快照。API 密钥的有效权限是其分配的权限和所有者用户的权限的交集。 |
您可以使用以下示例按名称检索 API 密钥
resp = client.security.get_api_key( name="my-api-key", ) print(resp)
const response = await client.security.getApiKey({ name: "my-api-key", }); console.log(response);
GET /_security/api_key?name=my-api-key
API 密钥名称支持使用通配符进行前缀搜索
resp = client.security.get_api_key( name="my-*", ) print(resp)
const response = await client.security.getApiKey({ name: "my-*", }); console.log(response);
GET /_security/api_key?name=my-*
以下示例检索 native1
领域的全部 API 密钥
resp = client.security.get_api_key( realm_name="native1", ) print(resp)
const response = await client.security.getApiKey({ realm_name: "native1", }); console.log(response);
GET /_security/api_key?realm_name=native1
以下示例检索所有领域中用户 myuser
的全部 API 密钥
resp = client.security.get_api_key( username="myuser", ) print(resp)
const response = await client.security.getApiKey({ username: "myuser", }); console.log(response);
GET /_security/api_key?username=myuser
以下示例检索当前经过身份验证的用户拥有的全部 API 密钥
resp = client.security.get_api_key( owner=True, ) print(resp)
const response = await client.security.getApiKey({ owner: "true", }); console.log(response);
GET /_security/api_key?owner=true
如果用户已获得授权,则以下示例检索全部 API 密钥
resp = client.security.get_api_key() print(resp)
const response = await client.security.getApiKey(); console.log(response);
GET /_security/api_key
如果用户已获得授权,则以下示例检索全部活动 API 密钥
resp = client.security.get_api_key( active_only=True, ) print(resp)
const response = await client.security.getApiKey({ active_only: "true", }); console.log(response);
GET /_security/api_key?active_only=true
以下代码创建一个 API 密钥
resp = client.security.create_api_key( name="my-api-key-1", metadata={ "application": "my-application" }, ) print(resp)
const response = await client.security.createApiKey({ name: "my-api-key-1", metadata: { application: "my-application", }, }); console.log(response);
POST /_security/api_key { "name": "my-api-key-1", "metadata": { "application": "my-application" } }
如果指定的 id
由当前经过身份验证的用户拥有,则以下示例检索该 API 密钥
resp = client.security.get_api_key( id="VuaCfGcBCdbkQm-e5aOx", owner=True, ) print(resp)
const response = await client.security.getApiKey({ id: "VuaCfGcBCdbkQm-e5aOx", owner: "true", }); console.log(response);
GET /_security/api_key?id=VuaCfGcBCdbkQm-e5aOx&owner=true
最后,以下示例立即检索 native1
领域中用户 myuser
的全部 API 密钥
resp = client.security.get_api_key( username="myuser", realm_name="native1", ) print(resp)
const response = await client.security.getApiKey({ username: "myuser", realm_name: "native1", }); console.log(response);
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": { } } ] }