Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Fontos
A Lakebase automatikus skálázása bétaverzióban érhető el a következő régiókban: eastus2, , westeuropewestus.
A Lakebase automatikus skálázása a Lakebase legújabb verziója automatikus skálázási számítással, skálázással nullára, elágaztatással és azonnali visszaállítással. A Lakebase Provisioned szolgáltatással való összehasonlításához tekintse meg a verziók közötti választást.
A Lakebase Data API egy PostgREST-kompatibilis RESTful felület, amely lehetővé teszi a Lakebase Postgres-adatbázissal való közvetlen interakciót szabványos HTTP-metódusokkal. Az adatbázissémából származtatott API-végpontokat kínál, amelyek lehetővé teszik a biztonságos CRUD-(létrehozási, olvasási, frissítési, törlési) műveleteket az adatokon anélkül, hogy egyéni háttérrendszer-fejlesztésre lenne szükség.
Áttekintés
A Data API automatikusan hoz létre RESTful végpontokat az adatbázisséma alapján. Az adatbázis minden táblája HTTP-kérésekkel válik elérhetővé, így a következőkre van lehetőség:
- Adatok lekérdezése HTTP-kérésekkel GET rugalmas szűréssel, rendezéssel és lapszámozással
- Rekordok beszúrása HTTP POST-kérésekkel
- Rekordok frissítése HTTP PATCH- vagy PUT-kérésekkel
- Rekordok törlése HTTP DELETE-kérésekkel
- Függvények végrehajtása RRP-ként HTTP POST-kérések használatával
Ez a megközelítés szükségtelenné teszi az egyéni API-kód írását és karbantartását, így az alkalmazáslogikára és az adatbázissémára összpontosíthat.
PostgREST kompatibilitás
A Lakebase Data API kompatibilis a PostgREST specifikációval. Ön megteheti:
- Meglévő PostgREST-ügyfélkódtárak és -eszközök használata
- A PostgREST-konvenciók követése szűréshez, rendezéshez és lapozáshoz
- A PostgREST-közösség dokumentációinak és példáinak adaptálása
Megjegyzés:
A Lakebase Data API az Azure Databricks implementációja, amelyet úgy terveztek, hogy kompatibilis legyen a PostgREST specifikációjával. Mivel a Data API független implementáció, a Rendszer nem tartalmaz olyan PostgREST-funkciókat, amelyek nem alkalmazhatók a Lakebase-környezetre. A funkciókompatibilitásról további információt a Funkciókompatibilitási referencia című témakörben talál.
Az API-funkciókkal, lekérdezési paraméterekkel és képességekkel kapcsolatos átfogó részletekért tekintse meg a PostgREST API referenciáját.
Használati esetek
A Lakebase Data API ideális a következőkhöz:
- Webalkalmazások: Olyan előtérrendszereket hozhat létre, amelyek HTTP-kérésekkel közvetlenül kommunikálnak az adatbázissal
- Mikroszolgáltatások: Egyszerűsített szolgáltatások létrehozása, amelyek REST API-k használatával férnek hozzá az adatbázis-erőforrásokhoz
- Kiszolgáló nélküli architektúrák: Integrálás kiszolgáló nélküli függvényekkel és peremhálózati számítástechnikai platformokkal
- Mobilalkalmazások: Közvetlen adatbázis-hozzáférés biztosítása a mobilalkalmazásokhoz RESTful felületen keresztül
- Külső integrációk: Az adatok biztonságos olvasásának és írásának engedélyezése külső rendszerek számára
A Data API beállítása
Ez a szakasz végigvezeti a Data API beállításán, a szükséges szerepkörök létrehozásától az első API-kérés elkészítéséig.
Előfeltételek
A Data API-hoz egy Lakebase Postgres automatikus skálázási adatbázisprojekt szükséges. Ha nem rendelkezik ilyennel, tekintse meg az adatbázisprojektek használatának első lépéseit.
Jótanács
Ha mintatáblákra van szüksége a Data API teszteléséhez, hozza létre őket a Data API engedélyezése előtt. A mintaséma egy teljes példasémát mutat be.
A Data API engedélyezése
A Data API egyetlen Postgres-szerepkörön authenticatorkeresztül teszi elérhetővé az összes adatbázist, ami csak a bejelentkezéshez igényel engedélyeket. Ha a Data API-t a Lakebase-alkalmazáson keresztül engedélyezi, a rendszer automatikusan létrehozza ezt a szerepkört és a szükséges infrastruktúrát.
Az adat API engedélyezése:
- Lépjen a Data API lapjára a projektben.
- Kattintson az Adat API engedélyezése elemre.
Ez automatikusan végrehajtja az összes beállítási lépést, beleértve a authenticator szerepkör létrehozását, a pgrst séma konfigurálását és a public séma API-val való felfedését.
Megjegyzés:
Ha további sémákat kell elérhetővé tennie (túl public), módosíthatja a közzétett sémákat az Advanced Data API beállításai között.
A Data API engedélyezése után
A Data API engedélyezése után a Lakebase-alkalmazás két fülkel jeleníti meg a Data API-oldalt : API és Beállítások.
Az API lap a következőket biztosítja:
-
API URL: Az alkalmazáskódban és API-kérelmekben használandó REST-végpont URL-címe. A megjelenített URL-cím nem tartalmazza a sémát, ezért API-kérések végrehajtásakor hozzá kell fűznie a séma nevét (például
/public) az URL-címhez. - Sémagyorsítótár frissítése: Az API sémagyorsítótárának frissítésére használható gomb az adatbázisséma módosítása után. Lásd: Sémagyorsítótár frissítése.
- Adatok védelme: A Postgres sorszintű biztonságának (RLS) a táblákhoz való engedélyezésének lehetőségei. Lásd: Sorszintű biztonság engedélyezése.
A Beállítások lapon konfigurálhatja az API viselkedését, például a közzétett sémákat, a maximális sorokat, a CORS-beállításokat stb. Lásd: Advanced Data API-beállítások.
Mintaséma (nem kötelező)
A dokumentációban szereplő példák a következő sémát használják. Létrehozhat saját táblákat, vagy használhatja ezt a mintasémát tesztelésre. Futtassa ezeket az SQL-utasításokat a Lakebase SQL Editor vagy bármely SQL-ügyfél használatával:
-- Create clients table
CREATE TABLE clients (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL,
company TEXT,
phone TEXT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Create projects table with foreign key to clients
CREATE TABLE projects (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
description TEXT,
client_id INTEGER NOT NULL REFERENCES clients(id) ON DELETE CASCADE,
status TEXT DEFAULT 'active',
start_date DATE,
end_date DATE,
budget DECIMAL(10,2),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Create tasks table with foreign key to projects
CREATE TABLE tasks (
id SERIAL PRIMARY KEY,
title TEXT NOT NULL,
description TEXT,
project_id INTEGER NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
status TEXT DEFAULT 'pending',
priority TEXT DEFAULT 'medium',
assigned_to TEXT,
due_date DATE,
estimated_hours DECIMAL(5,2),
actual_hours DECIMAL(5,2),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Insert sample data
INSERT INTO clients (name, email, company, phone) VALUES
('Acme Corp', 'contact@acme.com', 'Acme Corporation', '+1-555-0101'),
('TechStart Inc', 'hello@techstart.com', 'TechStart Inc', '+1-555-0102'),
('Global Solutions', 'info@globalsolutions.com', 'Global Solutions Ltd', '+1-555-0103');
INSERT INTO projects (name, description, client_id, status, start_date, end_date, budget) VALUES
('Website Redesign', 'Complete overhaul of company website with modern design', 1, 'active', '2024-01-15', '2024-06-30', 25000.00),
('Mobile App Development', 'iOS and Android app for customer management', 1, 'planning', '2024-07-01', '2024-12-31', 50000.00),
('Database Migration', 'Migrate legacy system to cloud database', 2, 'active', '2024-02-01', '2024-05-31', 15000.00),
('API Integration', 'Integrate third-party services with existing platform', 3, 'completed', '2023-11-01', '2024-01-31', 20000.00);
INSERT INTO tasks (title, description, project_id, status, priority, assigned_to, due_date, estimated_hours, actual_hours) VALUES
('Design Homepage', 'Create wireframes and mockups for homepage', 1, 'in_progress', 'high', 'Sarah Johnson', '2024-03-15', 16.00, 8.00),
('Setup Development Environment', 'Configure local development setup', 1, 'completed', 'medium', 'Mike Chen', '2024-02-01', 4.00, 3.50),
('Database Schema Design', 'Design new database structure', 3, 'completed', 'high', 'Alex Rodriguez', '2024-02-15', 20.00, 18.00),
('API Authentication', 'Implement OAuth2 authentication flow', 4, 'completed', 'high', 'Lisa Wang', '2024-01-15', 12.00, 10.50),
('User Testing', 'Conduct usability testing with target users', 1, 'pending', 'medium', 'Sarah Johnson', '2024-04-01', 8.00, NULL),
('Performance Optimization', 'Optimize database queries and caching', 3, 'in_progress', 'medium', 'Alex Rodriguez', '2024-04-30', 24.00, 12.00);
Felhasználói engedélyek konfigurálása
Az összes Data API-kérést hitelesítenie kell az Azure Databricks OAuth-jogkivonatokkal, amelyeket a fejlécen keresztül küld el.Authorization A Data API korlátozza a hitelesített Azure Databricks-identitásokhoz való hozzáférést, az alapul szolgáló engedélyeket pedig a Postgres szabályozza.
A authenticator szerepkör az API-kérések feldolgozásakor feltételezi a kérelmező felhasználó identitását. Ahhoz, hogy ez működjön, minden, a Data API-t elérő Azure Databricks-identitásnak megfelelő Postgres-szerepkörrel kell rendelkeznie az adatbázisban. Ha először hozzá kell adnia felhasználókat az Azure Databricks-fiókjához, olvassa el a Felhasználók hozzáadása a fiókhoz című témakört.
Postgres-szerepkörök hozzáadása
A bővítmény használatával databricks_auth olyan Postgres-szerepköröket hozhat létre, amelyek megfelelnek az Azure Databricks-identitásoknak:
Hozza létre a bővítményt:
CREATE EXTENSION IF NOT EXISTS databricks_auth;
Postgres-szerepkör hozzáadása:
SELECT databricks_create_role('user@databricks.com', 'USER');
Részletes útmutatásért lásd: OAuth-szerepkör létrehozása Azure Databricks-identitáshoz SQL használatával.
Fontos
Ne használja az adatbázis-tulajdonosi fiókot (a Lakebase-projektet létrehozó Azure Databricks-identitást) a Data API eléréséhez. A authenticator szerepkörhöz szükség van a szerepkör betöltésére, és ez az engedély nem adható emelt szintű jogosultságokkal rendelkező fiókokhoz.
Ha megkísérli megadni az adatbázis-tulajdonosi szerepkört authenticator, a következő hibaüzenet jelenik meg:
ERROR: permission denied to grant role "db_owner_user@databricks.com"
DETAIL: Only roles with the ADMIN option on role "db_owner_user@databricks.com" may grant this role.
Engedélyek megadása a felhasználóknak
Most, hogy létrehozta a megfelelő Postgres-szerepköröket az Azure Databricks-identitásokhoz, engedélyeket kell adnia ezekhez a Postgres-szerepkörökhöz. Ezek az engedélyek szabályozzák, hogy az egyes felhasználók mely adatbázis-objektumokkal (sémákkal, táblákkal, sorozatokkal, függvényekkel) kommunikálhatnak API-kérésekkel.
Engedélyek megadása standard SQL-utasítások GRANT használatával. Ez a példa a sémát public használja; ha másik sémát ad ki, cserélje le public a séma nevét:
-- Allow authenticator to assume the identity of the user
GRANT "user@databricks.com" TO authenticator;
-- Allow user@databricks.com to access everything in public schema
GRANT USAGE ON SCHEMA public TO "user@databricks.com";
GRANT SELECT, UPDATE, INSERT, DELETE ON ALL TABLES IN SCHEMA public TO "user@databricks.com";
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO "user@databricks.com";
GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO "user@databricks.com";
Ez a példa teljes hozzáférést biztosít az public sémához az user@databricks.com identitás számára. Ezt cserélje le a tényleges Azure Databricks-identitásra, és módosítsa az engedélyeket a követelményeknek megfelelően.
Fontos
Sorszintű biztonság megvalósítása: A fenti engedélyek táblaszintű hozzáférést biztosítanak, de a legtöbb API-használati eset sorszintű korlátozásokat igényel. A több-bérlős alkalmazásokban például a felhasználóknak csak a saját adataikat vagy a szervezetük adatait kell látniuk. A PostgreSQL sorszintű biztonsági (RLS-) házirendjeinek használatával részletes hozzáférés-vezérlést kényszeríthet ki az adatbázis szintjén. Lásd: Sorszintű biztonság implementálása.
Hitelesítés
A Data API eléréséhez meg kell adnia egy Azure Databricks OAuth-jogkivonatot a Authorization HTTP-kérés fejlécében. A hitelesített Azure Databricks-identitásnak rendelkeznie kell egy megfelelő Postgres-szerepkörrel (amelyet az előző lépésekben hoztak létre), amely meghatározza az adatbázis engedélyeit.
OAuth-jogkivonat lekérése
Csatlakozzon a munkaterülethez Azure Databricks-identitásként, amelynek az előző lépésekben létrehozott egy Postgres-szerepkört, és szerezze be az OAuth-jogkivonatot. Útmutatásért tekintse meg a hitelesítést .
Kérés benyújtása
Az OAuth-jogkivonattal és az API URL-címével (amely a Lakebase-alkalmazás API-lapján érhető el) API-kéréseket végezhet curl vagy bármely HTTP-ügyfél használatával. Ne felejtse el hozzáfűzni a séma nevét (például /public) az API URL-címéhez. Az alábbi példák feltételezik, hogy exportálta a DBX_OAUTH_TOKEN és REST_ENDPOINT környezeti változókat.
Íme egy példahívás a várt kimenettel (a minta ügyfelek/projektek/feladatok sémájának használatával):
curl -H "Authorization: Bearer $DBX_OAUTH_TOKEN" \
"$REST_ENDPOINT/public/clients?select=id,name,projects(id,name)&id=gte.2"
Példa válasz:
[
{ "id": 2, "name": "TechStart Inc", "projects": [{ "id": 3, "name": "Database Migration" }] },
{ "id": 3, "name": "Global Solutions", "projects": [{ "id": 4, "name": "API Integration" }] }
]
Az API-műveletekre vonatkozó további példákért és részletes információkért tekintse meg az API referenciaszakaszát . A lekérdezési paraméterekkel és AZ API-képességekkel kapcsolatos átfogó részletekért tekintse meg a PostgREST API-referenciát. A Lakebase-specifikus kompatibilitási információkért lásd a PostgREST kompatibilitását.
Az API széles körű használata előtt konfigurálja a sorszintű biztonságot az adatok védelme érdekében.
A Data API kezelése
A Data API engedélyezése után a lakebase-alkalmazáson keresztül kezelheti a sémamódosításokat és a biztonsági beállításokat.
Séma gyorsítótár frissítése
Amikor módosítja az adatbázissémát (táblákat, oszlopokat vagy más sémaobjektumokat ad hozzá), frissítenie kell a sémagyorsítótárat. Így a módosítások azonnal elérhetővé válnak a Data API-val.
A sémagyorsítótár frissítése:
- Lépjen a Data API-ra a projekt Alkalmazásháttere szakaszában.
- Kattintson a Sémagyorsítótár frissítése elemre.
A Data API most már tükrözi a legújabb sémamódosításokat.
Sorszintű biztonság engedélyezése
A Lakebase alkalmazással gyorsan engedélyezheti a sorszintű biztonságot (RLS) az adatbázis tábláihoz. Ha táblák találhatók a sémában, az API lapon megjelenik az Adatvédelem szakasz, amely a következőket jeleníti meg:
- Az RLS-t engedélyező táblák
- Az RLS letiltott táblái (figyelmeztetésekkel)
- Az RLS engedélyezése gomb az összes tábla RLS-ének engedélyezéséhez
Fontos
Az RLS lakebase-alkalmazáson keresztüli engedélyezése bekapcsolja a táblák sorszintű biztonságát. Ha az RLS engedélyezve van, az összes sor alapértelmezés szerint elérhetetlenné válik a felhasználók számára (kivéve a táblatulajdonosokat, a BYPASSRLS attribútummal rendelkező szerepköröket és a felügyelőket – bár a felügyelők nem támogatottak a Lakebase-en). RLS-szabályzatokat kell létrehoznia, hogy a biztonsági követelményeknek megfelelően hozzáférést biztosítson bizonyos sorokhoz. A szabályzatok létrehozásával kapcsolatos információkért tekintse meg a sorszintű biztonságot .
Az RLS engedélyezése a táblákhoz:
- Lépjen a projekt Alkalmazás háttere szakaszában a Data API elemre.
- Az Adatok védelme szakaszban tekintse át azokat a táblákat, amelyeken nincs engedélyezve az RLS.
- Kattintson az RLS engedélyezése elemre az összes tábla sorszintű biztonságának engedélyezéséhez.
Az RLS-t az SQL használatával is engedélyezheti az egyes táblákhoz. Részletekért lásd a sorszintű biztonságot .
Fejlett adat-API beállítások
A Lakebase-alkalmazás API lapján található Speciális beállítások szakasz szabályozza a Data API-végpont biztonságát, teljesítményét és viselkedését.
Közzétett sémák
Alapértelmezett:public
Meghatározza, hogy mely PostgreSQL-sémák legyenek REST API-végpontokként elérhetővé téve. Alapértelmezés szerint csak a public séma érhető el. Ha más sémákat (például, ) használ, apiv1jelölje ki őket a legördülő listából a hozzáadásukhoz.
Megjegyzés:
Az engedélyek az alábbiakra vonatkoznak: A séma hozzáadása elérhetővé teszi a végpontokat, de az API által használt adatbázis-szerepkörnek továbbra is rendelkeznie USAGE kell jogosultságokkal a sémán és SELECT a táblákon lévő jogosultságokkal.
Sorok maximális száma
Alapértelmezett: Üres
Egy adott API-válaszban visszaadandó sorok számának szigorú korlátját kényszeríti ki. Ez megakadályozza a nagy lekérdezések véletlen teljesítménycsökkenését. Az ügyfeleknek lapozási korlátokat kell használniuk az adatok lekéréséhez ezen a küszöbértéken belül. Ez megakadályozza a nagy adatátvitelek váratlan kimenő költségeit is.
CORS-engedélyezett források
Alapértelmezett: Üres (Az összes forrás engedélyezése)
Azt szabályozza, hogy mely webtartományok tudnak adatokat lekérni az API-ból egy böngésző használatával.
-
Üres: Engedélyezi
*(bármely tartomány). Hasznos a fejlesztéshez. -
Termelés: Listázhatja az adott tartományokat (például) annak érdekében,
https://myapp.comhogy illetéktelen webhelyek ne kérdezzék le az API-t.
OpenAPI-specifikáció
Alapértelmezett: Letiltva
Azt szabályozza, hogy az automatikusan létrehozott OpenAPI 3 séma elérhető-e a következő helyen /openapi.json: . Ez a séma a táblákat, oszlopokat és REST-végpontokat ismerteti. Ha engedélyezve van, a következőre használhatja:
- API-dokumentáció létrehozása (Swagger UI, Redoc)
- Beírt ügyfélkódtárak létrehozása (TypeScript, Python, Go)
- API importálása a Postmanbe
- Integráció API-átjárókkal és más OpenAPI-alapú eszközökkel
Kiszolgáló időzítési fejlécek
Alapértelmezett: Letiltva
Engedélyezés esetén a Data API minden válaszban tartalmaz fejléceket Server-Timing. Ezek a fejlécek azt mutatják, hogy a kérés különböző részei mennyi ideig tartottak (például az adatbázis végrehajtási ideje és a belső feldolgozási idő). Ezek az információk a lassú lekérdezések hibakeresésére, a teljesítmény mérésére és az alkalmazás késési problémáinak elhárítására használhatók.
Megjegyzés:
Miután módosította a speciális beállításokat, a Mentés gombra kattintva alkalmazhatja őket.
Sorszintű biztonság
A sorszintű biztonsági (RLS) szabályzatok részletes hozzáférés-vezérlést biztosítanak, mivel korlátozzák, hogy a felhasználók mely sorokhoz férhetnek hozzá egy táblában.
Az RLS működése a Data API-val: Amikor egy felhasználó API-kérelmet küld, a szerepkör átvállalja a authenticator felhasználó identitását. Az adott felhasználó szerepköréhez definiált RLS-szabályzatokat a PostgreSQL automatikusan kikényszeríti, és szűri az általuk elérhető adatokat. Ez az adatbázis szintjén történik, így akkor is, ha az alkalmazáskód megpróbálja lekérdezni az összes sort, az adatbázis csak azokat a sorokat adja vissza, amelyek megtekintésére a felhasználó jogosult. Ez részletes védelmet nyújt anélkül, hogy szűrőlogikát kellene használnia az alkalmazáskódban.
Miért kritikus az RLS az API-k számára? A közvetlen adatbázis-kapcsolatoktól eltérően, ahol ön szabályozza a kapcsolati környezetet, a HTTP API-k egyetlen végponton keresztül teszik elérhetővé az adatbázist több felhasználó számára. A táblaszintű engedélyek önmagukban azt jelentik, hogy ha egy felhasználó hozzáfér a clients táblához, akkor az összes ügyfélrekordhoz hozzáférhet, hacsak nem valósít meg szűrést. Az RLS-szabályzatok biztosítják, hogy minden felhasználó automatikusan csak a jogosult adatait lássa.
Az RLS elengedhetetlen a következő célokhoz:
- Több-bérlőjű alkalmazások: Az adatok izolációja különböző ügyfelek vagy szervezetek között
- Felhasználó tulajdonában lévő adatok: Győződjön meg arról, hogy a felhasználók csak a saját rekordjaikhoz férnek hozzá
- Csoportalapú hozzáférés: A csoporttagok vagy adott csoportok láthatóságának korlátozása
- Megfelelőségi követelmények: Adathozzáférési korlátozások kényszerítése az adatbázis szintjén
RLS engedélyezése
Az RLS-t a Lakebase alkalmazáson keresztül vagy SQL-utasítások használatával engedélyezheti. A Lakebase-alkalmazás használatára vonatkozó utasításokért lásd: Sorszintű biztonság engedélyezése.
Figyelmeztetés
Ha az RLS-t nem engedélyező táblák vannak engedélyezve, a Lakebase-alkalmazás API-lapján megjelenik egy figyelmeztetés, amely szerint a hitelesített felhasználók megtekinthetik a táblák összes sorát. A Data API közvetlenül kommunikál a Postgres-sémával, és mivel az API az interneten keresztül érhető el, elengedhetetlen, hogy az adatbázis szintjén a PostgreSQL sorszintű biztonságával kényszerítse ki a biztonságot.
Az RLS SQL-sel való engedélyezéséhez futtassa a következő parancsot:
ALTER TABLE clients ENABLE ROW LEVEL SECURITY;
RLS-szabályzatok létrehozása
Miután engedélyezte az RLS-t egy táblán, hozzáférési szabályokat meghatározó szabályzatokat kell létrehoznia. Szabályzatok nélkül a felhasználók nem férhetnek hozzá egyetlen sorhoz sem (alapértelmezés szerint minden sor rejtett).
Szabályzatok működése: Ha az RLS engedélyezve van egy táblában, a felhasználók csak olyan sorokat láthatnak, amelyek megfelelnek legalább egy szabályzatnak. Az összes többi sor ki van szűrve. A táblatulajdonosok, az BYPASSRLS attribútummal rendelkező szerepkörök és a felügyelők megkerülhetik a sorbiztonsági rendszert (bár a felügyelők nem támogatottak a Lakebase-en).
Megjegyzés:
A Lakebase-ben current_user a hitelesített felhasználó e-mail-címét adja vissza (például user@databricks.com). Használja ezt az RLS-szabályzatokban annak azonosításához, hogy melyik felhasználó küldi el a kérést.
Alapszintű szabályzatszintaxis:
CREATE POLICY policy_name ON table_name
[TO role_name]
USING (condition);
- policy_name: A szabályzat leíró neve
- table_name: A szabályzatot alkalmazni kívánt tábla
- TO role_name: Nem kötelező. A szabályzat szerepkörét adja meg. Hagyja ki ezt a záradékot, hogy a szabályzatot az összes szerepkörre alkalmazza.
- USING (condition): Az a feltétel, amely meghatározza, hogy mely sorok láthatók
RLS-oktatóanyag
Az alábbi oktatóanyag a dokumentáció mintasémáját (ügyfelek, projektek, feladattáblák) használja a sorszintű biztonság implementálásának bemutatásához.
Forgatókönyv: Több felhasználóval rendelkezik, akiknek csak a hozzájuk rendelt ügyfeleket és a kapcsolódó projekteket kell látniuk. A hozzáférés korlátozása a következő módon:
-
alice@databricks.comcsak az 1. és 2. azonosítójú ügyfeleket tekintheti meg -
bob@databricks.comcsak a 2. és 3. azonosítójú ügyfeleket tekintheti meg
1. lépés: Az RLS engedélyezése az ügyfelek tábláján
ALTER TABLE clients ENABLE ROW LEVEL SECURITY;
2. lépés: Szabályzat létrehozása Alice számára
CREATE POLICY alice_clients ON clients
TO "alice@databricks.com"
USING (id IN (1, 2));
3. lépés: Szabályzat létrehozása Bob számára
CREATE POLICY bob_clients ON clients
TO "bob@databricks.com"
USING (id IN (2, 3));
4. lépés: A szabályzatok tesztelése
Amikor Alice API-kérést küld:
# Alice's token in the Authorization header
curl -H "Authorization: Bearer $ALICE_TOKEN" \
"$REST_ENDPOINT/public/clients?select=id,name"
Válasz (Alice csak az 1. és a 2. ügyfelet látja):
[
{ "id": 1, "name": "Acme Corp" },
{ "id": 2, "name": "TechStart Inc" }
]
Amikor Bob API-kérést küld:
# Bob's token in the Authorization header
curl -H "Authorization: Bearer $BOB_TOKEN" \
"$REST_ENDPOINT/public/clients?select=id,name"
Válasz (Bob csak a 2. és a 3. ügyfelet látja):
[
{ "id": 2, "name": "TechStart Inc" },
{ "id": 3, "name": "Global Solutions" }
]
Gyakori RLS-minták
Ezek a minták a Data API tipikus biztonsági követelményeit fedik le:
Felhasználó tulajdonjoga – Sorok korlátozása a hitelesített felhasználóra:
CREATE POLICY user_owned_data ON tasks
USING (assigned_to = current_user);
Bérlői elkülönítés – Korlátozza a hozzáférést a felhasználó szervezetére:
CREATE POLICY tenant_data ON clients
USING (tenant_id = (
SELECT tenant_id
FROM user_tenants
WHERE user_email = current_user
));
Csapattagság – Sorok korlátozása a felhasználó csapataira:
CREATE POLICY team_projects ON projects
USING (client_id IN (
SELECT client_id
FROM team_clients
WHERE team_id IN (
SELECT team_id
FROM user_teams
WHERE user_email = current_user
)
));
Szerepköralapú hozzáférés – A szerepkör-tagság alapján korlátozza a sorokat:
CREATE POLICY manager_access ON tasks
USING (
status = 'pending' OR
pg_has_role(current_user, 'managers', 'member')
);
Írásvédett az egyes szerepkörök számára – Különböző szabályzatok különböző műveletekhez:
-- Allow all users to read their assigned tasks
CREATE POLICY read_assigned_tasks ON tasks
FOR SELECT
USING (assigned_to = current_user);
-- Only managers can update tasks
CREATE POLICY update_tasks ON tasks
FOR UPDATE
TO "managers"
USING (true);
További erőforrások
Az RLS implementálásával kapcsolatos átfogó információkért, beleértve a szabályzattípusokat, a biztonsági ajánlott eljárásokat és a speciális mintákat, tekintse meg a PostgreSQL sorbiztonsági szabályzatainak dokumentációját.
Az engedélyekkel kapcsolatos további információkért lásd: Engedélyek kezelése.
API-referencia
Ez a szakasz feltételezi, hogy elvégezte a beállítási lépéseket, a konfigurált engedélyeket és a sorszintű biztonságot. A következő szakaszok referenciainformációkat tartalmaznak a Data API használatához, beleértve a gyakori műveleteket, a speciális funkciókat, a biztonsági szempontokat és a kompatibilitási részleteket.
Alapműveletek
Rekordok lekérdezése
Rekordok lekérése egy táblából HTTP GEThasználatával:
curl -H "Authorization: Bearer $DBX_OAUTH_TOKEN" \
"$REST_ENDPOINT/public/clients"
Példa válasz:
[
{ "id": 1, "name": "Acme Corp", "email": "contact@acme.com", "company": "Acme Corporation", "phone": "+1-555-0101" },
{
"id": 2,
"name": "TechStart Inc",
"email": "hello@techstart.com",
"company": "TechStart Inc",
"phone": "+1-555-0102"
}
]
Szűrés eredményei
Lekérdezési paraméterekkel szűrheti az eredményeket. Ez a példa a 2-nél nagyobb vagy azzal egyenlő ügyfeleket id kéri le:
curl -H "Authorization: Bearer $DBX_OAUTH_TOKEN" \
"$REST_ENDPOINT/public/clients?id=gte.2"
Példa válasz:
[
{ "id": 2, "name": "TechStart Inc", "email": "hello@techstart.com" },
{ "id": 3, "name": "Global Solutions", "email": "info@globalsolutions.com" }
]
Adott oszlopok kijelölése és táblák illesztése
A paraméter használatával select lekérhet bizonyos oszlopokat, és összekapcsolhatja a kapcsolódó táblákat:
curl -H "Authorization: Bearer $DBX_OAUTH_TOKEN" \
"$REST_ENDPOINT/public/clients?select=id,name,projects(id,name)&id=gte.2"
Példa válasz:
[
{ "id": 2, "name": "TechStart Inc", "projects": [{ "id": 3, "name": "Database Migration" }] },
{ "id": 3, "name": "Global Solutions", "projects": [{ "id": 4, "name": "API Integration" }] }
]
Rekordok beszúrása
Új rekordok létrehozása a HTTP POST használatával:
curl -X POST \
-H "Authorization: Bearer $DBX_OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "New Client",
"email": "newclient@example.com",
"company": "New Company Inc",
"phone": "+1-555-0104"
}' \
"$REST_ENDPOINT/public/clients"
Update típusú rekordok
Meglévő rekordok frissítése HTTP PATCH használatával:
curl -X PATCH \
-H "Authorization: Bearer $DBX_OAUTH_TOKEN" \
-H "Content-Type: application/json" \
-d '{"phone": "+1-555-0199"}' \
"$REST_ENDPOINT/public/clients?id=eq.1"
Rekordok törlése
Rekordok törlése HTTP DELETE használatával:
curl -X DELETE \
-H "Authorization: Bearer $DBX_OAUTH_TOKEN" \
"$REST_ENDPOINT/public/clients?id=eq.5"
Speciális funkciók
Oldalszámozás
A visszaadott limit rekordok számának és offset paramétereinek szabályozása:
curl -H "Authorization: Bearer $DBX_OAUTH_TOKEN" \
"$REST_ENDPOINT/public/tasks?limit=10&offset=0"
Rendezés
Az eredmények rendezése a order paraméterrel:
curl -H "Authorization: Bearer $DBX_OAUTH_TOKEN" \
"$REST_ENDPOINT/public/tasks?order=due_date.desc"
Összetett szűrés
Több szűrőfeltétel kombinálása:
curl -H "Authorization: Bearer $DBX_OAUTH_TOKEN" \
"$REST_ENDPOINT/public/tasks?status=eq.in_progress&priority=eq.high"
Gyakori szűrőoperátorok:
-
eq-Egyenlő -
gte- nagyobb vagy egyenlő -
lte- kisebb vagy egyenlő -
neq- nem egyenlő -
like- mintaegyezés -
in- megfelel a listában szereplő bármely értéknek
A támogatott lekérdezési paraméterekről és API-funkciókról a PostgREST API-referencia nyújt további információt. A Lakebase-specifikus kompatibilitási információkért lásd a PostgREST kompatibilitását.
Funkciókompatibilitási referencia
Ez a szakasz azokat a PostgREST-funkciókat sorolja fel, amelyek eltérő viselkedésűek, vagy amelyek nem támogatottak a Lakebase Data API-ban.
Hitelesítés és engedélyezés
| Tulajdonság | Státusz | Részletek |
|---|---|---|
| JWT-konfiguráció | Nem alkalmazható | A Lakebase Data API JWT-hitelesítés helyett Azure Databricks OAuth-jogkivonatokat használ. JWT-specifikus konfigurációs beállítások (egyéni titkos kódok, RS256-kulcsok, célközönség érvényesítése) nem érhetők el. |
Erőforrás-beágyazás
| Tulajdonság | Státusz | Részletek |
|---|---|---|
| Számított kapcsolatok | Nem támogatott | Az adatbázisfüggvények által definiált egyéni kapcsolatok, amelyek SETOF-t vagy egyetlen rekordot adnak vissza, nem támogatottak. Csak idegenkulcs-kapcsolatok ágyazhatók be. |
Belső illesztés beágyazása (!inner tipp) |
Nem támogatott | Nem támogatott az a !inner funkció, amely a bal illesztéseket belső illesztésekké alakítja a szülősorok gyermekadatok alapján történő szűréséhez. Példa: ?select=*,clients!inner(*)&clients.id=eq.1 |
Válaszformátumok
| Tulajdonság | Státusz | Részletek |
|---|---|---|
| Egyéni médiatípus-kezelők | Nem támogatott | A PostgreSQL-aggregátumokon keresztüli egyéni kimeneti formátumok (bináris formátumok, XML, protokollpufferek) nem támogatottak. |
| Eltávolított nullértékek | Nem támogatott | A nulls=stripped JSON-válaszokból null mezőket eltávolító médiatípus paraméter nem támogatott. Példa: Accept: application/vnd.pgrst.object+json;nulls=stripped |
| PostGIS GeoJSON | Részben támogatott | A PostGIS geometriai oszlopai lekérdezhetők, de a fejlécen keresztüli Accept: application/geo+json automatikus GeoJSON-formázás nem érhető el. |
Lapozás és számolás
| Tulajdonság | Státusz | Részletek |
|---|---|---|
| Tervezett darabszám | Nem támogatott | Az a beállítás, amely a PostgreSQL lekérdezési terv készítőjét használja az eredmények számának becsléséhez, nem támogatott. A Prefer: count=exact használható helyette. |
| Becsült szám | Nem támogatott | A Prefer: count=estimated PostgreSQL-statisztikákat hozzávetőleges számokhoz használó beállítás nem támogatott. A Prefer: count=exact használható helyette. |
Kérési beállítások
| Tulajdonság | Státusz | Részletek |
|---|---|---|
| Időzóna-preferencia | Részben támogatott | Az időzónák kezelése létezik, de a Prefer: timezone=America/Los_Angeles kiszolgáló időzónájának felülbírálására szolgáló fejléc nem támogatott. Konfigurálja a kiszolgáló időzónát, vagy használjon adatbázisszintű időzónfüggvényeket. |
| Tranzakcióvezérlés | Nem támogatott | A tranzakcióvezérlés Prefer: tx=commit és Prefer: tx=rollback fejlécek nem támogatott. |
| Beállításkezelési módok | Nem támogatott | Az Prefer: handling=strict érvénytelen beállítások kezelésének szabályozására szolgáló beállítások és Prefer: handling=lenient beállítások nem támogatottak. |
Observability
A Lakebase Data API saját megfigyelhetőségi funkciókat valósít meg. A következő PostgREST megfigyelhetőségi funkciók nem támogatottak:
| Tulajdonság | Státusz | Részletek |
|---|---|---|
| Lekérdezéstervek expozíciója | Nem támogatott | A Accept: application/vnd.pgrst.plan+json PostgreSQL-kimenetet EXPLAIN a teljesítményelemzéshez elérhetővé tevő fejléc nem támogatott. |
| Server-Timing fejléc | Nem támogatott | A kérések időzítésének lebontását biztosító Server-Timing fejléc nem támogatott. A Lakebase saját megfigyelhetőségi funkciókat valósít meg. |
| Nyomkövetési fejléc továbbítása | Nem támogatott | Az X-Request-Id és az egyéni nyomkövetési fejléc propagálása nem támogatott az elosztott nyomkövetéshez. A Lakebase saját megfigyelhetőségi funkciókat valósít meg. |
Speciális konfiguráció
| Tulajdonság | Státusz | Részletek |
|---|---|---|
| Alkalmazásbeállítások (GUCs) | Nem támogatott | Az egyéni konfigurációs értékek továbbítása az adatbázisfüggvények számára a PostgreSQL-tartományvezérlőkön keresztül nem támogatott. |
| Kérés előtti függvény | Nem támogatott | A db-pre-request konfiguráció, amely lehetővé teszi egy adatbázisfüggvény futtatását minden kérés előtt, nem támogatott. |
A PostgREST funkcióival kapcsolatos további információkért tekintse meg a PostgREST dokumentációját.
Biztonsági szempontok
A Data API több szinten kényszeríti ki az adatbázis biztonsági modelljét:
- Hitelesítés: Minden kéréshez érvényes OAuth-jogkivonat-hitelesítés szükséges
- Szerepköralapú hozzáférés: Adatbázisszintű engedélyek szabályozzák, hogy mely táblákhoz és műveletekhez férhetnek hozzá a felhasználók
- Sorszintű biztonság: Az RLS-szabályzatok részletes hozzáférés-vezérlést kényszerítenek ki, amely korlátozza, hogy a felhasználók mely sorokat láthatják vagy módosíthatják
- Felhasználói környezet: Az API feltételezi a hitelesített felhasználó identitását, biztosítva, hogy az adatbázis engedélyei és szabályzatai megfelelően legyenek alkalmazva
Ajánlott biztonsági eljárások
Éles üzemelő példányok esetén:
- Sorszintű biztonság megvalósítása: RLS-szabályzatok használatával korlátozza az adathozzáférést a sor szintjén. Ez különösen fontos a több-bérlős alkalmazások és a felhasználói tulajdonú adatok esetében. Lásd sorszintű biztonság.
-
Minimális engedélyek megadása: Csak azoknak az engedélyeknek a megadása, amelyekre a felhasználóknak szükségük van (
SELECT,INSERT,UPDATE, )DELETEadott táblákra a széles körű hozzáférés biztosítása helyett. - Alkalmazásonként külön szerepkörök használata: Dedikált szerepkörök létrehozása különböző alkalmazásokhoz vagy szolgáltatásokhoz ahelyett, hogy egyetlen szerepkört osztanának meg.
- Hozzáférés rendszeres naplózása: Rendszeresen tekintse át a megadott engedélyeket és RLS-szabályzatokat, hogy azok megfeleljenek a biztonsági követelményeknek.
A szerepkörök és engedélyek kezelésével kapcsolatos információkért lásd: