Pindah ke konten

Pengaturan Kontrol Akses

Capgo menggunakan pengaturan akses berdasarkan peran (RBAC) Mengatur apa yang dapat dilakukan setiap anggota tim. Peran-peran diatur berdasarkan ruang lingkup — dari organisasi keseluruhan hingga bundle tunggal.

Untuk panduan visual mengelola anggota di dashboard, lihat Organisasi.


Setiap peran memiliki ruang lingkup yang menentukan sumber daya apa yang memberikan akses.

Ruang lingkupBerlaku untukContoh penggunaan
OrganisasiSemua organisasi dan semua aplikasinyaKo-founding Anda mendapatkan Super Admin; akuntan Anda mendapatkan Billing Manager
AplikasiAplikasi tunggal dan saluran-salurannyaA kontraktor yang bekerja pada satu aplikasi mendapatkan App Developer
SaluranSaluran tunggal dalam sebuah aplikasiA saluran tunggal dalam aplikasi staging channel
SaluranVersi Paket tunggalSeorang reviewer memerlukan akses baca ke satu rilis tertentu

A anggota dapat memegang peran satu per target ruang lingkup — misalnya, satu peran organisasi, satu peran di Aplikasi A, dan peran yang berbeda di Aplikasi B.


Peran-peran ini diberikan ketika mengundang anggota. Mereka memberikan akses di seluruh organisasi.

RoleNama InternalNama Internal
Deskripsiorg_super_adminPemilik setara. Memiliki kontrol penuh termasuk menghapus organisasi, mengelola tagihan, dan mentransfer aplikasi. Diberikan secara otomatis kepada pembuat organisasi.
Adminorg_adminPengaturan Penuh — mengelola anggota, aplikasi, saluran. Tidak dapat menghapus organisasi, mengupdate tagihan, mentransfer aplikasi, atau mempromosikan pengguna menjadi Super Admin.
Pengelola Tagihanorg_billing_adminAkses Tagihan Saja: melihat dan mengupdate informasi tagihan, faktur, dan log audit tagihan. Tidak ada akses ke aplikasi atau anggota.
Anggotaorg_memberAkses Baca-Saja ke organisasi dan semua aplikasinya.
IzinDeskripsiPengguna UtamaAdminPengelola TagihanAnggota
org.readLihat organisasi✅✅✅✅
org.update_settingsUbah nama, logo, dan alamat email pengelola organisasi✅✅❌❌
org.deleteHapus organisasi secara permanen✅❌❌❌
org.read_membersLihat daftar anggota✅✅❌✅
org.invite_userUndang anggota baru✅✅❌❌
org.update_user_rolesGanti peran anggota (Admin tidak dapat mempromosikan ke Super Admin — diblokir oleh hierarki peran)✅✅❌❌
org.read_billingLihat informasi tagihan dan paket saat ini✅✅✅❌
org.update_billingPerbarui metode pembayaran dan paket✅❌✅❌
org.read_invoicesLihat faktur✅✅✅❌
org.read_auditLihat log aktivitas organisasi✅✅❌❌
org.read_billing_auditLihat log audit tagihan khusus✅✅✅❌

Terbatas pada aplikasi tunggal. Gunakan opsi ini ketika anggota tim hanya boleh bekerja pada satu aplikasi, bukan seluruh organisasi.

