Megosztás a következőn keresztül:


A PolyBase konfigurálása külső adatok S3-kompatibilis objektumtárolóban való eléréséhez

A következőkre vonatkozik: SQL Server 2022 (16.x)

Ez a cikk azt ismerteti, hogyan kérdezhet le külső adatokat a PolyBase használatával az S3-kompatibilis objektumtárolóban.

Az SQL Server 2022 (16.x) lehetővé teszi bármilyen S3-kompatibilis objektumtárolóhoz való csatlakozást. A hitelesítéshez két lehetőség áll rendelkezésre: alapszintű hitelesítés vagy átmenő hitelesítés (más néven STS-engedélyezés).

Az alapszintű hitelesítés, más néven statikus hitelesítő adatok megkövetelik, hogy a felhasználó tárolja az SQL Servert és access key id az secret key id SQL Servert. A felhasználó szükség esetén explicit módon visszavonja és elforgatja a hitelesítő adatokat. A részletes hozzáférés-vezérlés megköveteli a rendszergazdától, hogy minden bejelentkezéshez statikus hitelesítő adatokat kezeljen, ez a megközelítés több tucat vagy több száz egyedi hitelesítő adat kezelése esetén kihívást jelenthet.

Az átmenő (STS) engedélyezés megoldást kínál ezekre a problémákra azáltal, hogy engedélyezi az SQL Server saját felhasználói identitásainak használatát az S3-kompatibilis objektumtároló eléréséhez. Az S3-kompatibilis objektumtároló képes ideiglenes hitelesítő adatok hozzárendelésére a Secure Token Service (STS) használatával. Ezek a hitelesítő adatok rövid távúak és dinamikusan jönnek létre.

Ez a cikk az alapszintű hitelesítésre és az átmenő hitelesítésre (STS) vonatkozó utasításokat tartalmazza.

Előfeltételek

Az S3-kompatibilis objektumtároló-integrációs funkciók használatához a következő eszközökre és erőforrásokra van szüksége:

  • Telepítse a PolyBase szolgáltatást az SQL Serverhez.
  • Telepítse az SQL Server Management Studio (SSMS) alkalmazást.
  • S3-kompatibilis tároló.
  • Létrehozva egy S3 tároló. A gyűjtők nem hozhatók létre vagy konfigurálhatók az SQL Serverről.
  • Egy felhasználó (Access Key ID) és az Ön által ismert titkos kód (Secret Key ID). Mindkettőnek hitelesítenie kell az S3 objektumtároló végpontnál.
  • A Transport Layer Securityt (TLS) konfigurálni kell. Feltételezzük, hogy az összes kapcsolat biztonságosan lesz továbbítva HTTPS-en keresztül, nem HTTP-en keresztül. A végpontot az SQL Server operációsrendszer-gazdagépre telepített tanúsítvány ellenőrzi. A TLS-ről és a tanúsítványokról további információt az SQL Server adatbázismotorjának konfigurálása a kapcsolatok titkosításához című témakörben talál.

Engedélyek

Ahhoz, hogy a proxyfelhasználó beolvassa egy S3-gyűjtő tartalmát, a felhasználónak (Access Key ID) engedélyeznie kell a következő műveleteket az S3-végponton:

  • GetBucketLocation és GetObject engedélyre van szükség egy adott fájl S3 objektumtárolóból való beolvasásához.
    • ListBucket olyan külső táblákhoz vagy OPENROWSET-lekérdezésekhez szükséges, amelyek egyetlen fájl helyett S3 mappahelyre mutatnak. ListBucket-engedélyek nélkül a hibaüzenet jelenik megMsg 4860, Level 16, State 7, Line 15 Cannot bulk load. The file "s3://<ip address>:9000/bucket/*.*" does not exist or you do not have file access rights.
  • PutObject engedély szükséges az S3 objektumtárolóba való íráshoz.

Borravaló

Az S3-kompatibilis objektumtároló-szolgáltató további API-műveleti engedélyeket igényelhet, vagy eltérő elnevezést használhat az API-műveletek engedélyeit tartalmazó szerepkörökhöz. Tekintse meg a termék dokumentációját.

