Di Hologres V3.0 dan versi lebih baru, Anda dapat mengonfigurasi pemetaan antara Peran RAM dan akun pada instance Hologres. Pemetaan ini memungkinkan pengguna untuk mengakses sistem eksternal dengan mengasumsikan peran RAM. Saat ini, metode ini hanya mendukung akses ke Data Lake Formation (DLF) 2.0 dan instance Hologres lainnya. Topik ini menjelaskan penggunaan dan batasan dari pernyataan MEMBUAT PEMETAAN PENGGUNA.
Informasi latar belakang
Anda dapat mengeksekusi pernyataan MEMBUAT PEMETAAN PENGGUNA untuk membuat pemetaan antara pengguna logon Hologres (termasuk pengguna BASIC) dan akun Alibaba Cloud dari layanan eksternal. Ini memungkinkan pengguna untuk mengakses layanan seperti MaxCompute, DLF, Object Storage Service (OSS), atau database Hologres lainnya. Untuk informasi lebih lanjut, lihat MEMBUAT PEMETAAN PENGGUNA.
Batasan
Hanya superuser dari instance Hologres atau pemilik server asing yang dapat memberikan izin terkait kepada pengguna biasa. Pengguna dengan izin PENGGUNAAN pada server asing dapat membuat pemetaan pengguna untuk diri mereka sendiri.
Pemetaan pengguna tidak dapat dibuat untuk Peran RAM yang digunakan untuk mengakses data di MaxCompute atau DLF 1.0.
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>' );Parameter
Parameter
Deskripsi
user_name
Akun yang ingin Anda berikan izin, seperti pengguna RAM, akun internal Hologres (pengguna BASIC), atau akun publik. Akun publik tersedia untuk semua pengguna dan harus digunakan dengan hati-hati.
Access_id
ID AccessKey dari akun yang digunakan untuk masuk ke Hologres. Anda dapat masuk ke Konsol Resource Access Management (RAM) untuk mendapatkan ID AccessKey.
Access_key
Rahasia AccessKey dari akun yang digunakan untuk masuk ke Hologres.
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.0 [dlf_access_id 'LTxxxxxxxxxx', dlf_access_key 'y8xxxxxxxxxxxxx'] | [rolearn 'RoleARN'] );CatatanKebijakan
hologram::GrantAssumeRoleharus dikonfigurasi di konsol RAM untuk mengizinkan pengguna membuat pemetaan pengguna untuk Nama Sumber Daya Alibaba Cloud (ARN) dari peran RAM. Hologres memeriksa apakah pengguna memiliki izin untuk membuat pemetaan pengguna untuk ARN dari peran RAM berdasarkan kebijakan ini. Pengguna yang berwenang dapat membuat pemetaan pengguna antara ARN tertentu dari peran RAM dan pengguna mana pun pada instance Hologres. Contoh:{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "hologram:GrantAssumeRole", "Resource": "<Role_ARN>" } ] }Parameter
Parameter
Deskripsi
user_name
Akun yang ingin Anda berikan izin, seperti pengguna RAM, akun internal Hologres (pengguna BASIC), atau akun publik. Akun publik tersedia untuk semua pengguna dan harus digunakan dengan hati-hati.
ext_db_name
Database eksternal yang dibuat di Hologres dengan mengeksekusi pernyataan MEMBUAT DATABASE EKSTERNAL. Database eksternal digunakan untuk memuat metadata sumber data eksternal ke Hologres. Untuk informasi lebih lanjut, lihat MEMBUAT DATABASE EKSTERNAL.
access_id
ID AccessKey dari akun yang digunakan untuk masuk ke Hologres. Anda dapat masuk ke Konsol RAM untuk mendapatkan ID AccessKey.
access_key
Rahasia AccessKey dari akun yang digunakan untuk masuk ke Hologres.
dlf_access_id
ID AccessKey dari akun Alibaba Cloud atau pengguna RAM yang memiliki izin baca dan tulis pada DLF.
dlf_access_key
Rahasia AccessKey dari akun Alibaba Cloud atau pengguna RAM yang memiliki izin baca dan tulis pada DLF.
oss_access_id
ID AccessKey dari akun Alibaba Cloud atau pengguna RAM yang memiliki izin baca dan tulis pada Object Storage Service (OSS).
oss_access_key
Rahasia AccessKey dari akun Alibaba Cloud atau pengguna RAM yang memiliki izin baca dan tulis pada OSS.
rolearn
ARN dari peran RAM, yang merupakan pengenal sumber daya unik global dari peran RAM. Sebuah ARN dalam format
acs:ram::<account-id>:role/<role-name>.<role-name>adalah nama peran RAM dalam huruf kecil. Untuk informasi lebih lanjut tentang cara melihat ARN dari peran RAM, lihat Lihat informasi tentang peran RAM.
Permintaan pemetaan pengguna yang dikonfigurasi dari database eksternal
SELECT
datname,
usename,
eumoptions
FROM
pg_holo_external_user_mappings;Konfigurasi untuk server asing
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
Parameter
Deskripsi
user_name
Akun yang ingin Anda berikan izin, seperti pengguna RAM, akun internal Hologres (pengguna BASIC), atau akun publik. Akun publik tersedia untuk semua pengguna dan harus digunakan dengan hati-hati.
access_id
ID AccessKey dari akun yang digunakan untuk masuk ke Hologres. Anda dapat masuk ke Konsol RAM untuk mendapatkan ID AccessKey.
access_key
Rahasia AccessKey dari akun yang digunakan untuk masuk ke Hologres.
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.0 [dlf_access_id 'LTxxxxxxxxxx', dlf_access_key 'y8xxxxxxxxxxxxx'] | [rolearn 'RoleARN'] );Parameter
Parameter
Deskripsi
user_name
Akun yang ingin Anda berikan izin, seperti pengguna RAM, akun internal Hologres (pengguna BASIC), atau akun publik. Akun publik tersedia untuk semua pengguna dan harus digunakan dengan hati-hati.
server_name
Nama server asing. Untuk sumber data MaxCompute, nilainya tetap sebagai odps_server. Untuk sumber data lainnya, Anda dapat menentukan nilai kustom. Untuk informasi lebih lanjut, lihat Buat server asing.
access_id
ID AccessKey dari akun yang digunakan untuk masuk ke Hologres. Anda dapat masuk ke Konsol RAM untuk mendapatkan ID AccessKey.
access_key
Rahasia AccessKey dari akun yang digunakan untuk masuk ke Hologres.
dlf_access_id
ID AccessKey dari akun Alibaba Cloud atau pengguna RAM yang memiliki izin baca dan tulis pada DLF.
dlf_access_key
Rahasia AccessKey dari akun Alibaba Cloud atau pengguna RAM yang memiliki izin baca dan tulis pada DLF.
oss_access_id
ID AccessKey dari akun Alibaba Cloud atau pengguna RAM yang memiliki izin baca dan tulis pada OSS.
oss_access_key
Rahasia AccessKey dari akun Alibaba Cloud atau pengguna RAM yang memiliki izin baca dan tulis pada OSS.
rolearn
ARN dari peran RAM, yang merupakan pengenal sumber daya unik global dari peran RAM. Sebuah ARN dalam format
acs:ram::<account-id>:role/<role-name>.<role-name>adalah nama peran RAM dalam huruf kecil. Untuk informasi lebih lanjut tentang cara melihat ARN dari peran RAM, lihat Lihat informasi tentang peran RAM.
Sumber data Hologres
Sintaksis
CREATE USER MAPPING FOR "<user_name>" SERVER <server_name> OPTIONS ( access_id '<access_id>', access_key '<access_key>' );Parameter
Parameter
Deskripsi
user_name
Akun yang ingin Anda berikan izin, seperti pengguna RAM, akun internal Hologres (pengguna BASIC), atau akun publik. Akun publik tersedia untuk semua pengguna dan harus digunakan dengan hati-hati.
server_name
Nama server yang dibuat untuk menerapkan kueri data lintas database di Hologres. Untuk informasi lebih lanjut, lihat Kueri data lintas database (beta).
access_id
ID AccessKey dari akun yang digunakan untuk masuk ke Hologres. Anda dapat masuk ke Konsol RAM untuk mendapatkan ID AccessKey.
access_key
Rahasia AccessKey dari akun yang digunakan untuk masuk ke Hologres.
Permintaan pemetaan pengguna yang dikonfigurasi dari database internal
SELECT
um.srvname AS "Server",
um.usename AS "Nama Pengguna"
FROM
pg_catalog.pg_user_mappings um
WHERE
um.srvname != 'query_log_store_server'
ORDER BY 1, 2;Contoh
Database eksternal (direkomendasikan)
Buat database eksternal di instance Hologres untuk memetakan katalog Apache Paimon di DLF 2.0. Hanya pengguna dengan izin superuser pada instance atau pemilik database eksternal yang dapat mengakses database tersebut.
CREATE EXTERNAL DATABASE ext_db_dlf WITH metastore_type 'dlf-paimon' catalog_type 'paimon' dlf_region 'cn-hangzhou' dlf_endpoint 'dlfnext-share.cn-hangzhou.aliyuncs.com' dlf_catalog 'clg-paimon-d241aee***********';Buat Peran RAM di Konsol RAM dan eksekusi pernyataan MEMBUAT PEMETAAN PENGGUNA di Hologres untuk membuat pemetaan antara Peran RAM dan pengguna RAM.
Buat Peran RAM dan lampirkan kebijakan ke peran tersebut.
Masuk ke Konsol RAM. Di panel navigasi kiri, pilih Identitas > Roles. Di halaman yang muncul, klik Create Role. Pilih Alibaba Cloud Service untuk Pilih Entitas Tepercaya dan Normal Service Role untuk Jenis Peran, konfigurasikan parameter Nama Peran RAM, dan pilih Hologres dari daftar drop-down Select Trusted Service. Lalu, klik OK.
Di halaman Policies, klik Create Policy. Pada tab JSON, konfigurasikan kebijakan untuk pemeriksaan izin di Hologres dan DLF.
Contoh kode untuk Hologres:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "hologram:GrantAssumeRole", "Resource": "acs:ram::xxx:role/testramrole" } ] }Contoh kode untuk DLF:
{ "Version": "1", "Statement": [ { "Action": "dlf:CheckPermissions", "Resource": "*", "Effect": "Allow" } ] }Di halaman Roles, pilih Peran RAM dan klik Grant Permission untuk melampirkan kebijakan ke Peran RAM.

Eksekusi pernyataan MEMBUAT PEMETAAN PENGGUNA di Hologres untuk membuat pemetaan antara pengguna RAM dan Peran RAM. Dengan cara ini, pengguna RAM mendapatkan izin pada database
ext_db_dlf.CREATE USER MAPPING FOR "p4_203535926287167253" EXTERNAL DATABASE ext_db_dlf OPTIONS ( rolearn 'acs:ram::xxx:role/testramrole' );
Masuk ke Konsol Hologres sebagai pengguna RAM dan gunakan editor SQL untuk mengkueri data.
SELECT * FROM ext_db_dlf.dlf_db.paimon_table;
Server asing
Bagian ini menjelaskan cara memberikan izin pada tabel asing MaxCompute ke akun BASIC Hologres.
Buat akun BASIC di Hologres.
CREATE USER basicuser;Berikan izin akses pada
odps_serverke akun BASIC.CREATE USER MAPPING FOR "basicuser" SERVER odps_server OPTIONS ( access_id 'LTxxxxxxxxxx', access_key 'y8xxxxxxxxxxxxx' );