PeranNama internalDeskripsi
Admin Aplikasiapp_adminPenuh kontrol atas satu aplikasi — saluran, perangkat, peran pengguna untuk aplikasi. Tidak dapat menghapus atau mentransfer aplikasi (operasi tersebut adalah operasi tingkat organisasi).
Pengembang Aplikasiapp_developerMuat bundle, manajemen perangkat, trigger build native, atur pengaturan saluran. Tidak ada penghapusan, tidak ada perubahan pengaturan aplikasi, tidak ada pembuatan saluran.
Uploader Aplikasiapp_uploaderAkses baca + muat versi bundle baru.
Pembaca Aplikasiapp_readerBaca-saja — statistik, bundle, saluran, log, perangkat.
Tampilan Aplikasiapp_previewOrganisasi- dan aplikasi terkait pratinjau CI siklus: unggah sebuah paket dan buat sebuah saluran pratinjau. Pembuatan saluran tersebut secara otomatis memberikan hak siklus hanya untuk saluran tersebut.
IzinDeskripsiAdmin AplikasiPengembang AplikasiPengunggah AplikasiPembaca Aplikasi
app.readLihat detail aplikasi, statistik, dan metadata✅✅✅✅
app.update_settingsUbah pengaturan aplikasi✅❌❌❌
app.read_bundlesLihat daftar paket yang diunggah✅✅✅✅
app.upload_bundleMengunggah versi bundle baru✅✅✅❌
app.create_channelMembuat saluran baru✅❌❌❌
app.read_channelsMelihat saluran✅✅✅✅
app.read_logsMelihat log pengiriman update✅✅✅✅
app.manage_devicesMenugaskan, menggantikan, atau melepas perangkat✅✅❌❌
app.read_devicesMelihat daftar perangkat✅✅✅✅
app.build_nativeMengaktifkan bangun awan asli✅✅❌❌
app.read_auditMelihat log aktivitas aplikasi✅✅✅✅
app.update_user_rolesMengatur pengaturan peran aplikasi✅❌❌❌
bundle.deleteMenghapus bundle✅❌❌❌

Pakai Tampilan Aplikasi (app_preview) untuk kunci CI yang terkait dengan organisasi dan aplikasi yang mengelola siklus pratinjau PR tanpa akses luas aplikasi atau organisasi.

The app_preview Peran organisasi dan aplikasi dapat dilihat di halaman ini.

IzinMengizinkan
app.readMembaca aplikasi yang dipilih
app.read_bundlesMembaca paket yang diunggah
app.upload_bundleMengunggah paket
app.create_channelMembuat saluran

Ketika sebuah kunci App Preview membuat sebuah saluran, Capgo secara otomatis memberikan kunci tersebut sebuah anak channel_preview ikatannya untuk saluran baru hanya:

IzinMengizinkan
channel.readMembaca saluran yang dibuat oleh kunci
channel.promote_bundleMengatur paket yang diunggah kunci itu sendiri pada saluran
channel.deleteHapus saluran itu

Karena app_preview menyimpan app.read, kunci metadata saluran dapat dienumerasi dalam aplikasi yang dipilih. Pengikatan anak otomatis adalah management boundary: tidak memberikan mutasi siklus untuk sebuah channel yang tidak dibuat oleh kunci tersebut.

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-bundleTidak dapat melakukan hal itu pada saluran default/main yang sudah ada, saluran lain yang berlisensi, atau bundle lain yang berlisensi.

, manajemen perangkat atau peran app.update_settings, manajemen perangkat paksa, atau manajemen channel.update_settings, channel.rollback_bundle, pengelolaan perangkat paksa, atau umum bundle.delete.


Ditetapkan pada saluran tunggal. Berguna untuk memberikan akses sasaran pada saluran rilis tertentu.

PeranNama internalDeskripsi
Pengelola Kanalchannel_adminPenuh kontrol atas satu kanal: pengaturan, promosikan/rollback bundle, dan mengelola perangkat paksa.
Penglihatan Kanalchannel_readerBaca-saja — bundle saat ini, riwayat, perangkat paksa, dan log audit.
Penglihatan Pratinjau Kanalchannel_previewDitugaskan sistem ke kunci App Pratinjau yang menciptakan kanal: baca, promosikan bundle sendiri, dan hapus kanal tersebut.
IzinDeskripsiPengelola SaluranPenglihat SaluranPratinjau Saluran
channel.readLihat saluran dan paket aktifnya✅✅✅
channel.update_settingsUbah pengaturan saluran (toggle platform, kebijakan pembaruan…)✅❌❌
channel.deleteHapus saluran✅❌✅
channel.read_historyLihat riwayat pengaturan paket✅✅❌
channel.promote_bundleSet paket aktif pada saluran✅❌✅
channel.rollback_bundleKembali ke paket sebelumnya✅❌❌
channel.manage_forced_devicesKompaksa perangkat tertentu ke saluran ini✅❌❌
channel.read_forced_devicesMelihat daftar perangkat yang dipaksa✅✅❌
channel.read_auditTampilkan log aktivitas saluran✅✅❌

