Topik ini menjelaskan cara menggunakan Single Sign-On (SSO) berbasis peran untuk mengakses Hologres.
Informasi latar belakang
Alibaba Cloud memungkinkan pengguna perusahaan mengelola dan menggunakan sumber daya cloud dengan masuk ke Konsol Manajemen Alibaba Cloud menggunakan akun dan kata sandi. Seiring meningkatnya persyaratan keamanan dan kepatuhan perusahaan, banyak organisasi lebih memilih menggunakan Single Sign-On (SSO) berbasis peran untuk mengakses Alibaba Cloud. Untuk informasi selengkapnya, lihat Ikhtisar SSO peran berbasis SAML.
Skenario
Umumnya, pengguna perusahaan masuk ke Konsol Manajemen Alibaba Cloud menggunakan akun dan kata sandi untuk mengelola serta menggunakan sumber daya cloud. Namun, guna memenuhi persyaratan keamanan yang semakin ketat dan menyatukan manajemen identitas dan akses, banyak perusahaan mengadopsi Single Sign-On (SSO). SSO memungkinkan pengguna masuk sekali dan mengakses beberapa sistem aplikasi tepercaya. Hologres kini mendukung SSO berbasis peran. Untuk informasi selengkapnya, lihat Ikhtisar SSO peran berbasis SAML. Fitur ini memungkinkan Anda menggunakan identitas perusahaan untuk mengasumsikan peran RAM dan mengakses instans Hologres. Peran RAM tersebut mengontrol izin akses. Diagram berikut menunjukkan contoh alur panggilan.
Pengguna membuka browser dan memilih Alibaba Cloud sebagai layanan target pada halaman login penyedia identitas (IdP).
Sebagai contoh, jika IdP perusahaan Anda adalah Microsoft Active Directory Federation Services (AD FS), URL login-nya adalah https://ADFSServiceName/adfs/ls/IdpInitiatedSignOn.aspx.
CatatanBeberapa IdP mengharuskan pengguna masuk terlebih dahulu sebelum dapat memilih aplikasi SSO yang merepresentasikan Alibaba Cloud.
IdP menghasilkan respons Security Assertion Markup Language (SAML) dan mengembalikannya ke browser.
Browser dialihkan ke halaman layanan SSO dan meneruskan respons SAML ke layanan SSO.
Layanan SSO menggunakan respons SAML untuk meminta kredensial keamanan sementara dari Alibaba Cloud Security Token Service (STS) dan menghasilkan URL untuk masuk ke Konsol Manajemen Alibaba Cloud.
CatatanJika respons SAML berisi atribut yang dipetakan ke beberapa peran RAM, sistem akan meminta pengguna memilih peran untuk mengakses Alibaba Cloud.
Layanan SSO mengembalikan URL tersebut ke browser.
Browser dialihkan ke URL tersebut. Pengguna masuk ke Konsol Manajemen Alibaba Cloud sebagai peran RAM yang ditentukan dan mengakses instans Hologres.
Metode akses yang didukung untuk Hologres
Hologres mendukung dua metode akses berikut:
Akses Hologres menggunakan Akun Alibaba Cloud atau Pengguna RAM.
Anda dapat masuk ke Konsol Manajemen Alibaba Cloud dengan akun dan kata sandi Anda, lalu menggunakan Hologres dengan akun tersebut. Dalam kasus ini, Akun Alibaba Cloud menjadi anggota instans Hologres dan menerima izin untuk menggunakan produk.
Akses Hologres menggunakan SSO berbasis peran.
Anda juga dapat masuk ke Alibaba Cloud menggunakan SSO berbasis peran (lihat Ikhtisar SSO peran berbasis SAML) untuk menggunakan Hologres. Dalam kasus ini, peran RAM menjadi anggota instans Hologres. Pengguna yang mengasumsikan peran RAM ini memiliki izin produk yang sama dengan anggota berbasis akun. Untuk informasi selengkapnya tentang peran RAM, lihat Ikhtisar peran RAM.
Di Hologres, peran RAM dan Akun Alibaba Cloud (termasuk akun root dan Pengguna RAM) diperlakukan setara. Peran RAM merupakan akun login standar. Superuser harus memberikan izin—seperti SELECT, INSERT, dan UPDATE—langsung kepada peran RAM, bukan kepada akun dasarnya. Pengguna yang mengasumsikan peran RAM tersebut kemudian dapat mengakses Hologres dengan izin yang telah diberikan.
SSO berbasis peran (STS)
Akses Hologres melalui SSO berbasis peran menggunakan Alibaba Cloud Security Token Service (STS). STS adalah layanan cloud yang menyediakan manajemen akses sementara untuk Akun Alibaba Cloud atau Pengguna RAM. Anda dapat menggunakan STS untuk menerbitkan kredensial akses dengan periode validitas dan izin khusus kepada pengguna Anda, seperti pengguna yang dikelola oleh sistem akun lokal Anda. Pengguna dapat menggunakan kredensial keamanan sementara dari STS untuk langsung terhubung ke Hologres dan mengakses sumber daya yang diizinkan.
Penggunaan token STS memberikan manfaat berikut:
Mengurangi risiko kebocoran kredensial. Anda hanya perlu menghasilkan kredensial sementara untuk pengguna, sehingga tidak perlu mengelola pasangan AccessKey jangka panjang.
Memungkinkan kontrol akses yang fleksibel. Kredensial sementara kedaluwarsa secara otomatis, sehingga tidak perlu pencabutan manual.
Langkah-langkah berikut memandu Anda dalam membuat peran RAM dan memberikan izin untuk mengakses Hologres.
Langkah 1: Buat peran RAM
Masuk ke Konsol Resource Access Management (RAM) untuk membuat peran RAM. Anda dapat memilih Alibaba Cloud Account atau Identity Provider sebagai tipe entitas tepercaya.
Jika Anda ingin mengasumsikan peran dengan beralih identitas di Konsol Manajemen Alibaba Cloud, pilih Alibaba Cloud Account sebagai entitas tepercaya. Untuk informasi selengkapnya, lihat Berikan akses ke Pengguna RAM dengan mengasumsikan peran.
Jika Anda ingin masuk ke Alibaba Cloud sebagai pengguna IdP on-premises dan mengasumsikan peran, pilih Identity Provider sebagai entitas tepercaya. Untuk informasi selengkapnya, lihat Berikan akses ke pengguna IdP dengan mengasumsikan peran.
Asumsi peran untuk Pengguna RAM
Jika Anda memerlukan Pengguna RAM untuk mengasumsikan peran RAM dengan beralih identitas di Konsol Manajemen Alibaba Cloud, masuk ke Konsol Resource Access Management (RAM) untuk membuat peran RAM. Pilih Alibaba Cloud Account sebagai entitas tepercaya.
Buat peran RAM dengan tipe entitas tepercaya Alibaba Cloud account.
Masuk ke Konsol Resource Access Management (RAM). Di panel navigasi kiri, pilih Identities > Roles.
Di halaman Create Role, klik Create Role. Untuk Alibaba Cloud Account, pilih Alibaba Cloud Account. Lalu, pilih Current Alibaba Cloud account. Klik OK.
Di panel Create Role, masukkan RAM Role Name dan klik OK.
Buat dan sambungkan kebijakan izin.
Di halaman Roles, klik nama peran target untuk membuka halaman detail peran.
Klik tab Trust Policy. Lalu, klik Edit Trust Policy dan ganti konten kebijakan dengan kode berikut.
Deskripsi parameter
Saat mengonfigurasi kebijakan, ganti
<account_id>dalamacs:ram::<account_id>:rootdengan ID Akun Alibaba Cloud Anda. Anda dapat menemukan ID akun di halaman User Information.Konten kebijakan
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "acs:ram::<account_id>:root" ] } }, { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "dataworks.aliyuncs.com" ] } } ], "Version": "1" }
Klik OK untuk menyelesaikan konfigurasi kebijakan.
Buat Pengguna RAM dan berikan izin untuk mengasumsikan peran.
Untuk memungkinkan Pengguna RAM mengasumsikan peran RAM, Anda harus memberikan izin yang diperlukan kepada pengguna tersebut.
Masuk ke Konsol Resource Access Management (RAM). Di panel navigasi kiri, pilih .
(Opsional) Jika Anda sudah memiliki Pengguna RAM, Anda dapat melewati langkah ini. Klik Create User untuk membuat satu atau beberapa Pengguna RAM sekaligus. Untuk informasi selengkapnya, lihat Buat Pengguna RAM.
Temukan Pengguna RAM target dan klik Add Permissions di kolom Actions.
Di halaman Add Permissions, sambungkan kebijakan AliyunSTSAssumeRoleAccess ke Pengguna RAM. Kebijakan ini memberikan izin kepada pengguna untuk memanggil operasi API AssumeRole dari STS.

Klik OK.
Asumsi peran untuk pengguna IdP
Jika Anda perlu masuk ke Alibaba Cloud sebagai pengguna IdP on-premises dan mengasumsikan peran RAM, masuk ke Konsol Resource Access Management (RAM) untuk membuat peran RAM. Pilih Identity Provider sebagai entitas tepercaya.
Buat peran RAM dengan tipe entitas tepercaya Identity Provider.
Masuk ke Konsol Resource Access Management (RAM). Di panel navigasi kiri, pilih Identities > Role.
Di halaman Role, klik Create Role. Untuk Identity Provider, pilih Identity Provider.
Klik OK dan konfigurasikan Role Name dan Remarks.
Pilih IdP Type dan Select IdP. Setelah meninjau kondisinya, klik Complete. Muncul pesan yang menunjukkan bahwa peran telah dibuat.
Buat dan sambungkan kebijakan izin.
Di halaman Roles, klik nama peran target untuk membuka halaman detail peran.
Klik tab Trust Policy. Lalu, klik Edit Trust Policy dan ganti konten kebijakan dengan kode berikut.
Deskripsi parameter
Saat mengonfigurasi kebijakan, Anda perlu mengganti ID akun root dalam skrip
acs:ram::Root-Account-ID:saml-provider/IDPdengan ID akun Anda. Buka halaman User Information untuk mendapatkan ID akun.Konten kebijakan
{ "Statement": [ { "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "saml:recipient": "https://signin.aliyun.com/saml-role/sso" } }, "Effect": "Allow", "Principal": { "Federated": [ "acs:ram::<account_id>:saml-provider/<idp_name>" ] } }, { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "dataworks.aliyuncs.com" ] } } ], "Version": "1" }
Klik OK untuk menyelesaikan konfigurasi kebijakan.
Langkah 2: Tambahkan dan otorisasi peran RAM
Peran RAM harus memiliki izin pengembangan pada instans Hologres untuk menggunakan Hologres. Secara default, peran RAM tidak memiliki izin untuk melihat atau mengelola instans di konsol Hologres. Akun root harus memberikan izin RAM yang diperlukan sebelum Anda dapat melanjutkan. Untuk informasi selengkapnya, lihat Berikan izin kepada Pengguna RAM. Anda dapat menggunakan salah satu metode berikut untuk menambahkan peran RAM ke instans Hologres dan memberikan izin.
Otorisasi peran di konsol manajemen Hologres.
Di panel navigasi kiri, klik Instances. Klik instans yang ingin Anda otorisasi. Di tab User Management, temukan peran RAM dan tambahkan sebagai pengguna ke instans tersebut.
Di tab DB-level Authorization, berikan izin pengembangan yang diperlukan kepada Pengguna RAM.
Otorisasi peran menggunakan SQL.
Anda dapat memberikan izin menggunakan pernyataan SQL. Untuk informasi selengkapnya, lihat Ikhtisar manajemen izin.
Jika Pengguna RAM mengasumsikan peran RAM, peran tersebut tidak memiliki izin di Konsol Manajemen Hologres secara default. Akun root harus memberikan izin AliyunRAMReadOnlyAccess kepada Pengguna RAM melalui Konsol Resource Access Management (RAM). Jika tidak, peran RAM tidak dapat melakukan operasi apa pun di Konsol Hologres. Untuk informasi selengkapnya, lihat Berikan izin kepada Pengguna RAM.
Langkah 3: Login dan gunakan Hologres
Login konsol dan HoloWeb
Setelah Anda memberikan izin, pengguna dapat mengasumsikan peran untuk masuk dan menggunakan Hologres.
Masuk ke konsol manajemen Hologres sebagai peran RAM untuk mengelola instans Hologres.
Di konsol manajemen Hologres, klik Go to HoloWeb di panel navigasi kiri untuk membuka HoloWeb. Anda kemudian dapat melakukan desain skema dan pengembangan data. Untuk informasi selengkapnya, lihat Terhubung ke HoloWeb dan jalankan kueri.
Login klien JDBC dan psql
Mulai dari Hologres V2.0, Anda dapat menentukan token keamanan dalam opsi koneksi protokol PostgreSQL. Hal ini memungkinkan Anda masuk dan mengakses Hologres sebagai peran RAM menggunakan klien PostgreSQL, seperti klien JDBC atau psql, dengan token keamanan.
Sebelum mengakses Hologres, pastikan Anda telah menyelesaikan hal berikut:
Anda telah menambahkan peran RAM ke instans Hologres dan memberikan izin. Untuk informasi selengkapnya, lihat Langkah 2: Tambahkan peran RAM ke instans Hologres dan berikan izin.
Anda telah memanggil operasi API AssumeRole dari Resource Access Management (RAM) untuk mendapatkan kredensial keamanan sementara, yang mencakup AccessKeyId, AccessKeySecret, dan SecurityToken. Untuk informasi selengkapnya, lihat Contoh SDK STS. Kode berikut menunjukkan contoh respons:
"Credentials": { "SecurityToken": "CAISuwJ1q6Ft5B2yu****KiAA", "AccessKeyId": "STS.NTKaenSkmLhG4HpM5****76UV", "AccessKeySecret": "6itECZnhbG2RU6ktTSBSd6JxeLHKPWyBt****SS62", "Expiration": "2025-02-21T03:47:07Z" }
Anda kemudian dapat menggunakan metode berikut untuk terhubung ke Hologres.
Terhubung menggunakan JDBC. Untuk informasi selengkapnya, lihat Terhubung ke Hologres menggunakan JDBC.
Contoh 1: Muat kredensial sementara STS menggunakan properti kelas PGProperty di PostgreSQL JDBC Driver untuk menyelesaikan verifikasi identitas.
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 { // Contoh ini menunjukkan cara menyimpan AccessKeyId dan AccessKeySecret dalam variabel lingkungan. Anda juga dapat menyimpannya dalam file konfigurasi sesuai kebutuhan bisnis Anda. // Kami sangat menyarankan agar Anda tidak menyematkan AccessKeyId dan AccessKeySecret secara langsung dalam kode untuk mencegah kebocoran kredensial. 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"); // Proses resultSet while (resultSet.next()) { System.out.println("Result: " + resultSet.getInt(1)); System.out.println("Result: " + resultSet.getString(2)); } } }Contoh 2: Encode SecurityToken dalam format URL dan tambahkan ke URL JDBC. Lalu, muat AccessKeyId dan AccessKeySecret untuk verifikasi identitas saat kelas driver mendapatkan koneksi Hologres.
import java.net.URLEncoder; import java.sql.*; import java.io.IOException; public class JdbcLinkHologres2 { public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException { // Contoh ini menunjukkan cara menyimpan AccessKeyId dan AccessKeySecret dalam variabel lingkungan. Anda juga dapat menyimpannya dalam file konfigurasi sesuai kebutuhan bisnis Anda. // Kami sangat menyarankan agar Anda tidak menyematkan AccessKeyId dan AccessKeySecret secara langsung dalam kode untuk mencegah kebocoran kredensial. 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"); // Proses resultSet while (resultSet.next()) { System.out.println("Result: " + resultSet.getInt(1)); System.out.println("Result: " + resultSet.getString(2)); } } }
Terhubung menggunakan klien psql. Perintah berikut untuk sistem Linux. Untuk informasi selengkapnya, lihat Terhubung ke Hologres menggunakan klien psql.
PGUSER=<AccessKeyId> PGPASSWORD=<AccessKeySecret> PGOPTIONS="sts_token=<SecurityToken>" psql -h <host> -p <port> -d <database>
FAQ
Apa yang harus saya lakukan jika muncul error password authentication failed for user "<AccessKeyId>" saat masuk sebagai peran RAM?
Error ini menunjukkan bahwa AccessKeyId, AccessKeySecret, atau SecurityToken mungkin salah, atau pengguna masuk tidak ada di instans Hologres. Kami menyarankan Anda melakukan troubleshooting dengan urutan berikut:
Periksa apakah pengguna masuk ada di instans. Jika tidak, tambahkan peran RAM ke instans. Untuk informasi selengkapnya, lihat Langkah 2: Tambahkan peran RAM ke instans Hologres dan berikan izin.
Periksa apakah SecurityToken diteruskan dengan benar. Jika diteruskan dalam URL, token harus di-encode menggunakan
URLEncoder.encode.Periksa apakah AccessKeyId, AccessKeySecret, dan SecurityToken benar.