Wróć

11. OpenClaw — najlepsze praktyki konfiguracji bezpieczeństwa

Bezpieczeństwo to kluczowy aspekt wdrażania OpenClaw. W tym artykule szczegółowo opisujemy mechanizm parowania DM, tryb sandbox, kontrolę uprawnień, obsługę danych wrażliwych i bezpieczeństwo sieci, pomagając zbudować bezpieczny i niezawodny system asystenta AI.

Dotyczy OpenClaw v2026.2 | Ten artykuł jest przeznaczony dla wszystkich użytkowników OpenClaw, szczególnie tych przygotowujących się do wdrożenia produkcyjnego lub użytku zespołowego.

TL;DR: Parowanie DM zapobiega nieautoryzowanemu dostępowi: "dmPolicy": "pairing". Sandbox izoluje niebezpieczne operacje: "sandbox": {"mode": "non-main"}. Filtrowanie danych wrażliwych: "security": {"sensitiveData": {"patterns": ["sk-*"]}}. Do zdalnego dostępu używaj Tailscale zamiast ekspozycji na internet publiczny. Uruchom openclaw doctor --security, aby sprawdzić stan bezpieczeństwa.

Przegląd zagrożeń bezpieczeństwa

Główne typy zagrożeń

Typ zagrożenia Opis Potencjalne konsekwencje
Nieautoryzowany dostęp Obca osoba może korzystać z Twojego Agenta Nadużycie zasobów, wyciek prywatności
Nadużycie uprawnień Agent wykonuje operacje wykraczające poza oczekiwania Uszkodzenie danych, awaria systemu
Wyciek danych Niewłaściwa obsługa wrażliwych informacji Wyciek prywatności, problemy z compliance
Atak sieciowy Zewnętrzny atakujący wykorzystuje luki Włamanie do systemu, kradzież danych
Wstrzykiwanie promptów Złośliwe instrukcje obchodzące zabezpieczenia Nieautoryzowane operacje

Model bezpieczeństwa

flowchart TB
    subgraph Zewnętrzna["Warstwa sieciowa"]
        FW[Firewall]
        TLS[HTTPS/TLS]
    end
    
    subgraph Środkowa["Kontrola dostępu"]
        DM[Parowanie DM]
        WL[Biała lista]
        AUTH[Uwierzytelnianie]
    end
    
    subgraph Wewnętrzna["Kontrola wykonania"]
        SBX[Sandbox]
        PERM[Uprawnienia]
        AUDIT[Audyt]
    end
    
    subgraph Rdzeń["Agent"]
        AG[Rdzeń Agenta]
    end
    
    Zewnętrzna --> Środkowa --> Wewnętrzna --> Rdzeń

Mechanizm parowania DM

Czym jest parowanie DM?

Parowanie DM (Direct Message) to mechanizm ochronny wymagający, aby nowi użytkownicy najpierw ukończyli proces parowania, zanim będą mogli rozmawiać z Agentem.

Proces parowania

sequenceDiagram
    participant S as Obcy
    participant B as Bot
    participant G as Gateway
    participant O as Właściciel
    
    S->>B: Wysyła wiadomość "Cześć"
    B->>G: Wiadomość dociera
    G->>G: Sprawdzanie statusu parowania
    G-->>B: Nie sparowano, generowanie kodu
    B-->>S: "Proszę sparować: kod ABC123"
    S->>O: Przekazuje właścicielowi kod parowania
    O->>G: openclaw pairing approve telegram ABC123
    G->>G: Dodanie do białej listy
    G-->>S: Parowanie zakończone sukcesem
    S->>B: Wysyła wiadomość "Cześć"
    B-->>S: Normalna odpowiedź

Konfiguracja parowania DM

{
  "channels": {
    "telegram": {
      "botToken": "your_token",
      "dmPolicy": "pairing"
    },
    "whatsapp": {
      "dmPolicy": "pairing"
    },
    "discord": {
      "dmPolicy": "pairing"
    }
  }
}

Tryby parowania

Tryb Opis Poziom bezpieczeństwa Zastosowanie
pairing Wymaga kodu parowania ⭐⭐⭐⭐ Użytek osobisty (domyślnie)
open Każdy może korzystać Usługa publiczna
whitelist Tylko użytkownicy z białej listy ⭐⭐⭐⭐⭐ Wysokie wymagania bezpieczeństwa

Zarządzanie parowaniem

# Wyświetl oczekujące żądania parowania
openclaw pairing list

# Przykładowe wyjście:
# Channel    Code     User        Created
# telegram   ABC123   @stranger   2026-02-26 10:30:00
# discord    XYZ789   user#1234   2026-02-26 10:35:00

# Zatwierdź parowanie
openclaw pairing approve telegram ABC123

# Odrzuć parowanie
openclaw pairing reject telegram ABC123

# Wyświetl sparowanych użytkowników
openclaw pairing show telegram

Konfiguracja białej listy

