Get list of licensed users in Jira Data Center

お困りですか?

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

コミュニティに質問

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

このナレッジベース記事は製品の Data Center バージョン用に作成されています。Data Center 固有ではない機能の Data Center ナレッジベースは、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。サーバー*製品のサポートは 2024 年 2 月 15 日に終了しました。サーバー製品を利用している場合は、アトラシアンのサーバー製品のサポート終了のお知らせページにて移行オプションをご確認ください。

*Fisheye および Crucible は除く

目的

Learn how to get a list of licensed users in 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 https://jira.atlassian.com/browse/JRASERVER-2841

ソリューション

Counting users

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

The queries below will retrieve all users. If you only need to count the number of licensed users, replace the first portion SELECT DISTINCT u.lower_user_name of the queries with SELECT count as shown below instead. This will reduce the load on the database when running the queries, especially if you intend to run it on a regular basis. 

SELECT count(distinct u.lower_user_name)

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';



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

In some cases you may wish to also return more information from that user, such as first, last and e-mail and also any other directories they are in. If an user is in multiple directories with different first, last or e-mail addresses, then they would be returned multiple times.  This would skew the number of returned users, so if you're simply looking for a list + count, use the above. In this case the query can be modified as follows:

 
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;

Count active users present in all the groups

Below SQL query can be used to count the total number of active users present in each Jira user group. 

Under the where clause, the users can specify the cwd_group.directory_id and can provide the list of the desired directory IDs.
User directory IDs can be fetched using SQL. The Id column displays the same.

SELECT * FROM cwd_directory;

Example: In the below SQL query, we are using directory IDs 10000 and 1

SELECT cwd_group.group_name, 
       count(cwd_user.id)
FROM cwd_user
     JOIN cwd_membership 
     ON cwd_membership.child_id = cwd_user.id
     JOIN cwd_group on cwd_membership.parent_id = cwd_group.id
WHERE cwd_user.active = 1 
     AND cwd_group.directory_id in (10000,1)
group by cwd_group.group_name;

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


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





説明

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

製品Jira
プラットフォームServer



最終更新日 2025 年 4 月 17 日

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

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