Zephyrnet Logosu

Active Directory Federasyon Hizmetleri ile AWS Çin Bölgelerinde Amazon Redshift kümelerine birleşik erişim

Tarih:

Birçok müşteri, çoklu oturum açma erişimi için kullanıcı kimliklerini kimlik sağlayıcılar (IdP'ler) aracılığıyla zaten yönetmektedir. Active Directory Federasyon Hizmetleri (AD FS) gibi bir IDP ile, aşağıdakilere federe erişim ayarlayabilirsiniz. Amazon Kırmızıya Kaydırma kümeler, iş gruplarına göre veritabanı nesnelerinin izinlerini denetlemek için bir mekanizma olarak. Bu, sorunsuz bir kullanıcı deneyimi sağlar ve son kullanıcılar için kimlik doğrulama ve izinlerin yönetimini merkezileştirir. Daha fazla bilgi için, "Active Directory Federasyon Hizmetleri (AD FS) ile Amazon Redshift kümenize federasyon erişimi" blog gönderisi dizisine bakın (parçası 1, parçası 2).

Uygulamadaki farklılıklar nedeniyle Çin'de Amazon Web Servisleri, müşterilerin konfigürasyonları buna göre ayarlaması gerekir. Örneğin, AWS Çin Bölgeleri (Pekin ve Ningxia) ayrı bir AWS bölümü, bu nedenle tüm Amazon Kaynak Adları (ARN'ler) son eki içerir -cn. AWS Çin Bölgeleri ayrıca farklı bir etki alanında barındırılır: www.amazonaws.cn.

Bu gönderi, AWS Çin Bölgelerinde Amazon Redshift'e birleşik erişim kurmak için adım adım bir prosedür sunar. Dikkat etmeniz gereken temel farklılıkları belirler ve yaygın hatalar için bir sorun giderme kılavuzu sağlar.

Çözüme genel bakış

Aşağıdaki diyagram, süreci göstermektedir Güvenlik Onayı Biçimlendirme Dili 2.0 AWS Çin Bölgelerinde Amazon Redshift'e (SAML) tabanlı federasyon erişimi. İş akışı aşağıdaki ana adımları içerir:

  1. SQL istemcisi, AD FS'ye bir kullanıcı adı ve parola sağlar.
  2. AD FS, kimlik bilgilerini doğrular ve SAML yanıtı döndürür başarılıysa.
  3. SQL istemcisi bir API çağrısı yapar. AWS Security Token Hizmeti (AWS STS) için SAML ile tercih edilen bir rol üstlenmek.
  4. AWS STS, karşılıklı güvene dayalı olarak SAML yanıtının kimliğini doğrular ve başarılı olursa geçici kimlik bilgilerini döndürür.
  5. SQL istemcisi, geri dönmek için Amazon Redshift ile iletişim kurar geçici kimlik bilgilerine sahip bir veritabanı kullanıcısı, ardından veritabanı gruplarına katılmak ve belirtilen veritabanına bağlanmak için kullanır.

Mimarlık

İzlenecek yolu aşağıdaki üst düzey adımlarda düzenliyoruz:

  1. AWS Çin Bölgeleri için bir AD FS bağlı taraf güveni yapılandırın ve temel talep kurallarını tanımlayın.
  2. bir provizyon AWS Kimlik ve Erişim Yönetimi (IAM) kimlik sağlayıcı ve roller.
  3. Kalan bağlı taraf güveninin talep kurallarını IAM kaynaklarına göre tamamlayın.
  4. JDBC tabanlı bir SQL istemcisi aracılığıyla birleşik erişimle Amazon Redshift'e bağlanın.

Önkoşullar

