Skip to Content

Access Control

Overview

Access Controlページで管理者はユーザーまたはグループにデータベースアクセス権限を直接付与できます。

11.5.0からスキーマ(論理DB)レベルのアクセス制御機能が追加されました。

Access Controlリスト照会

Access Controlページでは、QueryPieに登録されたユーザーおよびグループ別に付与されたDB権限(Privilege)および管理者役割現況を照会できます。

  • Group / Usersタブ:Groupおよびユーザーのリストを表示し現況を見ることができます。
  • Locked Accounts:アカウントロック条件によりロックされたユーザーを確認でき、ロックを解除できます。
Administrator > Databases > DB Access Control > Access Control

Administrator > Databases > DB Access Control > Access Control

ユーザー/グループ別Access Control詳細履歴照会

Access Controlページ内Groups / Usersタブのリストで特定ユーザーまたはグループ行をクリックすると詳細画面でprivilegeを付与された対象情報を確認できます。

特定ユーザーのアクセス制御詳細ページ

特定ユーザーのアクセス制御詳細ページ

  • 検索:Connection Nameで照会可能
  • 基本情報
    • Type:USERまたはGroupで分類タイプを表示します。
    • Auth Provider:該当ユーザーが認証に使用する認証サービス提供者が何かを表示します。
    • Admin Roles:該当ユーザーに割り当てられているAdmin Roleを表示します。
    • Members:選択した対象がGroupの場合、該当groupの構成員を表示します。
    • Email:該当ユーザーのemailアドレスです。
  • Privilegeを付与された対象リスト:privilegeを付与されたconnectionがない場合、リストには何も表示されません。
    • Connection Name:対象コネクションの名前です。
    • Database Type ****:DBタイプ(eg. MySQL、MariaDB、PostgreSQL…)
    • Host:コネクションに登録されたHostアドレスです。
    • Port:コネクションに登録されたPortアドレスです。
    • Access Control Level:access controlのレベルを表します。11.5.0からスキーマ(論理DB)レベルの制御ができるようになり、HostまたはSchema(Logical DB)で表示されます。
    • Assigned Privilege:対象に割り当てられたprivilegeです。
    • Status:privilegeの状態表示です。
      • Active:該当ユーザーにコネクションの権限が正常に付与されている状態
      • Deactivated:コネクションに対する権限があるが、管理者によって設定された期間中コネクションに接続しなかった場合無効化された状態
      • Expired:該当ユーザーの権限が期限切れ日に達して回収された状態
    • Expiration date:Privilege期限切れ日
    • Renewed At:deactivated状態から再度管理者によってactive状態になった時点です。
    • Granted At:privilegeを付与された時点です。
    • Last Accessed At:ユーザーが対象にアクセスした最も最近の時点です。
    • Granted By:privilegeを付与した管理者または承認者です。

Access Control権限付与 - Host Level

  1. Database設定メニューでAccess Controlメニューに移動します。
  2. リストで権限を付与しようとするユーザーまたはグループを選択して詳細ページに移動します。
  3. Grant Privilegeボタンをクリックします。
  4. ポップアップウィンドウでAccess Control LevelでHostを選択します。(基本値:Host)
image-20251218-095117.png
  1. privilegeを付与するコネクションを選択し、特定privilege typeを選択します。
image-20251218-095406.png
  1. 必要な場合、Expiration dateでprivilege期限切れ日を設定した後Grantボタンを押します。
  2. 権限を付与するコネクション複数個を選択して一括的に権限を付与することもできます。
image-20251218-095817.png

これで権限を付与受けたユーザーは該当権限でコネクションに接続でき、権限付与履歴はAccess Control LogsログにAccess Control Grantedイベントとして記録されます。

Access Control権限付与 - Schema(Logical DB)Level

11.5.0バージョン現在Schema Level権限付与が可能なDBMS:
Athena、Azure SQL、BigQuery、Cassandra、ClickHouse、DocumentDB、DynamoDB、Hive、Impala、MariaDB、MongoDB、MySQL、Oracle、PostgreSQL、Redshift、SAP Hana、ScyllaDB、ShardingSphere、Single Store、Spanner、SQLServer、Trino、Vertica

  1. Database設定メニューでAccess Controlメニューに移動します。
  2. リストで権限を付与しようとするユーザーまたはグループを選択して詳細ページに移動します。
  3. Grant Privilegeボタンをクリックします。
  4. ポップアップウィンドウでAccess Control LevelでSchema(Logical DB)を選択します。(基本値:Host)
image-20251218-104148.png
  1. Connections項目で対象コネクションを選択します。スキーマレベルは一度に複数のコネクションに多重設定が不可能です。コネクションを選択すると右側のprivilege項目に基本的にselect権限が必要なスキーマに自動的にSELECT privilegeが付与されたことが見えます。管理者はこの項目を削除することもできますが、その場合Web editorまたはproxyでスキーマ構造を照会する時点にエラーが発生する可能性があるため、可能な限りこの項目を削除しないことをお勧めします。
  2. privilegeを割り当てる特定スキーマ(論理DB)を指定するためにAdd Itemボタンを押します。
    下に対象を追加できる行が追加されます。schema構造があるDBMS(Oracle、Postgresなど)は対象名を入力する時、必ず{database名}.{schema名}の形式で入力する必要があります。MySQLのようにschema構造がないDBMSは論理DB名のみ入力すれば 됩니다。
    - Oracle例:ORCLDB.TESTUSER
    - PostgreSQL例:testdb.test_schema
    - MySQL例:sakila
