Jira サーバーでライセンスが付与されたユーザーの一覧を取得する

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

プラットフォームについて: サーバーと Data Center のみ。この記事は、サーバーおよび Data Center プラットフォームのアトラシアン製品にのみ適用されます。

目的

Jira アプリケーションでライセンスに対して計上されているユーザーを正確に把握したい場合があります。

Jira アプリケーションのライセンス数は、グローバル権限とアプリケーション アクセスに基づきます。次のグローバル権限を持つアクティブなすべてのユーザーがライセンスを計上されます。

  • Jira アプリケーション システム管理者 (グローバル権限)
  • Jira アプリケーション管理者 (グローバル権限)
  • Jira アプリケーション ユーザー ([管理] > [アプリケーション] > [アプリケーション アクセス] でアプリケーション アクセスが付与されたグループ)


UI 内では、上記のグローバル権限の 1 つ以上に割り当てられたグループを個々に確認することでユーザーの一覧を取得できます。Jira 4.3 以降を利用している場合、次の SQL クエリを利用して、ライセンスについて計上されるユーザーの一覧を取得できます。当社のドキュメントには次のようにあります。

ライセンス料金の見積もりは、 アクティブ ユーザー数 に応じて行われます。Jira Core のアクティブユーザーとは、システムで「Jira Software ユーザー」のグローバル権限、または「Jira 管理者」の権限を持つ任意のユーザーアカウント (つまり、ログインできるすべてのユーザー) と定義されています。すべてのライセンスで無制限の「匿名ユーザー」が許可されています。"

なお、これは割り当て可能なユーザーには影響しません。ユーザーが cwd_user に存在していてアクティブとマークされている限りは、アプリケーション アクセス不要でチケットを割り当てられます。ただし、このようなユーザーは、インスタンスで匿名アクセスがセットアップされている場合を除き、ログインしてチケットで作業することはできません。 

Additionally, there is an improvement request to better handle this in Jira applications as tracked under  JRASERVER-2841 - Getting issue details... STATUS


次の SQL クエリは、LDAP または Crowd でネストされたグループを使っていたり、複数のディレクトリを横断して重複したユーザー名を持つユーザーがいたりする場合は正確な結果が返されない可能性があります。このため、内容に相違がある場合は Jira ユーザー インターフェイスで提供されるライセンス数をご確認ください。 

アトラシアン製品全体で 500 人以上のユーザーを管理していますか?
Crowd を使用することで、スケーラブルかつ効果的な方法でユーザーを簡単に管理できます。
 ユーザーの一元管理」を参照してください。


ソリューション

Jira 7 以降

Jira 7 では、インストールされた各アプリケーション (Jira Core、Jira Software、Jira Service Management) でライセンスが分離されているため、アクティブなユーザーを 1 つの一覧で確認することはできませんが、アプリケーションごとのアクティブ ユーザーは確認できます。

各アプリケーションのアクティブ ユーザーについてのクエリを以降でご確認ください。Jira Core のライセンスは、ほかの 2 つのアプリケーションに存在しないユーザーのみが計上される点にご注意ください。

Jira Core

SELECT DISTINCT u.lower_user_name
FROM   cwd_user u
       JOIN cwd_membership m
         ON u.id = m.child_id
            AND u.directory_id = m.directory_id
       JOIN licenserolesgroup lrg
         ON Lower(m.parent_name) = Lower(lrg.group_id)
       JOIN cwd_directory d
         ON m.directory_id = d.id
WHERE  d.active = '1'
       AND u.active = '1'
	AND license_role_name = 'jira-core'
	AND u.lower_user_name not in 
	(SELECT u.lower_user_name
FROM   cwd_user u
       JOIN cwd_membership m
         ON u.id = m.child_id
            AND u.directory_id = m.directory_id
       JOIN licenserolesgroup lrg
         ON Lower(m.parent_name) = Lower(lrg.group_id)
       JOIN cwd_directory d
         ON m.directory_id = d.id
WHERE  d.active = '1'
       AND u.active = '1'
	AND license_role_name in ('jira-software','jira-servicedesk'));

Jira Software
SELECT DISTINCT u.lower_user_name
FROM   cwd_user u
       JOIN cwd_membership m
         ON u.id = m.child_id
            AND u.directory_id = m.directory_id
       JOIN licenserolesgroup lrg
         ON Lower(m.parent_name) = Lower(lrg.group_id)
       JOIN cwd_directory d
         ON m.directory_id = d.id
WHERE  d.active = '1'
       AND u.active = '1'
	AND license_role_name = 'jira-software';

Jira Service Management
SELECT DISTINCT u.lower_user_name
FROM   cwd_user u
       JOIN cwd_membership m
         ON u.id = m.child_id
            AND u.directory_id = m.directory_id
       JOIN licenserolesgroup lrg
         ON Lower(m.parent_name) = Lower(lrg.group_id)
       JOIN cwd_directory d
         ON m.directory_id = d.id
WHERE  d.active = '1'
       AND u.active = '1'
	AND license_role_name = 'jira-servicedesk';


管理者を含む、アクティブ ユーザーの一覧

