ユーザー属性は、Lookerユーザーごとのカスタマイズされたエクスペリエンスを提供するものです。Looker管理者がユーザー属性を定義し、ユーザー属性値をユーザーグループまたは個々のユーザーに適用します。
管理者は、パスワードや連絡先情報など、ユーザー自身が値を入力するユーザー属性を定義することもできます。Lookerのさまざまな場所で、ユーザー属性を参照することで、ユーザーごとのカスタムエクスペリエンスを提供できます。
Looker では、email
、first_name
、landing_page
、last_name
、full_name
、ID
、timezone
(構成されている場合)、locale
、number_format
などのユーザー属性が自動的に設定されます。
ユーザー属性の表示
ユーザー属性のリストを表示するには、[管理] メニューの [ユーザー] セクションにある [ユーザー属性] ページに移動します。
ユーザー属性の表には、各ユーザー属性の名前、ラベル、タイプが表示されます(詳しくは、次のセクションをご覧ください)。また、ユーザー属性に対して実行できるアクションのボタンもあります。一部の属性には、アクションのボタンの代わりに「System Default」と表示されています。この場合、これらの属性はユーザーごとに自動的に作成されます。システムデフォルトのユーザー属性は、内部使用のためにLookerによって予約されており、編集することはできません。
ユーザー属性の作成
ユーザー属性を定義するには、[管理者] メニューの [ユーザー] セクションにある [ユーザー属性] ページで、[ユーザー属性を作成] ボタンをクリックします。それぞれのユーザー属性に次の設定があります。
- 名前: LookMLなどのテキストベースの環境で使用される、ユーザー属性の名前(名前には小文字、数字、アンダースコアのみを使用できます)。
- ラベル: 名前をユーザー フレンドリーな形で表したもの。デフォルトでは、属性の名前に含まれるアンダースコアをスペースに置き換え、各語の最初の文字を大文字にしたものになります。ただし、必要に応じてラベルを変更できます。
データ型: この設定は、ユーザー属性について、ユーザーに有効な値が割り当てられていることを確認するために使用されます。ユーザー属性のデータタイプには、次のいずれかを指定できます。
- 文字列: ユーザー名など、1つのストリング値と正確に一致するユーザー属性を作成する場合は、このオプションを選択します。ユーザー属性値で複数の文字列値または Looker フィルタ式を使用するには、代わりに [文字列フィルタ(詳細設定)] オプションを選択します。 ユーザー属性をリテラル文字列として扱う場合は、次の例のように構文に単一引用符
'
を含めます:'{{ _user_attributes['name_of_attribute'] }}'
- 数値: 従業員番号など、1つの数値を指定する場合は、このオプションを選択します。数値の範囲または Looker フィルタ式を使用する場合は、数値フィルタ(詳細設定)を使用します。
- 日時: ユーザーの生年月日など、1 つの日時を指定する場合、このオプションを選択します。日付の範囲または Looker フィルタ式を使用する場合は、日時フィルタ(詳細設定)を使用します。
- 相対 URL: Looker インスタンス上のボード、フォルダ、マークダウン ファイル(プロジェクト内の README やドキュメント ファイルなど)などの特定のコンテンツを指す
/browse/boards/2
などの相対 URL を指定するには、このオプションを選択します。たとえば、landing_page
ユーザー属性は相対 URL のデータ型を持ち、ユーザーまたはグループの特定のホームページを指定するために使用できます。 - String Filter(advanced): ユーザー属性で複数の文字列値または Looker フィルタ式を使用できるようにする場合は、このオプションを選択します。文字列に使用できるフィルタ式のリストについては、フィルタ式のドキュメント ページをご覧ください。
- 数値フィルタ(詳細設定): ユーザー属性で数値の範囲または Looker フィルタ式を使用できるようにする場合は、このオプションを選択します。数値に使用できるフィルタ式の一覧については、フィルタ式のドキュメント ページをご覧ください。
- 日時フィルタ(詳細設定): ユーザー属性で日付の範囲または Looker のフィルタ式を使用できるようにするには、このオプションを選択します。日時に使用できるフィルタ式のリストについては、フィルタ式のドキュメント ページをご覧ください。
「文字列フィルタ(詳細設定)、数値フィルタ(詳細設定)、日時フィルタ(詳細設定)入力に使用するデータ型Looker のフィルタ式は、ユーザー属性の値の範囲を返します。
- 文字列: ユーザー名など、1つのストリング値と正確に一致するユーザー属性を作成する場合は、このオプションを選択します。ユーザー属性値で複数の文字列値または Looker フィルタ式を使用するには、代わりに [文字列フィルタ(詳細設定)] オプションを選択します。 ユーザー属性をリテラル文字列として扱う場合は、次の例のように構文に単一引用符
ユーザー アクセス: ユーザー属性についてユーザーに付与する表示と編集のレベルを選択できます。
- なし: ユーザーのアカウント ページには表示されません。
- 表示: ユーザーのアカウントページに表示されますが、編集はできません。
- 編集: ユーザーのアカウント ページに表示され、ユーザーが設定できます。
値を非表示: ユーザー属性がユーザーに表示されていても、このオプションを [はい] に設定すると、ユーザー属性値がマスクされ、パスワードやその他の機密情報に対して効果を発揮します。この値を [はい] に設定すると、[接続設定] ページのユーザー属性プルダウンでもユーザー属性値がマスクされます。この値を [Yes] に設定すると、[No] に戻すことはできません。 [値を非表示] を [Yes] に設定する場合、ユーザー属性の送信先として許可されているドメインの許可リストも指定する必要があります。
ドメインの許可リスト: 新しいユーザー属性の値を非表示にする場合は、データベース接続のホスト名とプロジェクトの Git HTTPS 統合の URL など、属性を配信する URL で構成されるドメイン許可リストも指定する必要があります。ワイルドカード(*)を使用して、同じサイト上の複数のページへの配信を有効にすることができます。ドメインの許可リストを指定したら、そのユーザー属性は、リストした宛先にのみ配信できます。
このユーザー属性に対してドメイン許可リストを指定すると、ユーザーまたはグループに対して、あるいはデフォルト値を設定することによって、ユーザー属性に値が割り当てられている場合は、許可リストを変更して URL の制限を緩和することはできません。URLの制限を強化するか、URLを許可リストから削除することのみが可能です。たとえば、[ドメイン許可リスト] にエントリ
my_domain/route/*
が含まれている場合、後でそれをmy_domain/*
に変更することはできません。許可リストの制限を緩和する必要がある場合は、デフォルト値を含め、ユーザー属性に割り当てられている既存の値をすべて削除してください。デフォルト値を設定する: 値がユーザーに割り当てられていない場合にデフォルト値を設定するには、このチェックボックスを選択します。
ユーザー属性を定義したら、ページで [ユーザー値] と [グループ値] のタブをクリックして、個々のユーザーまたはユーザー グループに値を割り当てることができます。
個々のユーザーへの値の割り当て
ユーザー属性を定義したら、その値を個々のユーザーに割り当てることができます。
- [管理者] メニューの [ユーザー] セクションにある [ユーザー属性] ページで [ユーザー値] タブをクリックします。
- 値を割り当てるユーザーをプルダウン メニューで選択します。そのユーザーに適用される値のテーブルが表示されます。
- [ユーザーの値を設定する] ボタンをクリックします。
- [新しい値] フィールドに新しい値を入力します。
- [保存] をクリックします。
個々のユーザーに値を割り当てると、その値は常にユーザーのグループに割り当てられた値よりも優先されます。[User Values] タブには、グループ値をオーバーライドするカスタム値がユーザー属性に割り当てられていることが示されます。オーバーライドされた値の横には「オーバーライドされました」というテキストが表示され、これらの値は考慮されなくなります。アクティブなユーザー属性値の横に「現在の値」というテキストが表示されます。
ユーザー属性に複数の値を割り当てるには、String Filter(advanced) データ型を使用し、複数の値をカンマで区切って入力します。値の間に空白文字がないようにします。たとえば、次のように文字列を入力します。Executive, Management, Contributors
使用可能なすべての値をLooker管理者またはその他のユーザーに割り当てる場合は、ユーザー属性でワイルドカード値を使用します。
管理者または別のユーザーに文字列フィールドのすべての値へのアクセスを許可するには、ユーザー属性のデータ型を [文字列フィルタ(詳細設定)] に設定し、値
%, NULL
を使用します。管理者または別のユーザーに数値フィールドのすべての値へのアクセスを許可するには、ユーザー属性のデータ型を [数値フィルタ(詳細設定)] に設定し、値
<0, >=0, NULL
を使用します。
ユーザーグループへの値の割り当て
ユーザー属性の値をユーザー グループに割り当てることができます。[管理] パネルの [ユーザー属性] ページで、設定する属性の右側にある [編集] を選択します。続いて、次の手順を実行します。
- [グループ値] タブをクリックします。
- [+ グループを追加] ボタンをクリックします。
- 値を割り当てるグループをプルダウン メニューで選択します。
- [値] フィールドにグループに割り当てる値を入力します。
- [保存] をクリックします。
値を複数のグループに割り当てるときには、ユーザーが複数のグループに属する場合に備えて、どのグループを優先するかを決定する必要があります。そのためには、グループをドラッグして適用順に並べます。各グループは、その下にリストされているグループよりも優先されます。
たとえば、エグゼクティブ チームとマネージメント チームのグループがあるとします。役員はマネージャーでもあるため、両方のグループのメンバーです。エグゼクティブ チーム グループをリストの先頭にドラッグすると、そのメンバーには「マネージャー」の値ではなく「エグゼクティブ」の値が割り当てられます。
ユーザーがユーザー属性についてカスタム値を設定した場合、ユーザーが設定した値は、そのユーザーが属するグループに割り当てられているどの値よりも優先されます。
ユーザー属性を使用できる場所
ユーザー属性には次の機能があります。
データベース接続
ホスト、ポート、データベース、ユーザー名、パスワード、接続のスキーマには、それぞれユーザー属性の値が与えられます(接続のホストフィールドでは、[ユーザー アクセス] レベルが [編集可能] に設定されているユーザー属性は受け入れられません)。
これらのユーザー属性により、その属性はクエリを実行するユーザーに固有のものになります。ユーザー属性は、[その他の JDBC パラメータ] フィールドで参照することもできます。これにより、JDBC 接続文字列がカスタマイズされます。ユーザーがその接続を使用してクエリを実行する際に、ユーザーに割り当てられたユーザー属性値が適用され、ユーザーに基づいて接続をカスタマイズできます。
構成
Looker の [管理] セクションの [接続] ページから、ユーザー属性を使用するように任意の接続を設定できます。([接続] ページの情報については、管理者の設定 - 接続ページをご覧ください)。新しい接続を作成するには、[接続を追加] をクリックします。既存の接続を構成するには、接続の横にある [編集] をクリックします。
入力にユーザー属性を設定できる場合は、入力 の横に Looker の [ユーザー属性] ボタンが表示されます。
[ユーザー属性] ボタンをクリックするとプルダウン メニューが表示され、目的のユーザー属性を選択できます。リストには、ユーザー属性名と、現在のユーザーのユーザー属性値がかっこ中に表示されます。
[その他の JDBC パラメータ] フィールドでユーザー属性を参照するには、LookML で利用できるものと同じ Liquid テンプレート構文を使用します。ユーザー属性は、_user_attributes
Liquid 変数を通じて使用できるようになります。たとえば、my_jdbc_param_attribute
という名前のユーザー属性を参照するには、次の構文を使用します。
my_jdbc_param={{ _user_attributes['name_of_attribute'] }}
ユースケース: Looker でデータベース レベルの権限を適用する
データベースにアクセス制限がそれぞれ異なるアカウントが存在する場合、Lookerでデータベース権限を利用できます。各ユーザーがそれぞれのデータベースアクセスレベルに応じて適切な資格情報で接続するように、接続のユーザー名とパスワードをパラメータ化します。これにより、アクセス権がないデータがユーザーに表示されることがなくなりますが、Looker でユーザーに表示される Explore、ディメンション、メジャーはこの影響を受けません。
たとえば、user
テーブルの credit_card_number
列を表示できないアカウントでデータベースに接続するようにユーザーが構成されている場合でも、Looker では、そのデータベース列を使用するディメンションがユーザーに表示されます。ただし、そのディメンションを含むクエリを実行しようとすると、データベースからエラーを受け取ります。
ユースケース: 複数の同一データベースに 1 つのモデルを使用する
まったく同じスキーマを使用する複数のデータベースがあるとします。たとえば、データセキュリティ対策(HIPAA コンプライアンスなど)として各顧客のデータを独自のデータベースにサイロ化する場合などです。または、プロダクションデータベースの開発用コピーに対してLookML開発者にクエリを実行してもらうこともあります。
これらのデータベースが同じデータベースサーバーで稼働している場合、別個の接続やモデルを設定する必要はありません。代わりに、接続のデータベースをユーザー属性に設定すると、各ユーザーは Database Name
ユーザー属性の値で指定されたデータベースを参照します。
データ操作
JSON ペイロードに特定のユーザー属性を含むようにデータアクションを設定できます。これを使用して、特定のサービスに対して操作を実行するための資格情報など、ユーザー固有の情報をデータとともに送信します。
構成
ユーザー属性をデータ アクションに含めるには、action
定義に user_attribute_param
ブロックを追加します。これらのBlockは、それぞれ次の2つのパラメータを取ります。
user_attribute
: ユーザー属性の名前name
: JSON ペイロードで使用する名前
この例では、Looker で各ユーザーの Salesforce 資格情報を格納するために 2 つのユーザー属性(salesforce_username
と salesforce_password
)を使用しています。ユーザーがUpdate in Salesforceデータアクションを実行すると、LookerはJSONペイロードとともにSalesforce資格情報を送信し、受信側のサーバーはSalesforceへの認証でそれを使用できます。
dimension: stage_name {
type: string
sql: ${TABLE}.stage_name;;
action: {
label: "Update in Salesforce"
url: "https://example.com/my_salesforce_url"
user_attribute_param: {
user_attribute: salesforce_username
name: "username"
}
user_attribute_param: {
user_attribute: salesforce_password
name: "password"
}
form_param: {
name: "new_stage_name"
type: string
required: yes
}
}
}
Action Hubでのカスタムアクション
ユーザー属性を含めるようにカスタム アクションを構成し、そのユーザー属性に値が定義されていない場合に、ユーザーがそのアクションの対象に Looker コンテンツを送信またはスケジュールできないように制限できます。
構成
カスタム アクションの params
パラメータは、Looker 管理者が [管理者] パネルの [アクション] リストにある [アクションの有効化] ページで構成する必要があるフォーム フィールドを表しています。アクション ファイルの params
パラメータに、以下を含めます。
params = [{
description: "A description of the param.",
label: "A label for the param.",
name: "action_param_name",
user_attribute_name: "user_attribute_name",
required: true,
sensitive: true,
}]
ここで user_attribute_name
は、[管理] パネルの [ユーザー] セクションの [ユーザー属性] ページにある [名前] フィールドで定義されているユーザー属性であり、required: true
はデータ提供時のアクションを確認するには、ユーザー属性に対して null 以外の有効な値が定義されている必要があることを表します。また、sensitive: true
は、ユーザー属性の値が暗号化され、一度入力すると Looker UI に表示されなくなることを表します。複数のユーザー属性サブパラメータを指定できます。
Looker 管理者はユーザー属性でアクションの形式フィールドを構成する必要があります。
- [Admin] パネルの [Actions] ページで、アクションの横にある [Enable] ボタンまたは [Settings] ボタンをクリックします。
- 該当するフィールドのユーザー属性アイコン をクリックし、目的のユーザー属性を選択します。
アクションハブを介したデータ共有に関するドキュメント ページのカスタム アクションへのユーザー属性の追加をご覧ください。
フィルタ
Explore、Look、ダッシュボード のフィルタをユーザー属性に設定し、実行中のユーザーに基づいてクエリをカスタマイズできます。
たとえば、salesforce_username
という名前のユーザー属性を作成し、その値が Salesforce ユーザー名が Salesforce ユーザー名となるように各 Looker ユーザーを構成できます。その後、ダッシュボードのフィルタを salesforce_username
ユーザー属性に設定すると、特定の Salesforce ユーザー名についてフィルタリングされたダッシュボードが各ユーザーに表示されます。
構成
Explore、Look、またはダッシュボードの [FILTERS] セクションで、次の操作を行います。
目的のフィルタで [ユーザー属性と一致] オプションを選択します。
右側の選択ボックスが自動的に更新されて、数値、ストリング(テキスト)、日付など、フィルタのフィールドと同じタイプのユーザー属性のリストが表示されます。各ユーザー属性の値が括弧内に表示されます。
目的のユーザー属性を選択します。
高度なフィルタの構文
フィルタの簡単な等価チェックよりも複雑な処理を行うには、[matches (advanced)] を選択し、Liquid 変数を使用してユーザー属性を参照します。
{{ _user_attributes['name_of_attribute'] }}
たとえば、salesforce_username
ユーザー属性の値に sf_
接頭辞を適用する必要があるとします。この方法でデータベースに値を格納するためです。ユーザー属性の値に接頭辞を追加するには、_user_attributes
Liquid 変数構文を使用します。
sf_{{_user_attributes['salesforce_username']}}
同じパターンを使用して、LookML のダッシュボード フィルタとダッシュボードの要素フィルタにユーザー属性を挿入できます。
スケジュールされたダッシュボードおよびLook
ユーザー属性を使用するオプションを含め、スケジュールに基づいてダッシュボードおよびLookのフィルタを設定できます。これにより、それぞれのメール受信者のデータ配信結果をカスタマイズすることができます。1 回限りの配信および繰り返し配信として送信されるコンテンツの配信をカスタマイズできます。
たとえば、salesforce_username
というユーザー属性を作成し、その値を各ユーザーの Salesforce ユーザー名に設定できます。ダッシュボードまたは Look のスケジュールに基づくフィルタを salesforce_username
ユーザー属性に設定すると、それぞれの Salesforce ユーザー名でフィルタリングされたダッシュボードを各受信者が受け取ります。
前提条件
Lookerユーザーのみにユーザー属性値が設定されるため、データ配信のすべての受信者がLookerアカウントを持っている必要があります。ユーザー属性は、各受信者についてダッシュボードまたはLookを一度実行することによって適用されます。
構成
[フィルタ] セクションで、目的のフィルタの [ユーザー属性と一致する] オプションを選択します。
右側の選択ボックスが自動的に更新されて、Filterと同じタイプのユーザー属性のリストが表示されます。各ユーザー属性の独自の値が括弧内に表示されます。
目的のユーザー属性を選択します。
[Email options] フィールドの横にある [run schedule as recipient] チェックボックスをオンにします。
アクセス フィルタ
行レベルのセキュリティを提供するアクセスフィルタを使用して、ユーザーがアクセスできるデータを制限することができます。access_grant
パラメータを使用できますが、ユーザー属性を使用してアクセス フィルタの方が実装と保守が容易です。
アクセス フィルタを使用することで、ユーザー固有のデータ制限を安全に適用できます。LookML Exploreに1つ以上のアクセスフィルタを定義すると、Exploreから返されるデータが、クエリを実行するユーザーに基づいて確実にフィルタリングされます。つまり、アクセスフィルタによって制限が強化され、データベース接続から返されたデータの特定のサブセットのみがユーザーに表示されるようになります。
構成
- ユーザー属性を作成します。
- [User Access] を [None](推奨)または [View] に設定して構成します。(ユーザーによる編集が可能として設定されたユーザー属性をアクセスフィルタに使用することはできません)。
- ユーザー属性値をグループまたは個々のユーザーに割り当てます。
- アクセス フィルタが必要な Explore の LookML 定義に、次のパラメータを指定して
access_filter
ブロックを追加します。field
: フィルタを適用する LookML フィールドの名前user_attribute
: データのフィルタリングに使用する値を格納するユーザー属性の名前
- そのExploreに対してクエリを実行します。
- クエリの SQL の
WHERE
句を調べて、ユーザー属性の値に従ってデータがフィルタリングされていることを確認します。
この LookML では、注文に関するクエリが、company
という名前のユーザー属性に対してユーザーに割り当てられた値に基づいて特定のブランドでブランド別にフィルタリングされます。
explore: orders {
view_name: orders
access_filter: {
field: products.brand_name
user_attribute: company
}
join: products {
foreign_key: orders.product_id
}
}
Gitプロバイダーへの接続
LookML プロジェクトの場合は、HTTPS を介した Git 認証を構成できます。HTTPS Git認証を使用するプロジェクトでは、開発者の代わりにGit操作を実行する際に、ユーザー属性を利用して個々の開発者のGitアカウントにログインすることができます。
Git アカウント パスワードのユーザー属性は非表示である必要があります。パスワード属性を作成するとき、[値を非表示] オプションで [Yes] を選択し、[ドメイン許可リスト] フィールドに Git プロバイダの URL を入力します。
アクセス権限によるアクセスの制御
ユーザー属性値、access_grant
パラメータ、required_access_grants
パラメータを使用して、LookML Explore、結合、ビュー、フィールドへのアクセスを制限するアクセス権限を作成できます。
アクセス権限は次のように機能します。
- アクセス権限は、
access_grant
パラメータを使用して定義します。定義の一部として、アクセス権限をユーザー属性に関連付けます。アクセス権限へのアクセスを提供するユーザー属性値も指定します。 - 次に、Explore、結合、ビュー、フィールド レベルで
required_access_grants
パラメータを使用して、リストにあるすべてのアクセス許可にアクセスできるユーザーのみに制限します。
たとえば、アクセス権限を使用して、salary
ディメンションへのアクセスを、department
ユーザー属性に値 payroll
を持つユーザーのみに制限できます。
アクセス権限を定義する方法について詳しくは、access_grant
パラメータのドキュメント ページをご覧ください。
Liquid変数
LookML では、さらに複雑なタイプのカスタマイズされた出力に役立つさまざまな Liquid 変数を使用できます。ユーザーの属性値をLiquidに含めることができるようになりました。 Liquid 式では、データベース言語に適した構文を使用する必要があります。
例については、このドキュメント ページの接続セクションと、動的スキーマとテーブル名の挿入にユーザー属性を使用するのベスト プラクティスのページをご覧ください。
Google BigQueryのデータ制限
Google BigQueryをデータベースとして使用する場合、クエリごとにそのクエリのサイズに基づいて課金されます。ユーザーが誤って高額なクエリを実行しないように、BigQuery 接続の [最大課金ギガバイト] でユーザー属性を適用できます。ユーザー属性で指定する値は、ユーザーが1つのクエリで取得できるギガバイト数である必要があります。
埋め込みダッシュボード
ユーザー属性値に基づいてフィルタ値を設定することにより、埋め込みの Look とダッシュボードに表示されるデータを制限できます。詳細については、概念実証埋め込みダッシュボード(Looker を使用)の作成に関するコミュニティ投稿をご覧ください。
ローカライズ
ユーザー属性 locale
と number_format
では、特定のユーザーまたはユーザー グループ向けに、データ、ビジュアリゼーション、Looker のユーザー インターフェースの一部の外観を設定できます。詳細については、Looker のローカライズのドキュメント ページをご覧ください。
ユーザー属性とアクセスフィルタのテスト
Looker の sudo 関数を使用して、ユーザー属性の効果をテストできます。管理者(または see_users
と sudo
の両方の権限を持つユーザー)は、別のユーザーとして sudo を実行することで、そのユーザーの Looker のエクスペリエンスを確認できます。
Development Mode で操作している場合は、本番環境に変更をデプロイするまで、他のユーザーに変更内容は表示されません。他のユーザーに見えるように変更をデプロイしていない場合、別のユーザーで sudo を実行している間はその変更を見ることができません。