メインコンテンツまでスキップ

チーム

Semaphore UI では、すべてのプロジェクトがチームに関連付けられています。プロジェクトにアクセスできるのは、チームメンバーと管理者だけです。チームの各メンバーには 4 つの組み込みロールのいずれかが割り当てられ、そのロールによってアクセスレベルと実行できる操作が決まります。

Enterprise エディションでは、組み込みロールをカスタムロールで拡張し、特定のテンプレートに対してきめ細かい追加権限を付与できます。

ヒント

プロジェクトへのアクセスを失わないよう、オーナーロールを持つチームメンバーを少なくとも 2 人置くことをお勧めします。

組み込みロール

すべてのチームメンバーは、次の 4 つのロールのいずれか 1 つだけを持ちます。

  • オーナー
  • マネージャー
  • タスクランナー
  • ゲスト

各ロールとその権限の詳細を以下に示します。

オーナー

  • 完全な権限
    オーナーは、ロールの管理、メンバーの追加/削除、あらゆるプロジェクト設定の構成など、プロジェクト内のすべての操作を実行できます。

  • 複数のオーナー
    1 つのプロジェクトに複数のオーナーを置くことができ、完全な権限を持つ人を複数確保できます。

  • 自己削除の制限
    プロジェクトの唯一のオーナーである場合、そのオーナーは自分自身を削除できません。これにより、プロジェクトがオーナー不在の状態になることを防ぎます。

  • 他のオーナーの管理
    オーナーは、他のオーナーを含むすべてのチームメンバーを管理(削除やロールの変更を含む)できます。

マネージャー

  • 幅広いプロジェクト管理権限: マネージャーはオーナーとほぼ同じ権限を持ち、日常的な作業の大半とプロジェクト環境の管理を行えます。

  • マネージャーができないこと:

    • プロジェクトの削除。
    • オーナーの削除やロールの変更。
  • 典型的なユースケース: 幅広いアクセスが必要だが、プロジェクトの削除やオーナーの管理権限までは必要としないシニアメンバーにマネージャーロールを割り当てます。

タスクランナー

  • タスクの実行: タスクランナーは、プロジェクト内に存在する任意のタスクテンプレートを実行できます。

  • その他のリソースは読み取り専用: タスクは実行できますが、inventory、変数、リポジトリなどのその他のリソースに対しては読み取り専用のアクセス権しか持ちません。

  • 典型的なユースケース: タスクのトリガーと監視は必要だが、プロジェクト設定の変更やチームメンバーシップの管理は必要としない開発者や QA エンジニア。

ゲスト

  • 読み取り専用アクセス: ゲストは、すべてのプロジェクトリソースに対して読み取り専用のアクセス権を持ちます(例: ログ、inventory、ダッシュボードの閲覧)。

  • 書き込み権限なし: 設定の変更、タスクの実行、ロールの変更はできません。

  • 典型的なユースケース: 変更を加えずにプロジェクトのステータスや詳細を閲覧するだけでよいステークホルダーやその他の関係者。


拡張 RBAC(Enterprise)

備考

拡張 RBAC は、Semaphore v2.17 以降の Semaphore Enterprise エディションで利用できます。

拡張 RBAC は、4 つの組み込みロールの上に追加の権限を重ねます。組み込みロール自体は変更されません。カスタムロールを定義しなければ、すべてのプロジェクトはコミュニティエディションとまったく同じように動作します。

拡張 RBAC では、カスタムロールによってプロジェクト全体の個々の権限を付与できます。また、選択したタスクテンプレートに対する権限をロールに付与することもできます。これにより、チームメンバーを上位の組み込みロールに昇格させることなく、必要なテンプレートへのアクセス権を与えられます。

カスタムロール

カスタムロールは、メンバーの組み込みプロジェクトロールを補完する、名前付きの権限セットです。すべてのチームメンバーは組み込みロールを維持します。カスタムロールはそれに権限を追加します。

カスタムロールには 2 つのスコープがあります。

  • グローバルロールはインスタンスレベルで定義され、任意のプロジェクトで使用できます。
  • プロジェクトロールは単一のプロジェクト内で定義され、そのプロジェクト内でのみ利用できます。

権限のレベル