<Append-SQL-query-above>
UNION
SELECT DISTINCT u.lower_user_name
FROM   cwd_user u 
       JOIN cwd_membership m 
         ON u.id = m.child_id 
            AND u.directory_id = m.directory_id 
       JOIN globalpermissionentry gp 
         ON Lower(m.parent_name) = Lower(gp.group_id) 
       JOIN cwd_directory d 
         ON m.directory_id = d.id 
WHERE  gp.permission IN ('USE','ADMINISTER','SYSTEM_ADMIN') 
       AND d.active = '1'
       AND u.active = '1'
ORDER BY lower_user_name;


Jira 6.2.1 ~ 6.4.14

SELECT DISTINCT u.lower_user_name 
FROM   cwd_user u 
       JOIN cwd_membership m 
         ON u.id = m.child_id 
            AND u.directory_id = m.directory_id 
       JOIN globalpermissionentry gp 
         ON Lower(m.parent_name) = Lower(gp.group_id) 
       JOIN cwd_directory d 
         ON m.directory_id = d.id 
WHERE  gp.permission IN ('USE','ADMINISTER','SYSTEM_ADMIN') 
       AND d.active = '1' 
       AND u.active = '1';


Jira 6.2 以前

SELECT DISTINCT u.lower_user_name 
FROM   cwd_user u 
       JOIN cwd_membership m 
         ON u.id = m.child_id 
            AND u.directory_id = m.directory_id 
       JOIN schemepermissions sp 
         ON Lower(m.parent_name) = Lower(sp.perm_parameter) 
       JOIN cwd_directory d 
         ON m.directory_id = d.id 
WHERE  sp.permission IN ( '0', '1', '44' ) 
       AND d.active = '1' 
       AND u.active = '1';

ディレクトリごとのユーザーの一覧

対象のユーザーについて、姓、名、メール アドレス、ユーザーが所属する他のディレクトリなど、より多くの情報を返したい場合があります。あるユーザーが複数のディレクトリに異なる姓、名、またはメール アドレスで登録されている場合、そのユーザーは複数回返されます。これによって返されるユーザーの数が変更されるため、単純に一覧と数をお探しの場合は上記方法をご利用ください。このような場合はクエリを次のように変更できます。


Jira 6.2 以前

SELECT DISTINCT u.lower_user_name, 
                u.first_name, 
                u.last_name, 
                u.email_address, 
                d.directory_name 
FROM   cwd_user u 
       JOIN cwd_membership m 
         ON u.id = m.child_id 
            AND u.directory_id = m.directory_id 
       JOIN schemepermissions sp 
         ON Lower(m.parent_name) = Lower(sp.perm_parameter) 
       JOIN cwd_directory d 
         ON m.directory_id = d.id 
WHERE  sp.permission IN ( '0', '1', '44' ) 
       AND d.active = '1' 
       AND u.active = '1' 
ORDER  BY directory_name, 
          lower_user_name;

Jira 5.1 以降では、ユーザーをグループから取り除くことなく無効化できます。詳細については Jira 5.1 リリース ノートをご確認ください。


Jira 6.2.1 以降
SELECT DISTINCT u.lower_user_name, 
                u.first_name, 
                u.last_name, 
                u.email_address, 
                d.directory_name 
FROM   cwd_user u 
       JOIN cwd_membership m 
         ON u.id = m.child_id 
            AND u.directory_id = m.directory_id 
       JOIN globalpermissionentry gp 
         ON Lower(m.parent_name) = Lower(gp.group_id) 
       JOIN cwd_directory d 
         ON m.directory_id = d.id 
WHERE  gp.permission IN ('USE','ADMINISTER','SYSTEM_ADMIN') 
       AND d.active = '1' 
       AND u.active = '1' 
ORDER  BY directory_name, 
          lower_user_name;

特定のグループに所属するユーザーを特定するには、GUI 経由で行うか、次の SQL で jira-users を適切なグループで置き換えます。

SELECT DISTINCT u.lower_user_name, 
                d.directory_name 
FROM   cwd_user u 
       JOIN cwd_membership m 
         ON u.id = m.child_id 
            AND u.directory_id = m.directory_id 
       JOIN cwd_directory d 
         ON m.directory_id = d.id 
WHERE  m.lower_parent_name = 'jira-users' 
       AND d.active = 1 
       AND u.active = '1' 
ORDER  BY directory_name, 
          lower_user_name;

上記の例は PostgreSQL でテストされており、利用されている DBMS に応じて変更が必要な可能性があります。


別のオプションとして、[ユーザー管理] ページに移動して [ユーザーを作成] をクリックします。新規ユーザーを作成するためのフィールドを含むポップアップ ウィンドウが表示され、このポップアップの上部にはユーザー数の情報を含むメッセージが表示されます。


説明

UI 内では、上記のグローバル権限の 1 つ以上に割り当てられたグループを個々に確認することでユーザーの一覧を取得できます。Jira 4.3 以降 を利用している場合、次の SQL クエリを利用して、ライセンスについて計上されるユーザーの一覧を取得できます。
また、Jira アプリケーション内での対応方法を改善するための改善リクエストがあります。

製品Jira
プラットフォームサーバー



最終更新日 2022 年 4 月 20 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.