Hologres を使用して外部テーブル経由で MaxCompute データへのクエリを高速化する際、権限不足によってエラーが発生することがあります。以下のセクションでは、よくある MaxCompute 権限エラー、その原因、および解決策について説明します。
Hologres は外部テーブルを介して MaxCompute データにアクセスします。MaxCompute テーブルの権限は、MaxCompute 側で MaxCompute 管理者によって管理されます。権限エラーが発生した場合、通常は MaxCompute で権限を付与または変更する必要があります。
問題の概要
以下のリストは、Hologres でよくある MaxCompute 権限エラーをまとめたもので、それぞれの解決策へのリンクが含まれています。
外部テーブルのクエリ失敗:You have NO privilege 'odps:Select' on xxx
問題
Hologres コンソールで外部テーブルを作成した後、外部テーブルをクエリすると次のエラーが返されます: You have NO privilege 'odps:Select' on xxx。
原因
現在のアカウントに MaxCompute テーブルに対する SELECT 権限がありません。
解決策
MaxCompute 管理者に依頼して、MaxCompute で現在のアカウントにテーブルに対する SELECT 権限を付与してもらいます。詳細については、「MaxCompute で権限を付与する」をご参照ください。
権限が付与された後、外部テーブルを再度クエリして、エラーが発生しなくなったことを確認します。
外部テーブルのクエリ失敗:The sensitive label of column 'xxx' is 2, but your effective label is 0
問題
Hologres コンソールで外部テーブルを作成した後、外部テーブルをクエリすると次のエラーが返されます: The sensitive label of column 'xxx' is 2, but your effective label is 0。
原因
現在のアカウントは MaxCompute テーブルの一部のカラムに対してのみ権限を持っています。
解決策
この問題を解決するには、次のいずれかの方法を使用できます。
(推奨) Hologres インスタンスを V0.8 以降にアップグレードします。インスタンスがアップグレードをサポートしている場合、これが推奨される解決策です。Hologres ユーザーグループを検索して参加し、アップグレードをリクエストしてください。詳細については、「Hologres ユーザーグループに参加する」をご参照ください。
インスタンスをアップグレードできない場合は、クエリを実行する前に次のパラメータを追加します。
set hg_experimental_enable_odps_executor=on;
set hg_experimental_enable_query_master=on;すべてのカラムに対する権限を取得できる場合は、MaxCompute 管理者に依頼して、現在のアカウントにすべてのカラムへのアクセス権を付与してもらいます。詳細については、「MaxCompute で権限を付与する」をご参照ください。
選択した方法を適用した後、外部テーブルを再度クエリして、クエリが成功することを確認します。
クロスプロジェクトアクセスの失敗:You have NO privilege 'odps:Select' on xxx
問題
現在のアカウントはすでに MaxCompute テーブルに対する SELECT 権限を持っていますが、プロジェクト間で MaxCompute テーブルにアクセスすると次のエラーが返されます: You have NO privilege 'odps:Select' on xxx。
原因
現在のアカウントは MaxCompute テーブルに対する SELECT 権限を持っていますが、クロスプロジェクトアクセスは依然として失敗します。これは、MaxCompute がクロスプロジェクトアクセスにプロジェクトベースの認可を使用している場合に発生します。
解決策
MaxCompute がプロジェクトベースの認可を使用している場合、Hologres の SQL ステートメントの前に次の SET ステートメントを追加します。<holoprojectname> を Hologres プロジェクトの名前に置き換えてください。
-- V0.7 インスタンスの場合、次のステートメントを実行して権限を付与します
set seahawks.seahawks_internal_current_odps_project='<holoprojectname>';
-- V0.8 インスタンスの場合、次のステートメントを実行して権限を付与します
set hg_experimental_odps_current_project_name = '<holoprojectname>';SET ステートメントを追加した後、クロスプロジェクトクエリを再度実行して、エラーが発生しなくなったことを確認します。
外部テーブルの作成失敗:You have NO privilege 'odps:List' on xxx
問題
Hologres コンソールで HoloWeb または DataStudio を使用してビジュアルインターフェイス経由で外部テーブルを作成すると、次のエラーが返されます: You have NO privilege 'odps:List' on xxx。
原因
現在のアカウントに MaxCompute のすべてのテーブルを表示するための LIST 権限がありません。
解決策
MaxCompute 管理者に依頼して、現在のアカウントに MaxCompute のすべてのテーブルを表示するための LIST 権限を付与してもらいます。詳細については、「MaxCompute で権限を付与する」をご参照ください。
ビジュアルインターフェイスの代わりに SQL ステートメントを使用して外部テーブルを作成し、データをクエリします。詳細については、「SQL を使用して外部テーブルを作成する」をご参照ください。
選択した方法を適用した後、外部テーブルの作成を再試行して、エラーが発生しなくなったことを確認します。
外部テーブルの作成失敗:Access denied by project ip white list
問題
Hologres コンソールで HoloWeb を使用して外部テーブルを作成すると、次のエラーが返されます: Access denied by project ip white list: sourceIP:'xxxx' is not in white list. project: xxxx。
原因
現在の MaxCompute プロジェクトでは IP アドレスホワイトリストが設定されており、HoloWeb がそのリストに含まれていません。
解決策
MaxCompute プロジェクトで IP アドレスホワイトリスト機能が有効になっている場合、ホワイトリストに含まれる IP アドレスのみがプロジェクトにアクセスできます。有効な AccessKey ID と AccessKey Secret があっても、ホワイトリストに含まれていない IP アドレスからのリクエストは拒否されます。エラーメッセージに記載されている IP アドレスを MaxCompute プロジェクトのホワイトリストに追加してください。詳細については、「IP アドレスホワイトリストを設定する」をご参照ください。
IPアドレスがホワイトリストに追加された後、外部テーブルの作成を再試行して、エラーが発生しなくなったことを確認します。
外部テーブルの作成失敗:You don't exist in project xxx
問題
外部テーブルを作成すると、次のエラーが返されます: You don't exist in project xxx。
原因
外部テーブルを作成するアカウントに、指定された MaxCompute プロジェクトへのアクセス権限がありません。
解決策
アクセス対象の MaxCompute プロジェクトの名前を確認してください。プロジェクト名が間違っている場合は、正しいプロジェクト名を使用してください。プロジェクト名が正しいにもかかわらずエラーが続く場合は、エラーメッセージに記載されているアカウントに MaxCompute プロジェクトへのアクセス権限を付与してください。詳細については、「MaxCompute プロジェクトにユーザーを追加する」をご参照ください。
権限が付与された後、外部テーブルの作成を再試行して、エラーが解決されたことを確認します。