Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2022 (16.x)
Artikel ini menjelaskan cara menggunakan PolyBase untuk mengkueri data eksternal di penyimpanan objek yang kompatibel dengan S3.
SQL Server 2022 (16.x) memperkenalkan kemampuan untuk terhubung ke penyimpanan objek yang kompatibel dengan S3, ada dua opsi yang tersedia untuk autentikasi: autentikasi dasar atau otorisasi pass-through (juga dikenal sebagai otorisasi STS).
Autentikasi Dasar, juga dikenal sebagai kredensial statis, mengharuskan pengguna untuk menyimpan access key id dan secret key id di SQL Server. Pengguna secara eksplisit mencabut dan memutar kredensial kapan pun diperlukan. Kontrol akses mendetail mengharuskan administrator untuk mengelola kredensial statis untuk setiap login, pendekatan ini bisa menjadi tantangan saat berhadapan dengan puluhan atau ratusan kredensial unik.
Otorisasi pass-through (STS) menawarkan solusi untuk masalah ini dengan mengaktifkan penggunaan identitas pengguna SQL Server sendiri untuk mengakses penyimpanan objek yang kompatibel dengan S3. Penyimpanan objek yang kompatibel dengan S3 memiliki kemampuan untuk menetapkan kredensial sementara dengan menggunakan Secure Token Service (STS). Kredensial ini bersifat jangka pendek dan dihasilkan secara dinamis.
Artikel ini mencakup instruksi untuk otorisasi Autentikasi Dasar dan otorisasi pass-through (STS).
Prasyarat
Untuk menggunakan fitur integrasi penyimpanan objek yang kompatibel dengan S3, Anda memerlukan alat dan sumber daya berikut:
- Instal fitur PolyBase untuk SQL Server.
- Instal SQL Server Management Studio (SSMS).
- Penyimpanan yang kompatibel dengan S3.
- Wadah S3 dibuat. Wadah tidak dapat dibuat atau dikonfigurasi dari SQL Server.
- Pengguna (
Access Key ID) dan rahasia (Secret Key ID) yang Anda ketahui. Anda memerlukan keduanya untuk mengautentikasi terhadap titik akhir penyimpanan objek S3. - Keamanan Lapisan Transportasi (TLS) harus dikonfigurasi. Diasumsikan bahwa semua koneksi akan ditransmisikan dengan aman melalui HTTPS bukan HTTP. Titik akhir akan divalidasi oleh sertifikat yang diinstal pada Host OS SQL Server. Untuk informasi selengkapnya tentang TLS dan sertifikat, lihat Mengonfigurasi Mesin Database SQL Server untuk mengenkripsi koneksi.
Izin
Agar pengguna proksi membaca konten wadah S3, pengguna (Access Key ID) harus diizinkan untuk melakukan tindakan berikut terhadap titik akhir S3:
-
Izin GetBucketLocation dan GetObject diperlukan untuk membaca file tertentu dari penyimpanan objek S3.
-
ListBucket diperlukan untuk tabel eksternal atau kueri OPENROWSET yang menunjuk ke lokasi folder S3, bukan satu file. Tanpa izin ListBucket , Anda akan menerima kesalahan
Msg 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.
-
ListBucket diperlukan untuk tabel eksternal atau kueri OPENROWSET yang menunjuk ke lokasi folder S3, bukan satu file. Tanpa izin ListBucket , Anda akan menerima kesalahan
- Izin PutObject diperlukan untuk menulis ke penyimpanan objek S3.
Tip
Penyedia penyimpanan objek yang mematuhi S3 Anda mungkin memerlukan izin operasi API tambahan, atau menggunakan penamaan yang berbeda untuk peran yang berisi izin ke operasi API. Lihat dokumentasi produk Anda.
Aktifkan PolyBase
Aktifkan PolyBase di
sp_configure:EXEC sp_configure @configname = 'polybase enabled', @configvalue = 1; GO RECONFIGURE GOKonfirmasi pengaturan:
EXEC sp_configure @configname = 'polybase enabled';
Autentikasi
Untuk melanjutkan, pilih Autentikasi Dasar atau otorisasi pass-through (STS).
Autentikasi Dasar
Sebelum Anda membuat kredensial lingkup database, database pengguna harus memiliki kunci master untuk melindungi kredensial. Untuk informasi selengkapnya, lihat CREATE MASTER KEY.
Membuat kredensial lingkup database dengan Autentikasi Dasar
Contoh skrip berikut membuat kredensial bercakupan basis data s3-dc dalam basis data database_name pada instans SQL Server. Untuk informasi selengkapnya, lihat MEMBUAT KREDENSIAL CAKUPAN DATABASE.
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
Verifikasi kredensial cakupan database baru dengan sys.database_scoped_credentials:
SELECT * FROM sys.database_scoped_credentials;
Membuat sumber data eksternal dengan Autentikasi Dasar
Contoh skrip berikut membuat sumber s3_ds data eksternal di database pengguna sumber di SQL Server. Sumber data eksternal mereferensikan s3_dc kredensial cakupan database. Untuk informasi selengkapnya, lihat BUAT SUMBER DATA EKSTERNAL.
CREATE EXTERNAL DATA SOURCE s3_ds
WITH
( LOCATION = 's3://<ip_address>:<port>/'
, CREDENTIAL = s3_dc
);
GO
Verifikasi sumber data eksternal baru dengan sys.external_data_sources.
SELECT * FROM sys.external_data_sources;
URL virtual yang dihosting
Beberapa sistem penyimpanan yang kompatibel dengan S3 (seperti Amazon Web Services) menggunakan virtual_hosted URL gaya untuk menerapkan struktur folder dalam wadah S3. Tambahkan yang berikut ini CONNECTION_OPTIONS untuk memungkinkan pembuatan tabel eksternal yang menunjuk ke lokasi folder di wadah S3, misalnya CONNECTION_OPTIONS = '{"s3":{"url_style":"virtual_hosted"}}'.
Tanpa pengaturan tersebut CONNECTION_OPTIONS , saat mengkueri tabel eksternal yang menunjuk ke folder, Anda mungkin mengamati kesalahan berikut:
Msg 13807, Level 16, State 1, Line 23
Content of directory on path '/<folder_name>/' cannot be listed.
Batasan Autentikasi Dasar
- Untuk penyimpanan objek yang kompatibel dengan S3, pelanggan tidak diizinkan untuk membuat ID kunci akses mereka dengan
:karakter di dalamnya. - Panjang URL total dibatasi hingga 259 karakter. Ini berarti
s3://<hostname>/<objectkey>tidak boleh melebihi 259 karakter. Hitungans3://menuju batas ini, sehingga panjang jalur tidak boleh melebihi 259-5 = 254 karakter. - Nama kredensial SQL dibatasi oleh 128 karakter dalam format UTF-16.
- Nama kredensial yang dibuat harus berisi nama wadah kecuali kredensial ini untuk sumber data eksternal baru.
- ID Kunci Akses dan ID Kunci Rahasia hanya boleh berisi nilai alfanumerik.
Otorisasi pass-through (STS)
Berlaku untuk: SQL Server 2022 (16.x) saja.
Penyimpanan objek yang kompatibel dengan S3 memiliki kemampuan untuk menetapkan kredensial sementara dengan menggunakan Secure Token Service (STS). Kredensial ini bersifat jangka pendek dan dihasilkan secara dinamis.
Otorisasi pass-through bergantung pada Layanan Federasi Direktori Aktif (ADFS) yang bertindak sebagai penyedia identitas OpenID Connect (OIDC), terserah ADFS untuk berkomunikasi dengan STS penyimpanan objek yang kompatibel dengan S3, meminta STS dan menyediakannya kembali ke SQL Server.
Menggunakan otorisasi pass-through (STS) di SQL Server
TLS harus dikonfigurasi dengan sertifikat antara SQL Server dan server host yang kompatibel dengan S3. Diasumsikan bahwa semua koneksi akan ditransmisikan dengan aman melalui HTTPS, bukan HTTP. Titik akhir akan divalidasi oleh sertifikat yang diinstal pada Host OS SQL Server. Sertifikat publik atau yang ditandatangani sendiri didukung.
Buat kredensial cakupan database yang akan digunakan untuk meneruskan identitas ke penyimpanan objek yang kompatibel dengan S3. Untuk informasi selengkapnya, lihat MEMBUAT KREDENSIAL CAKUPAN DATABASE. Sebagai contoh berikut:
CREATE DATABASE SCOPED CREDENTIAL CredName WITH IDENTITY = 'User Identity'Buat sumber data eksternal untuk mengakses penyimpanan objek yang kompatibel dengan S3. Gunakan
CONNECTION_OPTIONS, sebagai format JSON, untuk menginformasikan informasi yang diperlukan untuk ADFS dan STS. Untuk informasi selengkapnya, lihat BUAT SUMBER DATA EKSTERNAL. Sebagai contoh berikut: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" } ] }' ] }
-
ADFSopsi menentukan titik akhir transportasi Windows danrelying_partypengidentifikasi SQL Server di ADFS. -
STSopsi menentukan titik akhir STS dan parameter penyimpanan objek yang kompatibel dengan S3 untukAssumeRoleWithWebIdentitypermintaan.AssumeRoleWithWebIdentityadalah metode yang digunakan untuk memperoleh kredensial keamanan sementara yang digunakan untuk mengautentikasi. Untuk daftar lengkap parameter, termasuk parameter opsional, dan informasi tentang nilai default, lihat Referensi STS API.
Menggunakan otorisasi pass-through (STS) dengan Direktori Aktif
- Tandai properti akun pengguna SQL Server di AD sebagai tidak sensitif untuk memungkinkan pass-through ke penyimpanan yang kompatibel dengan S3.
- Izinkan delegasi terbatas Kerberos ke layanan ADFS untuk pengguna yang terkait dengan Nama Perwakilan Layanan (SPN) SQL Server.
Menggunakan otorisasi pass-through (STS) dengan Active Directory Federation Service
- Aktifkan SQL Server sebagai claims provider trust di Active Directory.
- Izinkan autentikasi windows intranet sebagai metode autentikasi untuk ADFS.
- Aktifkan titik akhir layanan transportasi Windows di intranet Anda.
- Aktifkan titik akhir OIDC (OpenID Connect).
- Daftarkan SQL Server sebagai pihak tepercaya.
- Berikan pengidentifikasi unik.
- Tetapkan aturan klaim untuk JWT (JSON Web Token).
- Klaim kustom - Klaim ini dapat ditambahkan oleh pelanggan jika diperlukan untuk menentukan kebijakan akses di sisi penyimpanan.
- Untuk informasi khusus vendor lainnya, tanyakan kepada penyedia platform yang kompatibel dengan S3 Anda.
Menggunakan otorisasi pass-through (STS) pada penyimpanan objek yang kompatibel dengan S3
Ikuti dokumentasi yang disediakan oleh penyedia penyimpanan yang kompatibel dengan S3 untuk menyiapkan idP OIDC eksternal. Untuk menyiapkan penyedia identitas, sebagian besar nilai berikut umumnya diperlukan.
- Titik akhir konfigurasi penyedia OIDC.
- Sidik jari dari penyedia OIDC.
- Otorisasi pass-through ke penyimpanan objek yang kompatibel dengan S3
Batasan otorisasi transmisi langsung (STS)
- Otorisasi pass-through (STS) ke penyimpanan objek yang kompatibel dengan S3 didukung untuk login SQL Server dengan menggunakan autentikasi Windows.
- Token STS tidak dapat digunakan untuk BACKUP ke URL untuk penyimpanan objek yang kompatibel dengan S3.
- ADFS dan SQL Server harus berada di domain yang sama. Endpoint transportasi ADFS Windows harus dinonaktifkan dari jaringan eksternal.
- ADFS harus memiliki AD (Direktori aktif) yang sama dengan SQL Server sebagai penyedia kepercayaan klaim.
- Penyimpanan yang kompatibel dengan S3 harus memiliki layanan titik akhir STS yang memungkinkan klien meminta kredensial sementara menggunakan JWT identitas eksternal.
- Kueri OPENROWSET dan CETAS (Buat Tabel Eksternal sebagai Pilih) didukung untuk format parquet dan CSV.
- Secara default, waktu perpanjangan tiket Kerberos adalah tujuh hari dan masa pakai adalah 10 jam di Windows dan 2 jam di Linux. SQL Server memperbarui token Kerberos pengguna hingga tujuh hari. Setelah tujuh hari tiket pengguna kedaluwarsa, akibatnya pengalihan ke penyimpanan yang kompatibel dengan S3 akan gagal. Dalam hal ini, SQL Server harus mengautentikasi ulang pengguna untuk mendapatkan tiket Kerberos baru.
- ADFS 2019 dengan Windows Server 2019 didukung.
- Panggilan S3 REST API menggunakan tanda tangan AWS versi 4.
PolyBase pada SQL Server pada Linux
Untuk PolyBase di SQL Server di Linux, diperlukan lebih banyak konfigurasi.
- TLS harus dikonfigurasi. Diasumsikan bahwa semua koneksi akan ditransmisikan dengan aman melalui HTTPS bukan HTTP. Titik akhir divalidasi oleh sertifikat yang diinstal pada Host OS SQL Server.
- Manajemen sertifikat berbeda di Linux. Tinjau dan ikuti konfigurasi yang dirinci dalam dukungan Linux untuk penyimpanan yang kompatibel dengan S3.