Bu gönderi, aşağıdaki ön koşullara sahip olduğunuzu varsayar:

  • Windows Server 2016
  • AD'de kullanıcılar ve gruplar oluşturma yeteneği
  • AD FS'de güvenen taraf güvenini yapılandırma ve talep kurallarını tanımlama yeteneği
  • Bir AWS hesabı
  • IAM kimlik sağlayıcıları, rolleri sağlamak için yeterli izinler, Amazon Sanal Özel Bulut (Amazon VPC) ile ilgili kaynaklar ve aracılığıyla bir Amazon Redshift kümesi AWS Bulut Geliştirme Kiti (AWS CDK'sı)

AD FS güvenen taraf güvenini yapılandırın ve talep kurallarını tanımlayın

Bağlı bir taraf güveni, AWS ve AD FS'nin birbirleriyle iletişim kurmasına olanak tanır. Aynı AD FS'de aynı anda hem AWS Çin Bölgeleri hem de AWS Bölgeleri için iki bağlı taraf güvenini yapılandırmak mümkündür. AWS Çin Bölgeleri için farklı bir SAML meta veri belgesi at https://signin.amazonaws.cn/static/saml-metadata.xml. Bağlı olan tarafın AWS Çin Bölgeleri için tanımlayıcısı: urn:amazon:webservices:cn-north-1, AWS Küresel Bölgeler için ise urn:amazon:webservices. Bu gönderide daha sonra kullanmak üzere bu tanımlayıcıyı not edin.

Bağlı taraf meta veri XML'i

AD grupları ve kullanıcılar ekleyin

SAML tabanlı federasyonla, son kullanıcılar bir IAM rolü üstlenir ve bunu birden çok veritabanı (DB) grubuna katılmak için kullanır. Bu tür roller ve DB grupları üzerindeki izinler, AD grupları tarafından etkin bir şekilde yönetilebilir. AD grubu adlarında, bunları ayırt etmek için rollere ve DB grubu talep kurallarına eşlemeye yardımcı olan farklı önekler kullanırız. Farklı AWS kaynaklarıyla eşleştirildiklerinden, iki tür AD grubunu doğru bir şekilde ayırt etmek önemlidir.

Bir örnekle yolumuza devam ediyoruz. İş dünyasında iki rol olduğunu varsayalım: veri bilimcisi ve veri mühendisi ve iki DB grubu: onkoloji ve eczacılık. Veri bilimcileri her iki gruba da katılabilir ve veri mühendisleri yalnızca eczane grubuna katılabilir. AD tarafında, her rol ve grup için bir AD grubu tanımlıyoruz. AWS tarafında, her bir rol için bir IAM rolü ve her bir DB grubu için bir Amazon Redshift DB grubu tanımlıyoruz. Clement'in bir veri bilimcisi olduğunu ve Jimmy'nin bir veri mühendisi olduğunu ve her ikisinin de zaten AD tarafından yönetildiğini varsayalım. Aşağıdaki diyagram bu ilişkiyi göstermektedir.

AD grubu ve IAM rolüne ve DB grubuna kullanıcı eşlemesi

Yapabilirsin AD grupları ve kullanıcıları oluşturun ya ile AWS Komut Satırı Arayüzü (AWS CLI) veya AWS Yönetim Konsolu. README dosyasında örnek komutlar sağlıyoruz. GitHub repo.

Alt adımları izleyin a için o Adım 2'de AD FS ile JDBC veya ODBC Çoklu Oturum Açma kimlik doğrulamasını ayarlama bağlı tarafı AWS Çin Bölgeleri için doğru SAML meta veri belgesiyle kurmak ve ilk üç talep kuralını tanımlamak (NameId, RoleSessionName, ve Get AD Groups). IAM kimlik sağlayıcısı ve roller sağlandıktan sonra devam ederiz.

Bir IAM kimlik sağlayıcısı ve rolleri sağlayın

Bir IAM kimlik sağlayıcısı sağlayarak AWS ile AD güvenini oluşturursunuz. IAM kimlik sağlayıcısı ve üstlenilen roller bir AWS hesabında olmalıdır, aksi takdirde federe erişim sırasında aşağıdaki hata mesajını alırsınız: "Ana, üstlenilen Rolün hesabının dışında var." Kaynakları sağlamak için şu adımları izleyin:

  1. Meta veri dosyasını şuradan indirin: https://yourcompany.com/FederationMetadata/2007-06/FederationMetadata.xml AD FS sunucunuzdan.
  2. Yerel olarak kaydedin: /tmp/FederationMetadata.xml.
  3. Çıkış yapmak GitHub'daki AWS CDK kodu.
  4. Adlı yığını dağıtmak için AWS CDK kullanın redshift-cn:
export AWS_ACCOUNT=YOUR_AWS_ACCOUNT
export AWS_DEFAULT_REGION=cn-north-1
export AWS_PROFILE=YOUR_PROFILE cdk deploy redshift-cn --require-approval never

AWS CDK'si sürüm 2.0 veya daha yeni olmalıdır. Test amaçlı olarak şunları kullanabilirsiniz: AdministratorAccess dağıtım için yönetilen ilke. Üretim kullanımı için en az ayrıcalığa sahip bir profil kullanın.

Aşağıdaki tablo, AWS CDK paketinin sağladığı kaynakları özetlemektedir.

Hizmet Kaynak saymak notlar
Amazon VPC'si VPC 1 .
alt ağ 2 .
İnternet ağ geçidi 1 .
Rota tablosu 1 .
Güvenlik grubu 1 .
IAM SAML Kimlik sağlayıcısı 1 .
Rol 3 Küme için 1 hizmet rolü
2 birleşik rol
Amazon Kırmızıya Kaydırma Küme 1 1 düğüm, dc2.large
AWS Sırları Yöneticisi Gizli 1 .

Bu örnekte, Herkese Açık Amazon Redshift kümesinin ayarı Etkin basitlik için. Ancak, bir üretim ortamında bu ayarı devre dışı bırakmalı ve kümeyi özel bir alt ağ grubuna yerleştirmelisiniz. bkz. Yerel makinemden özel bir Amazon Redshift kümesine nasıl erişebilirim? daha fazla bilgi için.

Bir güvenlik grubu yapılandırın

Amazon Redshift kümesine bağlantıya izin vermek için IP adresinize bir gelen kuralı ekleyin.

  1. Adlı güvenlik grubunu bulun RC Default Security Group.
  2. Makinenizin genel IP adresini edinin.
  3. Bu IP adresi için bir gelen kuralı ve Amazon Redshift 5439 için varsayılan bağlantı noktası ekleyin.

Kalan hak talebi kurallarını tamamlayın

IAM kimlik sağlayıcısını ve rollerini sağladıktan sonra SAML rollerini tanımlamak için bir talep kuralı ekleyin. Adlı bir müşteri talep kuralı ekliyoruz Roles. Önekli AD gruplarını bulur role_ ve onu birleşik bir ARN dizisiyle değiştirir. Bölümün bulunduğu kaynakların ARN'lerine dikkat edin. aws-cn. değiştirmek AWS_ACCOUNT AWS hesap kimliğinizle. Aşağıdaki tablo, seçilen AD gruplarının IAM rol ARN'lerine nasıl dönüştürüldüğünü gösterir.

Seçili AD Grubu Dönüştürülen IAM Rolü ARN
role_data_scientist arn:aws-cn:iam::AWS_ACCOUNT:role/rc_data_scientist
role_data_engineer arn:aws-cn:iam::AWS_ACCOUNT:role/rc_data_engineer

Güvenen taraf talep kuralı

Talep kuralını eklemek için Windows Sunucunuzda AD FS yönetim konsolunu açın ve aşağıdaki adımları tamamlayın:

  1. Klinik Güvenen Parti Güvenleri, ardından AWS China için güvenilen tarafı seçin.
  2. Klinik Hak Talebi Düzenleme Politikasını Düzenle, Daha sonra seçmek Rol Ekle.
  3. Üzerinde Talep kuralı şablonu menü seç Özel Bir Kural Kullanarak Talep Gönderme.
  4. İçin Talep kuralı adı, girmek Roles.
  5. içinde Özel kural bölümüne aşağıdakileri girin:
c:[Type == "http://temp/variable", Value =~ "(?i)^role_"]
=> issue(Type = "https://aws.amazon.com/SAML/Attributes/Role",
Value = RegExReplace(c.Value, "role_", "arn:aws-cn:iam::AWS_ACCOUNT:saml-provider/rc-provider,arn:aws-cn:iam::AWS_ACCOUNT:role/rc_"));

isteğe bağlı parametreler of DbUser, AutoCreate, ve DbGroups JDBC bağlantı parametreleri veya SAML öznitelik değerleri aracılığıyla sağlanabilir. Kullanıcı federasyonunun faydası, kullanıcıları tek bir yerden merkezi olarak yönetmektir. bu yüzden DbUser değer, SAML özniteliği tarafından otomatik olarak sağlanmalıdır. bu AutoCreate parametre her zaman olmalıdır true, aksi takdirde önceden DB kullanıcıları oluşturmanız gerekir. Son olarak, DbGroups parametre, bu ilişkinin AD'de tanımlanması koşuluyla SAML öznitelikleri tarafından sağlanabilir.

Özetlemek gerekirse, en azından sağlamanızı öneririz DbUser ve AutoCreate son kullanıcının daha kısa bağlantı dizeleri oluşturarak zamandan tasarruf edebilmesi için SAML özniteliklerinde. Örneğimizde, SAML öznitelikleri aracılığıyla üç parametreyi de sağlıyoruz.

  1. Adlı bir müşteri talep kuralı ekleyin DbUser. Değer olarak bir e-posta adresi kullanıyoruz DbUser:
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory",
types = ("https://redshift.amazon.com/SAML/Attributes/DbUser"),
query = ";mail;{0}", param = c.Value);

