Biztonság az Azure Database for PostgreSQL-ben – rugalmas kiszolgáló

A következőkre vonatkozik: Azure Database for PostgreSQL – Rugalmas kiszolgáló

Több biztonsági réteg áll rendelkezésre az Azure Database for PostgreSQL rugalmas kiszolgálópéldány adatainak védelméhez. Ez a cikk ismerteti ezeket a biztonsági lehetőségeket.

Információvédelem és titkosítás

Azure Database for PostgreSQL – A rugalmas kiszolgáló kétféleképpen titkosítja az adatokat:

  • Átvitt adatok: Az Azure Database for PostgreSQL – A rugalmas kiszolgáló biztonságos szoftvercsatornák réteg- és átviteli rétegbiztonságával (SSL/TLS) titkosítja az átvitt adatokat. A rendszer alapértelmezés szerint kikényszeríti a titkosítást. Az SSL\TLS kapcsolatbiztonságával kapcsolatos további információkért tekintse meg ezt a dokumentációt. A nagyobb biztonság érdekében dönthet úgy, hogy engedélyezi a SCRAM-hitelesítést a rugalmas Azure Database for PostgreSQL-kiszolgálón.

    Bár erősen nem ajánlott, ha szükséges, az örökölt ügyfélkompatibilitás miatt lehetősége van letiltani a TLS\SSL protokollt az Azure Database for PostgreSQL - Rugalmas kiszolgálóhoz való csatlakozáshoz, ha a require_secure_transport kiszolgálóparamétert OFF-ra frissíti. A TLS-verziót kiszolgálóparaméterek beállításával ssl_max_protocol_version is beállíthatja.

  • Inaktív adatok: A tárolótitkosításhoz az Azure Database for PostgreSQL – Rugalmas kiszolgáló a FIPS 140-2 által ellenőrzött titkosítási modult használja. Az adatok titkosítva kerülnek a lemezre, beleértve a biztonsági másolatokat és a lekérdezések futtatásakor létrehozott ideiglenes fájlokat is.

    A szolgáltatás az Azure tárolótitkosítás részét képező AES 256 bites titkosítást használja, és a kulcsokat a rendszer felügyeli. Ez hasonló a többi inaktív titkosítási technológiához, mint amilyen például az SQL Server vagy az Oracle-adatbázisok esetében alkalmazott transzparens adattitkosítás. A tárolótitkosítás mindig be van kapcsolva, és nem tiltható le.

Hálózati biztonság

Rugalmas Azure Database for PostgreSQL-kiszolgáló futtatásakor két fő hálózatkezelési lehetősége van:

  • Privát hozzáférés: üzembe helyezheti kiszolgálóját egy Azure-beli virtuális hálózatban. Az Azure-beli virtuális hálózatok elősegítik a privát és biztonságos hálózati kommunikációt. A virtuális hálózatok erőforrásai magánhálózati IP-címeken keresztül kommunikálhatnak. További információkért tekintse meg az Azure Database for PostgreSQL – Rugalmas kiszolgáló hálózatkezelési áttekintését.

    A hálózati biztonsági csoportok biztonsági szabályai lehetővé teszik, hogy megszűrje a virtuális hálózat alhálózatain és hálózati adapterein bejövő és kimenő forgalom típusait. További információkért tekintse meg a hálózati biztonsági csoportok áttekintését.

  • Nyilvános hozzáférés: a kiszolgálóhoz nyilvános végponton keresztül is hozzá lehet férni. A nyilvános végpont egy nyilvánosan feloldható DNS-cím. A hozzáférés egy tűzfalon keresztül van biztosítva, amely alapértelmezés szerint blokkolja az összes kapcsolatot.

    Az IP-tűzfalszabályok biztosítják a kiszolgálókhoz való hozzáférést az egyes kérések eredeti IP-címe alapján. További információkért tekintse meg a tűzfalszabályok áttekintését.

Felhőhöz készült Microsoft Defender támogatás

A nyílt forráskódú relációs adatbázisokhoz készült Microsoft Defender rendellenes tevékenységeket észlel, amelyek szokatlan és potenciálisan káros kísérleteket jeleznek az adatbázisok elérésére vagy kihasználására. Felhőhöz készült Defender biztonsági riasztásokat biztosít a rendellenes tevékenységekről, így észlelheti a lehetséges fenyegetéseket, és reagálhat rájuk azok bekövetkezésekor. Ha engedélyezi ezt a tervet, Felhőhöz készült Defender riasztásokat küld, amikor rendellenes adatbázis-hozzáférési és lekérdezési mintákat, valamint gyanús adatbázis-tevékenységeket észlel.

