このページでは、Cloud Data Fusion のロールベースアクセス制御(RBAC)を使用したきめ細かい承認について説明します。
Cloud Data Fusion インスタンスで RBAC を有効にすると、インスタンスと名前空間内のアクセスを制御できます。たとえば、Cloud Data Fusion リソースにアクセスできるユーザーや、そのユーザーがリソースで実行できる操作を制御できます。
RBAC のユースケース
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 つの要素で構成されます。
プリンシパル
プリンシパルにロールを付与して、Cloud Data Fusion リソースへのアクセス権を変更します。
ロール定義
ロールには、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 をご覧ください。
次のステップ
- Cloud Data Fusion で RBAC を使用する方法を確認する。