Vorwort: Warum müssen Sie einen Dify Arbeitsbereich manuell erstellen?
Typischerweise.Dify
Workspaces (oder "Tenants") werden über die grafische Oberfläche erstellt. In bestimmten Szenarien, z. B. bei der automatischen Bereitstellung, der Massenerstellung von Tenants, der Datenmigration oder der Verwaltung in einer Serverumgebung ohne Front-End-Schnittstelle, ist die manuelle Erstellung von Workspaces direkt aus der Datenbank und der Befehlszeile eine effiziente Lösung.
In dieser Anleitung wird beschrieben, wie Sie Schritt für Schritt eine Dify
Arbeitsbereich. Bevor Sie beginnen, vergewissern Sie sich, dass Sie über die folgenden Voraussetzungen verfügen:
- rechts
Dify
Das Dateisystem des Backend-Servers hat Lese- und Schreibrechte. - zugänglich
Dify
(in Form eines Nominalausdrucks)PostgreSQL
Datenbank. - auf dem System installiert
OpenSSL
Befehlszeilen-Tools.
Schritt 1: Vorbereiten und Einfügen von Datenbankeinträgen
Der Kern der Erstellung eines neuen Arbeitsbereichs besteht darin, der Datenbank zwei Schlüsseleinträge hinzuzufügen: einen in der tenants
um den neuen Mieter zu definieren, und einen weiteren Eintrag in der Tabelle tenant_account_joins
Die Tabelle verknüpft einen Mieter mit einem bestehenden Konto.
1. zugang account_id
Zunächst benötigen Sie ein Benutzerkonto, das der Eigentümer des neuen Arbeitsbereichs ist. Die ID dieses Kontos, die account_id
die die Grundlage für nachfolgende Operationen ist. Sie können dies tun, indem Sie die accounts
um die ID eines bestehenden Benutzers zu erhalten.
Um zum Beispiel die Mailbox eines Benutzers über die account_id
::
SELECT id FROM accounts WHERE email = 'user@example.com';
Notieren Sie sich die Anfrage UUID
formal account_id
.
2. das Einfügen von Mietern und zugehörigen Datensätzen
gewinnen account_id
Führen Sie anschließend folgende Schritte aus SQL
Anweisung, um einen neuen Mieter anzulegen und eine Vereinigung zu gründen. Bitte ersetzen Sie die Platzhalter in der Bescheinigung durch Ihre tatsächlichen Werte.
tenants
ein Messgerät (zum Messen von etw.)Arbeitsbereich: Legt grundlegende Informationen über den Arbeitsbereich fest.tenant_account_joins
ein Messgerät (zum Messen von etw.)OWNER: Legt das angegebene Konto als "OWNER" für diesen Arbeitsbereich fest.
-- 向 tenants 表插入新工作空间记录,将 'My New Workspace' 替换为你的工作空间名称
INSERT INTO tenants (id, name, plan, status, created_at, updated_at)
VALUES (uuid_generate_v4(), 'My New Workspace', 'professional', 'active', now(), now())
RETURNING id; -- 执行后会返回新生成的 tenant_id,请务必记下它
-- 向 tenant_account_joins 表插入关联记录
-- 将 '<the_tenant_id_from_above>' 替换为上一步返回的 tenant_id
-- 将 '<your_account_id>' 替换为你在 1.1 节获取的 account_id
INSERT INTO tenant_account_joins (tenant_id, account_id, role, created_at, updated_at)
VALUES ('<the_tenant_id_from_above>', '<your_account_id>', 'owner', now(), now());
Umsetzung von Artikel 1 INSERT
wird die Datenbank ein neu generiertes tenant_id
. Dies. ID
Kopieren Sie sie und speichern Sie sie, da sich alle weiteren Schritte um sie drehen.
Anlage: Datenblatt Strukturreferenz
Struktur der Mietertabelle
tenant_account_joins Tabellenstruktur
P.S. Rollen- und Statusbeschreibungen
Rolle des Mieterkontos (role
)
Zeichen | ausmachen |
---|---|
OWNER |
Inhaber der höchsten Berechtigung zur Verwaltung aller Ressourcen und Benutzer. |
ADMIN |
Administrator mit weniger Rechten als der Eigentümer. |
EDITOR |
Redakteur mit Rechten zur Bearbeitung von Inhalten. |
NORMAL |
Gewöhnliche Benutzer mit grundlegenden Zugriffsrechten. |
DATASET_OPERATOR |
Dataset Operator, spezialisiert auf die Verwaltung von Datensätzen. |
Kontostatus (status
)
Stand der Dinge | Aufzählungswert | Anweisungen |
---|---|---|
PENDING |
"schwebend" | Ein Konto wurde erstellt, aber die Verifizierung wurde noch nicht abgeschlossen. |
UNINITIALIZED |
"nicht initialisiert" | Es wurde ein Konto erstellt, aber die Ersteinrichtung ist noch nicht abgeschlossen. |
ACTIVE |
"aktiv" | Das Konto ist normalerweise aktiv. |
BANNED |
"verbannt" | Konto deaktiviert. |
CLOSED |
"geschlossen" | Das Konto wurde geschlossen. |
Schritt 2: Erzeugen von RSA-Schlüsselpaaren
Jeder Arbeitsbereich braucht ein Paar RSA
Schlüssel werden zur Verschlüsselung von Daten verwendet. Dazu gehören ein privater Schlüssel und ein öffentlicher Schlüssel.
1. die Erzeugung von privaten Schlüsseln
Führen Sie die folgenden Schritte aus OpenSSL
Befehl zur Erzeugung einer 2048
. RSA
privaten Schlüssel und speichern Sie ihn als private.pem
Dokumentation.genpkey
ist der empfohlene moderne Befehl, der die -algorithm
Der Parameter gibt an, dass der Algorithmus RSA
und durch -pkeyopt
Legen Sie die Schlüssellänge fest.
openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048
2. öffentliche Schlüssel extrahieren
Als Nächstes wird aus dem soeben erzeugten privaten Schlüssel private.pem
Der entsprechende öffentliche Schlüssel wird extrahiert und in der public.pem
Dokumentation.rsa
Unterbefehlskoordinierung -pubout
wird ausschließlich zu diesem Zweck verwendet.
openssl rsa -pubout -in private.pem -out public.pem
Nach der Ausführung erhalten Sie private.pem
(privater Schlüssel) und public.pem
(öffentlicher Schlüssel) zwei Dateien.
Schritt 3: Aktualisierung des öffentlichen Schlüssels in der Datenbank
zeigen (eine Eintrittskarte) public.pem
Datei, kopieren Sie die -----BEGIN PUBLIC KEY-----
im Gesang antworten -----END PUBLIC KEY-----
den gesamten Inhalt zwischen ihnen. Verwenden Sie dann diese Zeichenkette des öffentlichen Schlüssels zur Aktualisierung der tenants
Tabelle, die der Tabelle des Mieters entspricht encrypt_public_key
Felder.
Führen Sie die folgenden Schritte aus SQL
Befehl, denken Sie daran, die Platzhalter zu ersetzen:
-- 将 '<the_tenant_id_from_step_1>' 替换为第一步中记下的 tenant_id
-- 将 '<your_public_key_string>' 替换为你复制的公钥内容
UPDATE tenants
SET encrypt_public_key = '<your_public_key_string>'
WHERE id = '<the_tenant_id_from_step_1>';
Schritt 4: Bereitstellen der Datei mit dem privaten Schlüssel
Der letzte Schritt besteht darin, die generierte private Schlüsseldatei zu nehmen private.pem
setzen. Dify
in der von der Backend-Anwendung erwarteten Verzeichnisstruktur.Dify
Sie wird auf der Grundlage der vom Mieter ID
Dynamisches Laden des entsprechenden privaten Schlüssels.
Oberbefehlshaber (Militär) private.pem
Die Datei wird in den folgenden Pfad verschoben oder kopiert:
dify/api/privkeys/{tenant_id}/private.pem
bitte angeben {tenant_id}
Ersetzen Sie ihn durch den in Schritt 1 erhaltenen Wert. tenant_id
. Wenn privkeys
Verzeichnis nicht in einem Verzeichnis existiert, das mit Ihrem tenant_id
benannten Ordner, müssen Sie ihn manuell erstellen.
Aus Sicherheitsgründen wird dringend empfohlen, die Zugriffsrechte auf die private Schlüsseldatei so festzulegen, dass nur diejenigen, die das Dify
Die Nutzer des Dienstes können sie lesen:
chmod 600 dify/api/privkeys/{tenant_id}/private.pem
Nachdem Sie alle oben genannten Schritte durchgeführt haben, wurde der neue Arbeitsbereich erfolgreich erstellt und konfiguriert.