创建服务帐户令牌 API

编辑

创建一个 服务帐户 令牌,用于在不需要基本身份验证的情况下进行访问。

请求

编辑

POST /_security/service/<命名空间>/<服务>/credential/token/<令牌名称>

PUT /_security/service/<命名空间>/<服务>/credential/token/<令牌名称>

POST /_security/service/<命名空间>/<服务>/credential/token

先决条件

编辑
  • 要使用此 API,您必须至少拥有 manage_service_account 集群权限

描述

编辑

成功的创建服务帐户令牌 API 调用会返回一个 JSON 结构,其中包含服务帐户令牌、其名称及其密钥值。

服务帐户令牌永不过期。 如果不再需要它们,您必须主动删除它们。

路径参数

编辑
命名空间
(必需,字符串)命名空间的名称。
服务
(必需,字符串)服务名称。
令牌名称

(可选,字符串)服务帐户令牌的名称。 如果省略,则会生成一个随机名称。

令牌名称必须至少包含 1 个字符,且不能超过 256 个字符。 它们可以包含字母数字字符 (a-zA-Z0-9)、破折号 (-) 和下划线 (_),但不能以下划线开头。

令牌名称在关联的服务帐户的上下文中必须是唯一的。 它们的完全限定名称也必须是全局唯一的,完全限定名称由服务帐户主体和令牌名称组成,例如 <命名空间>/<服务>/<令牌名称>

示例

编辑

以下请求创建一个服务帐户令牌

resp = client.security.create_service_token(
    namespace="elastic",
    service="fleet-server",
    name="token1",
)
print(resp)
const response = await client.security.createServiceToken({
  namespace: "elastic",
  service: "fleet-server",
  name: "token1",
});
console.log(response);
POST /_security/service/elastic/fleet-server/credential/token/token1

响应包括服务帐户令牌、其名称及其密钥值

{
  "created": true,
  "token": {
    "name": "token1",
    "value": "AAEAAWVsYXN0aWM...vZmxlZXQtc2VydmVyL3Rva2VuMTo3TFdaSDZ" 
  }
}

用作持有者令牌的密钥值

要使用服务帐户令牌,请在带有 Authorization: Bearer 标头的请求中包含生成的令牌值

curl -H "Authorization: Bearer AAEAAWVsYXN0aWM...vZmxlZXQtc2VydmVyL3Rva2VuMTo3TFdaSDZ" https://127.0.0.1:9200/_cluster/health

如果您的节点将 xpack.security.http.ssl.enabled 设置为 true,则必须在请求 URL 中指定 https

以下请求创建一个具有自动生成的令牌名称的服务令牌

resp = client.security.create_service_token(
    namespace="elastic",
    service="fleet-server",
)
print(resp)
const response = await client.security.createServiceToken({
  namespace: "elastic",
  service: "fleet-server",
});
console.log(response);
POST /_security/service/elastic/fleet-server/credential/token

响应包括服务帐户令牌、其自动生成的名称及其密钥值

{
  "created": true,
  "token": {
    "name": "Jk5J1HgBuyBK5TpDrdo4",
    "value": "AAEAAWVsYXN0aWM...vZmxlZXQtc2VydmVyL3Rva2VuMTo3TFdaSDZ"
  }
}