Hologres V3.0 dan versi yang lebih baru mendukung pemetaan role RAM ke akun dalam suatu instans. Fitur ini memungkinkan akun login untuk mengasumsikan role RAM guna mengakses sistem eksternal lintas akun. Saat ini, Anda hanya dapat menggunakan role RAM untuk mengakses sumber data DLF 2.5 dan instans Hologres lainnya. Topik ini menjelaskan penggunaan dan kondisi perintah CREATE USER MAPPING.
Informasi latar belakang
Pemetaan pengguna mendefinisikan hubungan antara pengguna login Hologres dan Akun Alibaba Cloud. Pemetaan ini memungkinkan pengguna Hologres—termasuk pengguna BASIC—untuk mengakses layanan eksternal lintas akun, seperti MaxCompute, DLF, OSS, dan kueri lintas database di 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 Foreign Server Usage juga dapat membuat pemetaan pengguna untuk dirinya sendiri.
-
Sumber data MaxCompute dan DLF 1.0 tidak mendukung konfigurasi pemetaan pengguna dengan role RAM.
Deskripsi sintaksis
Konfigurasi untuk 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>' ); -
Deskripsi parameter
Nama Parameter
Deskripsi
user_name
Akun yang akan diberikan izin. Ini bisa berupa RAM user lain, akun internal Hologres (akun BASIC), atau public untuk akses publik ke semua pengguna. Gunakan public dengan hati-hati.
Access_id
ID AccessKey dari akun saat ini. Untuk mendapatkan ID AccessKey, buka Konsol Resource Access Management (RAM).
Access_key
Rahasia AccessKey dari akun saat ini.
Sumber data DLF
-
Sintaksis
CREATE USER MAPPING FOR "<user_name>" EXTERNAL DATABASE <ext_db_name> OPTIONS ( -- Untuk DLF 1.0 [dlf_access_id 'LTxxxxxxxxxx', dlf_access_key 'y8xxxxxxxxxxxxx', oss_access_id 'LTxxxxxxxxxx', oss_access_key 'y8xxxxxxxxxxxxx'] -- Untuk DLF 2.5 [dlf_access_id 'LTxxxxxxxxxx', dlf_access_key 'y8xxxxxxxxxxxxx'] | [rolearn 'RoleARN'] );CatatanSaat Anda menggunakan RoleARN untuk mengonfigurasi pemetaan pengguna, Anda harus mengonfigurasi kebijakan akses
hologram::GrantAssumeRoledi RAM. Hologres menggunakan kebijakan ini untuk memeriksa apakah pengguna saat ini memiliki izin untuk membuat pemetaan pengguna ke RoleARN yang ditentukan. Pengguna dengan izin tersebut dapat membuat pemetaan pengguna ke RoleARN tersebut untuk pengguna mana pun di Hologres. Contoh kebijakan sebagai berikut:{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "hologram:GrantAssumeRole", "Resource": "<Role_ARN>" } ] } -
Deskripsi parameter
Nama parameter
Deskripsi
user_name
Akun yang akan diberikan izin. Ini bisa berupa RAM user lain, akun internal Hologres (akun BASIC), atau public untuk akses publik ke semua pengguna. Gunakan public dengan hati-hati.
ext_db_name
Database eksternal yang dibuat di instans Hologres menggunakan CREATE EXTERNAL DATABASE. Database ini digunakan untuk memuat metadata dari sumber data eksternal ke Hologres. Untuk informasi selengkapnya, lihat CREATE EXTERNAL DATABASE.
access_id
ID AccessKey dari akun saat ini. Untuk mendapatkan ID AccessKey, buka Konsol Resource Access Management (RAM).
access_key
Rahasia AccessKey dari akun saat ini.
dlf_access_id
ID AccessKey dari Akun Alibaba Cloud atau RAM user yang memiliki izin baca dan tulis pada DLF.
dlf_access_key
Rahasia AccessKey dari Akun Alibaba Cloud atau RAM user yang memiliki izin baca dan tulis pada DLF.
oss_access_id
ID AccessKey dari Akun Alibaba Cloud atau RAM user yang memiliki izin baca dan tulis pada OSS.
oss_access_key
Rahasia AccessKey dari Akun Alibaba Cloud atau RAM user yang memiliki izin baca dan tulis pada OSS.
rolearn
Nama Sumber Daya Alibaba Cloud (ARN) dari role tersebut. ARN merupakan Deskriptor Sumber Daya Global untuk role dan digunakan untuk menentukan role. Formatnya adalah
acs:ram::<account-id>:role/<role-name>. Bagian<role-name>diubah menjadi huruf kecil. Untuk informasi cara melihat ARN suatu role, lihat View a RAM role.
Kueri pemetaan pengguna yang telah dikonfigurasi untuk database eksternal
SELECT
datname,
usename,
eumoptions
FROM
pg_holo_external_user_mappings;
Konfigurasi untuk foreign server
Sumber data MaxCompute
-
Sintaksis
CREATE USER MAPPING FOR "<user_name>" SERVER odps_server -- Server tetap OPTIONS ( access_id '<access_id>', access_key '<access_key>' ); -
Deskripsi parameter
Nama parameter
Deskripsi
user_name
Akun yang akan diberikan izin. Ini bisa berupa RAM user lain, akun internal Hologres (akun BASIC), atau public untuk akses publik ke semua pengguna. Gunakan public dengan hati-hati.
access_id
ID AccessKey dari akun saat ini. Untuk mendapatkan ID AccessKey, buka Konsol Resource Access Management (RAM).
access_key
Rahasia AccessKey dari akun saat ini.
Sumber data DLF
-
Sintaksis
CREATE USER MAPPING FOR "<user_name>" SERVER <server_name> OPTIONS ( -- Untuk DLF 1.0 [dlf_access_id 'LTxxxxxxxxxx', dlf_access_key 'y8xxxxxxxxxxxxx', oss_access_id 'LTxxxxxxxxxx', oss_access_key 'y8xxxxxxxxxxxxx'] -- Untuk DLF 2.5 [dlf_access_id 'LTxxxxxxxxxx', dlf_access_key 'y8xxxxxxxxxxxxx'] | [rolearn 'RoleARN'] ); -
Deskripsi parameter
Nama parameter
Deskripsi
user_name
Akun yang akan diberikan izin. Ini bisa berupa RAM user lain, akun internal Hologres (akun BASIC), atau public untuk akses publik ke semua pengguna. Gunakan public dengan hati-hati.
server_name
Nama foreign server. Ini adalah nama kustom yang Anda tetapkan pada langkah sebelumnya. Untuk sumber data MaxCompute, server-nya adalah server bawaan tetap odps_server. Untuk informasi selengkapnya, lihat Create a foreign server.
access_id
ID AccessKey dari akun saat ini. Untuk mendapatkan ID AccessKey, buka Konsol Resource Access Management (RAM).
access_key
Rahasia AccessKey dari akun saat ini.
dlf_access_id
ID AccessKey dari Akun Alibaba Cloud atau RAM user yang memiliki izin baca dan tulis pada DLF.
dlf_access_key
Rahasia AccessKey dari Akun Alibaba Cloud atau RAM user yang memiliki izin baca dan tulis pada DLF.
oss_access_id
ID AccessKey dari Akun Alibaba Cloud atau RAM user yang memiliki izin baca dan tulis pada OSS.
oss_access_key
Rahasia AccessKey dari Akun Alibaba Cloud atau RAM user yang memiliki izin baca dan tulis pada OSS.
rolearn
Nama Sumber Daya Alibaba Cloud (ARN) dari role tersebut. ARN merupakan Deskriptor Sumber Daya Global untuk role dan digunakan untuk menentukan role. Formatnya adalah
acs:ram::<account-id>:role/<role-name>. Bagian<role-name>diubah menjadi huruf kecil. Untuk informasi cara melihat ARN suatu role, lihat View a RAM role.
Sumber data Hologres
-
Sintaksis
CREATE USER MAPPING FOR "<user_name>" SERVER <server_name> OPTIONS ( access_id '<access_id>', access_key '<access_key>' ); -
Deskripsi parameter
Nama Parameter
Deskripsi
user_name
Akun yang akan diberikan izin. Ini bisa berupa RAM user lain, akun internal Hologres (akun BASIC), atau public untuk akses publik ke semua pengguna. Gunakan public dengan hati-hati.
server_name
Server yang dibuat di Hologres untuk melakukan kueri lintas database. Untuk informasi selengkapnya, lihat Cross-database queries (Beta).
access_id
ID AccessKey dari akun saat ini. Untuk mendapatkan ID AccessKey, buka Konsol Resource Access Management (RAM).
access_key
Rahasia AccessKey dari akun saat ini.
Kueri pemetaan pengguna yang telah 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
Database eksternal (Direkomendasikan)
-
Contoh ini menggunakan sumber data DLF 2.5. Pertama, buat database eksternal untuk mengaitkan dengan katalog Paimon di DLF.
CREATE EXTERNAL DATABASE ext_db_dlf WITH metastore_type 'dlf-rest' catalog_type 'paimon' dlf_catalog 'paimon_catalog'; -
Setelah database eksternal dibuat, hanya Superuser instans dan DB Owner yang dapat mengaksesnya. Akun lain tidak dapat mengaksesnya. Anda kemudian dapat memberikan izin kepada RAM user dengan membuat role RAM di Konsol Resource Access Management (RAM) dan menjalankan perintah CREATE USER MAPPING di Hologres.
-
Buat role dan konfigurasikan kebijakan di RAM.
-
Login ke Konsol RAM dan klik Role > Create Role. Pilih Alibaba Cloud Service sebagai tipe entitas tepercaya, pilih Service Role sebagai tipe role, masukkan nama role, atur Select Trusted Service ke Interactive Analytics, lalu klik Complete.
-
Buka halaman Permission Model. Klik Create Policy > Script Editor. Buat kebijakan terpisah untuk pemeriksaan izin yang diperlukan oleh Hologres dan DLF. Kebijakan tersebut sebagai berikut.
Kebijakan pemeriksaan izin yang diperlukan oleh Hologres.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "hologram:GrantAssumeRole", "Resource": "acs:ram::xxx:role/testramrole" } ] }Kebijakan pemeriksaan izin yang diperlukan oleh DLF.
{ "Version": "1", "Statement": [ { "Action": "dlf:CheckPermissions", "Resource": "*", "Effect": "Allow" } ] } -
Buka halaman Role. Klik Grant Permission. Tambahkan dua kebijakan yang telah Anda buat.
-
-
Di Hologres, jalankan perintah CREATE USER MAPPING untuk memberikan izin RAM user pada database
ext_db_dlf.CREATE USER MAPPING FOR "p4_203535926287167253" EXTERNAL DATABASE ext_db_dlf OPTIONS ( rolearn 'acs:ram::xxx:role/testramrole' );
-
-
Login ke Konsol Hologres sebagai RAM user dan jalankan kueri di editor SQL.
SELECT * FROM ext_db_dlf.dlf_db.paimon_table;
Foreign server
Contoh ini menggunakan sumber data MaxCompute dan menunjukkan cara memberikan izin kepada akun BASIC Hologres untuk mengakses tabel eksternal MaxCompute.
-
Buat akun BASIC di Hologres.
CREATE USER basicuser; -
Berikan izin akses akun BASIC ke
odps_server.CREATE USER MAPPING FOR "basicuser" SERVER odps_server OPTIONS ( access_id 'LTxxxxxxxxxx', access_key 'y8xxxxxxxxxxxxx' );