{
  "channels": {
    "telegram": {
      "dmPolicy": "open",
      "allowFrom": [
        123456789,
        987654321
      ]
    },
    "whatsapp": {
      "dmPolicy": "open",
      "allowFrom": [
        "+8613800138000",
        "+8613800138001"
      ]
    }
  }
}

Pobieranie identyfikatora użytkownika

# Telegram: wyślij wiadomość do @userinfobot
# Discord: użyj komendy /id w kanale lub sprawdź profil użytkownika
# WhatsApp: pobierz z informacji kontaktowych

Tryb sandbox

Czym jest sandbox?

Sandbox to mechanizm izolacji, który ogranicza zakres operacji Agenta, zapobiegając przypadkowym lub złośliwym modyfikacjom systemu.

Tryby sandbox

Tryb Opis Zastosowanie
off Brak sandboxa, pełne zaufanie Główna sesja, zaufane środowisko
non-main Sandbox dla sesji niegłównych Wielu użytkowników, współdzielenie zespołowe
always Sandbox zawsze aktywny Niezaufane środowisko, usługa publiczna

Konfiguracja sandboxa

{
  "agents": {
    "defaults": {
      "sandbox": {
        "mode": "non-main",
        "allowlist": ["read", "write", "edit", "bash"],
        "denylist": ["browser", "canvas", "nodes"],
        "container": {
          "image": "openclaw/sandbox:latest",
          "timeout": 30000,
          "memory": "512m",
          "cpu": "0.5"
        }
      }
    }
  }
}

Kontrola uprawnień narzędzi

{
  "agents": {
    "defaults": {
      "sandbox": {
        "mode": "non-main",
        "allowlist": [
          "read",
          "write",
          "edit",
          "bash",
          "web_search",
          "sessions_list",
          "sessions_history",
          "sessions_send"
        ],
        "denylist": [
          "browser",
          "canvas",
          "nodes",
          "cron",
          "discord",
          "gateway"
        ]
      }
    }
  }
}

Uprawnienia systemu plików

{
  "agents": {
    "defaults": {
      "permissions": {
        "filesystem": {
          "read": ["~/workspace", "~/documents"],
          "write": ["~/workspace/output"],
          "deny": ["~/.ssh", "~/.gnupg", "~/.openclaw/credentials"]
        }
      }
    }
  }
}

Uprawnienia sieciowe

{
  "agents": {
    "defaults": {
      "permissions": {
        "network": {
          "outbound": {
            "allow": [
              "api.anthropic.com",
              "api.openai.com",
              "github.com"
            ],
            "deny": ["*"]
          }
        }
      }
    }
  }
}

Uprawnienia Elevated

Czym są uprawnienia Elevated?

Uprawnienia Elevated to mechanizm tymczasowego podnoszenia uprawnień, używany do operacji wymagających wyższych uprawnień.

Konfiguracja uprawnień Elevated

{
  "agents": {
    "defaults": {
      "elevatedAccess": {
        "enabled": true,
        "allowlist": [123456789, 987654321],
        "requireConfirmation": true,
        "timeout": 300000
      }
    }
  }
}

Korzystanie z uprawnień Elevated

# Żądanie podniesienia uprawnień w czacie
/elevated on

# Wykonywanie operacji wymagających podniesionych uprawnień
# ...

# Wyłączenie podniesionych uprawnień
/elevated off

Obsługa danych wrażliwych

Typy informacji wrażliwych

Typ Przykład Sposób obsługi
Klucze API sk-ant-xxx, sk-xxx Nie rejestrować, nie wyświetlać
Hasła Hasła logowania, hasła baz danych Nie przechowywać, nie przesyłać
Tokeny Token OAuth, token sesji Zaszyfrowane przechowywanie
Dane osobowe Numer PESEL, dane karty bankowej Nie rejestrować, anonimizować

Konfiguracja filtrowania danych wrażliwych

{
  "security": {
    "sensitiveData": {
      "patterns": [
        "sk-[a-zA-Z0-9]{20,}",
        "xox[baprs]-[a-zA-Z0-9-]+",
        "[0-9]{15,19}",
        "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}"
      ],
      "redact": true,
      "log": false
    }
  }
}

Przechowywanie poświadczeń

# Lokalizacja przechowywania poświadczeń
~/.openclaw/credentials/

# Zaszyfrowane przechowywanie
# OpenClaw używa systemowego pęku kluczy do szyfrowania wrażliwych poświadczeń

Zarządzanie poświadczeniami

# Wyświetl zapisane poświadczenia
openclaw credentials list

# Przykładowe wyjście:
# Name           Type        Created
# telegram-bot   api_key     2026-02-20
# gmail-oauth    oauth       2026-02-21

# Usuń poświadczenie
openclaw credentials delete telegram-bot

# Eksportuj poświadczenia (zaszyfrowane)
openclaw credentials export --output credentials.enc

# Importuj poświadczenia
openclaw credentials import --input credentials.enc

Bezpieczeństwo sieci

Konfiguracja bindowania

