Bu konuda, yabancı tablo kullanarak şifrelenmiş MaxCompute verilerinin nasıl sorgulanacağı açıklanmaktadır.
Yöntem seçimi
Hologres, şifrelenmiş MaxCompute verilerini sorgulamak için iki yöntem destekler. Örnek sürümünüze göre seçim yapın:
| Hologres sürümü | Yöntem | Desteklenen şifreleme | Gerekli yapılandırma |
|---|---|---|---|
| V3.2 ve sonrası | Ortak Tablo (önerilen) | Varsayılan anahtar ve KMS anahtarı | Basitleştirilmiş — Hologres şifre çözme işlemini şeffaf şekilde yönetir |
| V3.2 öncesi | Eski yabancı tablo | Yalnızca KMS anahtarı | RAM rolü + sorgu motoru geçişi |
Ortak Tablo yöntemi (V3.2 ve sonrası)
V3.2'den itibaren Hologres, basitleştirilmiş yapılandırma ile Ortak Tablolar aracılığıyla varsayılan anahtar veya Key Management Service (KMS) anahtarı ile şifrelenmiş MaxCompute verilerini sorgulayabilir.
Bu yöntemi kullanmak için kullanım durumunuza uygun kapsamda Ortak Tablo yönlendirmesini etkinleştirin:
-
Oturum düzeyi — Yalnızca geçerli oturum için etkili olur. Bu deyimi sorgunuz veya DML deyimlerinizle birlikte çalıştırın.
SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe'; -
Veritabanı düzeyi — Belirtilen veritabanına yapılan tüm bağlantılar için etkili olur.
ALTER DATABASE <database name> SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe'; -
Örnek düzeyi — Örnekteki tüm veritabanları için etkili olur.
ALTER ROLE ALL SET hg_experimental_external_catalog_routing = 'odps:common_table,dlf:hqe';
Daha fazla bilgi için bkz. Ortak Tablo.
Eski yöntem (V3.2 öncesi)
Bu yöntem, V3.2 öncesi sürümleri çalışan Hologres örnekleri için geçerlidir. Yalnızca KMS ile şifrelenmiş MaxCompute verilerini destekler; varsayılan DataWorks anahtarı kullanılarak şifrelenen veriler desteklenmez.
Sınırlamalar
Minimum sürüm: Hologres V1.1. Örneğiniz daha eski bir sürümde çalışıyorsa önce yükseltin. Bkz. Bir örneği yükseltme.
Arka uç yapılandırması: V1.3.31'den önceki sürümleri çalışan örnekler için gereklidir. V1.3.31 ve sonraki sürümler için gerekli değildir. Bu adımı atlamak için V1.3.31 veya sonraki bir sürüme yükseltin.
Desteklenen şifreleme: KMS tarafından oluşturulan anahtar malzemeleri veya içeri aktarılan anahtar malzemeleri kullanan KMS ile şifrelenmiş veriler. DataWorks varsayılan anahtarı desteklenmez.
KMS anahtarı önbelleğe alma: Hologres, verilerin şifresini çözerken varsayılan olarak KMS anahtarı bilgilerini 24 saat boyunca önbelleğe alır.
Sorgu motoru: Hologres Query Engine (HQE), şifrelenmiş MaxCompute verilerine erişemez. Veritabanı düzeyinde Seahawks Query Engine (SQE) motoruna geçiş yapmanız gerekir.
Ön koşullar
Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:
V1.1 veya sonraki bir sürümü çalışan bir Hologres örneği
İlkeler ve roller oluşturmak için yeterli RAM izni
Şifrelenmiş verilere erişimi yapılandırma
Eski yöntem dört adım gerektirir: bir RAM ilkesi oluşturma, bir RAM rolü oluşturma, sorgu motorunu değiştirme ve ardından verileri sorgulama.
Adım 1: Özel bir ilke oluşturun
-
RAM konsolu üzerinde oturum açın. Sol gezinme bölmesinde Permissions > Policies seçeneğini belirleyin. Policies sayfasında Create Policy düğmesini tıklayın.

