ロールベース アクセス制御(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 の 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 をご覧ください。

次のステップ