Data Center におけるサービス アカウントの仕組み
このページでは、Jira および Confluence Data Center における OAuth 2.0 クライアント認証情報 (2LO) の承認を使用した REST API 呼び出しの仕組みについて、スコープと権限の処理に重点を置いて説明します。
Jira Data Center におけるサービス アカウントの仕組み
Jira でサポートされているスコープ
Jira は現在、サービス アカウントで以下のスコープをサポートしています。
READ – READ とマークされたエンドポイントへのアクセスを許可します。
WRITE – WRITE エンドポイントを含み、READ アクセスも継承します。
ADMIN、SYSTEM_ADMIN、または PROJECT_ADMIN 権限を必要とするエンドポイントは OAuth 2.0 呼び出しでは使用できません。
セキュリティの最初のレイヤーは、エンドポイント レベルでのスコープ検証です。このメカニズムはすべてのアトラシアン製品で一貫しています。
詳細については、「Jira OAuth 2.0 プロバイダー API」ドキュメントを参照してください。
OAuth 2.0 で利用可能なエンドポイント (クライアント認証情報)
サポートされているエンドポイントの完全なリストは、Swagger JSON の仕様に記載されています。
仕様の
security
セクションに OAuth 2.0 スコープの詳細が含まれるようになりました。初期リリースでは、
/rest/api/2/
で始まるエンドポイントのみが公開されます。
サービス アカウントの権限システム
セキュリティの 2 番目のレイヤーは Jira の権限システムで、プロジェクト、課題、その他のリソースへのアクセス権の付与方法を定義します。
通常、Jira の権限はグループ、ロール、または特定のユーザーに割り当てられます。サービス アカウントは、標準の Jira プリンシパルではないという点で異なります。グループに追加したり、権限スキームで設定したりすることはできません。
その結果、OAuth 2.0 呼び出しの権限チェックは挙動が異なります。
管理者権限
必要な権限がADMIN、SYSTEM_ADMIN、または PROJECT_ADMIN の場合、リクエストは自動的に拒否されます。プロジェクト以外のアクション
アクションにプロジェクト エンティティが関わらない場合 (プロジェクト、課題、コメントとは無関係の場合など)、リクエストは承認されます。プロジェクト関連のアクション
アクションにプロジェクト エンティティが関わる場合、Jira によってエンティティレベルの制限が確認されます。制限が設定されていない場合、アクセスが許可されます。
制限が存在する場合、プロジェクトが許可リストと一致する場合にのみアクセスが許可されます。
サービス アカウントを理解する上で役立つ方法として、サービス アカウントはすべてのグループに属し、すべてのユーザーであり、すべてのロールを持っているかのように振る舞うという点が挙げられます。ただし、管理者ロールは別で、常に拒否されます。
Confluence Data Center におけるサービス アカウントの仕組み
サポートされているスコープ
Confluence は現在、サービス アカウントで以下のスコープをサポートしています。
READ | サービス アカウントが管理者以外の GET API エンドポイントにアクセスできるようにします。 |
WRITE | 管理者以外の POST/PUT/DELETE API エンドポイントへのアクセスを許可します。また、READ のアクセス権を継承します。 |
READ_ALL、 | これらは機能が制限された特殊用途のスコープです。これらは特定のエンドポイントでのみ有効です。サービス アカウントの汎用的な使用にはお勧めしません。 |
ADMIN、SYSTEM_ADMIN、または PROJECT_ADMIN 権限を必要とするエンドポイントは OAuth 2.0 呼び出しでは使用できません。
セキュリティの最初のレイヤーは、エンドポイント レベルでのスコープ検証です。このメカニズムはすべてのアトラシアン製品で一貫しています。
詳細については、「別のアプリへのリンク」を参照してください。
サービス アカウントでアクセス可能なエンドポイント
サービス アカウントを使用して、Confluence Data Center Rest API にリストされている管理者以外のすべての Confluence REST API エンドポイントにアクセスできます。
サービス アカウントの権限システム
セキュリティの 2 番目のレイヤーは Confluence の権限システムで、スペースとそのコンテンツへのアクセス権の付与方法を定義します。
通常、Confluence の権限はグループ、ロール、または特定のユーザーに割り当てられます。サービス アカウントは、標準のプリンシパルではないという点で異なります。グループに追加したり、権限スキームで設定したりすることはできません。
その結果、OAuth 2.0 呼び出しの権限チェックは挙動が異なります。
管理者権限
必要な権限が ADMIN または SYSTEM_ADMIN の場合、リクエストは自動的に拒否されます。管理者以外のアクション
アクションにエンティティ (スペース、ページ、コメントなど) が含まれる場合、Confluence はエンティティレベルの制限をチェックします。サービス アカウントに制限が設定されていない場合、アクセスが許可されます。
サービス アカウントのアクセスが特定の Confluence スペースに制限されている場合は、まずエンティティが存在するスペースを特定します。スペースがそのサービス アカウントの許可リストと一致する場合にのみ、エンティティにアクセスが許可されます。
サービス アカウントを理解する上で役立つ方法として、サービス アカウントはすべてのグループに属し、すべてのユーザーであり、すべてのロールを持っているかのように振る舞うという点が挙げられます。ただし、管理者ロールは別で、常に拒否されます。