意外とハマりました。
クエリー結果を参照できる条件
ジョブの結果からSQLクエリーの実行結果を参照するには、以下の条件を全て満たす必要があります。
- 参照者がジョブの参照権限を持っている
- 参照者が実行されるクエリーの参照権限を持っている
- 以下のいずれかを満たしている
- ジョブの実行者とクエリーの実行者が一致している
- ジョブの実行者とジョブ結果の参照者が一致している
クエリーの実行者はクエリーの権限設定で選択します。この際に注意しなくてはならないのは資格情報です。所有者として実行と閲覧者として実行が選択できます。
- 所有者として実行:クエリーの作成者の権限でクエリーが実行されます。
- 閲覧者として実行:クエリーを参照するユーザーの権限でクエリーが実行されます。
条件1と条件2は設定すれば良い話ですが、条件3-1を満たすのか、条件3-2を満たすのかでアプローチが変わってきます。
条件3-1「ジョブの実行者とクエリーの実行者が一致」を満たすアプローチ
ジョブの実行者とクエリーの実行者が一致している必要がありますが、ジョブの実行者は設定可能ですが固定です。クエリーの資格情報が所有者として実行になっているのであれば、ジョブの実行者もクエリーの所有者にすればOKです。
以下の例では、一番上のユーザーがクエリーlast_login
の所有者(クエリー所有者)です。このユーザーの権限でクエリーが実行されるようにします。また、参照者(takaaki.yayoi@databricks.com: 参照ユーザー)に対してクエリーの参照権限を付与します。
このSQLクエリーを実行するジョブの実行者もクエリー所有者にします。
これで、参照ユーザーもSQLクエリーの実行結果を参照できます。
条件3-2「ジョブの実行者とジョブ結果の参照者が一致」を満たすアプローチ
クエリーの資格情報を所有者として実行に設定できないケースがあります。その場合にはこちらのアプローチを取ることになります。クエリー結果の参照者をジョブの実行者にするというものです。注意点としては、特定のユーザーに対して設定できるものであり、グループには設定できないというものです。
クエリーの資格情報を閲覧者として実行を選択します。そして、参照者(takaaki.yayoi@databricks.com: 参照ユーザー)に対してクエリーの実行権限を付与します。また、クエリーで操作するテーブルに対して適切な参照権限を付与します。
参照ユーザーとしてジョブの実行結果にアクセスするとクエリーの結果を確認できます。