使用状況
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
サブパラメータを持つユーザー属性の許容値のリストを受け取ります。指定されたユーザー属性で許可されている値のいずれかが割り当てられたユーザーのみが、アクセス許可が必要な構造にアクセスできます。
定義後、Explore、JOIN、view、field レベルで 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
と完全には一致しないためです。この場合、ユーザー属性値が 1
、3
、または 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 要素を再利用する予定がある場合は、可能な限り下位レベルでアクセス制限を適用することをおすすめします。