-
Create Policy sayfasında JSON sekmesini tıklayın. Kod düzenleyicide aşağıdaki ilkeyi girin ve Name alanını
AliyunHologresEncryptionDefaultRolePolicyolarak ayarlayın.
Bu ilke, Hologres'in şifrelenmiş MaxCompute verilerini sorgularken veri anahtarlarını alması ve şifresini çözmesi için gereken KMS izinlerini sağlar.
{ "Version": "1", "Statement": [ { "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey" ], "Resource": "acs:kms:*:*:*/*", "Effect": "Allow" } ] } OK düğmesini tıklayın. Özel ilke oluşturulur.
Adım 2: Bir RAM rolü oluşturun ve izin verin
Hologres'in sizin adınıza KMS API'lerini çağırabilmesi için bir RAM rolüne ihtiyacı vardır. Rolü oluşturun ve 1. adımda oluşturulan ilkeyi ekleyin.
RAM konsolu üzerinde oturum açın. Sol gezinme bölmesinde Identities > Roles seçeneğini belirleyin.
Roles sayfasında Create Role düğmesini tıklayın. Principal Type değerini Cloud Service ve Principal Name değerini Hologres olarak ayarlayın.
-
OK düğmesini tıklayın. İletişim kutusunda Role Name alanına
AliyunHologresEncryptionDefaultRoleyazın ve ardından OK düğmesini tıklayın.
Rol ayrıntıları sayfasında Grant Permission düğmesini tıklayın.
-
Grant Permission panelinde Resource Scope değerini Account olarak ayarlayın. Policy için
AliyunHologresEncryptionDefaultRolePolicyöğesini seçin.
OK düğmesini tıklayın. Rol ayrıntıları sayfasında güven ilkesini doğrulamak için Trust Policy sekmesini tıklayın.
Adım 3: Sorgu motorunu SQE'ye geçirin
HQE, şifrelenmiş MaxCompute verilerine erişemez. Veritabanının yabancı tablo sorgu motorunu SQE'ye geçirmek için aşağıdaki deyimi çalıştırın:
ALTER DATABASE <dbname> SET hg_experimental_enable_access_odps_orc_via_holo = false;
Değişiklik yeni bir bağlantı oluşturduktan sonra etkili olur. Yapılandırmayı doğrulamak için şu komutu çalıştırın:
SHOW hg_experimental_enable_access_odps_orc_via_holo;
Çıktı false ise yapılandırma etkindir.
Adım 4: Şifrelenmiş verileri sorgulayın
Önceki adımları tamamladıktan sonra şifrelenmiş MaxCompute verilerini, normal MaxCompute verilerini sorguladığınız gibi sorgulayabilirsiniz. Bkz. Yabancı tablolar kullanarak MaxCompute verilerindeki sorguları hızlandırma.
Sorun giderme
Veriler sorgulanırken oluşan hata:
ERROR: status { code: SERVER_INTERNAL_ERROR message: "hos_exception: IO error: Failed to execute pangu open normal file pangu://xxx:xxx/product/odps/xxx/data/xxxx/xxx/xxx, errorcode: 9, errorcode_description: invalid argument, err_msg: PanguParameterInvalidException
Bu hata, HQE şifrelenmiş MaxCompute verilerine erişmeye çalıştığında oluşur. Veritabanının sorgu motorunu SQE'ye geçirin:
ALTER DATABASE <DB_Name> SET hg_experimental_enable_access_odps_orc_via_holo = false;
Değişikliği uygulamak için yeniden bağlanın ve etkili olduğunu doğrulayın:
SHOW hg_experimental_enable_access_odps_orc_via_holo;
Çıktı false ise sorgunuzu tekrar çalıştırın.