Ayrıca, genellikle e-posta adresinin kullanıcı adı olan bir Güvenlik Hesapları Yöneticisi (SAM) hesap adı da seçebilirsiniz. Bir e-posta adresi kullanmak, IAM rol politikası ayarında önemli bir rol oynar. Bu konuyu daha sonra tekrar ele alacağız.

  1. Adlı özel talep kuralını ekleyin AutoCreate:
=> issue(type = "https://redshift.amazon.com/SAML/Attributes/AutoCreate", value = "true");

  1. Adlı bir müşteri talep kuralı ekleyin DbGroups. Önekli tüm AD gruplarını bulur. group_ ve bunları DbGroups için değerler olarak listeler:
c:[Type == "http://temp/variable", Value =~ "(?i)^group_"]
=> issue(Type = "https://redshift.amazon.com/SAML/Attributes/DbGroups", Value = c.Value);

Önceki ayarın doğru olduğunu şu şekilde test edebilirsiniz: SAML yanıtını tarayıcınız aracılığıyla alma.

  1. Türkiye Dental Sosyal Medya Hesaplarından bizi takip edebilirsiniz. https://yourcompany.com/adfs/ls/IdpInitiatedSignOn.aspx Windows Sunucunuzda, kullanıcıyla oturum açın clementve aşağıdaki SAML özniteliklerinin mevcut olup olmadığını kontrol edin. kullanıcı için jimmy, rol rc_data_engineer ve DB grubu yalnızca içerir group_pharmacy.
