I Elasticsearch navngives data streams på nogle grundlæggende regler og best practice, som er defineret af Elasticsearch selv.
API brugere i Elasticsearch
Brugen af API-nøgler i Elasticsearch giver fordele sammenlignet med traditionelle loginmetoder som brugernavn og adgangskode.
Her er nogle af de vigtigste grunde til, hvorfor man bør bruge API-nøgler:
Øget sikkerhed
API-nøgler giver en højere grad af sikkerhed, fordi de adskiller sig fra brugerlogin:
- Begrænset adgang: API-nøgler kan konfigureres med specifikke tilladelser, så de kun har adgang til bestemte ressourcer eller operationer (fx læse- eller skriveadgang)
- Ingen eksponering af brugeradgangskoder: Du undgår at skulle dele brugernavn og adgangskode i applikationer, hvilket reducerer risikoen for kompromittering
- Tildeling per applikation: Hvis flere applikationer bruger Elasticsearch, kan hver applikation få sin egen nøgle med relevante rettigheder
Bedre nøglehåndtering og rotation
API-nøgler gør det nemt at styre og rotere nøgler uden at påvirke brugerkonti.
- Roter nøgler: Nøgler kan udløbe eller roteres uden at påvirke brugerens adgang.
- Tilbagekaldelse: Du kan nemt deaktivere eller slette en nøgle, hvis den mistænkes for at være kompromitteret.
- Logning og overvågning: Elasticsearch kan logge API-nøgleanvendelse, hvilket giver bedre indsigt i, hvordan de bruges.
Fleksibilitet og enkel integration
API-nøgler gør integrationen med tredjepartsapplikationer og eksterne systemer enklere:
- Let at integrere: Du kan udlevere en nøgle til eksterne applikationer uden at dele følsomme brugeroplysninger
- Én nøgle pr. applikation: Gør det nemt at spore og kontrollere, hvilken applikation der foretager hvilken anmodning
- Automatisering og scripts: API-nøgler er ideelle til scripts og automatiserede processer, fordi de nemt kan bruges i CI/CD-pipelines og automatiske dataforespørgsler
Hvornår bør man bruge API-nøgler?
- Automatiserede systemer: CI/CD-pipelines, batch-job eller dataingest
- Tredjepartsintegrationer: Når eksterne systemer har brug for adgang til Elasticsearch
- Begrænset adgang: Hvis du ønsker at begrænse adgang til specifikke data eller handlinger
Brugen af API-nøgler er en bedste praksis, især i produktionsmiljøer, da det forbedrer sikkerhed, kontrol og fleksibilitet.
API keys i Elasticsearch
Alle API keys i Elasticsearch er bundet op på en bruger. Derfor kan det være hensigtsmæssigt at have en bruger til API keys. Faktisk går jeg selv så langt at jeg har forskellige brugere til forskellige systemer og API kyes på disse brugere. Grunden til at jeg gør dette er at API keys som standard har de samme rettigheder som brugeren. Jeg vil derfor gerne gøre det synligt, både hvad brugeren skal bruges til at og rettighederne. På den måde sørger jeg for at en bruger ligesom altid hører til en specifik domæne.
Når jeg har oprettet brugeren og tildelt en rolle som har begrænset rettighederne til Elastic clustret, laver jeg en API bruger som igen kan have færre rettigheder, hvis det er nødvendigt.
En lille ting du skal være opmærksom på ved API brugere er at de får brugerens rettigheder når de oprettes, men hvis du retter på brugerens rolle og giver flere rettigheder til brugeren, slår det ikke igennem på de allerede oprettede API keys. Så du skal enten oprette en ny key eller gå ind op API keyen og tildele rettigheder direkte.
Sådan opsætter du en API keys i Elasicsearch
For at oprette brugere og API-nøgler direkte i Kibana, kan du bruge det grafiske brugerinterface, som gør processen enklere end via cURL.
Følg disse trin:
1. Opret en bruger i Kibana:
- Log ind i Kibana:
- Åbn din browser og gå til Kibana’s URL, typisk noget som
https://localhost:5601
. - Log ind med din
elastic
-bruger eller en anden bruger med administratorrettigheder.
- Åbn din browser og gå til Kibana’s URL, typisk noget som
- Gå til “Management” (Administration):
- Klik på “Stack Management” i venstre navigationspanel.
- Gå til “Security” og vælg “Users”.
- Tilføj en ny bruger:
- Klik på “Create user”.
- Udfyld felterne:
- Username: Navn på API-brugeren, f.eks.
api_web
hvis du vil lave et API key til brug for søgning på en webside. - Password: Vælg en stærk adgangskode.
- Roles: Tildel passende roller eller lav en specifik rolle med de nødvendige tilladelser.
- Rollen skal have
manage_own_api_key
som ‘Cluster provileges’ for at brugeren kan oprette signe egne API keys.
- Rollen skal have
- Username: Navn på API-brugeren, f.eks.
- Klik på “Create user”.
2. Opret en API-nøgle i Kibana:
- Log ind i Kibana:
- Login ind med din nye api bruger, f.eks.
api_web
- Login ind med din nye api bruger, f.eks.
- Gå til API-nøgleadministration:
- Gå til “Stack Management” → “Security” → “API keys”.
- Opret en ny API-nøgle:
- Klik på “Create API key”.
- Udfyld følgende felter:
- Name: Giv nøglen et beskrivende navn, f.eks.
web-app
. - Expiration: (Valgfrit) Sæt en udløbsdato, hvis du vil.
- Role descriptors: Sæt tilladelser. Du kan lade dette stå tomt for at arve brugerens roller, eller definere specifikke roller.
- Name: Giv nøglen et beskrivende navn, f.eks.
- Opret og gem nøglen:
- Klik på “Create API key”.
- Når nøglen er oprettet, vil Kibana vise API-nøgle-id og selve nøglen.
- Kopier API-nøglen, da den kun vises én gang.
3. Brug API-nøglen:
Når du har oprettet API-nøglen, kan du bruge den til at lave anmodninger til Elasticsearch.
Bash:
curl -X GET "http://localhost:9200/_cat/indices" -H "Authorization: ApiKey DIN_API_KEY"
python:
from elasticsearch import Elasticsearch
es = Elasticsearch("http://localhost:9200", api_key="DIN_API_KEY")
response = es.info()
print(response)