RBAC rol matrisini oku ve rol ata
Yedi yerleşik rolün izin (permission) matrisini, davet / güncelleme akışını ve Enterprise için özel rol tanımlamasını gez.
Moonborn yedi yerleşik rol gönderir. Her biri kaynak × eylem (resource × action) matrisi üzerinde belirlenmiş bir izin (permission) seti ile gelir. Çoğu çalışma alanı bu yerleşik setle yetinir; özel bir matrisi olan ekipler (uyumluluk / compliance, özel iş akışları) Enterprise planında özel rol tanımlayabilir.
Bu rehber matrisi okumayı, davete rol atamayı, mevcut bir kullanıcının rolünü değiştirmeyi ve özel rol tanımlamayı gösterir. Üyelik (membership) değişiklikleri denetim kaydına (audit log) düşer — bu rehber boyunca gözlemlenebilir iz kalır.
Bu rehberi bitirdiğinde
- Yedi yerleşik rolün izin matrisini okuyabileceksin.
api-onlyrolünün ne zaman tercih edileceğini bileceksin.- Bir davete rol atayabilecek + mevcut bir üyenin rolünü güncelleyebileceksin.
- Özel rol (Enterprise) tanımlayabileceksin —
<kaynak>:<eylem>izinleri listeleyerek. - v1'de LDAP tarzı iç içe grup (nested group) olmadığını ve neden olmadığını bileceksin.
Ön koşul: owner veya admin rolü olan bir üyelik. Çalışma alanı ve davet temellerini bilmiyorsan önce Çalışma alanı, roller ve SSO kurulumu eğitimine bak.
Yerleşik roller — izin matrisi
| Rol | Personas | Chat | Billing | Config | Webhooks | Audit | Members |
|---|---|---|---|---|---|---|---|
owner | RW | RW | RW | RW | RW | R | RW |
admin | RW | RW | RW | RW | RW | R | RW |
editor | RW | RW | — | R | R | — | — |
viewer | R | R | — | R | R | — | — |
api-only | yetki kapsamına (scope) göre | scope'a göre | — | scope'a göre | scope'a göre | — | — |
billing | — | — | RW | — | — | — | — |
auditor | — | — | R | R | R | R | R |
Kısaltmalar: R = okuma (read), RW = okuma + yazma (read + write), — = erişim yok.
owner ve admin farkı
İkisi de tüm kaynaklarda RW. Farklar:
owner | admin | |
|---|---|---|
| Organizasyon devri / silme | ✓ | ✗ |
| Çalışma alanı silme | ✓ | ✗ |
| Plan / abonelik değiştir | ✓ | ✓ |
owner rolünü ata | ✓ | ✗ |
api-only — servis hesapları için
api-only rolü insan kullanıcı için tasarlanmamıştır — kullanıcı arayüzüne (UI) giriş yapamaz, sadece taşıyıcı belirteç (bearer token) ile çalışır. CI çalıştırıcısı, arka uç işi, ETL işçisi gibi servis hesapları için tercih edilir.
await client.memberships.invite({
email: 'ci-bot@acme.co',
role: 'api-only',
workspaceId: 'ws_...',
});İzinleri API anahtarı yetki kapsamlarından (scope) gelir; anahtarın kapsam listesinde ne varsa o izin verilir. Detay: API anahtarı yetki kapsamları (scope) referansı.
billing — finans takımı için
Sadece faturalama okuma + ödeme yöntemleri yönetimi. Persona, sohbet, yapılandırma erişimi yoktur. Tipik kullanım: muhasebe ekibinde fatura indiren ama persona içeriğini görmemesi gereken bir kullanıcı.
auditor — uyumluluk ekibi için
Denetim kaydı + yapılandırma + webhook'larda sadece okuma (read-only) yetkisi. Hiçbir kaynağa yazamaz. Uyumluluk incelemesi (compliance review) ve dahili güvenlik için idealdir — inceleme ekibi neyin ne zaman değiştiğini görür ama değiştiremez.
Davete rol ata
const invitation = await client.memberships.invite({
email: 'designer@acme.co',
role: 'editor',
workspaceId: 'ws_...',
});
console.log(invitation.acceptUrl);Davet edilen e-postaya acceptUrl ile bir bağlantı gider; kullanıcı kabul edene kadar üyelik pending (beklemede) durumunda kalır.
Mevcut bir üyenin rolünü değiştir
await client.memberships.update({
id: 'mem_01H...',
role: 'admin',
});Özel roller (Enterprise)
Yerleşik matris ihtiyacına uymuyorsa kendi kaynak × eylem setini tanımla:
await client.roles.createCustomRole({
workspaceId: 'ws_...',
name: 'persona-reviewer',
permissions: [
'persona:read',
'persona:audit:run',
'audit:read',
],
});İzinler <kaynak>:<eylem> desenini takip eder. Tam eylem listesi GET /v1/roles/actions uç noktasında döner.
Tipik özel rol örnekleri
| Rol | Kullanım | İzinler |
|---|---|---|
persona-reviewer | Persona'ları okuyabilen + denetim tetikleyebilen ama düzenleyemeyen | persona:read, persona:audit:run, audit:read |
brand-curator | Sadece marka çalışma alanında, persona refine yapabilen | persona:read, persona:refine, persona:fork |
data-exporter | Denetim kaydı dışa aktarımı alabilen ama içeriği değiştiremeyen | audit:read, audit:export, config:read |
İç içe grup (nested group) neden yok
Moonborn v1'de LDAP tarzı iç içe grup desteklemez. Düz rol listesi bilinçli bir tasarım kararıdır:
- Akıl yürütmesi daha kolay — "bu kullanıcı şu rolde" diyebilmek iç içe genişletme (nested expansion) zinciri çıkarmaktan kolaydır.
- SCIM hazırlama (provisioning) yeterlidir — kimlik sağlayıcının (IdP) gruplarını Moonborn rollerine 1:1 eşleyebilirsin. Grup hiyerarşisi IdP tarafında kalır.
- Denetim mantığı — kim hangi yetkiyi neden aldığı sorusu düz matriste anlıktır.
Eğer karmaşık grup hiyerarşisi gerekiyorsa, IdP (Okta, Azure AD, Google Workspace) tarafında grup hiyerarşisini tut, SCIM ile her grubun doğrudan Moonborn rolüne eşlendiği yapıyı kur. SCIM kurulumu için SCIM hazırlama.
Plan gereksinimi
- 4 temel rol (
owner,admin,viewer,member): Free. editor,api-only,billing,auditor: Pro ve üstü.- Özel roller: Enterprise.
İlgili
Çalışma alanı yaratma, davet, ilk rol atama akışı (uçtan uca eğitim).
BT / güvenlik ekiplerinin RBAC + SSO + SCIM'i nasıl birleştirdiği.
Kimlik sağlayıcı (IdP) gruplarını Moonborn rollerine eşleme.
13 kanonik yetki kapsamı ve rol izinlerinden bağımsızlığı.