Rapatkan peran

Judul: Rapatkan peran

Ditetapkan pada versi bundle tunggal. Jarang dibutuhkan — sebagian besar tim menggunakan peran aplikasi daripada peran bundle.

PeranNama internalDeskripsi
Admin Paketbundle_adminBaca, update metadata, dan hapus paket tertentu.
Pengguna Paketbundle_readerAkses baca-saja ke paket tertentu.

Pada dashboard, akses saluran ditentukan oleh peran aplikasi pengguna secara default. Untuk kontrol yang lebih halus, Anda dapat mengatur otorisasi saluran tertentu per pengguna atau kelompok tanpa mengubah peran aplikasi mereka.

Otorisasi diatur dari pengaturan Akses tab dengan mengklik tombol izin saluran (ikon pelindung) di samping pengguna. Lihat Organisasi — Mengatasi izin saluran untuk panduan visual.

IzinDeskripsiKeadaan Default
BacaLihat saluran dan paket bundel saat iniDiturunkan dari peran aplikasi
RiwayatMelihat riwayat pengaturan bundleDitetapkan dari peran aplikasi
Hubungkan bundleSetel atau ubah bundle aktif di saluranDitetapkan dari peran aplikasi

Setiap izin dapat diatur menjadi:

  • Default — mewarisi dari peran aplikasi (default)
  • Biarkan — memberikan secara eksplisit, terlepas dari peran aplikasi
  • Dilarang — melarang secara eksplisit, terlepas dari peran aplikasi

Dengan ini, Anda dapat memberikan hak kepada pembaca aplikasi untuk menghubungkan bundle pada staging Saluran ini tanpa mempromosikannya menjadi pengembang aplikasi.


Struktur peran membentuk piramida. Sebuah peran induk mewarisi semua izin anaknya. Ini berarti bahwa org_admin Semua yang dapat dilakukan oleh app_admin bisa melakukan apa saja yang bisa dilakukan oleh channel_admin Bisa, dan seterusnya.

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)

Bagaimana hal ini berlaku dalam prakteknya:

  • Seorang Admin di tingkat organisasi dapat melakukan semua hal Admin Aplikasi pada setiap aplikasi di organisasi.
  • Seorang Admin Aplikasi di sebuah aplikasi tertentu dapat melakukan segalanya Admin Saluran pada setiap saluran di aplikasi tersebut.
  • Seorang Aplikasi Pengembang bisa melakukan semua yang dapat dilakukan oleh Uploader Aplikasi bisa, plus lebih lagi.

Hirarki hanya mengalir ke bawah — a channel_admin Tidak pernah mendapatkan izin organisasi, bahkan jika mereka juga memiliki peran aplikasi.


Instead of assigning roles to each user individually, you can create groups bisa melakukan semua yang dapat dilakukan oleh App Uploader, plus lebih lagi.

  • Kelompok ini termasuk ke satu organisasi – tidak dapat menyebar ke beberapa org.
  • Kelompok dapat menampung pengikat peran pada Apa Ruang LingkupOrganisasi, aplikasi, saluran, atau paket. Misalnya, sebuah grup dapat diberikan Peran Pengembang Aplikasi peran pada Aplikasi A dan Peran Admin Saluran peran pada staging saluran Aplikasi B.
  • Ketika hak akses pengguna dievaluasi, semua keanggotaan grup mereka diresolusi secara transparan. Jika salah satu grup mereka memberikan izin yang diperlukan, akses diizinkan.
  • Seorang pengguna dapat menjadi anggota beberapa grup, dan izin dari semua grup bersifat aditif.
  • Hak akses berbasis grup hanya berlaku untuk prinsipal pengguna — kunci API tidak mewarisi peran grup.