<AttributeStatement> <Attribute Name="https://aws.amazon.com/SAML/Attributes/RoleSessionName"> <AttributeValue>clement@yourcompany.com</AttributeValue> </Attribute> <Attribute Name="https://aws.amazon.com/SAML/Attributes/Role"> <AttributeValue>arn:aws-cn:iam::AWS_ACCOUNT:saml-provider/rc-provider,arn:aws-cn:iam::AWS_ACCOUNT:role/rc_data_scientist</AttributeValue> </Attribute> <Attribute Name="https://redshift.amazon.com/SAML/Attributes/DbUser"> <AttributeValue>clement@yourcompany.com</AttributeValue> </Attribute> <Attribute Name="https://redshift.amazon.com/SAML/Attributes/AutoCreate"> <AttributeValue>true</AttributeValue> </Attribute> <Attribute Name="https://redshift.amazon.com/SAML/Attributes/DbGroups"> <AttributeValue>group_pharmacy</AttributeValue> <AttributeValue>group_oncology</AttributeValue> </Attribute>
</AttributeStatement>

Önceki SAML öznitelik adlarının AWS Çin Bölgeleri için geçerli olduğu doğrulanmıştır. URL'ler şununla biter: amazon.com. Bunları değiştirmek yanlış amazonaws.cn or amazon.cn.

