Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2022 (16.x)
Bu makalede, S3 uyumlu nesne depolama alanında dış verileri sorgulamak için PolyBase'in nasıl kullanılacağı açıklanmaktadır.
SQL Server 2022 (16.x), S3 uyumlu herhangi bir nesne depolama alanına bağlanma olanağı sunar. Kimlik doğrulaması için iki seçenek vardır: temel kimlik doğrulaması veya doğrudan yetkilendirme (STS yetkilendirmesi olarak da bilinir).
Statik kimlik bilgileri olarak da bilinen Temel Kimlik Doğrulaması, kullanıcının ve'yi access key id SQL Server'da depolamasını secret key id gerektirir. Kullanıcı gerektiğinde kimlik bilgilerini açıkça iptal eder ve döndürür. Ayrıntılı erişim denetimi, yöneticinin her oturum açma için statik kimlik bilgilerini yönetmesini gerektirir; onlarca veya yüzlerce benzersiz kimlik bilgisi ile çalışırken bu yaklaşım zor olabilir.
Doğrudan geçiş (STS) yetkilendirmesi, S3 uyumlu nesne depolama alanına erişmek için SQL Server'ın kendi kullanıcı kimliklerinin kullanımını etkinleştirerek bu sorunlara yönelik bir çözüm sunar. S3 uyumlu nesne depolama, Güvenli Belirteç Hizmeti'ni (STS) kullanarak geçici bir kimlik bilgisi atama özelliğine sahiptir. Bu kimlik bilgileri kısa vadeli ve dinamik olarak oluşturulur.
Bu makale hem Temel Kimlik Doğrulaması hem de doğrudan yetkilendirme (STS) yetkilendirmesi için yönergeler içerir.
Önkoşullar
S3 uyumlu nesne depolama tümleştirme özelliklerini kullanmak için aşağıdaki araçlara ve kaynaklara ihtiyacınız vardır:
- SQL Server için PolyBase özelliğini yükleyin.
- SQL Server Management Studio'yu (SSMS) yükleyin.
- S3 uyumlu depolama.
- Bir S3 bucket oluşturuldu. Demetler SQL Server'dan oluşturulamaz veya yapılandırılamaz.
- Bir kullanıcı (
Access Key ID) ve sizin bildiğiniz gizli (Secret Key ID). İkisine de S3 nesne depolama uç noktasında kimlik doğrulaması yapmanız gerekir. - Aktarım Katmanı Güvenliği (TLS) yapılandırılmalıdır. Tüm bağlantıların HTTP üzerinden değil HTTPS üzerinden güvenli bir şekilde iletileceği varsayılır. Uç nokta, SQL Server İşletim Sistemi Konağı'nda yüklü bir sertifika tarafından doğrulanır. TLS ve sertifikalar hakkında daha fazla bilgi için bkz. Bağlantıları şifrelemek için SQL Server Veritabanı Altyapısını yapılandırma.
İzinler
Proxy kullanıcısının bir S3 demetinin içeriğini okuması için kullanıcının (Access Key ID) S3 uç noktasında aşağıdaki eylemleri gerçekleştirmesine izin verilmelidir:
-
GetBucketLocation ve GetObject izinleri S3 nesne depolama alanından belirli bir dosyayı okumak için gereklidir.
-
ListBucket, tek bir dosya yerine bir S3 klasör konumuna işaret eden dış tablolar veya OPENROWSET sorguları için gereklidir.
ListBucket izinleri olmadan hatayı alırsınız
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, tek bir dosya yerine bir S3 klasör konumuna işaret eden dış tablolar veya OPENROWSET sorguları için gereklidir.
ListBucket izinleri olmadan hatayı alırsınız
- S3 nesne depolama alanına yazmak için PutObject izni gerekir.
Bahşiş
S3 uyumlu nesne depolama sağlayıcınız ek API işlemi izinleri gerektirebilir veya API işlemlerine yönelik izinleri içeren roller için farklı adlandırma kullanabilir. Ürün belgelerinize bakın.
PolyBase'i etkinleştirme
sp_configure'de PolyBase'i etkinleştirme:EXEC sp_configure @configname = 'polybase enabled', @configvalue = 1; GO RECONFIGURE GOAyarı onaylayın:
EXEC sp_configure @configname = 'polybase enabled';
Kimlik doğrulama
Devam etmek için Temel Kimlik Doğrulaması veya pasif iletişim (STS) yetkilendirmesiseçin.
Temel Kimlik Doğrulaması
Veritabanı kapsamlı bir kimlik bilgisi oluşturmadan önce, kullanıcı veritabanında kimlik bilgisini korumak için bir anahtar bulunmalıdır. Daha fazla bilgi için bkz. CREATE MASTER KEY .
Temel Kimlik Doğrulaması ile veritabanı kapsamı kimlik bilgisi oluşturma
Aşağıdaki örnek betik, SQL Server örneğindeki s3-dc veritabanında veritabanı kapsamlı bir kimlik bilgisi database_name oluşturur. Daha fazla bilgi için bkz. 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
Veritabanı kapsamlı yeni kimlik bilgilerini sys.database_scoped_credentials doğrulayın:
SELECT * FROM sys.database_scoped_credentials;
Temel Kimlik Doğrulaması ile dış veri kaynağı oluşturma
Aşağıdaki örnek betik, SQL Server'daki kaynak kullanıcı veritabanında bir dış veri kaynağı s3_ds oluşturur. Dış veri kaynağı, s3_dc veritabanı kapsamlı kimlik bilgilerine başvurur. Daha fazla bilgi için bkz. CREATE EXTERNAL DATA SOURCE.
CREATE EXTERNAL DATA SOURCE s3_ds
WITH
( LOCATION = 's3://<ip_address>:<port>/'
, CREDENTIAL = s3_dc
);
GO
yeni dış veri kaynağını sys.external_data_sourcesile doğrulayın.
SELECT * FROM sys.external_data_sources;
Sanal barındırılan URL'ler
Bazı S3 uyumlu depolama sistemleri (Amazon Web Services gibi), S3 demetinde klasör yapısını uygulamak için virtual_hosted stil URL'leri kullanır. S3 demetindeki klasör konumlarına işaret eden dış tablolar oluşturulmasına izin vermek için aşağıdaki CONNECTION_OPTIONS ekleyin, örneğin CONNECTION_OPTIONS = '{"s3":{"url_style":"virtual_hosted"}}'.
Bu CONNECTION_OPTIONS ayarı olmadan, bir klasörü işaret eden dış tabloları sorgularken aşağıdaki hatayı gözlemleyebilirsiniz:
Msg 13807, Level 16, State 1, Line 23
Content of directory on path '/<folder_name>/' cannot be listed.
Temel Kimlik Doğrulamasının Sınırlamaları
- S3 uyumlu nesne depolama için, müşterilerin içinde bir
:karakter bulunan erişim anahtarı kimliklerini oluşturmasına izin verilmez. - Toplam URL uzunluğu 259 karakterle sınırlıdır. Bu,
s3://<hostname>/<objectkey>259 karakteri aşmaması gerektiği anlamına gelir.s3://bu sınıra doğru sayıldığından yol uzunluğu 259-5 = 254 karakteri aşamaz. - SQL kimlik bilgisi adı UTF-16 biçiminde 128 karakterle sınırlıdır.
- Eğer bu kimlik bilgisi yeni bir dış veri kaynağı için değilse, oluşturulan kimlik bilgisi adı depolama birimi adını içermelidir.
- Erişim Anahtarı Kimliği ve Gizli Anahtar Kimliği yalnızca alfasayısal değerler içermelidir.
Geçişli (STS) yetkilendirme
Şunlar için geçerlidir: Yalnızca SQL Server 2022 (16.x).
S3 uyumlu nesne depolama, Güvenli Belirteç Hizmeti (STS) kullanarak geçici bir kimlik bilgisi atama özelliğine sahiptir. Bu kimlik bilgileri kısa vadeli ve dinamik olarak oluşturulur.
Doğrudan yetkilendirme, OpenID Connect (OIDC) kimlik sağlayıcısı olarak davranan Active Directory Federasyon Hizmeti'ne (ADFS) dayanır. S3 uyumlu nesne depolama STS'siyle iletişim kurmak, STS istemek ve SQL Server'a geri sağlamak ADFS'ye bağlıdır.
SQL Server'da geçiş (STS) yetkilendirmesi kullanma
TLS, SQL Server ile S3 uyumlu konak sunucusu arasında sertifikalarla yapılandırılmalıdır. Tüm bağlantıların HTTP üzerinden değil HTTPS üzerinden güvenli bir şekilde iletileceği varsayılır. Uç nokta, SQL Server İşletim Sistemi Konağı'nda yüklü bir sertifika tarafından doğrulanır. Genel veya kendi kendine imzalanan sertifikalar desteklenir.
Kimliği S3 uyumlu nesne depolama alanına geçirmek için kullanılacak veritabanı kapsamlı bir kimlik bilgisi oluşturun. Daha fazla bilgi için bkz. CREATE DATABASE SCOPED CREDENTIAL. Aşağıdaki örnekte olduğu gibi:
CREATE DATABASE SCOPED CREDENTIAL CredName WITH IDENTITY = 'User Identity'S3 uyumlu nesne depolama alanına erişmek için bir dış veri kaynağı oluşturun. hem ADFS hem de STS için gerekli bilgileri bildirmek için JSON biçimi olarak
CONNECTION_OPTIONSkullanın. Daha fazla bilgi için bkz. CREATE EXTERNAL DATA SOURCE. Aşağıdaki örnekte olduğu gibi: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" } ] }' ] }
-
ADFSseçenekleri, ADFS'deki SQL Server'ın Windows aktarım uç noktasını verelying_partytanımlayıcıyı belirtir. -
STSseçenekleri,AssumeRoleWithWebIdentityisteği için S3 uyumlu nesne depolama STS uç noktasını ve parametrelerini belirtir.AssumeRoleWithWebIdentity, kimlik doğrulaması için kullanılan geçici güvenlik kimlik bilgilerini almak için kullanılan yöntemdir. İsteğe bağlı parametreler de dahil olmak üzere parametrelerin tam listesi ve varsayılan değerler hakkında bilgi için STS API Başvurusubölümüne bakın.
Active Directory ile geçiş (STS) yetkilendirmesi kullanma
- S3 uyumlu depolamaya geçişe izin vermek için AD'deki SQL Server kullanıcı hesapları özelliklerini duyarsız olarak işaretleyin.
- SQL Server SPN (Hizmet Asıl Adları) ile ilgili kullanıcı için ADFS hizmetlerine Kerberos kısıtlanmış temsiline izin verin.
Active Directory Federasyon Hizmeti ile doğrudan geçiş (STS) yetkilendirmesi kullanma
- SQL Server'ı Active Directory'de bir talep sağlayıcı güven ilişkisi olarak etkinleştirin.
- ADFS için kimlik doğrulama yöntemleri olarak intranet windows kimlik doğrulamasına izin verin.
- İntranetinizde Windows aktarım hizmeti uç noktasını etkinleştirin.
- OIDC (OpenID Connect) uç noktalarını etkinleştirin.
- SQL Server'ı güvenilen taraf güvencesi olarakkaydedin.
- Benzersiz bir tanımlayıcı sağlayın.
- JWT (JSON Web Belirteci) için talep kuralları ayarlayın.
- Özel talepler - Bu talepler, depolama tarafında erişim ilkesini belirlemek için gerekliyse müşteriler tarafından eklenebilir.
- Satıcıya özgü daha fazla bilgi için S3 uyumlu platform sağlayıcınıza başvurun.
S3 uyumlu nesne depolamada geçiş (STS) yetkilendirmesini kullanma
Dış OIDC kimlik sağlayıcısını ayarlamak için S3 uyumlu depolama sağlayıcısı tarafından sağlanan belgeleri izleyin. Kimlik sağlayıcısını ayarlamak için genellikle aşağıdaki değerler gereklidir.
- OIDC sağlayıcısının yapılandırma uç noktası.
- OIDC sağlayıcısının parmak izi.
- S3 uyumlu nesne depolama için doğrudan yetkilendirme
Geçişli (STS) yetkilendirme sınırlamaları
- Windows kimlik doğrulaması ile SQL Server oturum açma işlemleri için S3 uyumlu nesne depolamaya geçiş yetkilendirmesi (STS) desteklenir.
- STS belirteçleri , S3 uyumlu nesne depolama için URL'ye YEDEKLEME için kullanılamaz.
- ADFS ve SQL Server aynı etki alanında olmalıdır. ADFS Windows aktarım uç noktası extranetten devre dışı bırakılmalıdır.
- ADFS, talep güven sağlayıcısıyla SQL Server ile aynı AD'ye (Active Directory) sahip olmalıdır.
- S3 uyumlu depolama, istemcilerin dış kimliklerin JWT'sini kullanarak geçici kimlik bilgileri istemesine olanak tanıyan STS uç nokta hizmetine sahip olmalıdır.
- OPENROWSET ve CETAS (Seçim Olarak Dış Tablo Oluştur) sorguları Parquet ve CSV biçimi için desteklenmektedir.
- Varsayılan olarak, Kerberos bileti yenileme süresi yedi gündür ve yaşam süresi Windows'ta 10 saat ve Linux'ta 2 saattir. SQL Server, kullanıcının Kerberos belirtecini yedi güne kadar yeniler. Yedi gün sonra kullanıcının biletinin süresi dolar, bu nedenle S3 uyumlu depolamaya geçiş başarısız olur. Bu durumda, SQL Server'ın yeni bir Kerberos bileti almak için kullanıcının kimlik doğrulamasını yeniden yapması gerekir.
- Windows Server 2019 ile ADFS 2019 desteklenir.
- S3 REST API çağrıları AWS signature sürüm 4'i kullanır.
Linux üzerinde SQL Server'da PolyBase
Linux üzerinde SQL Server'da PolyBase için daha fazla yapılandırma gerekir.
- TLS yapılandırılmalıdır. Tüm bağlantıların HTTP üzerinden değil HTTPS üzerinden güvenli bir şekilde iletileceği varsayılır. Uç nokta, SQL Server İşletim Sistemi Konağı'nda yüklü bir sertifika tarafından doğrulanır.
- Linux'ta sertifika yönetimi farklıdır. S3 uyumlu depolama içinLinux desteği bölümünde ayrıntılarıyla belirtilen yapılandırmayı gözden geçirin ve izleyin.
İlgili içerik
- SQL Server'da PolyBase ile veri sanallaştırma
- PolyBase'i S3 uyumlu nesne depolama dış verilere erişecek şekilde yapılandırma
- PolyBase ile S3 uyumlu nesne depolama alanında parquet dosyasını sanallaştırma
- PolyBase Transact-SQL başvuru