SkenarioTanpa grupDengan kelompok
5 insinyur QA memerlukan akses Developer ke 3 aplikasi15 pengikat peran individu1 kelompok + 3 pengikat peran
Seseorang bergabung dengan tim QATambahkan 3 pengikat peran secara manualTambahkan mereka ke kelompok
Seseorang meninggalkan tim QAHapus 3 pengikat peran secara manualHapus mereka dari kelompok

Semua endpoint grup memerlukan autentikasi dan disajikan di bawah /private/groups.

Jendela terminal
curl -X GET "https://api.capgo.app/private/groups/<ORG_ID>" \
-H "authorization: <API_KEY>"

Membutuhkan org.read_members izin.

Jendela terminal
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"
}'

Membutuhkan org.update_user_roles izin akses (Pengguna Utama atau Admin).

Bagian berjudul “Perbarui kelompok”

Section titled “Update a group”
Salin ke clipboard
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"
}'

Bagian berjudul “Hapus kelompok”

Section titled “Delete a group”
Salin ke clipboard
curl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>" \
-H "authorization: <API_KEY>"

Menghapus kelompok juga menghapus semua ikatan peran kelompoknya. Anggota tidak dihapus dari organisasi.

Jendela Terminal
curl -X GET "https://api.capgo.app/private/groups/<GROUP_ID>/members" \
-H "authorization: <API_KEY>"

Tambahkan anggota ke kelompok

Judul Bagian: Tambahkan Anggota ke Kelompok
Jendela Terminal
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>" }'

Pengguna harus sudah menjadi anggota organisasi. Menambahkan anggota yang sudah ada adalah operasi tidak berubah.

Jendela terminal
curl -X DELETE "https://api.capgo.app/private/groups/<GROUP_ID>/members/<USER_UUID>" \
-H "authorization: <API_KEY>"

Jendela terminal
curl -X GET "https://api.capgo.app/organization/members" \
-H "authorization: <API_KEY>" \
-H "Content-Type: application/json" \
-d '{ "orgId": "<ORG_ID>" }'

Respons:

[
{
"uid": "user-uuid",
"email": "alice@example.com",
"image_url": "https://...",
"role": "org_admin",
"is_tmp": false
}
]
Jendela terminal
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"
}'

Nilai-nilai yang diterima untuk invite_type:

NilaiPeran yang ditugaskan
org_super_adminPengguna Utama
org_adminAdmin
org_billing_adminPengelola Tagihan
org_memberAnggota
Jendela terminal
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"
}'

Mengasignkan peran melalui CLI

Judul: Mengasignkan peran melalui CLI
Jendela terminal
npx @capgo/cli organization list --apikey <API_KEY>
Jendela terminal
npx @capgo/cli organization members <ORG_ID> --apikey <API_KEY>

Peran bawaan sudah mencakup struktur tim yang umum. Pembuatan peran khusus sedang dalam rencana — jika tim Anda membutuhkannya, Hubungi kami. Penggunaan kasus Anda akan langsung membantu kami memprioritaskan fitur ini.

Teruskan dari Referensi Pengendalian Akses

Judul bagian “Teruskan dari Referensi Pengendalian Akses”

Jika Anda menggunakan Referensi Pengendalian Akses untuk merencanakan dashboard dan operasi API, hubungkannya dengan Ringkasan API untuk detail implementasi di API Overview, Pendahuluan untuk detail implementasi di Pendahuluan, Kunci API untuk detail implementasi di Kunci API, Perangkat untuk detail implementasi di Perangkat, dan Bundel untuk detail implementasi di Bundel.