A PolyBase engedélyezése

  1. A PolyBase engedélyezése a sp_configure:

    EXEC sp_configure @configname = 'polybase enabled', @configvalue = 1;
    GO
    RECONFIGURE
    GO
    
  2. Erősítse meg a beállítást:

    EXEC sp_configure @configname = 'polybase enabled';
    

Hitelesítés

A folytatáshoz válassza egyszerű hitelesítést vagy átmenő (STS) engedélyezést.

Alapszintű hitelesítés

Az adatbázis hatókörébe tartozó hitelesítő adatok létrehozása előtt a felhasználói adatbázisnak rendelkeznie kell egy fő kulccsal a hitelesítő adatok védelméhez. További információ: CREATE MASTER KEY.

Hozzon létre adatbázis-hatókörű hitelesítő adatokat alapfokú hitelesítéssel.

Az alábbi példaszkript létrehoz egy adatbázis-hatókörű hitelesítő s3-dc egy SQL Server-példány database_name adatbázisában. További információ: CREATE DATABASE SCOPED CREDENTIAL.

USE [database_name];
GO
IF NOT EXISTS(SELECT * FROM sys.database_scoped_credentials WHERE name = 's3_dc')
BEGIN
 CREATE DATABASE SCOPED CREDENTIAL s3_dc
 WITH IDENTITY = 'S3 Access Key',
 SECRET = '<AccessKeyID>:<SecretKeyID>' ;
END
GO

Ellenőrizze az új adatbázis-hatókörű hitelesítő adatokat a sys.database_scoped_credentials:

SELECT * FROM sys.database_scoped_credentials;

Külső adatforrás létrehozása alapszintű hitelesítéssel

Az alábbi példaszkript létrehoz egy külső adatforrást s3_ds az SQL Server forrásfelhasználói adatbázisában. A külső adatforrás a s3_dc adatbázis hatókörébe tartozó hitelesítő adatokra hivatkozik. További információ: KÜLSŐ ADATFORRÁS LÉTREHOZÁSA.

CREATE EXTERNAL DATA SOURCE s3_ds
WITH
(   LOCATION = 's3://<ip_address>:<port>/'
,   CREDENTIAL = s3_dc
);
GO

Ellenőrizze az új külső adatforrást sys.external_data_sources.

SELECT * FROM sys.external_data_sources;

Virtuálisan üzemeltetett URL-címek

Egyes S3-kompatibilis tárolórendszerek (például az Amazon Web Services) virtual_hosted stílusú URL-címeket használnak a mappastruktúra S3-gyűjtőben való implementálásához. Adja hozzá a következő CONNECTION_OPTIONS, hogy lehetővé tegye az S3 gyűjtőben lévő mappahelyekre mutató külső táblák létrehozását, például CONNECTION_OPTIONS = '{"s3":{"url_style":"virtual_hosted"}}'.

E CONNECTION_OPTIONS beállítás nélkül, ha egy mappára mutató külső táblákat kérdez le, a következő hibát tapasztalhatja:

Msg 13807, Level 16, State 1, Line 23
Content of directory on path '/<folder_name>/' cannot be listed.

Az alapszintű hitelesítés korlátozásai

  • Az S3-kompatibilis objektumtárolók esetében az ügyfelek nem hozhatják létre a hozzáférési kulcs azonosítóját egy : karakterrel.
  • A teljes URL-cím hossza legfeljebb 259 karakter lehet. Ez azt jelenti, hogy s3://<hostname>/<objectkey> nem haladhatja meg a 259 karaktert. A s3:// korlát felé számít, így az elérési út hossza nem haladhatja meg a 259-5 = 254 karaktert.
  • Az SQL-hitelesítő adatok neve 128 karakterből áll UTF-16 formátumban.
  • A létrehozott hitelesítőadat-névnek tartalmaznia kell a gyűjtő nevét, kivéve, ha ez a hitelesítő adat egy új külső adatforráshoz tartozik.
  • A hozzáférési kulcs azonosítója és a titkos kulcs azonosítója csak alfanumerikus értékeket tartalmazhat.

