ロールベース アクセス制御(RBAC)の概要

このページでは、Cloud Data Fusion バージョン 6.5 以降で利用可能なロールベースのアクセス制御(RBAC)を使用したきめ細かい認可について説明します。

RBAC は、Cloud Data Fusion でパイプラインを開発する環境内のアクセスを制限します。RBAC は、誰が Cloud Data Fusion リソースにアクセスできるか、そのユーザーはそれらのリソースで何ができ、どの領域(インスタンスや名前空間など)にアクセスできるかを管理するのに役立ちます。Cloud Data Fusion の RBAC は、Identity and Access Management(IAM)を活用したきめ細かなアクセス管理を行う認可システムです。

RBAC を使用する場合

ロールベース アクセス制御は、単一の Cloud Data Fusion インスタンス内で名前空間レベルの分離を提供します。次のユースケースに推奨されます。

  • 組織で使用されているインスタンス数を最小限に抑える。
  • 複数のデベロッパー、チーム、ビジネス ユニットがあり、1 つの Cloud Data Fusion インスタンスを使用する。

Cloud Data Fusion の RBAC を使用すると、組織は次のことが可能になります。

  • ユーザーに名前空間内でのみパイプラインの実行を許可しますが、アーティファクトまたはランタイム コンピューティング プロファイルの変更は許可しません。
  • ユーザーにパイプラインの表示のみを許可しますが、パイプラインの変更と実行は許可しません。
  • ユーザーにパイプラインの作成、デプロイ、実行を許可します。

推奨: RBAC を使用する場合でも、分離、セキュリティ、パフォーマンスの安定性を維持するため、開発環境と本番環境には別々のプロジェクトとインスタンスを用意してください。

制限事項

  • ユーザーに、インスタンスまたは名前空間レベルで 1 つ以上のロールを付与できます。
  • RBAC は、Cloud Data Fusion Enterprise エディションでのみ使用できます。
  • 名前空間の数: インスタンスあたりの名前空間の数にハードリミットはありません。
  • RBAC 対応インスタンスの同時ユーザーの最大数については、料金をご覧ください。
  • カスタムロール: カスタム RBAC ロールの作成はサポートされていません。
  • Cloud Data Fusion の RBAC は、接続の管理の承認をサポートしていません。
  • サービス アカウントの OAuth アクセス トークンを使用してバージョン 6.5 RBAC 対応インスタンスにアクセスする場合は、次のスコープ、特に userinfo.email スコープを指定する必要があります。これらがないと、権限拒否エラーが発生します。
    • https://www.googleapis.com/auth/userinfo.email
    • https://www.googleapis.com/auth/cloud-platform または https://www.googleapis.com/auth/servicecontrol

Role assignments(ロールの割り当て)

ロールの割り当ては、プリンシパル、ロール定義、スコープの 3 つの要素で構成されています。

プリンシパル

プリンシパル(旧称「メンバー」)は、Google アカウント(エンドユーザーの場合)、サービス アカウント(アプリと仮想マシンの場合)、または Cloud Data Fusion リソースに対するアクセス権をリクエストする Google グループになります。どのプリンシパルにもロールを割り当てることができます。

ロール定義

ロールには、Google Cloud リソースに対して特定の操作を実行できるようにする一連の権限が含まれています。

Cloud Data Fusion には、使用できる事前定義ロールがいくつか用意されています。

例:

  • インスタンス管理者のロール(datafusion.admin)を使用すると、プリンシパルは名前空間の作成と削除と、権限の付与ができます。
  • 開発者ロール(datafusion.developer)を使用すると、プリンシパルはパイプラインの作成と削除、パイプラインのデプロイと、プレビューの実行ができます。

範囲

スコープは、アクセスが適用される一連のリソースです。ロールを割り当てる際、スコープ(インスタンスや名前空間など)を定義することで許可されるアクションをさらに制限できます。これは、あるユーザーにデベロッパーのロールを 1 つの名前空間のみに割り当てる場合に便利です。

Cloud Data Fusion の事前定義ロール

Cloud Data Fusion RBAC には、使用できるいくつかの事前定義ロールが含まれています。

