Birleşik Harici Tablolarda İzin Verme
Harici bir şemanın oluşturucusu bu şemanın sahibi olur. Diğer RAM kullanıcılarına harici bir şema veya içindeki tablolar için izin atamak üzere bu konuyu kullanın.
MaxCompute, Lakehouse modunda veri kaynağı meta verilerini kalıcı olarak saklamaz. Erişim ilkeleri izinleri veri kaynağı adına göre eşleştirir. Bir veri kaynağını yeniden adlandırırsanız daha önce verilen tüm izinler geçersiz hale gelir. Yeniden adlandırmadan önce eski izinleri REVOKE komutuyla iptal edin veya erişim ilkesini silin. Bu adımı atlarsanız özgün adla oluşturulan yeni bir veri kaynağı eski izinleri devralabilir ve harici bir projedeki orijinal RAM kullanıcısına istenmeyen erişim sağlayabilir.
Bir proje için Kiracı Tabanlı Nesne Yetkilendirmesi etkinleştirildiyse Harici Şema oluşturmadan önce projeyi bir harici veri kaynağına bağlayın. Aksi takdirde Harici Şema oluşturulurken hata oluşur.
Bu konudaki tüm örneklerde test_lakehouse_project projesi kullanılır.
İzin Referansı
Aşağıdaki tabloda her bir Harici Şema işlemi için gereken izinler gösterilir. Her bölümde açıklandığı gibi GRANT komutunu kullanarak izinleri atayın.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Harici Şema Oluşturma
Gerekli izinler: Proje üzerinde CreateSchema. Kiracı Tabanlı Nesne Yetkilendirmesi etkinleştirildiyse yabancı sunucu üzerinde ayrıca Usage izni gerekir.
-
Geçerli projeyi ayarlayın ve
CreateSchemaiznini atayın.-- Set the current project. use test_lakehouse_project; -- Grant the CreateSchema permission on the project to a RAM user. GRANT CreateSchema ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user; -
(İsteğe bağlı) Kiracı Tabanlı Nesne Yetkilendirmesi etkinleştirildiyse ve projeye bir harici veri kaynağı bağladıysanız RAM kullanıcısına yabancı sunucuyu kullanma izni verin.
-- Add the RAM account provider to the current project. ADD accountprovider ram; -- Add a RAM user. ADD USER `RAM$xxx@test.aliyunid.com:test_user`; -- Create a project role. CREATE role test_lakhouse_role; -- Add an access policy to the role to allow usage of the external data source. put policy D:\bin\allow.policy ON role test_lakhouse_role; -- Grant the role to the RAM user. GRANT role test_lakhouse_role TO `RAM$xxx@test.aliyunid.com:test_user`;allow.policydosyası aşağıdaki içeriği içermelidir:{ "Version": "1", "Statement": [{ "Action": "odps:Usage", "Effect": "Allow", "Resource": ["acs:odps:*:servers/fs_hive"] }] } -
Harici Şemayı oluşturun.
CREATE EXTERNAL SCHEMA IF NOT EXISTS es_hive3 with fs_hive ON 'default' ;
Tüm Harici Şemaları Listeleme
Gerekli izinler: Proje üzerinde CreateInstance ve List.
-
Proje üzerinde
CreateInstanceiznini atayın.GRANT CreateInstance ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user; -
Proje üzerinde
Listiznini atayın.GRANT List ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user; -
Tüm şemaları listeleyin.
SHOW schemas;
Harici Şemayı Açıklama
Gerekli izinler: Şema üzerinde Describe.
-
Şema üzerinde
Describeiznini atayın.GRANT DESCRIBE ON SCHEMA es_hive3 TO USER RAM$xxx@test.aliyunid.com:test_user; -
Harici Şemayı açıklayın.
DESC SCHEMA es_hive3;
Harici Şema Özelliklerini Değiştirme
Harici Şema özelliklerinin değiştirilmesi desteklenmez.
Harici Şemayı Silme
Gerekli izinler: Şema üzerinde Drop.
-
Şema üzerinde
Dropiznini atayın.GRANT DROP ON SCHEMA es_hive3 TO USER RAM$xxx@test.aliyunid.com:test_user; -
Harici Şemayı silin.
DROP SCHEMA es_hive3;
Harici Şemayı Kullanma
Gerekli izin projenin nasıl oluşturulduğuna bağlıdır:
Üç katmanlı model (yerel): İzin gerekmez.
İki katmanlı modelden üç katmanlı modele yükseltildi: Şema üzerinde
Describeizni gerekir.
Geçerli şemayı Harici Şema olarak ayarlayın.
USE SCHEMA es_hive3;
Proje iki katmanlı modelden yükseltildiyse USE SCHEMA komutunu çalıştırmadan önce Describe iznini atayın.
GRANT DESCRIBE ON SCHEMA es_hive3 TO USER RAM$xxx@test.aliyunid.com:test_user;
Harici Şemadaki Tabloları Listeleme
Gerekli izinler: Şema üzerinde List.
-
Şema üzerinde
Listiznini atayın.GRANT List ON schema es_hive3 TO USER RAM$xxx@test.aliyunid.com:test_user; -
Harici Şemadaki tabloları listeleyin.
SHOW tables IN es_hive3;
Harici Şemadaki Bir Tabloyu Sorgulama
Gerekli izinler: Tablo üzerinde Select.
-
Tablo üzerinde
Selectiznini atayın.GRANT SELECT ON TABLE es_hive3.t1 TO USER RAM$xxx@test.aliyunid.com:test_user; -
Tabloyu sorgulayın.
SELECT * FROM es_hive3.t1;
Harici Şema Tablosundan Veri Aktarma
Gerekli izinler: Kaynak tablo üzerinde Select; proje üzerinde CreateTable ve CreateInstance.
-
Proje üzerinde
CreateTableiznini atayın.GRANT CreateTable ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user; -
Proje üzerinde
CreateInstanceiznini atayın.GRANT CreateInstance ON project test_lakehouse_project TO USER RAM$xxx@test.aliyunid.com:test_user; -
Kaynak tablo üzerinde
Selectiznini atayın.GRANT SELECT ON TABLE es_hive3.t1 TO USER RAM$xxx@test.aliyunid.com:test_user; -
Harici Şema tablosundaki verileri yeni bir yönetilen tabloya aktarın.
CREATE TABLE default.t1_copy_ram3 AS SELECT * FROM t1;