Google Cloudに関するアクセス権の多くは gcloud project add-policy-binding
コマンドなどを使うことで、コマンド1発で付与/削除できます。
しかし、BigQueryデータセットへの権限付与をコマンドラインからやろうとすると、以下のドキュメントにかかれているように複数コマンドが必要になってしまい煩雑です。
また、JSONファイルをダンプした後に修正して反映という流れを取っているので、ダンプ後に他の箇所から権限の変更が行われた場合は、それを上書きしてしまうという欠点もあります。
そのため、 add-policy-binding
などと同様にコマンド1発で権限の付与/削除を行う方法があると便利です。
このようなbqコマンドを使うとコマンド1発で権限の付与/削除ができます。
GRANT文やREVOKE文では1発で処理を行えるため、それをbq query経由で呼び出しています。
bq query --use_legacy_sql=false \
'GRANT <ロール名> ON SCHEMA `プロジェクト名.データセット名` TO "user:メールアドレス"'
bq query --use_legacy_sql=false \
'REVOKE <ロール名> ON SCHEMA `プロジェクト名.データセット名` FROM "user:メールアドレス"'