[Immuta] グローバルサブスクリプションポリシー詳解

ガチのサブスクライバーになろう
2022.05.19

大阪オフィスの玉井です。

Immutaのサブスクリプションポリシーですが、細かい設定を見ていくと、ちょっと詰まるところもあったりしたので、しっかりと調査することにしました。

サブスクリプションポリシーとは

「そのデータソースをどのユーザーに見せるか」を決定します。

条件に該当したユーザーに対してのみ、そのデータソースを見せるようにできます。見せる/見せないのイメージですが、ポリシーのルールに該当しないユーザーは、そのデータソースが画面に一切出てきません。つまり、そのデータソースの存在自体に気づかなくなります。

ユーザーにデータを見せることを、Immutaでは「サブスクライブする」と呼称します。

グローバルサブスクリプションポリシーとは

「グローバル」というのは、Immuta全体を指します。つまり、Immuta全体に適用されるサブスクリプションポリシーが、グローバルサブスクリプションポリシーです。

対して、ローカルサブスクリプションポリシーというのもありますが、これは特定のデータソースに対してのみ設定できるサブスクリプションポリシーです。

興味があれば、下記もどうぞ。

設定解説

ここからは、グローバルサブスクリプションポリシーで具体的に設定できる項目を解説してきます。

What is the name of this policy?

これは簡単。ポリシーの名前を決めてください。

How should this policy grant access?

「このポリシーはどのような方法でアクセスを許可しますか?」

上述の通り、グローバルサブスクリプションポリシーとは、データそのものに対するアクセスのON/OFFを決定します。この設定では、どういう形式でON/OFFを行うか、を決めます。

Allow Anyone

「誰でも許可」ということで、全ユーザーにデータソースへのアクセスを許可します。

Require users to take action to subscribeというチェックボックスをONにすると、自動でサブスクリプションされなくなります。つまり、アクセスは許可するが、そのデータソースを見ようとした場合、ユーザーが手動で任意のデータソースに対してサブスクリプションの操作を行うことになります。

Allow anyone who asks (and is approved)

誰でもアクセス許可にはなるものの、別途承認者を設ける形になります。

ユーザーがアクセスしたいと思った時(サブスクリプションしようとした時)、別途承認者が承認しない限り、そのユーザーはデータソースにアクセスすることはできません。

追加の設定でWho is required to approve requests?があります。文章の通り、承認者をここで決めます。特定の権限を持っているユーザーを指定することができます。

ちなみに、承認者の設定で/an individual selected by user/を選ぶと、ユーザーがそのデータソースへのアクセスをリクエストした際、承認者をユーザーが選ばないといけなくなる形になります。

Allow users with specific groups/attributes

特定のグループ(に所属しているユーザー)や、特定のAttribute(の値)を持っているユーザーだけにアクセスを許可します。一番イメージしやすいルールだと思います。

Individually Selected Users

アクセスを許可したいユーザーを完全手動で選びます。

ここで選ぶユーザーは静的(動的に変わらない)です。何か要件が変われば、都度変更しないといけないので、かなり特殊なユースケースの時じゃないと選ばない気がします。

追加のWho should be allowed to subscribe?という設定で、アクセスを許可するユーザーの条件を設定します。

最初の設定で「Create using Advanced DSL」を選ぶと、Web UIではなく、独自の言語でポリシーを記述することができます。

Web UIで設定する場合は、画面そのままで、許可するグループだとかAttributeだとかを設定します。

その他の設定については以下の通りです。

  • Allow Data Source Discovery
    • 条件に該当しなくても、そのデータソース自体の表示は許可します(存在がわかる)。
  • Require Manual Subscription
    • 条件に該当していても、サブスクリプションはユーザー側が手動で行う必要があります(Allow Anyoneの時のチェックボックスと同じ)。
  • Request Approval to Access
    • 条件に該当しなくても、アクセスのリクエストを行うことができるようになります。
    • この設定をONにする場合、リクエストが来た時の承認者を決める必要があります。

最後に Should this policy always be required or share responsibility?という設定が出てきます。これは、そのデータソースに複数のグローバルサブスクリプションポリシーが重なって設定されていた場合の挙動を決めます。

Always Requiredにすると、被っているグローバルサブスクリプションポリシーの条件も全て満たす必要があります(AND条件)。Share Responsibilityにすると、最低1つのグローバルサブスクリプションポリシーが満たされていればOKです(OR条件)

Where should this policy be applied?

「このポリシーを適用する場所は?」

基本的には「このポリシーを適用するデータを決める設定」と思って下さい。

On all data sources

(Immutaに登録されている)全てのデータソースを対象とします。

On data sources

対象となるデータソースの条件を設定します。特定のタグがついたデータソース、特定のスキーマ下のテーブル、作成された日時等で、対象となるデータソースの条件を設定することができます。

When selected by data owners

これは、この場で対象データを決めるのではなく、データオーナー(権限を持つユーザー)が、自分が管轄しているデータソースに対して、個別に割り当てる形式です。ですので、この形式の場合、ポリシーのステージングはできません(データオーナーが個別に選ぶので、ステージングという概念が無い)。

オーナーとなっているユーザーが、下記のようにサブスクリプションポリシーを個別に指定することができます。

おわりに

新しいユーザーやデータが登録されても、自動で反映されるように、なるべく動的に動くルールにするのがコツです。そうすると、これ以上色々と設定をすることなく、データガバナンスを(半自動的に)効かせ続けることができます。