Access Control Reference
インストール手順とこのプラグインの全マークダウンガイドを含むセットアップ用の質問をコピーできます。
Capgoは ロールベースのアクセス制御(RBAC)を 各チームメンバーが何ができるかを管理するために使用します。ロールは スコープ 組織全体から単一のバンドルまでの範囲で組織化されています。
メンバーを管理するダッシュボードの視覚的なウォークスルーについては、 組織.
役割スコープ
役割スコープすべての役割は、リソースへのアクセスを許可するスコープに属している。
| スコープ | 適用対象 | 例 |
|---|---|---|
| 組織 | 組織全体とすべてのアプリ | 共同創業者はSuper Admin、会計士はBilling Manager |
| アプリ | 単一のアプリとそのチャネル | __CAPGO_KEEP_0__は1つのアプリに取り組む契約者がApp Developer |
| __CAPGO_KEEP_0__ | __CAPGO_KEEP_0__ | __CAPGO_KEEP_0__のQAエンジニアは、チャンネルを管理するのみ staging __CAPGO_KEEP_0__ |
| __CAPGO_KEEP_0__ | __CAPGO_KEEP_0__は1つのリリースに特定のアクセス権を持つレビュアーが必要 | __CAPGO_KEEP_0__は1つのスコープ目標ごとに1つの役割を持つことができます |
— たとえば、1つの組織役割、App Aの役割、App Bの異なる役割です。 組織の役割 __CAPGO_KEEP_0__の組織ロールとアプリロールの両方を管理することができます。
__CAPGO_KEEP_0__の組織ロールとアプリロールの両方を管理することができます。
組織ロールメンバーを招待したときに割り当てられるロールです。組織全体へのアクセスを許可します。
| ロール | 内部名 | 説明 |
|---|---|---|
| スーパーアドミン | org_super_admin | 組織を作成したユーザーに自動的に割り当てられます。組織を削除、請求設定を管理、アプリを移行できます。 |
| 管理者 | org_admin | メンバー、 アプリ、 チャンネルを管理できます。組織を削除、請求設定を更新、ユーザーをスーパーアドミンに昇格することはできません。 |
| 請求管理者 | org_billing_admin | 請求情報、請求書、請求アクセスログのみを表示および更新できます。アプリやメンバーにはアクセスできません。 |
| メンバー | org_member | 組織とそのすべてのアプリへの読み取り専用アクセス。 |
組織の権限マトリックス
組織の権限マトリックスのセクション| 権限 | 説明 | スーパーアドミン | 管理者 | 請求管理者 | メンバー |
|---|---|---|---|---|---|
org.read | 組織を表示 | ✅ | ✅ | ✅ | ✅ |
org.update_settings | 組織名、ロゴ、管理メールを編集 | ✅ | ✅ | ❌ | ❌ |
org.delete | 組織を永久に削除 | ✅ | ❌ | ❌ | ❌ |
org.read_members | 会員リストを表示 | ✅ | ✅ | ❌ | ✅ |
org.invite_user | 新しいメンバーを招待 | ✅ | ✅ | ❌ | ❌ |
org.update_user_roles | メンバーの役割を変更 (管理者はスーパーアドミンに昇格できません — ロール階層によりブロックされます) | ✅ | ✅ | ❌ | ❌ |
org.read_billing | 請求情報と現在のプランを表示 | ✅ | ✅ | ✅ | ❌ |
org.update_billing | 支払い方法とプランを更新 | ✅ | ❌ | ✅ | ❌ |
org.read_invoices | 請求書を表示 | ✅ | ✅ | ✅ | ❌ |
org.read_audit | 組織の活動ログを表示 | ✅ | ✅ | ❌ | ❌ |
org.read_billing_audit | 請求関連の監査ログを表示 | ✅ | ✅ | ✅ | ❌ |
アプリロール
アプリロールのセクション1つのアプリにスコープされている。チームメンバーが1つのアプリのみで作業するようにするには、これらのロールを使用してください。
| ロール | 内部名 | 説明 |
|---|---|---|
| アプリ管理者 | app_admin | 1つのアプリの完全な管理権 — チャネル、デバイス、ユーザーロール。 |
| アプリ開発者 | app_developer | バンドルをアップロード、デバイスを管理、ネイティブビルドをトリガー、チャネル設定を更新。削除、設定変更、チャネル作成は不可。 |
| アプリアップローダー | app_uploader | 読み取り権限 + 新バンドルバージョンをアップロード。 |
| アプリプレビュー | app_reader | 組織とアプリに依存するプレビューCIライフサイクル: バンドルをアップロードし、プレビュー チャネルを作成。チャネルを作成すると、ライフサイクル権限が自動的にそのチャネルにのみ付与される。 |
| アプリ権限マトリックス | app_preview | 権限マトリックス |
| __CAPGO_KEEP_0__ | 説明 | アプリ管理者 | アプリ開発者 | アプリアップローダー | アプリ読者 |
|---|---|---|---|---|---|
app.read | アプリの詳細、統計、メタデータを表示 | ✅ | ✅ | ✅ | ✅ |
app.update_settings | アプリの設定を編集 | ✅ | ❌ | ❌ | ❌ |
app.read_bundles | アップロードしたバンドルのリストを表示 | ✅ | ✅ | ✅ | ✅ |
app.upload_bundle | 新しいバンドルのバージョンをアップロード | ✅ | ✅ | ✅ | ❌ |
app.create_channel | 新しいチャンネルを作成 | ✅ | ❌ | ❌ | ❌ |
app.read_channels | チャンネルを表示 | ✅ | ✅ | ✅ | ✅ |
app.read_logs | アップデートの配信ログを表示 | ✅ | ✅ | ✅ | ✅ |
app.manage_devices | __CAPGO_KEEP_0__を割り当て、オーバーライド、またはデバイスを解除 | ✅ | ✅ | ❌ | ❌ |
app.read_devices | __CAPGO_KEEP_0__デバイスの一覧を表示 | ✅ | ✅ | ✅ | ✅ |
app.build_native | __CAPGO_KEEP_0__ネイティブクラウドビルドをトリガー | ✅ | ✅ | ❌ | ❌ |
app.read_audit | __CAPGO_KEEP_0__アプリレベルアクティビティログを表示 | ✅ | ✅ | ✅ | ✅ |
app.update_user_roles | __CAPGO_KEEP_0__アプリスコープロール割り当てを管理 | ✅ | ❌ | ❌ | ❌ |
bundle.delete | __CAPGO_KEEP_0__バンドルを削除 | ✅ | ❌ | ❌ | ❌ |
アプリプレビュー権限セット
アプリプレビュー権限セット使用 アプリプレビュー (app_preview組織とアプリに紐づいたCIキーがPRプレビューライフサイクルを管理する際に、アプリまたは組織全体に広範なアクセス権を与えないようにするためのものです。
その app_preview バインディングは、アプリ内ロールに関連する権限のみを付与します。
| 権限 | 許可 |
|---|---|
app.read | 選択したアプリを読み取る |
app.read_bundles | アップロードしたバンドルを読み取る |
app.upload_bundle | アップロードするバンドル |
app.create_channel | チャンネルを作成 |
App Preview キーがチャンネルを作成すると、Capgoはそのキーに自動的にそのチャンネルの子として channel_preview バインドを与える
| 権限 | 許可する |
|---|---|
channel.read | キーがチャンネルを作成したチャンネルを読む |
channel.promote_bundle | キーがそのチャンネルにアップロードしたバンドルを設定 |
channel.delete | そのチャンネルを削除 |
なぜ app_preview 保持する app.readキーは選択したアプリのチャンネルメタデータを列挙できる。自動的に子としてのバインドは 管理 境界: そのキーは、チャネルを作成しなかった場合のライフサイクル変化を許可しない。
Capgo は、各チャネルを作成し、各バンドルをアップロードしたプレビュー キーを記録する。したがって、App プレビュー キーは、必要なすべての非公開プレビュー チャネルを作成し、自身のバンドルをプロモートし、チャネルとバンドルを原子的に削除できますが、既存のデフォルト/メイン チャネル、他のプレビュー キーのチャネル、または他のキーのバンドルに対してはそれらを行うことはできません。 channel delete --delete-bundle含まれない
、デバイスまたはロールの管理 app.update_settings、強制デバイス管理、または汎用 channel.update_settings, channel.rollback_bundle注意 bundle.delete.
「チャネル ロール」のセクション
管理1つのチャンネルにスコープされている。特定のリリースチャンネルへのターゲットされたアクセスを与えるのに役立つ。
| ロール | 内部名 | 説明 |
|---|---|---|
| チャンネル管理者 | channel_admin | 1つのチャンネルの完全な管理権限: 設定、バンドルを昇格/ロールバック、強制デバイスの管理。 |
| チャンネルビューア | channel_reader | 読み取り専用 — 現在のバンドル、履歴、強制デバイス、監査ログ。 |
| チャンネルプレビュー | channel_preview | システムが割り当てられたApp Previewキーが作成したチャンネルに割り当てられた: 読み取り、昇格する自分のバンドル、そしてそのチャンネルを削除。 |
チャンネル権限マトリックス
「チャンネル権限マトリックス」というセクション| 権限 | 説明 | チャンネル管理者 | チャンネルビューア | チャンネルプレビュー |
|---|---|---|---|---|
channel.read | チャンネルとその現在のバンドルを表示 | ✅ | ✅ | ✅ |
channel.update_settings | チャンネル設定を編集(プラットフォームの切り替え、更新ポリシー…) | ✅ | ❌ | ❌ |
channel.delete | チャンネルを削除 | ✅ | ❌ | ✅ |
channel.read_history | バンドル割り当ての履歴を表示 | ✅ | ✅ | ❌ |
channel.promote_bundle | チャンネルに現在のバンドルを設定 | ✅ | ❌ | ✅ |
channel.rollback_bundle | 前のバンドルに戻す | ✅ | ❌ | ❌ |
channel.manage_forced_devices | 特定のデバイスにこのチャンネルを強制 | ✅ | ❌ | ❌ |
channel.read_forced_devices | 強制デバイスのリストを表示 | ✅ | ✅ | ❌ |
channel.read_audit | チャンネル活動ログを表示 | ✅ | ✅ | ❌ |
バンドルロール
バンドルロールのセクションバンドルバージョンに制限される。ほとんどのチームはアプリレベルロールを使用するので、ほとんど必要ない。
| ロール | 内部名 | 説明 |
|---|---|---|
| バンドル管理者 | bundle_admin | 特定のバンドルを読み取る、更新する、削除することができる。 |
| バンドルビューア | bundle_reader | 特定のバンドルの読み取り専用アクセス。 |
チャネル権限のオーバーライド (ダッシュボード)
「チャネル権限のオーバーライド (ダッシュボード)」というセクションデフォルトでは、ダッシュボードでチャネルへのアクセスはユーザーのアプリロールによって決まります。より細かい制御が必要な場合は、 ユーザーやグループごとに特定のチャネル権限をオーバーライドできます。 アプリロールを変更することなく
オーバーライド設定は、アプリの アクセス タブから、ユーザーに隣接するチャネル権限のボタン(盾のアイコン)をクリックして設定します。 詳細は「Organization — Overriding channel permissions」を参照してください。 オーバーライド可能な権限
Read-only access to a specific bundle.
オーバーライド可能な権限| 権限 | 説明 | デフォルトの動作 |
|---|---|---|
| 読み取り | チャンネルとその現在のバンドルを表示 | アプリロールから継承 |
| 履歴 | バンドル割り当ての履歴を表示 | アプリロールから継承 |
| バンドルを関連付け | チャンネルにバンドルを設定または変更 | Inherited from app role |
各パーミッションは次のいずれかに設定できます。
- デフォルト --- アプリロールから継承する (デフォルト)
- 許可 --- アプリロールに関係なく、明示的に許可する
- 拒否 --- アプリロールに関係なく、明示的に拒否する
この機能を使用すると、たとえば、App Reader に bundle を関連付ける権限を与え、App Developer には bundle をアップグレードする権限を与えることができます。 staging ロール階層
セクション "ロール階層"
__CAPGO_KEEP_0__役割は階層構造を形成します。親の役割は のすべての権限を継承します。 つまり、 org_admin は app_admin ができるすべてのことを実行できます。 channel_admin はさらに
Super Admin (org_super_admin) └── Admin (org_admin) └── App Admin (app_admin) ├── App Developer (app_developer) │ └── App Uploader (app_uploader) │ └── App Reader (app_reader) ├── Bundle Admin (bundle_admin) │ └── Bundle Viewer (bundle_reader) └── Channel Admin (channel_admin) └── Channel Viewer (channel_reader)などです。
- コピー 実際の動作の仕組みは次のとおりです。 組織レベルで Admin すべてのアプリ内で、組織内で。
- An アプリ管理者 特定のアプリのアプリ管理者は、すべてのチャネル内でチャネル管理者ができるようにすることができます。 An アプリ開発者
- アプリアップローダーができるようにすることができます。さらに多くのことができます。 階層は、 __CAPGO_KEEP_0__ __CAPGO_KEEP_0__ __CAPGO_KEEP_0__
__CAPGO_KEEP_0__ 下降 — a channel_admin 権限が組織レベルでは得られない
グループ
「グループ」のセクションユーザーごとにロールを割り当てるのではなく、グループを作成し、グループにロールを割り当てることができます。グループのメンバー全員が自動的にそのロールを取得します。 グループのしくみ 「グループのしくみ」のセクション
グループは
1 つの組織に属します- __CAPGO_KEEP_0__ __CAPGO_KEEP_1__ — 1 つ以上の組織を跨ぐことはできません。
- グループは任意のスコープ(組織、アプリ、チャネル、またはバンドル)でロールのバインディングを保持できます。例えば、グループはアプリ A に「アプリ開発者」というロールを割り当てることができ、またアプリ B のチャネルに「チャネル管理者」というロールを割り当てることもできます。 ユーザーのパーミッションの評価の際、すべてのグループのメンバーシップが透過的に解決されます。必要なパーミッションがユーザーのいずれかのグループによって許可されている場合、許可されます。ユーザーは複数のグループに所属できます。 グループは任意のスコープ(組織、アプリ、チャネル、またはバンドル)でロールのバインディングを保持できます。例えば、グループはアプリ A に「アプリ開発者」というロールを割り当てることができ、またアプリ B のチャネルに「チャネル管理者」というロールを割り当てることもできます。 ユーザーのパーミッションの評価の際、すべてのグループのメンバーシップが透過的に解決されます。必要なパーミッションがユーザーのいずれかのグループによって許可されている場合、許可されます。 ユーザーは複数のグループに所属できます。 グループは任意のスコープ(組織、アプリ、チャネル、またはバンドル)でロールのバインディングを保持できます。例えば、グループはアプリ A に「アプリ開発者」というロールを割り当てることができ、またアプリ B のチャネルに「チャネル管理者」というロールを割り当てることもできます。
stagingユーザーのパーミッションの評価の際、すべてのグループのメンバーシップが透過的に解決されます。必要なパーミッションがユーザーのいずれかのグループによって許可されている場合、許可されます。 - ユーザーは複数のグループに所属できます。
- グループは任意のスコープ(組織、アプリ、チャネル、またはバンドル)でロールのバインディングを保持できます。例えば、グループはアプリ A に「アプリ開発者」というロールを割り当てることができ、またアプリ B のチャネルに「チャネル管理者」というロールを割り当てることもできます。 ユーザーのパーミッションの評価の際、すべてのグループのメンバーシップが透過的に解決されます。必要なパーミッションがユーザーのいずれかのグループによって許可されている場合、許可されます。グループベースの権限はすべてのグループの権限を加算します。
- グループベースの権限は ユーザープリンシパル — API keys do not inherit group roles.
— __CAPGO_KEEP_0__ キーはグループロールを継承しません。
グループを使用するとき| セクションのタイトルは “グループを使用するとき” | シナリオ | グループなし |
|---|---|---|
| グループあり | 5人のQAエンジニアが3つのアプリに開発者権限が必要です | 15個の個別のロールバインディングが必要です。1つのグループ + 3つのロールバインディング |
| QA チームに新メンバーが加わります | 3 つのロールバインディングを手動で追加します | グループに追加します |
| QA チームからメンバーが離れます | 3 つのロールバインディングを手動で削除します | グループから削除します |
グループを API で管理します
グループを API で管理するすべてのグループエンドポイントは認証が必要であり、Cloudflare によって提供されます /private/groups.
グループの一覧
グループの一覧curl -X GET "https://api.capgo.app/private/groups/<ORG_ID>" \ -H "authorization: <API_KEY>"許可が必要です。 org.read_members グループを作成
グループを作成
ターミナル画面curl -X POST "https://api.capgo.app/private/groups/<ORG_ID>" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "name": "QA Team", "description": "Quality assurance engineers" }'最高管理者 org.update_user_roles または管理者 __CAPGO_KEEP_0__ __CAPGO_KEEP_0__).
グループを更新
グループの更新curl -X PUT "https://api.capgo.app/private/groups/<GROUP_ID>" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "name": "QA Team", "description": "Updated description" }'グループを削除
グループの削除curl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>" \ -H "authorization: <API_KEY>"グループの削除も、そのグループに関連付けられているすべてのロールのバインドを削除します。メンバーは組織から削除されません。
グループメンバーのリスト
グループメンバーcurl -X GET "https://api.capgo.app/private/groups/<GROUP_ID>/members" \ -H "authorization: <API_KEY>"グループにメンバーを追加する
グループにメンバーを追加するcurl -X POST "https://api.capgo.app/private/groups/<GROUP_ID>/members" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "user_id": "<USER_UUID>" }'組織のメンバーである必要があります。既存のメンバーを追加することは何の影響もありません。
グループからメンバーを削除する
グループからメンバーを削除するcurl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>/members/<USER_UUID>" \ -H "authorization: <API_KEY>"APIを使用して役割を割り当てる
セクションのタイトル: “APIを使用して役割を割り当てる”メンバーの一覧
セクションのタイトル: “メンバーの一覧”curl -X GET "https://api.capgo.app/organization/members" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "orgId": "<ORG_ID>" }'レスポンス:
[ { "uid": "user-uuid", "email": "alice@example.com", "image_url": "https://...", "role": "org_admin", "is_tmp": false }]メンバーを招待
メンバーを招待するセクションcurl -X POST "https://api.capgo.app/organization/members" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "orgId": "<ORG_ID>", "email": "bob@example.com", "invite_type": "org_admin" }'受け入れられる値 invite_type:
| 値 | 割り当てられたロール |
|---|---|
org_super_admin | スーパーアドミン |
org_admin | アドミン |
org_billing_admin | 請求管理者 |
org_member | メンバー |
メンバーを削除
メンバーを削除するセクションcurl -X DELETE "https://api.capgo.app/organization/members" \ -H "authorization: <API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "orgId": "<ORG_ID>", "email": "bob@example.com" }'CLIを使用したロールの割り当て
CLIを使用したロールの割り当てのセクション組織の一覧
組織の一覧のセクションnpx @capgo/cli organization list --apikey <API_KEY>メンバーの一覧
メンバーの一覧のセクションnpx @capgo/cli organization members <ORG_ID> --apikey <API_KEY>カスタムロール
「カスタムロール」タイトルのセクション組み込みロールはほとんどのチーム構造をカバーしています。カスタムロールの作成は、ロードマップ上にあります — これがチームが必要としている場合、 私たちに連絡してください。あなたの用途は、この機能を優先するために私たちに直接役立ちます。
Access Control Referenceから続けて
「Access Control Referenceから続けて」タイトルのセクションあなたが Access Control Reference ダッシュボードとAPIの運用計画を行い、 APIの概要 APIの概要の実装詳細については 導入 導入の実装詳細については APIのキー APIのキーに関する実装詳細については デバイス デバイスの実装詳細については、 バンドル バンドルの実装詳細については。