コンテンツにジャンプ

コンテキスト: Capgo マーケティング ウェブサイト。役割: ウェブサイト コピーの文。見つける場所: component doc/SignupCta.astro, component Hero.astro。メッセージ キー `hero_subtitle_v2` (Hero Subtitle V2)。

Capgo を使用します ロールベースのアクセス制御 (RBAC) 各チームメンバーが何ができるかを管理するには 範囲 組織全体から、単一のバンドルまでの範囲

ダッシュボードでメンバーを管理するための視覚的なウォークスルーについては、 組織.


ロールの範囲

ロールの範囲

各ロールは、どのリソースにアクセスできるかを決定する範囲に属します。

範囲適用使用例
組織組織全体とそのすべてのアプリ共同創業者はSuper Admin、会計士はBilling Manager
アプリ単一のアプリとそのチャンネル1つのアプリに従事する契約者はApp Developer
チャンネル単一のチャンネルチャンネル staging バンドル
単一のバンドルバージョン__CAPGO_KEEP_0__リリースの読み取り権限を持つレビュアーが1つ必要です。

a member can hold 一つのスコープごとに一つの役割 one role per scope target — for example, one org role, one role on App A, and a different role on App B.


Organization roles

RoleRoleInternal name
Descriptionorg_super_adminSuper Admin
管理者org_admin管理者 — メンバー、 アプリ、 チャンネルを管理。 組織を削除、請求設定を更新、 アプリを移行、 Super 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つのアプリのみに取り組む必要がある場合に使用します。

ロール内部名説明
アプリ管理者app_admin1つのアプリの全権限 — チャンネル、デバイス、ユーザーロールの管理。アプリの削除または移行は組織レベルでの操作です。
アプリ開発者app_developerバンドルアップロード、デバイス管理、ネイティブビルドトリガー、チャンネル設定の更新。アプリの削除、設定変更、チャンネル作成は不可。
アプリアップローダーapp_uploader読み取り権限 + 新バンドルバージョンのアップロード
アプリリーダーapp_reader読み取り専用 — 統計、バンドル、チャンネル、ログ、デバイス
アプリプレビューapp_preview組織とアプリに紐づいたプレビューCIライフサイクル: バンドルをアップロードし、プレビューチャンネルを作成します。チャンネルの作成により、ライフサイクル権限が自動的にチャンネルに付与されます。

アプリパーミッションマトリックス

アプリパーミッションマトリックス
パーミッション説明アプリ管理者アプリ開発者アプリアップローダーアプリ閲覧者
app.readアプリ詳細、統計、メタデータを表示✅✅✅✅
app.update_settingsアプリ設定を編集✅❌❌❌
app.read_bundlesアップロードしたバンドルのリストを表示する✅✅✅✅
app.upload_bundle新しいバンドルのバージョンをアップロードする✅✅✅❌
app.create_channel新しいチャンネルを作成する✅❌❌❌
app.read_channelsチャンネルを表示する✅✅✅✅
app.read_logsアップデートの配信ログを表示する✅✅✅✅
app.manage_devicesデバイスに割り当てる、上書き、またはリンクを解除する✅✅❌❌
app.read_devicesデバイスのリストを表示する✅✅✅✅
app.build_nativeネイティブクラウドビルドをトリガーする✅✅❌❌
app.read_auditアプリレベルアクティビティログを表示する✅✅✅✅
app.update_user_rolesアプリスコープのロール割り当てを管理する✅❌❌❌
bundle.deleteバンドルを削除する✅❌❌❌

アプリプレビューの権限セット

アプリプレビューの権限セット