image-20251218-105030.png
  1. privilege割り当てはまずポップアップウィンドウ右側上部のHost Level Privilege項目で希望するprivilege typeを選択します。(スキーマレベルprivilegeはhost level privilegeの範囲内でのみ付与が可能なためです。例えばRead/WriteをHost Level Privilegeで選択した場合、その範囲内でSELECT、INSERTなどを付与できますが、Read-OnlyをHost Level Privilegeで選択した場合、SELECTのみ指定できます。)
image-20251218-110506.png
  1. 下に表示されるHost Level Others、Host Level Functionsは設定を見るだけです。修正するためにはDatabases > DB Access Control > Privilege Typeメニューで該当Privilege Typeを修正する必要があります。Host LevelのPrivilegeの属性によりSchema Levelもprivilegeが従属するため、上位の情報を確認する用途で使用されます。
image-20251218-111204.png
  1. 必要な場合、Expiration dateでprivilege期限切れ日を設定した後Grantボタンを押します。

これで権限を付与受けたユーザーは該当権限でコネクションに接続でき、権限付与履歴はAccess Control LogsログにAccess Control Grantedイベントとして記録されます。

  • PostgreSQLはschema level制御対象がDatabaseです。PostgreSQLはschemaという名前の構造を持っていますが、これはprivilege割り当ての対象になるものではなく、区分の用途で使用されるためです。
  • Oracle、Presto、Trino、SAP HANAはschema level制御対象がSchemaです。
  • SchemaまたはLogical DB対象入力をする時、正規表現を使用できます。この時、単語の開始を表す^、単語の終わりを表す$を使用できない場合があります。内部的にdatabase.schema.tableの構造をすべて認識して処理するため、schema名に該当する正規表現のみ入力するとエラーが発生します。

ユーザーがグループに含まれた場合、グループとユーザーを対象に同じコネクションに対してそれぞれ異なる権限を適用するとどうなりますか? ユーザーに個別ユーザー権限およびグループの権限で複数のPrivilegeが付与された場合、ユーザーコネクション接続時Default Privilegeを選択して接続できます。

Access Control権限回収

Administrator > Databases > DB Access Control > Access Control > Details

Administrator > Databases > DB Access Control > Access Control > Details

  1. Database設定メニューでAccess Controlメニューに移動します。
  2. リストで権限を回収しようとするユーザーまたはグループを選択して詳細ページに移動します。
  3. 権限を回収しようとするコネクションを見つけてチェックボックス選択後Revokeボタンで権限を回収します。
  4. 権限を回収しようとするコネクション複数個を選択して一括的に権限を回収することもできます。

これで権限が回収されたユーザーはもう該当コネクションに接続できず、権限回収履歴はAccess Control LogsログにAccess Control Revoked項目として記録されます。

Access Control DetailsパネルでのStatus説明

  • Active :該当ユーザーにコネクションの権限が正常に付与されている状態です。
  • Deactivated :該当ユーザーがコネクションに対する権限があるが、管理者によって設定された期間中コネクションに接続しなかった場合無効化された状態です。この場合、ユーザーは該当コネクションに一時的に接続できません。
  • Deactivated状態右側のボタン(Renew)で無効化された権限を更新して再び有効化できます。
  • 無効化された権限を更新した場合Renewed Atカラムに更新時点が表示されます。

Access Control Detailsパネルに対する詳細説明

  • 該当権限が付与された最初の時点はGranted Atカラムで確認できます。
  • 該当権限を付与受けたユーザーがコネクションに最後に接続した時点はLast Access Atカラムで確認できます。
  • 該当権限が回収される時点はExpiration Dateカラムで確認できます。
  • 権限が付与されたがExpiration Dateカラムに何の表示もない場合該当権限は回収されません。ただし、該当コネクション権限に対する基本的な管理はコネクション長期未接続設定(Deactivation Period)の影響を受けます。

コネクションロックアカウント解除(Locked Account)

Administrator > Databases > DB Access Control > Access Control > Locked Account

Administrator > Databases > DB Access Control > Access Control > Locked Account

  1. データベースコネクションセキュリティポリシーによってDBアカウント認証失敗(Maximum Login Failures)回数超過でコネクションがロックされた場合についてLocked Accountメニューで照会可能です。
  2. DBアカウント認証失敗回数とロックされた時点が一緒に表示されます。
  3. ロック解除しようとする項目を選択後右側Unlockをクリックしてコネクションロックを解除します。
image-20241209-123358.png
  1. コネクションロックおよびロック解除履歴はAudit > Databases > Account Lock Historyメニューで確認できます。

テーブルタグでアクセス制御

Databases > General > ConfigurationsでNew DAC Policy Managementを有効化した場合、

image-20250703-050924.png

Access Controlで特定ユーザーにアクセス許可されたコネクションに対して特定タグが付与されたテーブルのみアクセス可能になるよう制御できます。 この機能を使用するために以下の条件が充足されなければなりません。

  • New DAC Policy Management機能がEnableでなければなりません。
  • 特定ユーザーに特定コネクションに対するprivilegeが割り当てられていなければなりません。
  • Databases > Policy Management > Data Pathに対象テーブルが経路として登録されていてタグが付与されていなければなりません。

条件が満足されれば以下のように設定できます。

  1. Databases > DB Access Control > Access Controlで特定ユーザーにprivilegeが割り当てられた特定コネクション詳細画面に移動します。
  2. 詳細画面でAccess TypeをTag-based table accessで選択してタグを追加します。既存のタグ(テーブルに付与されたタグ)のみ選択して使用できます。
image-20250703-051824.png

もしTag-based table access機能を有効化した状態でどのタグも登録しないと該当コネクションのすべてのテーブルにアクセスできなくなります。

Last updated on