Bir SQL istemcisi ile Amazon Redshift'e bağlanın

JDBC tabanlı kullanıyoruz SQL Çalışma Tezgahı/J (SQL istemcisi) Amazon Redshift kümesine bağlanmak için. Amazon Redshift, DB kullanıcılarını toplamak için bir DB grubu kullanır. Veritabanı ayrıcalıkları grup düzeyinde toplu olarak yönetilir. Bu yazıda, ayrıcalık yönetimine derinlemesine dalmayacağız. Ancak, önceki iki DB grubunu oluşturmanız gerekir.

  1. Sağlanan kümeye bağlanın ve grupları oluşturun. AWS Management Console'a şu şekilde bağlanabilirsiniz: sorgu düzenleyici geçici kimlik bilgileriyle veya veritabanı kullanıcısı olan bir SQL istemcisi aracılığıyla admin ve şifre. Şifre şurada saklanır: AWS Sırları Yöneticisi. Yukarıdaki işlemler için uygun izinlere ihtiyacınız olabilir.
create group group_oncology;
create group group_pharmacy;

  1. Içindeki talimatları izleyin SQL Workbench/J kullanarak kümenize bağlanın SQL istemcisini ve Amazon Redshift JDBC sürücüsünü indirmek ve kurmak için.

tavsiye ederiz AWS SDK sürücüsüne bağlı kitaplıklara sahip JDBC sürücüsü sürüm 2.1.

  1. Kümenin uç noktası aracılığıyla bağlanabilir olduğunu test edin. Birincil kullanıcı adı admin. Sırlar Yöneticisi aracılığıyla kümenin parolasının gizli değerini alırsınız. belirtmek DSILogLevel ve LogPath için sürücü günlüklerini topla ve teşhise yardımcı olur. Bağlantı dizesi aşağıdaki koda benziyor. Yer değiştirmek CLUSTER_ENDPOINT doğru değerle ve tüm satır kesicileri silin. Okunabilirlik için satırı ayırdık.
jdbc:redshift://CLUSTER_ENDPOINT.cn-north-1.redshift.amazonaws.com.cn:5439/main
;ssl_insecure=true
;DSILogLevel=3
;LogPath=/tmp

AWS Çin Bölgeleri için fazladan bir JDBC sürücü seçeneği loginToRp AWS Çin Bölgeleri için ayrı bir bağlı taraf güveni kurarken ayarlanmalıdır. Bir AD kullanıcısı birden fazla AWS rolüyle eşlenirse, bağlantı dizesinde şunu kullanın: preferred_role federe erişim için üstlenilecek tam rolü belirtmek için.

  1. ARN rolünü doğrudan kopyalayın ve aws-cn bölüm.

Kullanıcı yalnızca bir rolle eşlenirse bu seçenek atlanabilir.

  1. değiştirmek CLUSTER_ID doğru küme tanımlayıcısı ile. Kullanıcı adı için şunu girin yourcompanyclement; şifre için AD'den gelen kimlik bilgisini girin:
jdbc:redshift:iam://CLUSTER_ID:cn-north-1/main
;ssl_insecure=true
;DSILogLevel=3
;LogPath=/tmp
;loginToRp=urn:amazon:webservices:cn-north-1
;plugin_name=com.amazon.redshift.plugin.AdfsCredentialsProvider
;idp_host=adfsserver.yourcompany.com
;preferred_role=arn:aws-cn:iam::AWS_ACCOUNT:role/rc_data_scientist

  1. Bağlandığınızda, aşağıdaki ekran görüntüsünde gösterildiği gibi SQL deyimini çalıştırın.

Kullanıcı ön eki ile IAMA kullanıcının birleşik erişimle bağlandığını ve otomatik olarak oluşturulduğunu gösterir.

