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

お困りですか?

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

コミュニティに質問

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

Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Fisheye および Crucible は除く

目的

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



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

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



ソリューション

Counting users

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;

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


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





説明

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

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



最終更新日: 2024 年 2 月 20 日

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

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