[Elasticsearch] API Key (중복)
Elastic/Elasticsearch 2020. 9. 3. 10:16이전에 작성한 글과 중복 내용이 있습니다.
이전 글)
Elasticsearch + Kibana 사용 시 basic security 설정을 enable 하게 되면 Restful API 사용을 위한 API Key 를 생성 해서 사용을 해야 합니다.
Kibana devtools 를 이용해서 할 경우 인증이 되어 있어서 /_security/api_key 사용이 가능 하지만 Postman 과 같은 걸 이용할 경우 id:pwd 를 넣어 줘야 합니다.
[Case 1]
http://elastic:elasticpassword@localhost:9200/_security/api_key
[Case 2]
curl -XPUT -u elastic:elasticpassword "http://localhost:9200/_security/api_key" -d
{
"name": "team-index-command",
"expiration": "10m",
"role_descriptors": {
"role-team-index-command": {
"cluster": ["all"],
"index": [
{
"names": ["*"],
"privileges": ["all"]
}
]
}
}
}
API Key 구조)
- /_security/api_key 를 이용해서 생성을 하면 아래와 같은 값이 나옵니다.
[Request]
POST /_security/api_key
{
"name": "team-index-command",
"expiration": "10m",
"role_descriptors": {
"role-team-index-command": {
"cluster": ["all"],
"index": [
{
"names": ["*"],
"privileges": ["all"]
}
]
}
}
}
[Response]
{
"id" : "87cuynIBjKAXtnkobGgo",
"name" : "team-index-command",
"expiration" : 1592529999478,
"api_key" : "OlVGT_Q8RGq1C_ASHW7pGg"
}
- API Key 는 id:api_key 조합으로 base64 encoding 된 값입니다.
base64_encode("87cuynIBjKAXtnkobGgo"+":"+"OlVGT_Q8RGq1C_ASHW7pGg")
API Key 를 이용한 Restful API 호출)
$ curl
-H "Authorization: ApiKey VGVVOXluSUJHUUdMaHpvcUxDVWo6aUtfSmlEMmdSMy1FUUFpdENCYzF1QQ=="
http://localhost:9200/_cluster/health