Kullanıcıları sorgulamak için SQL Workbench

  1. İsteğe bağlı bir adım olarak, bağlantı dizesinde DbUser, AutoCreate, ve DbGroups parametreleri.

Bağlantı dizesinden gelen parametreler, SAML özniteliklerinden gelenlerden öncedir. En azından ayarlamanızı öneririz DbUser ve AutoCreate SAML öznitelikleri aracılığıyla. AD kullanıcılarında DB gruplarını yönetmek zorsa veya esneklik istiyorsanız, şunu belirtin: DbGroups bağlantı dizesinde. Aşağıdaki koda bakın:

jdbc:redshift:iam://CLUSTER_ID:cn-north-1/main
;ssl_insecure=true
;DSILogLevel=3
;LogPath=/tmp
;loginToRp=urn:amazon:webservices:cn-north-1
;plugin_name=com.amazon.redshift.plugin.AdfsCredentialsProvider
;idp_host=adfsserver.yourcompany.com
;preferred_role=arn:aws-cn:iam::AWS_ACCOUNT:role/rc_data_scientist
;DbUser=clement@yourcompany.com
;AutoCreate=true
;DbGroups=group_oncology

DB kullanıcısı olarak bir e-posta veya SAM hesabı adı kullanın

Rol politikası aşağıdakileri takip eder: GetClusterCredentials'ı kullanmak için örnek ilke. Ayrıca izin verir redshift:DescribeClusters rol, küme uç noktasını ve bağlantı noktasını tanımlayıcısına ve Bölgesine göre sorguladığı için kümede. DB kullanıcısının AD kullanıcısı ile aynı olduğundan emin olmak için, bu gönderide, kontrol etmek için aşağıdaki koşulu kullanıyoruz, nerede ROLE_ID olduğunu benzersiz tanımlayıcı rolün:

{"StringEqualsIgnoreCase": {"aws:userid": "ROLD_ID:${redshift:DbUser}"}}

Örnek ilke aşağıdaki koşulu kullanır:

{"StringEqualsIgnoreCase": {"aws:userid": "ROLD_ID:${redshift:DbUser}@yourcompany.com"}}

Fark ortada. bu aws:userid içeren RoleSessionName, e-posta adresidir. SAM hesap adı, e-posta adresinde @'den önceki dizedir. Bağlantı dizesi parametresi SAML öznitelik parametresinden önce olduğundan, olası durumları aşağıdaki gibi özetliyoruz:

  • SAML özellikleri şunları içeriyorsa: DbUser:
    • Koşul değeri bir etki alanı son eki içeriyorsa:
      • Eğer DbUser SAML öznitelik değeri bir e-posta adresidir, DbUser etki alanı soneki olmadan bağlantı dizesinde olmalıdır.
      • Eğer DbUser SAML öznitelik değeri, bir SAM hesap adıdır, DbUser bağlantı dizesinde atlanabilir. Aksi takdirde, değer bir etki alanı son eki içermemelidir.
    • Koşul değeri bir etki alanı son eki içermiyorsa:
      • Eğer DbUser SAML öznitelik değeri bir e-posta adresidir, DbUser bağlantı dizesinde atlanabilir. Aksi takdirde, değer bir etki alanı son eki içermelidir.
      • Eğer DbUser SAML öznitelik değeri, bir SAM hesap adıdır, DbUser bir etki alanı son ekiyle bağlantı dizesinde olmalıdır.
  • SAML özellikleri içermiyorsa DbUser:
    • Koşul değeri bir etki alanı son eki içeriyorsa, DbUser etki alanı soneki olmadan bağlantı dizesinde olmalıdır.
    • Koşul değeri bir etki alanı son eki içermiyorsa, DbUser bağlantı dizesinde atlanabilir, çünkü RoleSessionName e-posta adresi olan değer DbUser. Aksi takdirde, değer bir etki alanı son eki içermelidir.

IAM politika koşulu karar iş akışı

Sorun giderme

