Rol tabanlı tek oturum açma (SSO) yoluyla bir RAM rolünü üstlenerek Hologres'e erişebilirsiniz.
Genel bilgiler
Alibaba Cloud kurumsal kullanıcıları genellikle konsola kullanıcı adı ve şifre ile giriş yapar. Güvenlik gereksinimleri sıkılaştıkça birçok şirket kimlik doğrulamayı merkezi hale getirmek için rol tabanlı SSO'yu tercih eder. Daha fazla bilgi için bkz. SAML tabanlı rol SSO'ya genel bakış.
Senaryolar
Daha katı güvenlik düzenlemelerini karşılamak ve kimlik doğrulamayı merkezi hale getirmek amacıyla şirketler genellikle SSO benimser; bu sayede kullanıcılar bir kez oturum açarak tüm güvenilir uygulamalara erişebilir. Hologres, rol tabanlı SSO'yu destekler. Daha fazla bilgi için bkz. SAML tabanlı rol SSO'ya genel bakış. Bu özellik sayesinde kurumsal hesabınızla bir RAM rolünü üstlenip bir Hologres örneğine erişebilirsiniz. Erişim izinleri RAM rolü tarafından kontrol edilir. 
-
Kullanıcı bir tarayıcı açar ve kimlik sağlayıcısının (IdP) oturum açma sayfasında hedef hizmet olarak Alibaba Cloud'u seçer.
Örneğin, kurumsal IdP'niz Microsoft Active Directory Federation Services (AD FS) ise oturum açma URL'si AD FS oturum açma sayfası olur; burada
<adfsservicename>AD FS hizmetinizin adıdır.NotBazı IdP'ler, kullanıcıların Alibaba Cloud'u temsil eden SSO uygulamasını seçebilmesi için önce oturum açmasını gerektirir.
IdP bir SAML yanıtı oluşturur ve bunu tarayıcıya döndürür.
Tarayıcı SSO hizmeti sayfasına yönlendirilir ve SAML yanıtını SSO hizmetine iletir.
-
SSO hizmeti, SAML yanıtını kullanarak Alibaba Cloud Security Token Service'ten (STS) geçici güvenlik kimlik bilgileri ister ve Alibaba Cloud Management Console için bir oturum açma URL'si oluşturur.
NotSAML yanıtı birden fazla RAM rolüyle eşlenen öznitelikler içeriyorsa kullanıcıdan Alibaba Cloud'a erişmek için bir rol seçmesi istenir.
SSO hizmeti URL'yi tarayıcıya döndürür.
Tarayıcı belirtilen URL'ye yönlendirilir ve kullanıcı belirtilen RAM rolü olarak Alibaba Cloud Management Console'da oturum açmış olur. Kullanıcı daha sonra bu rolü üstlenerek Hologres örneğine erişir.
Hologres'te desteklenen erişim yöntemleri
Hologres aşağıdaki iki erişim yöntemini destekler:
-
Bir cloud hesap (Alibaba Cloud hesabı veya RAM kullanıcısı) kullanarak Hologres'e erişin.
Kullanıcı adı ve şifre girerek Alibaba Cloud Management Console'da oturum açabilir ve mevcut hesapla Hologres'i kullanabilirsiniz. Bu durumda Alibaba Cloud hesabı, hizmeti kullanma izinlerine sahip bir Hologres örneği üyesi haline gelir.
-
Rol tabanlı SSO kullanarak Hologres'te oturum açın.
Ayrıca rol tabanlı SSO (SAML tabanlı rol SSO'ya genel bakış) kullanarak Alibaba Cloud'da oturum açıp Hologres'i kullanabilirsiniz. Bu durumda RAM rolü, bir Hologres örneğinin üyesi haline gelir. Bu RAM rolünü üstlenen kullanıcılar, Alibaba Cloud hesaplarını kullanan üyelerle aynı izinlere sahiptir. RAM rolleri hakkında daha fazla bilgi için bkz. RAM rolüne genel bakış.
Hologres'te bir RAM rolü, bir Alibaba Cloud hesabına (kök hesap veya RAM kullanıcısı) eşdeğerdir. Bu nedenle RAM rolü standart bir oturum açma hesabı olarak kabul edilir. Süper kullanıcı, SELECT, INSERT veya UPDATE gibi izinleri altta yatan Alibaba Cloud hesabına değil doğrudan RAM rolüne vermelidir. RAM rolü, kendisine verilen izinler çerçevesinde Hologres'i kullanabilir.
Rol tabanlı SSO (STS)
Hologres için rol tabanlı SSO, Alibaba Cloud Security Token Service'i (STS) kullanır. STS, şirket içi kimlik sisteminiz tarafından yönetilen kullanıcılara özel geçerlilik süreleri ve izinlere sahip geçici güvenlik kimlik bilgileri verir. Kullanıcılar bu kimlik bilgilerini kullanarak Hologres'e doğrudan bağlanabilir ve yetkilendirilmiş kaynaklara erişebilir.
STS belirteçleri aşağıdaki avantajları sağlar:
AccessKey çiftinizin ifşa edilme riskini azaltır. Kullanıcılar için yalnızca geçici kimlik bilgileri oluşturmanız yeterlidir.
Esnek izin denetimi sağlar. STS belirteçleri sınırlı bir geçerlilik süresi sonunda otomatik olarak sona erer; böylece izinlerin manuel olarak iptal edilmesi gerekmez.
Bir RAM rolü oluşturmak ve bu role Hologres'e erişim izni vermek için aşağıdaki adımları izleyin.
Adım 1: RAM rolü oluşturma
Bir RAM rolü oluşturmak için Resource Access Management (RAM) konsolunda oturum açın. Asıl türü olarak Alibaba Cloud Hesabı veya Kimlik Sağlayıcı'yı seçin.
Alibaba Cloud Management Console'da kimlik değiştirerek rolü üstlenmeniz gerekiyorsa asıl türü Alibaba Cloud Account olan bir rol oluşturun. Daha fazla bilgi için bkz. RAM kullanıcısı olarak rol üstlenme ve izin verme.
Şirket içi bir IdP hesabı kullanarak Alibaba Cloud'da oturum açıp rolü üstlenmeniz gerekiyorsa asıl türü Identity Provider olan bir rol oluşturun. Daha fazla bilgi için bkz. IdP kullanıcısı olarak rol üstlenme ve izin verme.
RAM kullanıcısı olarak rol üstlenme
Bir RAM kullanıcısının Alibaba Cloud Management Console'da kimlik değiştirerek bir RAM rolünü üstlenmesini sağlamanız gerekiyorsa Resource Access Management (RAM) konsolunda oturum açın ve bir RAM rolü oluşturun. Asıl türü olarak Alibaba Cloud Account seçeneğini belirtin.
-
Asıl türü Alibaba Cloud Account olan bir RAM rolü oluşturun.
Resource Access Management (RAM) konsolunda oturum açın. Sol gezinme bölmesinde Identities > Roles seçeneklerini seçin.
Create Role sayfasında Create Role öğesine tıklayın. Principal Type alanında Alibaba Cloud Account seçeneğini belirleyin. Principal Name alanında Current Account seçeneğini belirleyin. OK öğesine tıklayın.
Create Role iletişim kutusunda bir Role Name girin ve rolü oluşturmak için OK öğesine tıklayın.
-
Bir izin ilkesi oluşturun ve iliştirin.
RAM rolü yönetim sayfasında hedef rolün adına tıklayarak ayrıntılar sayfasına gidin.
-
Trust Policy sekmesine tıklayın. Edit Trust Policy seçeneğine tıklayın ve ilkeyi aşağıdaki betikle değiştirin.
-
Parametre açıklaması
İlkeyi yapılandırırken
acs:ram::root_account_ID:rootdizesindekiroot_account_IDdeğerini yetkilendirmek istediğiniz hesabın kimliği ile değiştirin. Hesap kimliğini almak için User Information sayfasına gidin. -
İlke örneği
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::
-
Güven ilkesini kaydetmek için OK öğesine tıklayın.
-
Bir RAM kullanıcısı oluşturun ve buna rol üstlenme izni verin.
Bir RAM kullanıcısı olarak RAM rolünü üstlenmek için bir RAM kullanıcısı oluşturmalı ve bu kullanıcıya rol üstlenme izni vermelisiniz.
Resource Access Management (RAM) konsolunda oturum açın. Sol gezinme bölmesinde seçeneklerini seçin.
(Zorunlu değil) Zaten bir RAM kullanıcınız varsa bu adımı atlayın. Bir veya daha fazla RAM kullanıcısı oluşturmak için Create User öğesine tıklayın. Daha fazla bilgi için bkz. RAM kullanıcısı oluşturma.
Hedef RAM kullanıcısının Actions sütununda Add Permissions seçeneğine tıklayın.
Add Permissions sayfasında, kullanıcının STS API'sinin
AssumeRoleişlemini çağırmasına izin vermek için RAM kullanıcısınaAliyunSTSAssumeRoleAccessiznini verin. İzinler bölümünde System Policy sekmesine tıklayın, ardından AliyunSTSAssumeRoleAccess ilkesini aratıp seçin.Kurulumu tamamlamak için OK öğesine tıklayın.
IdP kullanıcısı olarak rol üstlenme
Şirket içi bir IdP hesabı kullanarak Alibaba Cloud'da oturum açıp bir RAM rolünü üstlenmeniz gerekiyorsa Resource Access Management (RAM) konsolunda oturum açın ve bir RAM rolü oluşturun. Asıl türü olarak Identity Provider seçeneğini belirtin.
-
Asıl türü Identity Provider olan bir RAM rolü oluşturun.
Resource Access Management (RAM) konsolunda oturum açın. Sol gezinme bölmesinde Identities > Role seçeneklerini seçin.
Role sayfasında Create Role öğesine tıklayın. Principal Type alanında Identity Provider seçeneğini belirleyin.
OK öğesine tıklayın. Role Name ve Note parametrelerini yapılandırın.
Bir IdP Type ve bir Select IdP seçin. Koşulları inceleyin ve Complete öğesine tıklayın. Rolün oluşturulduğunu belirten bir ileti görüntülenir.
-
Bir izin ilkesi oluşturun ve iliştirin.
Rol listesi sayfasında hedef rolün adına tıklayarak ayrıntılar sayfasına gidin.
-
Trust Policy sekmesine tıklayın. Edit Trust Policy seçeneğine tıklayın ve ilkeyi aşağıdaki betikle değiştirin.
-
Parametre açıklaması
İlkeyi yapılandırırken betikteki
RootAccountIDdeğeriniacs:ram::RootAccountID:saml-provider/IDPyetkilendirmek istediğiniz hesabın bilgileriyle değiştirmeniz gerekir. Hesap kimliğini almak için User Information sayfasına gidin. -
İlke örneği
{ "Statement": [ { "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "saml:recipient": "https://signin.alibabacloud.com/saml-role/sso" } }, "Effect": "Allow", "Principal": { "Federated": [ "acs:ram::
-
Güven ilkesini kaydetmek için OK öğesine tıklayın.
Adım 2: RAM rolünü ekleme ve yetkilendirme
Bir RAM rolünün Hologres'i kullanabilmesi için bir Hologres örneğinde geliştirme izinlerine sahip olması gerekir. Varsayılan olarak bir RAM rolü, Hologres konsolunda örnekleri görüntüleyemez veya yönetemez; bu nedenle kök hesabın öncelikle RAM'de gerekli izinleri vermesi gerekir. Daha fazla bilgi için bkz. RAM kullanıcısına izin verme. Aşağıdaki yöntemlerden birini kullanarak RAM rolünü bir Hologres örneğine ekleyebilir ve izin verebilirsiniz.
-
İzin vermek için Hologres konsolunda oturum açın.
Sol gezinme bölmesinde Instances sayfasına gidin. İzin vermek istediğiniz örneğe tıklayın. User Management sekmesinde RAM rolünü bulun ve onu örneğe yeni bir kullanıcı olarak ekleyin.
Database Authorization sekmesinde gerekli örnek geliştirme izinlerini RAM rolüne verin.
-
SQL deyimlerini kullanarak izin verin.
SQL deyimlerini kullanarak izin verebilirsiniz. Daha fazla bilgi için bkz. İzin yönetimine genel bakış.
Bir RAM kullanıcısı bir RAM rolünü üstlendiğinde, rol varsayılan olarak Hologres konsoluna erişim iznine sahip değildir. Kök hesabın, RAM konsolunda RAM kullanıcısına AliyunRAMReadOnlyAccess iznini vermesi gerekir. Aksi takdirde rol, Hologres konsolunda hiçbir işlem gerçekleştiremez. Daha fazla bilgi için bkz. RAM kullanıcısına izin verme.
Adım 3: Oturum açma ve Hologres kullanma
Konsol ve HoloWeb oturum açma
İzinleri verdikten sonra kullanıcılar RAM rolünü üstlenerek Hologres'te oturum açabilir ve hizmeti kullanabilir.
Hologres örneklerinizi yönetmek için RAM rolünü üstlenerek Hologres konsolunda oturum açın.
Hologres konsolu sayfasında, sol gezinme bölmesinde HoloWeb sayfasını açmak için Go to HoloWeb seçeneğine tıklayın. Ardından şemalar tasarlayabilir ve veri geliştirebilirsiniz. Daha fazla bilgi için bkz. HoloWeb'e bağlanma ve sorgu çalıştırma.
JDBC ve psql istemcisi oturum açma
Hologres V2.0 ve sonraki sürümler, PostgreSQL protokolü bağlantı seçeneklerinde bir güvenlik belirteci belirterek JDBC veya psql gibi bir PostgreSQL istemcisinden RAM rolü olarak Hologres'e erişmenize olanak tanır.
Bağlanmadan önce aşağıdaki ön koşulların karşılandığından emin olun:
RAM rolünü Hologres örneğine eklediniz ve izinleri verdiniz. Daha fazla bilgi için bkz. Adım 2: RAM rolünü bir Hologres örneğine ekleyin ve izin verin.
-
Resource Access Management'da (RAM) AssumeRole - Rol üstlenmek için geçici güvenlik kimlik bilgilerini alma API işlemini çağırarak STS belirteç üçlüsünü (bir AccessKey ID, bir AccessKey Secret ve bir güvenlik belirteci) aldınız. Daha fazla bilgi için bkz. STS SDK çağrı örnekleri. Aşağıdaki kod bir STS belirteci örneğini gösterir:
"Credentials": { "SecurityToken": "CAISuwJ1q6Ft5B2yu****KiAA", "AccessKeyId": "STS.NTKaenSkmLhG4HpM5****76UV", "AccessKeySecret": "6itECZnhbG2RU6ktTSBSd6JxeLHKPWyBt****SS62", "Expiration": "2025-02-21T03:47:07Z" }
Bu ön koşulları tamamladıktan sonra Hologres'e aşağıdaki yollardan biriyle bağlanın.
-
JDBC (Java) kullanarak bağlanma: Daha fazla bilgi için bkz. JDBC kullanarak Hologres'e bağlanma.
-
Örnek 1: Kimlik doğrulamayı tamamlamak için PostgreSQL JDBC sürücüsündeki PGProperty sınıfının özelliklerini kullanarak STS belirteç üçlüsünü yükleyin.
import org.postgresql.PGProperty; import java.sql.*; import java.io.IOException; import java.util.Properties; public class JdbcLinkHologres1 { public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException { // This example shows how to store the AccessKey ID and AccessKey Secret in environment variables. You can also store them in a configuration file based on your business needs. // To prevent key leakage, do not hard-code the AccessKey ID and AccessKey Secret in your code. String accessKeyId = "ALIBABA_CLOUD_ACCESS_KEY_ID"; String accessKeySecret = "ALIBABA_CLOUD_ACCESS_KEY_SECRET"; String securityToken = "<SecurityToken>"; String url = "jdbc:postgresql://<host>:<port>/<database>"; Properties props = new Properties(); PGProperty.USER.set(props, accessKeyId); PGProperty.PASSWORD.set(props, accessKeySecret); PGProperty.OPTIONS.set(props, "sts_token=" + securityToken); Class.forName("org.postgresql.Driver"); Connection connection = DriverManager.getConnection(url, props); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM tabletest"); // Process the resultSet while (resultSet.next()) { System.out.println("Result: " + resultSet.getInt(1)); System.out.println("Result: " + resultSet.getString(2)); } } } -
Örnek 2: Güvenlik belirtecini URL kodlamasına tabi tutun, JDBC URL'sine ekleyin ve ardından sürücü sınıfı Hologres bağlantısını kurarken AccessKey ID ile AccessKey Secret'ı yükleyerek kimlik doğrulamayı tamamlayın.
import java.net.URLEncoder; import java.sql.*; import java.io.IOException; public class JdbcLinkHologres2 { public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException { // This example shows how to store the AccessKey ID and AccessKey Secret in environment variables. You can also store them in a configuration file based on your business needs. // To prevent key leakage, do not hard-code the AccessKey ID and AccessKey Secret in your code. String accessKeyId = "ALIBABA_CLOUD_ACCESS_KEY_ID"; String accessKeySecret = "ALIBABA_CLOUD_ACCESS_KEY_SECRET"; String securityToken = "<SecurityToken>"; String url = "jdbc:postgresql://<host>:<port>/<database>"; String urlWithOptions = url + "?options=sts_token=" + URLEncoder.encode(securityToken, "UTF-8"); Class.forName("org.postgresql.Driver"); Connection connection = DriverManager.getConnection(urlWithOptions, accessKeyId, accessKeySecret); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM tabletest"); // Process the resultSet while (resultSet.next()) { System.out.println("Result: " + resultSet.getInt(1)); System.out.println("Result: " + resultSet.getString(2)); } } }
-
-
psql istemcisi kullanarak bağlanma: Aşağıdaki komut Linux sistemleri içindir. Daha fazla bilgi için bkz. psql istemcisi kullanarak Hologres'e bağlanma.
PGUSER=<AccessKeyId> PGPASSWORD=<AccessKeySecret> PGOPTIONS="sts_token=<SecurityToken>" psql -h <host> -p <port> -d <database>
SSS
RAM rolü olarak oturum açarken password authentication failed for user "<AccessKeyId>" hatası alırsam ne yapmalıyım?
Bu hata, AccessKey ID, AccessKey Secret veya güvenlik belirtecinin yanlış olduğunu ya da kullanıcının Hologres örneğinde mevcut olmadığını gösterir. Aşağıdakileri kontrol edin:
Kullanıcının örnekte mevcut olup olmadığını kontrol edin. Değilse RAM rolünü örneğe ekleyin. Daha fazla bilgi için bkz. Adım 2: RAM rolünü bir Hologres örneğine ekleyin ve izin verin.
Güvenlik belirtecinin doğru şekilde geçirilip geçirilmediğini kontrol edin. Belirteci URL'de geçiriyorsanız
URLEncoder.encodekullanarak kodlamanız gerekir.AccessKey ID, AccessKey Secret ve güvenlik belirtecinin doğru olup olmadığını kontrol edin.