メインコンテンツにスキップ

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_admin1つのアプリの完全な管理権 — チャネル、デバイス、ユーザーロール。
アプリ開発者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_admin1つのチャンネルの完全な管理権限: 設定、バンドルを昇格/ロールバック、強制デバイスの管理。
チャンネルビューア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_adminapp_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 権限が組織レベルでは得られない


ユーザーごとにロールを割り当てるのではなく、グループを作成し、グループにロールを割り当てることができます。グループのメンバー全員が自動的にそのロールを取得します。 グループのしくみ 「グループのしくみ」のセクション

  • __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>"

グループにメンバーを追加する

グループにメンバーを追加する
__CAPGO_KEEP_1__
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>" }'

組織のメンバーである必要があります。既存のメンバーを追加することは何の影響もありません。

グループからメンバーを削除する

グループからメンバーを削除する
__CAPGO_KEEP_1__
curl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>/members/<USER_UUID>" \
-H "authorization: <API_KEY>"

ターミナル画面
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 ダッシュボードとAPIの運用計画を行い、 APIの概要 APIの概要の実装詳細については 導入 導入の実装詳細については APIのキー APIのキーに関する実装詳細については デバイス デバイスの実装詳細については、 バンドル バンドルの実装詳細については。