access_grant

使用状況

access_grant: access_grant_name {
user_attribute: user_attribute_name
allowed_values: [ "value_1", "value_2" , ... ]
}
階層
access_grant
デフォルト値
なし

許可
user_attribute サブパラメータを持つユーザー属性の名前と、allowed_values サブパラメータを持つユーザー属性値のリスト。

定義

アクセス許可は、他の LookML 構造(特に Explore、結合、ビュー、フィールド)へのアクセスを制御する LookML 構造です。access_grant パラメータは、アクセス許可を定義します。

access_grant は、user_attribute サブパラメータを持つユーザー属性の名前と、allowed_values サブパラメータを持つユーザー属性の許容値のリストを受け取ります。指定されたユーザー属性で許可されている値のいずれかが割り当てられたユーザーのみが、アクセス許可が必要な構造にアクセスできます。

定義後、ExploreJOINviewfield レベルで required_access_grants パラメータを使用して、これらの構造にアクセスするためのアクセス許可を要求できます。

たとえば、次の LookML では、department ユーザー属性に基づいて can_view_financial_data というアクセス許可が作成されます。department ユーザー属性で値 "finance" または "executive" が割り当てられているユーザーのみに、can_view_financial_data アクセス許可が付与されます。

access_grant: can_view_financial_data {
  user_attribute: department
  allowed_values: [ "finance", "executive" ]
}

次に、required_access_grants パラメータを使用して、can_view_financial_data アクセス許可を LookML 構造に関連付けます。

dimension: financial_data_field
  ...
  required_access_grants: [can_view_financial_data]
}

上記の例では、financial_data_field ディメンションは、can_view_financial_data アクセス許可について適切なユーザー属性値を持つユーザーに対してのみ表示されます。

モデルには複数のアクセス許可を定義できます。また、required_access_grants パラメータを使用して LookML 構造に複数のアクセス許可を割り当てることができます。その場合、LookML 構造にアクセスするには、指定したすべてのアクセス許可にユーザーがアクセスできる必要があります。

たとえば、次の LookML では 2 種類のアクセス許可を定義しています。

access_grant: can_view_financial_data {
  user_attribute: department
  allowed_values: [ "finance", "executive" ]
}

access_grant: can_view_payroll_data {
  user_attribute: view_payroll
  allowed_values: [ "yes" ]
}

次に、以下のビューファイルで、required_access_grants パラメータに両方のアクセス許可を指定します。

view: payroll {
  ...
  required_access_grants: [can_view_financial_data, can_view_payroll_data]
}

この場合、ビューにアクセスできるのは、department ユーザー属性に値 "finance" または値 "executive" が割り当てられていて、view_payroll ユーザー属性に値 "yes" が割り当てられているユーザーのみです。

engineering のアクセス権にアクセスするには、ユーザーが department 属性の値 "product_management" または値 "engineering" のいずれかを必要とするアクセスレベルを定義します。

access_grant: engineering {
  user_attribute: department
  allowed_values: [ "product_management", "engineering" ]
}

数値データ、または日時データを取得するユーザー属性を使用してアクセス許可を定義することもできます。これを行うには、文字列の場合と同様に、許可されている値を二重引用符で囲む必要があります。たとえば、次のアクセス許可は、データ型数値であるidユーザー属性を参照しています。id 値が 1、2、3、4、5 のユーザーのみにアクセス権が付与されます。

access_grant: user_id {
  user_attribute: id
  allowed_values: ["1", "2", "3", "4", "5"]
}

次の例では、ユーザー属性が Date/Time であるユーザー属性 start_date を参照しています。ユーザー属性の値が 2020-01-01 であるユーザーにのみアクセス権が付与されます。

access_grant: start_date {
  user_attribute: start_date
  allowed_values: ["2020-01-01"]
}

注意点

アクセス許可では、ユーザーが編集できるユーザー属性は使用できません

ユーザーのアクセスレベル編集されているユーザー属性は、アクセス権の付与できません。ユーザーは、アカウント ページユーザー アクセスレベルが編集されたユーザー属性値を表示および編集できます。セキュリティ上の理由から、access_grant では、ユーザー アクセスレベルが None または View のユーザー属性のみが許可されます。