Ezek a riasztások a Felhőhöz készült Defender biztonsági riasztási oldalán jelennek meg, és a következőket tartalmazzák:

  • Az őket kiváltó gyanús tevékenység részletei
  • A kapcsolódó MITRE ATT&CK-taktika
  • Javasolt műveletek a fenyegetés kivizsgálásához és mérsékléséhez
  • A vizsgálatok Microsoft Sentinellel való folytatásának lehetőségei

Felhőhöz készült Microsoft Defender és a találgatásos támadások

A találgatásos támadás az egyik leggyakoribb és viszonylag sikeres hackelési módszer, annak ellenére, hogy a legkevésbé kifinomult hackelési módszerek közé tartozik. Az ilyen támadás elmélete az, hogy ha végtelen számú kísérletet tesz a jelszó kitalálására, akkor végül igaza lesz. Amikor a Felhőhöz készült Microsoft Defender találgatásos támadást észlel, riasztást ad, hogy felhívja az Ön figyelmét arra, hogy találgatásos támadás történt. Arra is képes, hogy megkülönböztesse az egyszerű találgatásos támadást az érvényes felhasználóra irányuló találgatásos támadástól vagy a sikeres találgatásos támadástól.

Ha riasztásokat szeretne kapni a Microsoft Defender-csomagból, először engedélyeznie kell azt a következő szakaszban látható módon.

Fokozott biztonság engedélyezése Felhőhöz készült Microsoft Defender

  1. Az Azure Portalon navigáljon a bal oldali panel Biztonság menüjére
  2. Felhőhöz készült Microsoft Defender kiválasztása
  3. Válassza az Engedélyezés lehetőséget a jobb oldali panelen.

Képernyőkép az Azure Portalról a Cloud Defender engedélyezéséről.

Feljegyzés

Ha a Microsoft Defender-csomagban engedélyezve van a "nyílt forráskódú relációs adatbázisok" funkció, megfigyelheti, hogy a Microsoft Defender alapértelmezés szerint automatikusan engedélyezve van a rugalmas Azure Database for PostgreSQL-kiszolgálóerőforráshoz.

Hozzáférés-kezelés

Az Azure Database for PostgreSQL – Rugalmas kiszolgálói adatbázis-hozzáférési engedélyek nagy méretekben történő kezelésére a szerepkörök fogalmának használata a legjobb módszer. A szerepkör lehet adatbázis-felhasználó vagy adatbázis-felhasználók csoportja. A szerepkörök birtokolhatják az adatbázis-objektumokat, és jogosultságokat rendelhetnek ezekhez az objektumokhoz más szerepkörökhöz, így szabályozhatják, hogy kik férhetnek hozzá az objektumokhoz. Egy szerepkör tagságát egy másik szerepkörnek is meg lehet adni, így a tagszerepkör használhatja a másik szerepkörhöz rendelt jogosultságokat. Az Azure Database for PostgreSQL – Rugalmas kiszolgáló lehetővé teszi, hogy engedélyeket adjon közvetlenül az adatbázis felhasználóinak. Ajánlott biztonsági gyakorlatként ajánlott a minimális alkalmazás- és hozzáférési követelmények alapján meghatározott engedélykészletekkel rendelkező szerepköröket létrehozni. Ezután hozzárendelheti a megfelelő szerepköröket minden felhasználóhoz. A szerepkörök egy minimális jogosultsági modell kikényszerítésére szolgálnak az adatbázis-objektumok eléréséhez.

A rugalmas Azure Database for PostgreSQL-példány a három alapértelmezett szerepkörrel jön létre. Ezeket a szerepköröket a parancs futtatásával tekintheti meg:

SELECT rolname FROM pg_roles;
  • azure_pg_admin

  • azuresu

  • rendszergazdai szerepkör

Az Azure Database for PostgreSQL – Rugalmas kiszolgálópéldány létrehozásakor hitelesítő adatokat kell megadnia egy rendszergazdai szerepkörhöz. Ezzel a rendszergazdai szerepkörrel több PostgreSQL-szerepkört lehet létrehozni.
Az alábbiakban például létrehozhatunk egy felhasználó/szerepkör nevű demouserpéldát,