アプリプレビューを使用 アプリプレビュー (app_previewアプリプレビュー

アプリプレビュー app_preview アプリレベル許可のみを付与します:

許可許可
app.read選択したアプリを読み取る
app.read_bundlesアップロードしたバンドルを読み取る
app.upload_bundleバンドルをアップロードする
app.create_channelチャンネルを作成する

アプリプレビュー キーがチャンネルを作成した場合、Capgo はそのキーの子として自動的にチャンネルを作成します。 channel_preview チャンネルを作成する許可

許可許可
channel.readキーの作成したチャンネルを読み取る
channel.promote_bundleそのチャンネルにアップロードしたバンドルをキー自身で設定する
channel.deleteそのチャンネルを削除する

なぜなら app_preview 保持する app.read、選択したアプリでチャンネルメタデータを列挙できる可能性があるため。自動子オブジェクトのバインディングは、キーが作成しなかったチャンネルに対してライフサイクル変化を許可しない 管理 boundary: そのチャンネルを作成しないキーに対してライフサイクル変化を許可しない。

Capgo records the preview key that created each channel and uploaded each bundle. Therefore an App Preview key can create each non-public preview channel it needs, promote its own bundle, and atomically delete that channel and bundle with channel delete --delete-bundle、デバイスまたはロールの管理

、強制デバイス管理、または汎用 app.update_settings,デバイスまたはロール管理 channel.update_settings, channel.rollback_bundle, 強制デバイス管理、または汎用 bundle.delete.


チャネル ロール

チャネル ロール

特定のリリース チャネルにスコープされている。特定のリリース チャネルにターゲット アクセスを与えるために便利です。

ロール内部名説明
チャンネル管理者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特定のバンドルの読み取り専用

チャンネル権限のオーバーライド(ダッシュボード)

チャンネル権限のオーバーライド(ダッシュボード)

デフォルトでは、ダッシュボードでチャンネルへのアクセスはユーザーのアプリロールによって決定されます。より細かい制御が必要な場合は、 ユーザーまたはグループごとに特定のチャンネル権限をオーバーライドできます。 アプリの

オーバーライドは、アプリの アクセス チャンネルパーミッションをクリックしてください (シールドアイコン)。詳細は 組織 — チャンネルパーミッションのオーバーライド を参照してください。

オーバーライド可能なパーミッション

セクション名 “オーバーライド可能なパーミッション”
パーミッション説明デフォルトの動作
読み取りチャンネルとその現在のバンドルを表示します。アプリロールから継承
歴史チャンネルに割り当てられたバンドルの履歴を表示アプリロールから継承
バンドルを関連付けチャンネルに現在使用中のバンドルを設定または変更アプリロールから継承

各権限を次のように設定できます

  • デフォルト — アプリロールから継承 (デフォルト)
  • 許可 — アプリロールを無視して明示的に許可
  • 拒否 — まったくブロックします。アプリロールに関係なく

これにより、たとえば、App Reader にバンドルを関連付ける権限を与え、App Developer に昇格させるのではなく staging ロール階層


「ロール階層」のセクション

ロールは階層を形成します。親ロールは

すべての権限を継承します 子ロールの は、すべての権限を持つことができます。これは、さらに 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)

実際の運用方法:

  • 組織 組織レベルで アプリ アプリ アプリ
  • 組織 アプリ チャンネル チャンネル アプリ内で
  • 組織 アプリ開発者 すべてのアプリ開発者ができること アプリアップローダー アプリアップローダーはさらに多くのことができる。

階層は下方のみ流れ、上方には昇ることはない 下方のみ — channel_admin 組織レベルの権限を得ることはない


グループ

グループ

グループの代わりに、各ユーザーに役割を割り当てるのではなく、グループを作成できます グループ グループに役割を割り当てます。グループのメンバー全員が自動的にその役割を継承します。

グループのしくみ

「グループのしくみ」
  • グループは 1 つの組織に属します — 1 つの組織をまたいだりはできません。
  • グループは 任意のスコープ:組織、 アプリ、 チャンネル、 またはバンドルで、 例えば、グループはアプリAに App Developer の役割を割り当て、チャンネルAに App Bのチャンネル内での staging App Bのチャンネル内での
  • ユーザーの権限評価時、グループのメンバーシップは透過的に解決されます。グループのいずれかが必要な権限を付与している場合、許可が与えられます。
  • ユーザーは 複数のグループに所属することができます、グループから得られるすべての権限は合計されます。
  • グループベースの権限は ユーザープリンシパル — API キーはグループロールを継承しません。

— __CAPGO_KEEP_0__ キーはグループロールを継承しません。

グループの使用時期
Scenarioグループなしグループあり
5人のQAエンジニアが3つのアプリに開発者権限を必要とする15個の個別のロールバインディング1つのグループ + 3つのロールバインディング
QAチームに誰かが参加する3つのロールバインディングを手動で追加するグループに追加する
QAチームから誰かが退会する3つのロールバインディングを手動で削除するグループから削除する

グループの管理はAPIで行う

Section titled “Managing groups via API”

すべてのグループエンドポイントは認証が必要であり、以下のURLで提供されます。 /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 権限 (最高管理者 または 管理者).

グループを更新

グループを更新
ターミナル画面
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で割り当てる

Section titled “Assigning roles via API”
ターミナル画面
curl -X GET "https://api.capgo.app/organization/members" \
-H "authorization: <API_KEY>" \
-H "Content-Type: application/json" \
-d '{ "orgId": "<ORG_ID>" }'

Response:

[
{
"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"
}'

「ロールの割り当てを __CAPGO_KEEP_0__ として」のセクション

組織の一覧表示
ターミナル画面
npx @capgo/cli organization list --apikey <API_KEY>
ターミナル画面
npx @capgo/cli organization members <ORG_ID> --apikey <API_KEY>

標準ロールはほとんどのチーム構成をカバーしています。カスタムロールの作成は今後の計画ですが、チームがこれを必要としている場合は、ご連絡ください。 Copy to clipboardあなたの利用シナリオは、この機能の優先順位を直接助けるでしょう。

Access Control Referenceから続けてください。

セクション名:Access Control Referenceから続けてください。

あなたが利用している アクセス制御リファレンス あなたがダッシュボードとAPIの実行を計画するために利用している場合、API Overviewと接続してください。 API まとめ API Overviewの実装詳細について 導入 導入の実装詳細について API キー API Keysの実装詳細について デバイス デバイスの実装詳細について バンドル バンドルの実装詳細について