Átmenő (STS) engedélyezés

A következőkre vonatkozik: Csak SQL Server 2022 (16.x)

Az S3-kompatibilis objektumtároló képes ideiglenes hitelesítő adatok hozzárendelésére a Secure Token Service (STS) használatával. Ezek a hitelesítő adatok rövid távúak és dinamikusan jönnek létre.

Az átmenő engedélyezés az Active Directory összevonási szolgáltatásra (ADFS) támaszkodik, amely OpenID Connect (OIDC) identitásszolgáltatóként működik, az ADFS-en múlik, hogy kommunikál-e az S3-kompatibilis objektumtároló STS-vel, kérje le az STS-t, és adja vissza az SQL Servernek.

Átmenő (STS) engedélyezés használata az SQL Serveren

  1. A TLS-t tanúsítványokkal kell konfigurálni az SQL Server és az S3-kompatibilis gazdagépkiszolgáló között. Feltételezzük, hogy az összes kapcsolat biztonságosan lesz továbbítva HTTPS-en keresztül, nem HTTP-en keresztül. A végpontot az SQL Server operációsrendszer-gazdagépre telepített tanúsítvány ellenőrzi. A nyilvános vagy önaláírt tanúsítványok támogatottak.

  2. Hozzon létre egy adatbázis-hatókörű hitelesítő adatot, amely az identitás S3-kompatibilis objektumtárolóba való továbbítására szolgál. További információ: CREATE DATABASE SCOPED CREDENTIAL. A következő példa:

    CREATE DATABASE SCOPED CREDENTIAL CredName
    WITH IDENTITY = 'User Identity'
    
  3. Hozzon létre egy külső adatforrást az S3-kompatibilis objektumtároló eléréséhez. A CONNECTION_OPTIONSJSON-formátumként használható az ADFS és az STS szükséges információinak tájékoztatásához. További információ: KÜLSŐ ADATFORRÁS LÉTREHOZÁSA. A következő példa:

    CREATE EXTERNAL DATA SOURCE EdsName
    WITH
    {
        LOCATION = 's3://<hostname>:<port>/<bucket_name>'
        , CREDENTIAL = <CredName>
        [ , CONNECTION_OPTIONS = ' {
            [ , "authorization": {
                    "adfs": {
                        "endpoint": "http[s]://hostname:port/servicepath",
                        "relying_party": "SQL Server Relying Party Identifier"
                    },
                    "sts": {
                        "endpoint": "http[s]://hostname:port/stspath",
                        "role_arn": "Role Arn"
                        [ , "role_session_name": "AD user login" ] -- default value if not provided
                        [ , "duration_seconds": 3600 ]             -- default value if not provided
                        [ , "version": "2011-06-15" ]              -- default value if not provided
                        [ , "request_parameters": "In request query string format" ]
                    }
                } ]
            [ , "s3": {
                "url_style": "Path"
                } ]
        }' ]
    }
    
  • ADFS beállítások megadják a Windows átviteli végpontját és relying_party SQL Server azonosítóját az ADFS-ben.
  • STS beállítások megadják az S3-kompatibilis objektumtároló STS-végpontját és paramétereit AssumeRoleWithWebIdentity kéréshez. A AssumeRoleWithWebIdentity a hitelesítéshez használt ideiglenes biztonsági hitelesítő adatok beszerzésére használt módszer. A paraméterek teljes listáját, beleértve a választhatókat, valamint az alapértelmezett értékekkel kapcsolatos információkat STS API-referenciacímű témakörben találja.

Átmenő (STS) jogosultság használata az Active Directoryval

  • Az S3-kompatibilis tárolóba való továbbítás engedélyezéséhez jelölje meg az SQL Server felhasználói fiókok tulajdonságait az AD-ben nem érzékenyként.
  • Engedélyezze a Kerberos korlátozott delegálását az ADFS-szolgáltatásokba az SQL Server SPN-hez (szolgáltatásnévnevek) kapcsolódó felhasználó számára.