postgres=> CREATE USER demouser PASSWORD 'password123';

A rendszergazdai szerepkört soha nem használhatja az alkalmazás.

A felhőalapú PaaS-környezetekben az Azure Database for PostgreSQL – Rugalmas kiszolgálófelelős fiók csak a felhőszolgáltatók által végzett síkműveletek vezérlésére korlátozódik. Ezért a azure_pg_admin fiók pszeudo-superuser fiókként létezik. A rendszergazdai szerepkör a azure_pg_admin szerepkör tagja.
A kiszolgálói rendszergazdai fiók azonban nem része a azuresu szerepkörnek, amely superuser jogosultságokkal rendelkezik, és vezérlősík-műveletek végrehajtására szolgál. Mivel ez a szolgáltatás egy felügyelt PaaS-szolgáltatás, csak a Microsoft része a felügyelői szerepkörnek.

Feljegyzés

A rugalmas Azure Database for PostgreSQL-kiszolgálón csak a felügyelői engedélyek száma, például bizonyos implicit leadások létrehozása nem érhető el, mivel azure_pg_admin a szerepkör nem igazodik a PostgreSQL superuser szerepkör engedélyeihez.

A kiszolgáló szerepköreinek listáját rendszeresen naplózhatja. Csatlakozhat például ügyféllel psql , és lekérdezheti a táblát, amely felsorolja az pg_roles összes szerepkört, valamint olyan jogosultságokat, mint például további szerepkörök létrehozása, adatbázisok létrehozása, replikáció stb.

postgres=> \x
Expanded display is on.
postgres=> select * from pg_roles where rolname='demouser';
-[ RECORD 1 ]--+---------
rolname        | demouser
rolsuper       | f
rolinherit     | t
rolcreaterole  | f
rolcreatedb    | f
rolcanlogin    | f
rolreplication | f
rolconnlimit   | -1
rolpassword    | ********
rolvaliduntil  |
rolbypassrls   | f
rolconfig      |
oid            | 24827

Naplózás az Azure Database for PostgreSQL-ben – A rugalmas kiszolgáló az Azure Database for PostgreSQL -rugalmas kiszolgálóval is elérhető az adatbázisok tevékenységeinek nyomon követéséhez.

Sémahozzáférés szabályozása

Újonnan létrehozott adatbázisok az Azure Database for PostgreSQL-ben – A rugalmas kiszolgáló alapértelmezett jogosultságkészlettel rendelkezik az adatbázis nyilvános sémájában, amely lehetővé teszi, hogy az adatbázis minden felhasználója és szerepköre objektumokat hozzon létre. A rugalmas Azure Database for PostgreSQL-példányon létrehozott adatbázisokhoz való alkalmazásfelhasználói hozzáférés jobb korlátozása érdekében javasoljuk, hogy fontolja meg az alapértelmezett nyilvános jogosultságok visszavonását. Ezt követően részletesebben adhat meg bizonyos jogosultságokat az adatbázis-felhasználók számára. Példa:

  • Ha meg szeretné akadályozni, hogy az alkalmazás-adatbázis felhasználói objektumokat hozzanak létre a nyilvános sémában, vonjon vissza jogosultságokat a sémához public a szerepkörből public .

    REVOKE CREATE ON SCHEMA public FROM PUBLIC;
    
  • Ezután hozzon létre új adatbázist.

    CREATE DATABASE Test_db;
    
  • Vonja vissza az új adatbázis NYILVÁNOS sémájából származó összes jogosultságot.

    REVOKE ALL ON DATABASE Test_db FROM PUBLIC;
    
  • Egyéni szerepkör létrehozása alkalmazásadatbázis-felhasználók számára

    CREATE ROLE Test_db_user;
    
  • Az ezzel a szerepkörrel rendelkező adatbázis-felhasználók számára lehetővé teszi az adatbázishoz való csatlakozást.

    GRANT CONNECT ON DATABASE Test_db TO Test_db_user;
    GRANT ALL PRIVILEGES ON DATABASE Test_db TO Test_db_user;
    
  • Adatbázis-felhasználó létrehozása

    CREATE USER user1 PASSWORD 'Password_to_change'
    
  • Szerepkör hozzárendelése a csatlakozással és jogosultságok kiválasztása a felhasználóhoz

    GRANT Test_db_user TO user1;
    

Ebben a példában az 1. felhasználó csatlakozhat, és rendelkezik a tesztadatbázis összes jogosultságával Test_db, de a kiszolgálón lévő többi adatbázissal nem. Javasoljuk továbbá, hogy ahelyett, hogy a felhasználó\szerepkör ALL PRIVILEGES-t adna az adatbázishoz és az objektumaihoz, szelektívebb engedélyeket biztosítana, például Standard kiadás LECT, IN Standard kiadás RT, EXECUTE stb. A PostgreSQL-adatbázisok jogosultságaival kapcsolatos további információkért tekintse meg a GRANT és a REVOKE parancsokat a PostgreSQL-dokumentumokban.

A PostgreSQL 16 változásai szerepköralapú biztonsággal

A PostgreSQL-adatbázisszerepkör számos attribútummal rendelkezhet, amelyek meghatározzák a jogosultságait. Az egyik ilyen attribútum a CREATEROLE attribútum, amely fontos a PostgreSQL-adatbázisok felhasználók és szerepkörök kezelése során. A PostgreSQL-ben 16 jelentős változás történt ebben az attribútumban. A PostgreSQL 16-ban a CREATEROLE attribútummal rendelkező felhasználók már nem adhatnak ki tagságot senkinek, ehelyett, mint más felhasználók, ezen attribútum nélkül csak olyan szerepkörökben oszthatnak ki tagságokat, amelyekhez rendszergazdai lehetőséggel rendelkeznek. Emellett a PostgreSQL 16-ban a CREATEROLE attribútum továbbra is lehetővé teszi a nemperes felhasználók számára az új felhasználók kiépítését, azonban csak az általuk létrehozott felhasználókat tudják elvetni. A felhasználók elvetésére tett kísérletek, amelyeket nem a CREATEROLE attribútummal rendelkező felhasználók hoznak létre, hibát eredményeznek.

A PostgreSQL 16 új és továbbfejlesztett beépített szerepköröket is bevezetett. A PostgreSQL 16 új pg_use_reserved_connections szerepköre lehetővé teszi a reserved_connections keresztül fenntartott csatlakozási pontok használatát. A pg_create_subscription szerepkör lehetővé teszi, hogy a felügyelők előfizetéseket hozzanak létre.

Row level security

A sorszintű biztonság (RLS) egy rugalmas Azure Database for PostgreSQL biztonsági funkció, amely lehetővé teszi az adatbázis-rendszergazdák számára, hogy szabályzatokat határozzanak meg az adott adatsorok megjelenítésének és működésének szabályozásához egy vagy több szerepkörhöz. A sorszintű biztonság egy további szűrő, amelyet egy Rugalmas Azure Database for PostgreSQL-adatbázistáblára alkalmazhat. Amikor egy felhasználó megpróbál műveletet végrehajtani egy táblán, a rendszer ezt a szűrőt alkalmazza a lekérdezési feltételek vagy egyéb szűrés előtt, és az adatok a biztonsági szabályzatnak megfelelően leszűkítve vagy elutasítva. Sorszintű biztonsági szabályzatokat hozhat létre bizonyos parancsokhoz, például Standard kiadás LECT, IN Standard kiadás RT, UPDATE és DELETE parancsokhoz, és minden parancshoz megadhatja. A sorszintű biztonság használati esetei közé tartoznak a PCI-kompatibilis implementációk, a minősített környezetek és a megosztott üzemeltetés/ több-bérlős alkalmazások.

Csak a jogosultságokkal rendelkező SET ROW SECURITY felhasználók alkalmazhatnak sorbiztonsági jogosultságokat egy táblára. Előfordulhat, hogy a tábla tulajdonosa sorbiztonságot állít be egy táblán. Mint OVERRIDE ROW SECURITY ez jelenleg implicit jog. A sorszintű biztonság nem bírálja felül a meglévő GRANT engedélyeket, hanem részletesebb szabályozási szintet ad hozzá. Ha például egy adott felhasználónak engedélyezi a sorok megadását, ROW SECURITY FOR SELECT az csak akkor biztosít hozzáférést a felhasználónak, ha a felhasználó a szóban forgó oszlopon vagy táblán is rendelkezik SELECT jogosultságokkal.

Az alábbi példa bemutatja, hogyan hozhat létre olyan szabályzatot, amely biztosítja, hogy csak az egyénileg létrehozott "kezelő" szerepkör tagjai férhessenek hozzá egy adott fiók soraihoz. A következő példában szereplő kód meg lett osztva a PostgreSQL dokumentációjában.

