このトピックでは、Data Lake Formation(DLF)の権限システムと、Resource Access Management(RAM)ユーザーがDLFの機能を適切に使用できるように権限を付与する方法について説明します。
DLF の権限は、RAM 権限と DLF データ権限の 2 つの主要なカテゴリに分類されます。 通常、データリソースに正しくアクセスするには、これら 2 つのレベルの権限検証に合格する必要があります。
RAM 権限: すべての DLF API 操作へのアクセスを制御し、RAM ユーザーが特定の DLF API 操作またはページにアクセスできるかどうかを決定します。
DLF データ権限: データベース、テーブル、列、関数、データカタログなどの DLF 内部リソースへのアクセスと使用を制御します。 また、データ権限の管理も制御します。
レイヤー 1:RAM ユーザーの API 操作権限
このレイヤーは、すべての DLF API 操作に対するアクセス権限を制御し、RAM ユーザーが特定の DLF API 操作またはページにアクセスできるかどうかを決定します。 RAM コンソールでは、次の 2 つの組み込み認証ポリシーが提供されています。
AliyunDLFFullAccess: すべての DLF API 操作を呼び出す権限を定義します。
AliyunDLFReadOnlyAccess: List や Get API 操作など、すべての DLF 読み取り専用 API 操作を呼び出す権限を定義します。 ただし、Create や Delete などの他の API 操作を呼び出す権限は付与されません。
重要SubmitQuery API 呼び出しは書き込み操作と見なされます。 SubmitQuery API 操作を正常に呼び出すには、
AliyunDLFFullAccess
ポリシーを RAM ユーザーにアタッチします。
API 操作レベルでより詳細なアクセスの制御を実装するために、アクセスの制御要件に基づいて RAM 認証ポリシーをカスタマイズすることもできます。
レイヤー 2:DLF 詳細データ権限
このレイヤーは、データベース、テーブル、列、関数、データカタログなどの DLF 内部リソースへのアクセスと使用に対する権限を制御します。 また、ロール、ユーザー、および権限を管理する権限も制御します。
2 番目のレイヤーは主にデータ権限を制御します。これは、「DLF 詳細データ権限」と「RAM ユーザー向けの DLF-DSS 粗粒度データ権限」の 2 つのカテゴリに分類されます。 2 つのカテゴリ間には OR 関係があります。 ユーザーが 2 つのデータ権限検証のいずれかに合格すると、ユーザーはデータ権限を持ちます。 それ以外の場合、両方のデータ権限検証が失敗すると、ユーザーはデータ権限を持ちません。
データベース、テーブル、列、関数、データカタログなどのデータリソースに対する権限の検証は、データカタログ権限制御スイッチをオンにした後にのみ有効になります。 詳細なデータ権限検証は、データカタログ権限制御スイッチがオンになっているかどうかに関係なく、ロール、ユーザー、および権限の管理に対する権限に対して実行されます。
管理者がデータ権限を管理しやすくするために、DLF は 2 種類の組み込みデータ権限管理者を提供しています。 これらの 2 つのロールは、[データ権限] > [ロール] を選択して見つけることができ、特定のユーザーをロールに追加できます。
admin(データレイク管理者): DLF のすべてのデータ権限と認証権限を持っています。
super_administrator(スーパー管理者): DLF のすべてのデータ権限と認証権限を持ち、admin ユーザーを変更できます。
より詳細な権限設定については、「データ権限」をご参照ください。
レイヤー 2:RAM ユーザー向けの DLF-DSS 粗粒度データ権限
このレイヤーは、データベース、テーブル、列、関数、データカタログなどの DLF 内部リソースへのアクセスと使用に対する権限を制御します。 また、ロール、ユーザー、および権限を管理する権限も制御します。 RAM コンソールでは、次の 2 つの組み込み認証ポリシーが提供されています。
AliyunDLFDSSFullAccess: すべての詳細 DLF リソースにアクセスする権限を示します。
AliyunDLFDSSReadOnlyAccess: List、Get、Select、Execute など、すべての詳細 DLF リソースに対する読み取り専用権限を示します。
現在、RAM ユーザー向けの DLF-DSS 粗粒度データ権限は、多くのシナリオには適用できません。 これらの権限は、主に Alibaba Cloud サービス間の相互信頼を迅速に確立するために使用されます。 詳細なデータ権限管理には、DLF 詳細データ権限を使用することをお勧めします。
データベース、テーブル、列、関数、データカタログなどのデータリソースに対する権限の検証は、データカタログ権限制御スイッチをオンにした後にのみ有効になります。 DLF-DSS 粗粒度データ権限の検証は、データカタログ権限制御スイッチがオンになっているかどうかに関係なく、ロール、ユーザー、および権限の管理に対する権限に対して実行されます。
RAM ユーザーに AdministratorAccess が付与されている場合、RAM ユーザーはすべての DLF-DSS 権限を持ちます。これは AliyunDLFDSSFullAccess と同等です。
一般的なシナリオ
RAM ユーザーは、メタデータクエリなどの権限を必要とし、データ権限管理を実行する必要はありません。
レイヤー 1 で RAM ユーザーに API 操作の権限を付与し、必要に応じて組み込み認証ポリシー AliyunDLFFullAccess または AliyunDLFReadOnlyAccess を付与します。
RAM ユーザーは、DLF データ権限を管理し、詳細なデータ認証を実行する必要があります。
手順 1:レイヤー 1 で RAM ユーザーに API 操作の権限を付与し、必要に応じて組み込み認証ポリシー AliyunDLFFullAccess または AliyunDLFReadOnlyAccess を付与します。
手順 2:目的のデータカタログの権限制御スイッチをオンにします。 詳細については、「権限の構成」をご参照ください。
手順 3(オプション):E-MapReduce(EMR)などのサービスを使用してデータのクエリと変更を行う場合は、EMR クラスタで DLF-Auth 権限スイッチをオンにします。
手順 4:次の方法で RAM ユーザーに必要なデータ権限を付与します。
権限に関するよくある質問
質問 1:ページへのアクセス中にエラーメッセージが表示され、RAM ユーザーに DLF API 操作を呼び出す権限がないことが示されます。
症状:ページには、RAM ユーザーに DLF API 操作に対する dlf:xxx 権限を付与する必要があることが表示されます。 DLF には、RAM コンソールに組み込みの AliyunDLFFullAccess および AliyunDLFReadOnlyAccess 権限があります。 ビジネス要件に基づいて、RAM ユーザーにこれらの権限を付与できます。
質問 2:認証中にリソース権限がないことが表示されます。
症状:RAM ユーザーが権限を付与すると、ユーザーに DLF 権限がないことが表示されます。
質問 3:RAM ユーザーに、listPermissions や listRoles などの権限関連の API 操作を呼び出す権限がありません。
症状:RAM ユーザーが権限関連の API 操作を呼び出すとエラーが発生します。 たとえば、RAM ユーザーが権限クエリまたはロール管理を実行すると、ユーザーに対応する操作権限がないことが表示されます。 エラーコードは NoPermission です。 この問題は、次の方法で解決できます。
ユーザーに DLF の admin または super_administrator ロールを付与します。 詳細については、「ロール管理」をご参照ください。
ユーザーに DLF-DSS 権限を付与します。 DLF には、RAM コンソールに組み込みの AliyunDLFDSSFullAccess および AliyunDLFDSSReadOnlyAccess 権限があります。 例:
dlf-dss:ListRoles は、ユーザーが DLF のすべてのロールを表示できることを示します。
dlf-dss:ListPermissions は、ユーザーが DLF のすべての付与された権限を表示できることを示します。