{
  "gateway": {
    "bind": "loopback",  // tylko dostęp lokalny
    "port": 18789,
    "tls": {
      "enabled": false
    }
  }
}
Opcja bindowania Opis Poziom bezpieczeństwa
loopback Tylko dostęp lokalny ⭐⭐⭐⭐⭐
private Dostęp z sieci prywatnej ⭐⭐⭐⭐
all Dostęp ze wszystkich interfejsów

Konfiguracja Tailscale

{
  "gateway": {
    "tailscale": {
      "mode": "serve",  // serve lub funnel
      "resetOnExit": true
    },
    "auth": {
      "mode": "password",
      "allowTailscale": true
    }
  }
}

Konfiguracja uwierzytelniania

{
  "gateway": {
    "auth": {
      "mode": "password",
      "password": "your-secure-password",
      "sessionTimeout": 3600000
    }
  }
}

Audyt i logi

Logi operacyjne

{
  "logging": {
    "level": "info",
    "audit": {
      "enabled": true,
      "events": [
        "tool.invoke",
        "session.create",
        "session.reset",
        "pairing.approve",
        "pairing.reject",
        "elevated.enable",
        "elevated.disable"
      ],
      "retention": 30
    }
  }
}

Przeglądanie logów audytu

# Wyświetl logi audytu
openclaw logs --type audit

# Przykładowe wyjście:
# [2026-02-26 10:30:00] INFO  tool.invoke session=main tool=bash command="ls -la"
# [2026-02-26 10:30:05] INFO  pairing.approve channel=telegram code=ABC123 user=123456789
# [2026-02-26 10:31:00] INFO  elevated.enable session=telegram:user:123456789

# Filtrowanie określonych zdarzeń
openclaw logs --type audit --filter "tool.invoke"

# Filtrowanie po zakresie dat
openclaw logs --type audit --from 2026-02-01 --to 2026-02-28

Monitorowanie wykorzystania

# Wyświetl statystyki wykorzystania
openclaw usage --today

# Przykładowe wyjście:
# Date: 2026-02-26
# Requests: 128
# Tokens In: 125,000
# Tokens Out: 45,000
# Cost: $2.10
# Top Tools: bash(45), read(32), write(18)

# Wykrywanie anomalii
openclaw usage --alerts

# Przykładowe wyjście:
# ⚠️  High usage detected: 1000+ requests in 1 hour
# ⚠️  Unusual tool pattern: bash commands to sensitive directories

Lista kontrolna bezpieczeństwa

Podstawowe bezpieczeństwo

  • Włącz parowanie DM lub białą listę
  • Skonfiguruj tryb sandbox
  • Ustaw odpowiednie uprawnienia narzędzi
  • Włącz logi audytu operacyjnego
  • Regularnie zmieniaj klucze API

Zaawansowane bezpieczeństwo

  • Skonfiguruj ograniczenia uprawnień systemu plików
  • Ustaw białą listę połączeń wychodzących
  • Włącz filtrowanie danych wrażliwych
  • Skonfiguruj potwierdzanie uprawnień Elevated
  • Regularnie przeglądaj sparowanych użytkowników

Bezpieczeństwo klasy enterprise

  • Użyj izolacji sandbox Docker
  • Skonfiguruj sieć prywatną Tailscale
  • Włącz HTTPS/TLS
  • Ustaw alerty wykorzystania
  • Regularnie przeprowadzaj audyty bezpieczeństwa

Diagnostyka bezpieczeństwa

# Uruchom diagnostykę bezpieczeństwa
openclaw doctor --security

# Przykładowe wyjście:
# ✅ DM Pairing: Enabled
# ✅ Sandbox Mode: non-main
# ⚠️  File Permissions: Some directories not restricted
# ✅ Network Outbound: Restricted to allowlist
# ⚠️  Elevated Access: No confirmation required
# ✅ Audit Logging: Enabled
# ✅ Credentials: Encrypted

# Zalecenia:
# - Restrict file access to ~/workspace only
# - Enable elevated access confirmation

Podsumowanie

Konfiguracja bezpieczeństwa to kluczowy etap wdrażania OpenClaw:

  • Parowanie DM: zapobiega nieautoryzowanemu dostępowi
  • Tryb sandbox: ogranicza zakres operacji
  • Kontrola uprawnień: precyzyjne uprawnienia narzędzi i plików
  • Dane wrażliwe: filtrowanie i ochrona wrażliwych informacji
  • Bezpieczeństwo sieci: konfiguracja bindowania i uwierzytelniania
  • Logi audytu: śledzenie i monitorowanie operacji

Podsumowanie tego artykułu:

  • Poznaliśmy główne zagrożenia bezpieczeństwa i mechanizmy ochronne
  • Opanowaliśmy konfigurację parowania DM i białej listy
  • Nauczyliśmy się trybu sandbox i kontroli uprawnień
  • Zrozumieliśmy obsługę danych wrażliwych i konfigurację sieci
  • Opanowaliśmy logi audytu i listę kontrolną bezpieczeństwa

Historia zmian:

  • 2026-02-26: Pierwsza publikacja, na podstawie OpenClaw v2026.2

Nawigacja po serii: