Mulai dari Hologres V3.0, Anda dapat mengonfigurasi pemetaan role RAM untuk akun dalam suatu instans. Fitur ini memungkinkan akun login mengakses sistem eksternal secara cross-account dengan mengasumsikan role RAM. Saat ini, metode ini hanya mendukung akses ke sumber data DLF 2.5 dan instans Hologres lain menggunakan role RAM. Topik ini menjelaskan cara menggunakan perintah CREATE USER MAPPING beserta batasannya.
Informasi latar belakang
User Mapping mendefinisikan pemetaan antara pengguna login Hologres dan akun Alibaba Cloud. Fitur ini memungkinkan pengguna Hologres saat ini (termasuk pengguna BASIC) mengakses layanan eksternal secara cross-account melalui User Mapping, seperti MaxCompute, DLF, OSS, dan kueri lintas database Hologres. Untuk informasi selengkapnya, lihat PostgreSQL CREATE USER MAPPING.
Batasan
-
Untuk memberikan izin kepada pengguna biasa, Anda harus memiliki izin SuperUser pada instans Hologres atau izin Owner pada Foreign Server. Pengguna dengan izin Usage pada Foreign Server juga dapat membuat User Mapping untuk diri mereka sendiri.
Sumber data MaxCompute dan DLF 1.0 tidak mendukung konfigurasi user mapping menggunakan role RAM.
Deskripsi Sintaksis
Konfigurasi Database Eksternal
Sumber Data MaxCompute
-
Sintaksis
CREATE USER MAPPING FOR "<user_name>" EXTERNAL DATABASE <ext_db_name> OPTIONS ( access_id '<Access_id>', access_key '<Access_key>' ); -
Parameter
Nama Parameter
Deskripsi
user_name
Akun yang akan diberi otorisasi, seperti pengguna RAM lain, akun internal Hologres (akun BASIC), atau public (untuk akses publik bagi semua pengguna; gunakan dengan hati-hati).
Access_id
ID AccessKey dari akun akses saat ini. Klik Konsol Resource Access Management (RAM) untuk mendapatkan ID AccessKey.
Access_key
Rahasia AccessKey dari akun akses saat ini.
Sumber Data DLF
-
Sintaksis
CREATE USER MAPPING FOR "<user_name>" EXTERNAL DATABASE <ext_db_name> OPTIONS ( -- Untuk DLF1.0 [dlf_access_id 'LTxxxxxxxxxx', dlf_access_key 'y8xxxxxxxxxxxxx', oss_access_id 'LTxxxxxxxxxx', oss_access_key 'y8xxxxxxxxxxxxx'] -- Untuk DLF2.5 [dlf_access_id 'LTxxxxxxxxxx', dlf_access_key 'y8xxxxxxxxxxxxx'] | [rolearn 'RoleARN'] );CatatanSaat mengonfigurasi User Mapping dengan RoleARN, konfigurasikan kebijakan akses
hologram::GrantAssumeRoledi RAM. Hologres menggunakan kebijakan ini untuk menentukan apakah pengguna saat ini memiliki izin untuk membuat User Mapping untuk RoleARN yang sesuai. Pengguna dengan izin ini dapat membuat User Mapping untuk pengguna mana pun terhadap RoleARN tersebut di Hologres. Contoh:{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "hologram:GrantAssumeRole", "Resource": "<Role_ARN>" } ] } -
Parameter
Nama Parameter
Deskripsi
user_name
Akun yang akan diberi otorisasi, seperti pengguna RAM lain, akun internal Hologres (akun BASIC), atau public (untuk akses publik bagi semua pengguna; gunakan dengan hati-hati).
ext_db_name
Database eksternal yang dibuat di instans Hologres menggunakan CREATE EXTERNAL DATABASE. Database ini memuat metadata dari sumber data eksternal ke Hologres. Untuk informasi selengkapnya, lihat CREATE EXTERNAL DATABASE.
access_id
ID AccessKey dari akun akses saat ini. Klik Konsol Resource Access Management (RAM) untuk mendapatkan ID AccessKey.
access_key
Rahasia AccessKey dari akun akses saat ini.
dlf_access_id
ID AccessKey dari akun Alibaba Cloud atau akun RAM yang memiliki izin baca dan tulis untuk DLF.
dlf_access_key
Rahasia AccessKey dari akun Alibaba Cloud atau akun RAM yang memiliki izin baca dan tulis untuk DLF.
oss_access_id
ID AccessKey dari akun Alibaba Cloud atau akun RAM yang memiliki izin baca dan tulis untuk OSS.
oss_access_key
Rahasia AccessKey dari akun Alibaba Cloud atau akun RAM yang memiliki izin baca dan tulis untuk OSS.
rolearn
Role ARN adalah Deskriptor Sumber Daya Global (GRD) untuk suatu role. Role ARN menentukan role tertentu. Formatnya adalah
acs:ram::<account-id>:role/<role-name>. Bagian<role-name>mengubah nama role menjadi huruf kecil. Untuk informasi selengkapnya tentang cara melihat Role ARN, lihat View RAM roles.
Kueri User Mapping yang Dikonfigurasi untuk Database Eksternal
SELECT
datname,
usename,
eumoptions
FROM
pg_holo_external_user_mappings;
Konfigurasi Server Eksternal
Sumber Data MaxCompute
-
Sintaksis
CREATE USER MAPPING FOR "<user_name>" SERVER odps_server -- server tetap OPTIONS ( access_id '<access_id>', access_key '<access_key>' ); -
Parameter
Nama Parameter
Deskripsi
user_name
Akun yang akan diberi otorisasi, seperti pengguna RAM lain, akun internal Hologres (akun BASIC), atau public (untuk akses publik bagi semua pengguna; gunakan dengan hati-hati).
access_id
ID AccessKey dari akun akses saat ini. Klik Konsol Resource Access Management (RAM) untuk mendapatkan ID AccessKey.
access_key
Rahasia AccessKey dari akun akses saat ini.
Sumber Data DLF
-
Sintaksis
CREATE USER MAPPING FOR "<user_name>" SERVER <server_name> OPTIONS ( -- Untuk DLF1.0 [dlf_access_id 'LTxxxxxxxxxx', dlf_access_key 'y8xxxxxxxxxxxxx', oss_access_id 'LTxxxxxxxxxx', oss_access_key 'y8xxxxxxxxxxxxx'] -- Untuk DLF2.5 [dlf_access_id 'LTxxxxxxxxxx', dlf_access_key 'y8xxxxxxxxxxxxx'] | [rolearn 'RoleARN'] ); -
Parameter
Nama parameter
Deskripsi
user_name
Akun yang akan diberi otorisasi, seperti pengguna RAM lain, akun internal Hologres (akun BASIC), atau public (untuk akses publik bagi semua pengguna; gunakan dengan hati-hati).
server_name
Nama Foreign Server. Ini adalah nama yang Anda tetapkan pada langkah sebelumnya. Untuk sumber data MaxCompute, server bawaan tetap adalah `odps_server`. Untuk informasi selengkapnya, lihat Create a Foreign Server.
access_id
ID AccessKey dari akun akses saat ini. Klik Konsol Resource Access Management (RAM) untuk mendapatkan ID AccessKey.
access_key
Rahasia AccessKey dari akun akses saat ini.
dlf_access_id
ID AccessKey dari akun Alibaba Cloud atau akun RAM yang memiliki izin baca dan tulis untuk DLF.
dlf_access_key
Rahasia AccessKey dari akun Alibaba Cloud atau akun RAM yang memiliki izin baca dan tulis untuk DLF.
oss_access_id
ID AccessKey dari akun Alibaba Cloud atau akun RAM yang memiliki izin baca dan tulis untuk OSS.
oss_access_key
Rahasia AccessKey dari akun Alibaba Cloud atau akun RAM yang memiliki izin baca dan tulis untuk OSS.
rolearn
Role ARN adalah Deskriptor Sumber Daya Global (GRD) untuk suatu role. Role ARN menentukan role tertentu. Formatnya adalah
acs:ram::<account-id>:role/<role-name>. Bagian<role-name>mengubah nama role menjadi huruf kecil. Untuk informasi selengkapnya tentang cara melihat Role ARN, lihat View RAM roles.
Sumber Data Hologres
-
Sintaksis
CREATE USER MAPPING FOR "<user_name>" SERVER <server_name> OPTIONS ( access_id '<access_id>', access_key '<access_key>' ); -
Parameter
Nama Parameter
Deskripsi
user_name
Akun yang akan diberi otorisasi, seperti pengguna RAM lain, akun internal Hologres (akun BASIC), atau public (untuk akses publik bagi semua pengguna; gunakan dengan hati-hati).
server_name
Server yang dibuat oleh Hologres untuk kueri lintas database. Untuk informasi selengkapnya, lihat Cross-database Query (Beta).
access_id
ID AccessKey dari akun akses saat ini. Klik Konsol Resource Access Management (RAM) untuk mendapatkan ID AccessKey.
access_key
Rahasia AccessKey dari akun akses saat ini.
Kueri User Mapping yang Dikonfigurasi untuk Database Internal
SELECT
um.srvname AS "Server",
um.usename AS "User name"
FROM
pg_catalog.pg_user_mappings um
WHERE
um.srvname != 'query_log_store_server'
ORDER BY 1, 2;
Contoh Penggunaan
EXTERNAL DATABASE (Direkomendasikan)
-
Sebagai contoh, dengan sumber data DLF 2.5, pertama-tama buat External Database dan asosiasikan dengan Paimon Catalog di DLF.
CREATE EXTERNAL DATABASE ext_db_dlf WITH metastore_type 'dlf-rest' catalog_type 'paimon' dlf_catalog 'paimon_catalog'; -
Setelah pembuatan, hanya Superuser instans dan DB Owner yang dapat mengakses database eksternal ini. Akun lain tidak dapat mengaksesnya. Selanjutnya, berikan izin kepada pengguna RAM dengan membuat role RAM di Konsol Resource Access Management (RAM), lalu buat CREATE USER MAPPING di Hologres.
-
Buat role baru di RAM dan konfigurasi kebijakan.
-
Login ke Konsol Resource Access Management (RAM). Klik Role > Create Role. Untuk Trusted Entity Type, pilih Alibaba Cloud Service. Untuk Role Type, pilih Service Role. Masukkan nama role. Untuk Select Trusted Service, pilih Interactive Analytics. Klik Complete.
-
Buka halaman Permission Model dan klik Create Policy > Script Editor. Buat kebijakan untuk izin Hologres dan DLF. Isi kebijakan sebagai berikut.
Kebijakan pemeriksaan izin Hologres.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "hologram:GrantAssumeRole", "Resource": "acs:ram::xxx:role/testramrole" } ] }Kebijakan pemeriksaan izin DLF.
{ "Version": "1", "Statement": [ { "Action": "dlf:CheckPermissions", "Resource": "*", "Effect": "Allow" } ] } -
Buka halaman Role. Klik Grant Permission untuk menambahkan kedua kebijakan akses tersebut.

-
-
Di Hologres, berikan izin untuk database
ext_db_dlfkepada pengguna RAM menggunakan CREATE USER MAPPING.CREATE USER MAPPING FOR "p4_203535926287167253" EXTERNAL DATABASE ext_db_dlf OPTIONS ( rolearn 'acs:ram::xxx:role/testramrole' );
-
-
Login ke konsol Hologres sebagai pengguna RAM, lalu lakukan kueri menggunakan Editor SQL.
SELECT * FROM ext_db_dlf.dlf_db.paimon_table;
Foreign Server
Sebagai contoh, dengan sumber data MaxCompute, berikan izin kepada akun BASIC Hologres untuk mengakses tabel eksternal MaxCompute.
-
Anda dapat membuat akun BASIC di Hologres.
CREATE USER basicuser; -
Berikan izin akses akun BASIC untuk
odps_server.CREATE USER MAPPING FOR "basicuser" SERVER odps_server OPTIONS ( access_id 'LTxxxxxxxxxx', access_key 'y8xxxxxxxxxxxxx' );