23 Security APIs

23.1 Beschreibung

Die Security APIs werden verwendet, um Benutzer, Rollen, Zugriffsrechte und andere Sicherheitsaspekte in OpenSearch zu verwalten. Sie sind insbesondere dann relevant, wenn die Sicherheitsfunktionen aktiviert sind.


23.2 Beispiele

Benutzer erstellen

POST /_plugins/_security/api/internalusers/jdoe
{
  "password": "password123",
  "backend_roles": ["admin"],
  "attributes": {
    "department": "IT"
  }
}

Rolle erstellen

POST /_plugins/_security/api/roles/admin_role
{
  "cluster_permissions": ["cluster_all"],
  "index_permissions": [
    {
      "index_patterns": ["*"],
      "allowed_actions": ["read", "write"]
    }
  ]
}

API-Key erstellen

POST /_plugins/_security/api_key
{
  "name": "my-api-key",
  "role_descriptors": {
    "role1": {
      "cluster": ["cluster_composite_ops"],
      "index": [
        {
          "names": ["my-index"],
          "privileges": ["read", "write"]
        }
      ]
    }
  },
  "expiration": "1d"
}

Audit-Logging aktivieren

PUT /_plugins/_security/api/audit/config
{
  "enabled": true,
  "audit": {
    "log_request_body": true,
    "resolve_bulk_requests": true
  }
}

23.3 Wichtigste Parameter

Parameter Beschreibung
password Passwort für den Benutzer.
backend_roles Rollen, die dem Benutzer zugeordnet sind.
cluster_permissions Berechtigungen auf Clusterebene für Rollen.
index_permissions Berechtigungen auf Indexebene für Rollen.
expiration Ablaufzeit für API-Keys (z. B. 1d, 12h).

23.4 Übungsaufgaben

  1. Benutzer erstellen:
    Erstellen Sie einen Benutzer admin mit dem Passwort securepass und der Rolle admin_role.

    POST /_plugins/_security/api/internalusers/admin
    {
      "password": "securepass",
      "backend_roles": ["admin_role"]
    }
  2. Rolle erstellen:
    Erstellen Sie eine Rolle read_only mit der Berechtigung, nur Daten aus allen Indizes zu lesen.

    POST /_plugins/_security/api/roles/read_only
    {
      "index_permissions": [
        {
          "index_patterns": ["*"],
          "allowed_actions": ["read"]
        }
      ]
    }
  3. API-Key erstellen:
    Erstellen Sie einen API-Key data-access mit Lesezugriff auf den Index logs.

    POST /_plugins/_security/api_key
    {
      "name": "data-access",
      "role_descriptors": {
        "role1": {
          "index": [
            {
              "names": ["logs"],
              "privileges": ["read"]
            }
          ]
        }
      }
    }
  4. Audit-Logging aktivieren:
    Aktivieren Sie das Audit-Logging und konfigurieren Sie es so, dass auch die Request-Bodies protokolliert werden.

    PUT /_plugins/_security/api/audit/config
    {
      "enabled": true,
      "audit": {
        "log_request_body": true
      }
    }

23.5 Musterlösungen

Benutzer erstellen

POST /_plugins/_security/api/internalusers/admin
{
  "password": "securepass",
  "backend_roles": ["admin_role"]
}

Rolle erstellen

POST /_plugins/_security/api/roles/read_only
{
  "index_permissions": [
    {
      "index_patterns": ["*"],
      "allowed_actions": ["read"]
    }
  ]
}

API-Key erstellen

POST /_plugins/_security/api_key
{
  "name": "data-access",
  "role_descriptors": {
    "role1": {
      "index": [
        {
          "names": ["logs"],
          "privileges": ["read"]
        }
      ]
    }
  }
}

Audit-Logging aktivieren

PUT /_plugins/_security/api/audit/config
{
  "enabled": true,
  "audit": {
    "log_request_body": true
  }
}