インスタンス アクセスのロール(datafusion.accessor
プリンシパルに Cloud Data Fusion インスタンスへのアクセス権を付与しますが、インスタンス内のリソースには付与しません。このロールを他の名前空間固有のロールと組み合わせて使用すると、名前空間へのきめ細かなアクセスを行うことができます。
閲覧者のロール(datafusion.viewer
名前空間のプリンシパルに、パイプラインの表示のためのアクセス権を付与しますが、パイプラインの作成や実行のためのアクセス権を付与しません。
オペレーターのロール(datafusion.operator
名前空間のプリンシパルに、パイプラインへのアクセスと実行、コンピューティング プロファイルの変更、コンピューティング プロファイルの作成、アーティファクトのアップロードを行うためのアクセス権を付与します。パイプラインのプレビューを除き、デベロッパーと同じアクションを実行できます。
デベロッパーのロール(datafusion.developer
名前空間のプリンシパルに、名前空間内の制限付きリソース(パイプラインなど)を作成および変更するためのアクセス権を付与します。
編集者のロール(datafusion.editor
Cloud Data Fusion インスタンス内の名前空間の下にあるすべての Cloud Data Fusion リソースに対する完全アクセス権をプリンシパルに付与します。このロールは、プリンシパルに対するインスタンス アクセサー ロールに加えて付与する必要があります。このロールを使用して、プリンシパルは名前空間内にリソースを作成、削除、変更できます。
インスタンス管理者のロール(datafusion.admin
Cloud Data Fusion インスタンス内のすべてのリソースへのアクセス権を付与します。IAM を介して割り当てられます。RBAC を介して名前空間レベルで割り当てられません。
オペレーション datafusion.accessor datafusion.viewer datafusion.operator datafusion.developer datafusion.editor datafusion.admin
インスタンス
アクセス インスタンス
名前空間
名前空間を作成 *
明示的なアクセス権が付与された名前空間にアクセス
明示的なアクセス権が付与されていない名前空間にアクセス *
名前空間の編集
名前空間の削除
名前空間のサービス アカウント
サービス アカウントの追加
サービス アカウントの編集
サービス アカウントの削除
サービス アカウントの使用
RBAC
名前空間内の他のプリンシパルに対する権限の付与または取り消し *
スケジュール
スケジュールを作成
スケジュールを見る
スケジュールを変更
Compute profiles
コンピューティング プロファイルを作成する
コンピューティング プロファイルを表示する
コンピューティング プロファイルを編集する
コンピューティング プロファイルを削除する
接続
接続を作成する
接続を表示する
結合を編集する
接続を削除する
接続を使用する
パイプライン
パイプラインの作成
パイプラインの表示
パイプラインの編集
パイプラインの削除
パイプラインのプレビュー
パイプラインをデプロイする
パイプラインを実行する
セキュリティ キー
セキュリティ キーを作成する
セキュリティ キーを表示する
セキュリティ キーを削除する
タグ
タグを作成する
タグを表示する
タグを削除
Cloud Data Fusion ハブ
プラグインをデプロイする
ソース コントロール管理
ソース コントロール リポジトリを構成する
名前空間からパイプラインを同期する
リネージ
リネージを表示
ログ
ログの表示

* プリンシパルには、インスタンス管理者の RBAC ロールではなく、Data Fusion 管理者の IAM ロールが必要です。

セキュリティに関する推奨事項

セキュリティ モデルを導入して、組織のニーズや要件にそのモデルを合わせることは困難な場合があります。以下の推奨事項は、Cloud Data Fusion の RBAC モデルを導入するためのプロセスをシンプルにすることを目的としています。

  • インスタンス管理者のロールは、慎重に付与する必要があります。このロールにより、インスタンスとその基盤となるすべての Cloud Data Fusion リソースへの完全アクセス権が付与されます。このロールを持つプリンシパルは、REST API を使用して他のユーザーに権限を付与できます。
  • プリンシパルが Cloud Data Fusion インスタンス内の個々の名前空間にアクセスする必要がある場合は、インスタンス管理者のロールを付与することはできません。代わりに、名前空間のサブセットで付与された閲覧者 / デベロッパー / オペレータ / 編集者のロールの 1 つを使用して、インスタンス アクセサーのロールを付与します。
  • インスタンス アクセサーのロールは、プリンシパルのインスタンスへのアクセスを有効にしますが、インスタンス内のリソースにはアクセス権を付与しないため、最初に安全に割り当てることができます。このロールは通常、閲覧者 / デベロッパー / オペレータ / 編集者のいずれかとともに使用され、インスタンス内の名前空間の 1 つまたはサブセットへのアクセス権を付与します。
  • 閲覧者のロールは、ジョブの実行ステータスを確認する場合や、Cloud Data Fusion インスタンスでパイプラインまたはログを表示する場合に、セルフサービスで利用するユーザーや Google グループに割り当てることをおすすめします。たとえば、処理が完了されたかを確認したい日次レポートのユーザーなどです。
  • デベロッパーのロールは、パイプラインの作成、テスト、管理を担当する ETL デベロッパーに推奨されます。
  • 名前空間のオペレーターのロールは、運用管理者や DevOps サービスを提供しているユーザーにおすすめします。デベロッパーは、デベロッパーが実行できるすべての操作(パイプラインのプレビューを除く)の実行と、アーティファクトのデプロイ、コンピューティング プロファイルの管理ができます。
  • 名前空間の編集者の役割は、ユーザーまたは Google グループに名前空間内のすべてのリソースに対する完全アクセス権を付与する特権ロールです。編集者は、デベロッパーとオペレーターのロールを組み合わせたものと考えることができます。
  • 信頼できないプラグインやアーティファクトをインストールすると、セキュリティ リスクが生じる可能性があるため、オペレーター管理者は注意が必要です。

トラブルシューティング

このページでは、Cloud Data Fusion で RBAC に関連する問題を解決する方法について説明します。

RBAC の名前空間の Cloud Data Fusion 閲覧者のロールを持つプリンシパルがパイプラインを編集できる

アクセスは IAM と RBAC のロールの組み合わせに基づいています。IAM ロールは RBAC ロールよりも優先されます。 プリンシパルにプロジェクト編集者または Cloud Data Fusion 管理者の IAM ロールが付与されているかどうかを確認します。

RBAC でインスタンス管理者ロールを持つプリンシパルが Google Cloud コンソールで Cloud Data Fusion インスタンスを閲覧できない

Cloud Data Fusion には、インスタンス管理者ロールを持つプリンシパルが Google Cloud コンソールでインスタンスを閲覧できないという既知の問題があります。この問題を解決するには、プリンシパルにインスタンスへの管理者のロールだけでなく、プロジェクト閲覧者または Cloud Data Fusion IAM ロールのいずれかを付与します。これにより、プロジェクト内のすべてのインスタンスのプリンシパルに閲覧者アクセス権が付与されます。

プリンシパルがロールを持たない名前空間を閲覧できないようにする

プリンシパルがロールを持たない名前空間を閲覧できないようにするには、プリンシパルにプロジェクト閲覧者または、いかなる Cloud Data Fusion の IAM ロールも付与されていない必要があります。代わりに、運用する必要がある名前空間のみで RBAC ロールをプリンシパルに付与します。

このようなアクセス権を持つプリンシパルは、Google Cloud コンソールで Cloud Data Fusion インスタンスのリストを閲覧できません。代わりに、次のようにインスタンスへの直接リンクを提供します。 https://INSTANCE_NAME-PROJECT_ID.REGION_NAME.datafusion.googleusercontent.com/

プリンシパルがインスタンスを開くと、Cloud Data Fusion はプリンシパルが RBAC ロールが付与されている名前空間のリストを表示します。

プリンシパルに Cloud Data Fusion アクセサー ロールを付与する

アクセサー ロールがプリンシパルに暗黙的に割り当てられるのは、他の RBAC ロールが特定の Cloud Data Fusion インスタンスで割り当てられている場合です。プリンシパルが特定のインスタンスでそのようなロールを持っているかどうかを確認するには、IAM Policy Analyzer をご覧ください。

次のステップ