カスタムロールは 2 つのレベルで権限を付与します。

  • プロジェクト全体の権限は、プロジェクト全体にわたってユーザーのアクセス権を拡張します。これはロールの作成時に選択します。
  • テンプレート権限は、1 つのタスクテンプレートに対する操作を制御します。これは、テンプレートにロールを追加した後、そのテンプレートの権限タブで選択します。

カスタムロールを作成する

ロールフォームを開く前にスコープを選択します。

グローバルロール

グローバルロールは一度作成すれば、任意のプロジェクトのユーザーに割り当てることができます。グローバルロールを作成できるのはインスタンス管理者だけです。

左下の管理者メニューを開き、ロールを選択します。

インスタンス全体のロール一覧で、新しいロールを選択します。

管理者メニューからロールを開き、新しいロールを選択する

プロジェクトロール

プロジェクトロールは、作成されたプロジェクト内でのみ利用できます。プロジェクトのオーナーとマネージャーが作成できます。

  1. プロジェクトを開き、チーム > ロールに移動します。
  2. 新しいロールを選択します。

ロールタブは、最初のプロジェクトロールが作成されるまで空です。このタブにはすべてのプロジェクトロールが一覧表示され、新しいロールボタンがあります。

カスタムロールを設定する

どちらの手順でも同じロールフォームが開きます。チームメンバーに必要なアクセス権に合わせてロールを設定します。

フィールドと権限チェックボックスを含む新しいロールダイアログ

フィールド説明
名前ロールの人間が読めるラベルです。
スラッグロールを参照するための一意の技術的な識別子です。小文字、数字、アンダースコア、ハイフンを使用します(例: release_operator)。
権限ロールによって付与されるプロジェクト全体の権限です。

プロジェクト全体の権限

ロールに必要なプロジェクト全体の権限だけを選択してください。

権限説明
プロジェクトのタスクを実行できるプロジェクトのタスクを実行します。
プロジェクトを更新できるダッシュボード > 設定でプロジェクトの基本情報を編集します。
プロジェクトのリソースを管理できるタスクテンプレート、リポジトリ、inventory、環境、キーストアのエントリ、スケジュール、インテグレーション、runner などのプロジェクトリソースを管理します。これはプロジェクト全体に及ぶアクセス権です。テンプレート以外の個々のリソースに限定することはできません。
プロジェクトのユーザーを管理できるプロジェクトのメンバーシップとロールの割り当てを管理します。

プロジェクト全体の権限を、単一の inventory、リポジトリ、環境、キーストアのエントリに限定することはできません。きめ細かいロール割り当てをサポートするリソースタイプはタスクテンプレートだけです。

テンプレートのみのアクセス

選択したタスクテンプレートへのアクセスだけを追加するきめ細かいロールを作成するには、プロジェクト全体の権限をすべて未チェックのままにします。そうすると、そのロール自体はプロジェクト全体の権限を一切追加しません。必要なテンプレートにそのロールを追加し、そこで必要な操作だけを選択してください。

ロールの設定が完了したら保存を選択します。

特定のタスクテンプレートへのアクセスを設定する

テンプレート権限は、選択したタスクテンプレートに対するアクセス権を追加します。以下の例では、プロジェクト全体の権限を持たないカスタムロールを使用しています。この最小権限の構成は、チームメンバーが選択したテンプレートの操作だけを必要とする場合に役立ちます。すでにプロジェクト全体のアクセス権を付与しているロールにテンプレート権限を追加することもできます。

目的のテンプレートを開く

  1. タスクテンプレートを開き、対象のテンプレートを選択します。
  2. 権限タブを開きます。

権限タブには、テンプレートにすでに追加されているロールが一覧表示されます。

ロールを追加してテンプレート権限を付与する

  1. ロールを追加を選択し、このテンプレートに追加するカスタムロールを選びます。
  2. タスクを実行できるテンプレートを更新できるなど、ロールに必要なテンプレート権限だけを選択します。

この例では、プロジェクト全体の権限を持たない、事前に作成したロールを使用しています。プロジェクトで利用可能な任意のカスタムロールを選択できます。

必要なコントロールを強調表示したテンプレート権限ダイアログ

同じロールに他のテンプレートへのアクセス権を付与するには、テンプレートごとにこの手順を繰り返します。

既存のプロジェクトアクセス

