客户端连接ES, 除了 “用户名+密码” 外,Elasticsearch 也提供了 API keys 的访问方式。
使用APIkey, 也可方便的配置其不同的访问权限,用户,过期等。
创建API key的方式:
1. 登录kibana, 在Management -- API Key,点击【Crate API key】
具体参考:API Keys | Kibana Guide [8.11] | Elastic
2 使用 REST APIs 创建
POST /_security/api_key
PUT /_security/api_key
具体参考:
API Keys | Kibana Guide [8.11] | Elastic
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"]
}
}
}
}
3 前两种方式创建的APIkey关联的user都是"当前用户", key的权限默认基于“当前用户”;如果需要基于其它用户创建APIkey, 需要使用 REST APIs, kibanaUI上没有提供该功能(即上边那个create的画面,user不能选)
POST /_security/api_key/grant
此 API 类似于2中描述的 API,但它可以为非当前用户创建 API 密钥。
具体参考:Grant API key API | Elasticsearch Guide [8.11] | Elastic
POST /_security/api_key/grant
{
"grant_type": "password",
"username" : "readonlyuser",
"password" : "123456",
"api_key" : {
"name": "dev-read-only-api-key"
}
}
response:
{
"id": "1lXXXXXXXXXXXXXXXXXX",
"name": "dev-read-only-api-key",
"api_key": "7XXXXXXXXXXXXXXXXXXXX",
"encoded": "MXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXw=="
}