allowed_values の値は、ユーザー属性値と完全に一致する必要があります

access_grant は、データ型が文字列フィルタ(高度)数値フィルタ(詳細)、または日時フィルタ(詳細)のデータ型を持つユーザー属性で使用できます。ただし、アクセスを許可するには、allowed_values パラメータにリストされている値がユーザー属性値と正確に一致している必要があります。

たとえば、データ型が数値フィルタ(高度)numeric_range というユーザー属性を作成した場合、Looker フィルタ式を使用して [1, 20] などの数値の範囲を入力できます。この例の場合、ユーザー属性の Looker フィルタ式は、1 ~ 20 の数値範囲を返します。ただし、access_grant には完全一致が必要なため、パラメータ allowed_values: ["10"] を使用してもアクセス権は付与されません。アクセス権を付与するには、allowed_values: ["[1, 20]"] を使用する必要があります。

これは、複数の値を持つユーザー属性にも当てはまります。たとえば、データ型が数値フィルタ(高度)で、値が 1, 3, 5 のユーザー属性は、パラメータ allowed_values: ["1, 3, 5"] のアクセス許可のみに一致します。同様に、パラメータ allowed_values: ["1"] を指定してアクセス許可を付与した場合、ユーザー属性に複数の値を持つユーザーへのアクセス権は付与されません。また、allowed_values: ["1", "3", "5"] パラメータを含むアクセス許可は、このユーザーにアクセスを許可しません。allowed_values: [] パラメータは複数の値を受け入れることができますが、allowed_values: ["1", "3", "5"] パラメータ内の 3 つの値はいずれも、ユーザー属性値 1, 3, 5 と完全には一致しないためです。この場合、ユーザー属性値が 13、または 5 のユーザーには、allowed_values: ["1", "3", "5"] パラメータ内のいずれかのオプションと一致するため、アクセス権が付与されます。

同様に、access_grant では、データ型文字列フィルタ(高度)のユーザー属性と完全に一致する必要があります。一般的な Looker のフィルタ式とは異なり、パラメータ allowed_values: [ "Ca%" ] を使用しても、ユーザー属性が値 Canada または California を持つことはありません。正確に Ca% のユーザー属性値のみがマッチングされ、アクセス権が付与されます。

アクセス権を付与されていないユーザーの動作は、LookML の構造によって異なります。

アクセス許可のないユーザーは、どの LookML 構造にアクセスしようとしているかによって、動作が異なります。これらの構造に対するアクセス制限について詳しくは、Explore結合ビューフィールドの各レベルの required_access_grants ドキュメント ページをご覧ください。

複数のレベルのアクセス許可がまとめて追加される

アクセス許可をネストする場合、アクセス許可は追加されます。たとえば、ビュー内にrequired_access_grants作成し、required_access_grantsフィールド内にビュー内に作成できます。このフィールドを表示するには、フィールドとビューの両方のアクセス許可が必要です。同様に結合の場合: 結合のビューに required_access_grants を作成し、さらにその 2 つのビューの required_access_grants も作成した場合、ユーザーは結合されたビューを表示するために、両方のビューと結合へのアクセス権が付与されている必要があります。

制限付きの構造体を参照する構造体へのアクセス

ユーザーは、アクセス権のない LookML オブジェクトを含む Look またはダッシュボードにアクセスできます。このような状況では、LookML または LookML のオブジェクトがモデルから削除されているかのように、Look またはダッシュボードが表示されます。

結合 A、ビュー A、フィールド A を含む Explore A があるとします。次に、Explore A に対してアクセス制限を設定します。想定どおり、A、ビュー A、フィールド A を結合すると、この制限が継承されます。ただし、ユーザーが Explore A を操作する場合のみです。結合 A、ビュー A、またはフィールド A が、別の Explore B で使用されている場合、必ずしもアクセス制限があるとは限りません。そのため、LookML 要素を再利用する予定がある場合は、可能な限り下位レベルでアクセス制限を適用することをおすすめします。