CREATE TABLE accounts (manager text, company text, contact_email text);

ALTER TABLE accounts ENABLE ROW LEVEL SECURITY;

CREATE POLICY account_managers ON accounts TO managers
    USING (manager = current_user);

A USING záradék implicit módon hozzáad egy WITH CHECK záradékot, amely biztosítja, hogy a kezelői szerepkör tagjai ne tudjanak végrehajtani SELECT, DELETEvagy UPDATE műveleteket más vezetőkhöz tartozó sorokon, és ne INSERT tudjanak új sorokat más vezetőhöz tartozni. A sorbiztonsági szabályzatokat elvetheti a DROP POLICY paranccsal, ahogyan az a példában is látható:



DROP POLICY account_managers ON accounts;

Bár előfordulhat, hogy elvetette a szabályzatot, a szerepkör-kezelő továbbra sem tudja megtekinteni a többi vezetőhöz tartozó adatokat. Ennek az az oka, hogy a sorszintű biztonsági szabályzat továbbra is engedélyezve van a fiókok táblában. Ha a sorszintű biztonság alapértelmezés szerint engedélyezve van, a PostgreSQL alapértelmezett megtagadási szabályzatot használ. Letilthatja a sorszintű biztonságot, ahogy az alábbi példában is látható:

ALTER TABLE accounts DISABLE ROW LEVEL SECURITY;

Sorszintű biztonság megkerülése

A PostgreSQL BYPASSRLS és NOBYPASSRLS engedélyekkel rendelkezik, amelyek hozzárendelhetők egy szerepkörhöz; A NOBYPASSRLS alapértelmezés szerint van hozzárendelve. Az újonnan kiépített kiszolgálók az Azure Database for PostgreSQL-ben – A sorszintű biztonsági jogosultságot megkerülő rugalmas kiszolgáló (BYPASSRLS) az alábbiak szerint valósul meg:

  • A Postgres 16-os és újabb verziójú kiszolgálók esetében a Szokásos PostgreSQL 16 viselkedést követjük. A nem rendszergazdai felhasználók által létrehozott azure_pg_admin rendszergazdai szerepkör lehetővé teszi, hogy szükség esetén BYPASSRLS attribútum\jogosultsággal rendelkező szerepköröket hozzon létre.
  • A Postgres 15-ös és újabb verziójú kiszolgálók esetében. azure_pg_admin felhasználóval olyan rendszergazdai feladatokat végezhet, amelyek BYPASSRLS-jogosultságot igényelnek, de nem hozhatnak létre nem rendszergazdai felhasználókat BypassRLS-jogosultsággal, mivel a rendszergazdai szerepkör nem rendelkezik superuser jogosultságokkal, mint a felhőalapú PaaS PostgreSQL-szolgáltatásokban.

Jelszavak frissítése

A nagyobb biztonság érdekében célszerű rendszeresen elforgatni a rendszergazdai jelszót és az adatbázis-felhasználók jelszavát. Javasoljuk, hogy erős jelszavakat használjon kis- és nagybetűkkel, számokkal és speciális karakterekkel.

SCRAM használata

A Salted Challenge Response Authentication Mechanizmus (SCRAM) jelentősen javítja a jelszóalapú felhasználói hitelesítés biztonságát azáltal, hogy számos olyan kulcsfontosságú biztonsági funkciót ad hozzá, amelyek megakadályozzák a szivárványtáblás támadásokat, a középen belüli támadásokat és a tárolt jelszavas támadásokat, valamint támogatja a nem ASCII-karaktereket tartalmazó kivonatoló algoritmusokat és jelszavakat.

Ha az ügyfélillesztő támogatja a SCRAM-ot , beállíthatja az Azure Database for PostgreSQL - rugalmas kiszolgálóhoz való hozzáférést a SCRAM használatával alapértelmezettként scram-sha-256md5.

Rendszergazdai jelszó alaphelyzetbe állítása

Kövesse az útmutatót a rendszergazdai jelszó alaphelyzetbe állításához.

Adatbázis felhasználói jelszavának frissítése

Az ügyféleszközökkel frissítheti az adatbázis felhasználói jelszavát.
Például:

postgres=> ALTER ROLE demouser PASSWORD 'Password123!';
ALTER ROLE