Átmenő (STS) engedélyezés használata Active Directory Federation Service (AD FS) segítségével

  • Engedélyezze, hogy az SQL Server jogcímszolgáltató megbízhatósági legyen az Active Directoryban.
  • Intranetes windowsos hitelesítés engedélyezése hitelesítési módszerként az ADFS-hez.
  • Engedélyezze a windowsos átviteli szolgáltatás végpontját az intraneten.
  • OIDC -végpontok (OpenID Connect) engedélyezése.
  • Regisztrálja az SQL Servert mint függő fél bizalom.
    • Adjon meg egy egyedi azonosítót.
    • A JWT (JSON Web Token) jogcímszabályainak beállítása.
  • Egyéni jogcímek – Ezeket a jogcímeket az ügyfelek hozzáadhatják, ha ezek szükségesek a tárolási oldalon található hozzáférési szabályzat meghatározásához.
  • További szállítóspecifikus információkért forduljon az S3-kompatibilis platformszolgáltatójához.

Átmenő (STS) engedélyezés használata S3-kompatibilis objektumtárolón

  • Kövesse az S3-kompatibilis tárolószolgáltató által biztosított dokumentációt a külső OIDC-identitásszolgáltató beállításához. Az identitásszolgáltató beállításához általában az alábbi értékekre van szükség.

    • Az OIDC-szolgáltató konfigurációs végpontja.
    • Az OIDC-szolgáltató ujjlenyomata.
    • Átmenő engedélyezés az S3-kompatibilis objektumtárolóra

Az átmenő (STS) engedélyezés korlátozásai

  • Az S3-kompatibilis objektumtárolóba való továbbítás engedélyezése (STS) támogatott a Windows-hitelesítéssel rendelkező SQL Server-bejelentkezésekhez.
  • Az STS-jogkivonatok nem használhatók az S3-kompatibilis objektumtárolók URL-címére történő biztonsági mentéshez.
  • Az ADFS-nek és az SQL Servernek ugyanabban a tartományban kell lennie. Az ADFS Windows átviteli végpontot le kell tiltani az extranetről.
  • Az ADFS-nek ugyanazzal az AD-sel (Active Directoryval) kell rendelkeznie, mint az SQL Servernek, mint a jogcímmegbízhatósági szolgáltatónak.
  • Az S3-kompatibilis tárolónak STS-végpontszolgáltatással kell rendelkeznie, amely lehetővé teszi az ügyfelek számára, hogy ideiglenes hitelesítő adatokat kérjenek külső identitások JWT használatával.
  • Az OPENROWSET és a CETAS (Külső tábla létrehozása kiválasztásként) lekérdezések parquet és CSV formátumban támogatottak.
  • A Kerberos-jegy megújításának időtartama alapértelmezés szerint hét nap, windowson 10 óra, Linuxon pedig 2 óra. Az SQL Server legfeljebb hét napig megújítja a felhasználó Kerberos-jogkivonatát. Hét nap elteltével a felhasználó jegye lejár, ezért az S3-kompatibilis tárolóba való továbbítás sikertelen lesz. Ebben az esetben az SQL Servernek újra hitelesítenie kell a felhasználót egy új Kerberos-jegy megszerzéséhez.
  • A Windows Server 2019-et futtató ADFS 2019 támogatott.
  • Az S3 REST API-hívások az AWS-aláírás 4-es verzióját használják.

PolyBase a Linux alapú SQL Serveren

A Linuxon futó SQL Serveren futó PolyBase esetében további konfigurációra van szükség.

  • A TLS-t konfigurálni kell. Feltételezzük, hogy az összes kapcsolat biztonságosan lesz továbbítva HTTPS-en keresztül, nem HTTP-en keresztül. A végpontot az SQL Server operációsrendszer-gazdagépre telepített tanúsítvány ellenőrzi.
  • A tanúsítványkezelés Linuxon eltérő. Tekintse át és kövesse S3-kompatibilis tárolásiLinux-támogatásával kapcsolatos konfigurációt.