Amazon Redshift'e birleşik erişim, önemsiz olmayan bir süreçtir. Ancak, sorunlar oluştuğunda bölüp ele geçirebileceğimiz daha küçük adımlardan oluşur. Çözüme genel bakışta erişim şemasına bakın. Süreci üç kelime öbeğine ayırabiliriz:

  1. SAML tabanlı federasyon başarılı mı? AD FS'nin tek oturum açma sayfasını ziyaret ederek bunu doğrulayın ve federe rolle konsolda oturum açabildiğinizden emin olun. Bağlı tarafı AWS Çin'e özgü meta veri belgesiyle yapılandırıyor musunuz? SAML yanıtını alın ve hedefin https://signin.amazonaws.cn/saml. SAML sağlayıcısı ARN ve IAM rolü ARN'leri doğru mu? Rolün güven ilişkisinin için doğru değeri içerip içermediğini kontrol edin. SAML:aud. Diğer olası kontrol noktaları için bkz. AWS ile SAML 2.0 federasyonunda sorun giderme.
  2. Rol politikaları doğru mu? SAML tabanlı federasyon başarılı olursa, rol politikalarının doğru olup olmadığını kontrol edin. Sizinkini bu gönderi tarafından sağlananlarla karşılaştırın. Kullandın mı aws nerede aws-cn kullanılmalıdır? İlke koşulu bir etki alanı son eki içeriyorsa, bu doğru etki alanı son eki mi? Üstlenilen rolün bir eylem gerçekleştirme yetkisi olmadığı hatası alırsanız, kullanımda olan etki alanı son ekini alabilirsiniz.
  3. SQL istemcisi başarıyla bağlanıyor mu? Küme tanımlayıcısı doğru mu? Bağlantı dizginizin aşağıdakileri içerdiğinden emin olun. loginToRp seçeneği ve AWS Çin'e güvenen tarafa işaret eder. Birden çok IAM rolü eşlenirse, preferred_role doğru rol ARN ile onlardan biridir. SAML yanıtında rollerin listesini alabilirsiniz. ayarlamayı dene ssl_insecure hata ayıklama için geçici olarak true . Önceki alt bölümü kontrol edin ve DbUser uygun şekilde kullanıldığında veya ayarlandığında DbUser SAML özniteliği ve koşul değeri aws:user. Sürücü günlüklerini açın ve orada hata ayıklama ipuçlarını alın. Bazen önbelleği temizlemek ve yeniden denemek için SQL istemcisini yeniden başlatmanız gerekebilir.

Güvenlik endişeleri

Bir üretim ortamında, bu gönderide kullanılmayan aşağıdaki güvenlik ayarlarını uygulamanızı öneririz.

Amazon Redshift kümesi için aşağıdakileri tamamlayın:

  • Genel olarak erişilebilir seçeneğini devre dışı bırakın ve kümeyi özel veya yalıtılmış bir alt ağ grubunun içine yerleştirin
  • Örneğin, yönetilen bir müşteriyle kümeyi şifreleyin AWS Anahtar Yönetim Hizmeti (AWS KMS) anahtar
  • Ağın VPC'nizden çıkmaması için gelişmiş VPC yönlendirmesini etkinleştirin
  • Kümeyi şu şekilde yapılandırın: Güvenli Yuva Katmanı (SSL) gerektirir ve tek yönlü SSL kimlik doğrulamasını kullanın

IAM federe rolleri için:

  • Eylem için tam DB gruplarını belirtin redshift:JoinGroup. Bir joker karakter kullanmak istiyorsanız, bunun istenmeyen DB gruplarına izin vermediğinden emin olun.
  • Kontrol StringEquals için aws:user Amazon Redshift DB kullanıcısı ile birlikte rol kimliğine karşı. Bu durum için kontrol edilebilir GetClusterCredentials, CreateClusterUser, ve JoinGroup hareketler. Ayrıntılı kodlar için örnek koda bakın.