テンプレート権限は加算的です。ユーザーの組み込みロールや他のカスタムロールによるアクセス権を置き換えたり縮小したりすることなく、アクセス権を追加します。ユーザーがすでにすべてのタスクテンプレートを実行または更新できる場合、テンプレート固有のロールを追加してもそのアクセス権が狭まることはありません。

プロジェクトでカスタムロールを割り当てる

グローバルロールまたはプロジェクトロールを作成して設定したら、目的のチームメンバーに割り当てます。

  1. プロジェクトを開き、チームに移動します。
  2. 目的のユーザーの横にあるロールを展開します。
  3. カスタムロールを選択します。

現在サポートされていない機能

  • LDAP / OIDC のグループマッピング。 カスタムロールはユーザーごとに割り当てられます。外部ディレクトリのグループをカスタムロールにマッピングすることはサポートされていません。
  • テンプレート以外のリソースに対するきめ細かい権限。 現時点で、個々のリソースレベルでカスタムロールによって制御できるのはテンプレートだけです。

チームメンバーの管理

  • 新しいメンバーの招待: オーナーマネージャーは、新しいユーザーをチームに招待し、初期ロールを割り当てることができます。

  • ロールの変更: オーナーは常に任意のチームメンバーのロールを変更できます。マネージャーはタスクランナーゲストのロールを変更できますが、他のマネージャーやオーナーのロールは変更できません

  • メンバーの削除: オーナーとマネージャーは、自分より下位のロールを持つチームメンバーを削除できます。

    • オーナーは誰でも(他のオーナーを含む)削除できますが、唯一のオーナーである場合は自分自身を削除できません。
    • マネージャーはタスクランナーゲストを削除できますが、他のマネージャーやオーナーは削除できません

ベストプラクティス

  1. 冗長性を確保する: 継続的なアクセスを確保し、単一障害点を防ぐため、オーナーロールを少なくとも 2 人に割り当てます。
  2. 最小権限の原則に従う:
    • チームメンバーには、その作業に必要な最小限のロールを与えます。
    • 限られた権限だけが必要なメンバーには、タスクランナーまたはゲストロールを使用します。
    • Enterprise では、メンバーの組み込みロールを引き上げる代わりに、カスタムロールを使って特定のテンプレートへのアクセス権を付与することを優先します。
  3. メンバーシップを定期的に見直す:
    • チーム構成の変化に合わせてロールを再評価します。
    • 高い権限が不要になったユーザーについては、アクセス権を取り消すかロールを引き下げます。
  4. 日常的な管理にはマネージャーを使う:
    • オーナーロールは、最終的な権限を持つ少人数のグループに限定します。
    • 日常的なプロジェクト管理作業はマネージャーに委任し、誤って重大な変更やプロジェクトの削除が行われるリスクを減らします。

よくある質問

1. オーナーは他のオーナーを削除できますか?

はい。オーナーは、プロジェクトに残っている唯一のオーナーでない限り、他のオーナーを削除したりロールを変更したりできます。

2. プロジェクトを削除できるのは誰ですか?

プロジェクトを削除できるのはオーナーだけです。

3. マネージャーは他のマネージャーを追加・削除できますか?

いいえ。マネージャーが追加・削除できるのは、タスクランナーまたはゲストロールのユーザーだけです。オーナーや他のマネージャーを管理するには、オーナーである必要があります。

4. 誤ってすべてのオーナーを削除してしまったらどうなりますか?

Semaphore UI は、プロジェクトからオーナーがいなくなるようなオーナーの削除を防ぎます。常に少なくとも 1 人のオーナーが存在する必要があります。

5. ゲストはタスクを実行できますか?

いいえ。ゲストは読み取り専用のアクセス権しか持たず、タスクのトリガーや管理はできません。Enterprise エディションでは、カスタムロールを通じて、ゲストに個々のテンプレートの実行権限を付与できます。

6. カスタムロールは組み込みロールを置き換えますか?

いいえ。カスタムロールは、プロジェクトレベルおよびテンプレートレベルの追加権限で組み込みロールを拡張します。すべてのチームメンバーは引き続き、組み込みロールをちょうど 1 つ持ちます。

7. 拡張 RBAC はコミュニティエディションで利用できますか?

いいえ。拡張 RBAC には Semaphore Enterprise のサブスクリプションが必要です。