Amazon Redshift'te DB grubu, bir dizi DB kullanıcısının ayrıcalıklarını yönetmek için kullanılır. Bir DB kullanıcısı, oturum açma oturumu sırasında bazı DB gruplarına katılır ve gruplarla ilişkili ayrıcalıklara sahip olur. Daha önce tartıştığımız gibi, DB gruplarını belirtmek için SAML öznitelik değerini veya bağlantı özelliğini kullanabilirsiniz. Amazon Redshift sürücüsü, bağlantı dizesindeki değeri SAML özniteliğinden gelen değere tercih eder. Sonuç olarak, son kullanıcı bağlantı dizesindeki DB gruplarını geçersiz kılabilir. Bu nedenle, bir DB kullanıcısına verilebilecek ayrıcalıkları sınırlamak için, IAM rol politikası, DB kullanıcısının hangi DB gruplarına güvenli bir şekilde katılmasına izin verileceğini kısıtlamalıdır, aksi takdirde bir güvenlik riski olabilir. Aşağıdaki politika snippet'i böyle bir riski göstermektedir. her zaman takip et en az ayrıcalık ilkesi izin ilkelerini tanımlarken.

{ "Effect": "Allow", "Action": "redshift:JoinGroup", "Resource": "*"
}

Temizlemek

Kaynakları yok etmek ve ücretlendirmeyi durdurmak için aşağıdaki komutu çalıştırın:

cdk destroy redshift-cn --force

AD FS'de oluşturulan kullanıcıları ve grupları kaldırın. Son olarak, artık ihtiyacınız yoksa AD FS'nizdeki AWS Çin Bölgeleri için bağlı taraf güvenini kaldırın.

Sonuç

Bu gönderide, AD FS'ye dayalı birleşik erişimle Çin'deki Amazon Redshift'e nasıl bağlanacağınız konusunda size yol gösterdik. AWS Çin Bölgeleri, diğer AWS Bölgelerinden farklı bir bölümdedir, bu nedenle yapılandırma sırasında özel dikkat göstermelisiniz. Özetle, AWS kaynakları ARN'lerini aşağıdakilerle kontrol etmeniz gerekir: aws-cn bölümü, AWS Çin'e özgü meta veri belgesine sahip SAML tabanlı federasyon ve ekstra bağlantı seçeneklerine sahip bir Amazon Redshift JDBC sürücüsü. Bu gönderi ayrıca aşağıdakiler için farklı kullanım senaryolarını tartışır: redshift:Dbuser parametre ve ortak sorun giderme önerileri sağlar.

Daha fazla bilgi için, bkz. Amazon Redshift Küme Yönetim Kılavuzu. Bu gönderi için kullanılan kodu aşağıda bulun GitHub deposu.


Yazarlar Hakkında


Clement YuanWenjun Yuan
Chengdu, Çin merkezli AWS Profesyonel Hizmetlerde Bulut Altyapısı Mimarıdır. Yeni kurulan şirketlerden uluslararası kuruluşlara kadar çeşitli müşterilerle çalışarak, son teknoloji bulut teknolojileriyle çözümler oluşturmalarına ve uygulamalarına ve bulut keşiflerinde daha fazlasını elde etmelerine yardımcı oluyor. Boş zamanlarında şiir okumayı ve dünyayı dolaşmayı sever.

Khoa NguyenễnKhoa Nguyen AWS Profesyonel Hizmetlerde Büyük Veri Mimarıdır. Büyük Veri ve AWS hizmetlerinde uzmanlık sağlayarak müşterilerin iş sonuçlarını hızlandırmak için büyük kurumsal müşteriler ve AWS iş ortaklarıyla birlikte çalışır.

Yewei Li Şanghay, Çin merkezli AWS Profesyonel Hizmetlerde bir Veri Mimarıdır. AWS'de veri ambarı ve veri gölü çözümleri tasarlamak ve oluşturmak için çeşitli kurumsal müşterilerle birlikte çalışır. Boş zamanlarında kitap okumayı ve spor yapmayı sever.

spot_img

En Son İstihbarat

spot_img

Bizimle sohbet

Merhaba! Size nasıl yardım edebilirim?