# Kullanıcılar, Roller ve İzinler {#users-roles-permissions}
SnapOtter üç yerleşik rol, 17 ayrıntılı izin ve isteğe bağlı araç başına erişim denetimiyle özel rol desteği ile gelir. Bu sayfa, tam yetkilendirme modelini, API anahtarı kapsamlandırmasını, ekip yönetimini ve denetim günlüklemesini kapsar.
Yöneticiler, yönetici paneli veya `POST /api/auth/register` uç noktası aracılığıyla kullanıcı oluşturabilir. Her kullanıcının bir kullanıcı adı, rolü, ekip ataması ve isteğe bağlı bir e-posta adresi vardır.
### Varsayılan yönetici {#default-admin}
İlk başlatmada SnapOtter varsayılan bir yönetici hesabı oluşturur. Kimlik bilgileri ortam değişkenlerinden gelir:
| Değişken | Varsayılan | Açıklama |
|---|---|---|
| `DEFAULT_USERNAME` | `admin` | İlk yönetici hesabının kullanıcı adı |
| `DEFAULT_PASSWORD` | `admin` | İlk yönetici hesabının parolası |
Varsayılan yöneticinin ilk girişte parolasını değiştirmesi gerekir.
- **SCIM** - bir kimlik sağlayıcıdan otomatik sağlama ([SCIM Sağlama](/tr/guide/scim) bölümüne bakın)
### Kimlik doğrulamayı devre dışı bırakma {#disabling-authentication}
Kimlik doğrulamayı tamamen devre dışı bırakmak için `AUTH_ENABLED=false` ayarını yapın. Bu modda, tüm istekler için `admin` rolüne sahip yapay bir anonim kullanıcı kullanılır. Giriş gerekmez.
::: warning
Kimlik doğrulamayı devre dışı bırakmak, örneğe ulaşabilen herkese tam yönetici erişimi verir. Bunu yalnızca güvenilir ortamlarda kullanın.
:::
## Yerleşik roller {#built-in-roles}
SnapOtter üç yerleşik rol içerir. Bunlar değiştirilemez veya silinemez.
| `webhooks:manage` | Giden web kancalarını (webhook) yapılandır |
| `security:manage` | Güvenlik ayarlarını yönet (IP izin listesi, SSO zorlaması) |
## Özel roller {#custom-roles}
`security:manage` iznine sahip yöneticiler, yönetici paneli veya roller API'si aracılığıyla özel roller oluşturabilir. Rolleri listelemek `audit:read` iznini gerektirir.
### Özel bir rol oluşturma {#creating-a-custom-role}
```bash
curl -X POST http://localhost:1349/api/v1/roles \
-H "Authorization: Bearer si_..."\
-H "Content-Type: application/json"\
-d '{
"name": "reviewer",
"description": "Can use tools and view all files",
17 iznin tamamı özel roller aracılığıyla devredilebilir ancak yönetim izni, bu rolü yerleşik `admin` rolüne eşdeğer kılmaz. `users:manage` tarafından yetkilendirilen kullanıcı mutasyonları, `compliance:manage` tarafından yetkilendirilen yıkıcı işlemler ve `security:manage` tarafından yetkilendirilen özel rol yönetimi, aktörün mevcut yetkisine tabidir:
- Yerleşik roller `admin` > `editor` > `user`'yi takip eder; özel roller yerleşik rollerin altındadır.
- Hedefin izinleri, aktörün **etkili** izinleri tarafından kapsanmalıdır. Kapsamlı bir API anahtarı bu nedenle kapsamından çıkarılan izinleri kullanamaz.
- Hedef rolün araç erişimi, aktörün kendi araç erişimi tarafından kapsanmalıdır.
- Devre dışı bırakılan bir hesap, bu rol `disabled:<original-role>` olarak kaydedildiğinde orijinal rolüne göre kontrol edilir.
- Özel bir rolü silmek aynı zamanda yerleşik `user` geri dönüşünü atama yetkisini de gerektirir; devre dışı bırakılan üyeler `disabled:user` olarak devre dışı kalır.
Genel kimlik bilgileri ve yapılandırma daha katıdır: SCIM belirtecinin verilmesi veya iptal edilmesi ve örnek yapılandırmasının içe aktarılması, tam etkin yönetici yetkisine sahip yerleşik `admin` rolünü gerektirir.
`Default` ekibi silinemez. Hâlâ üyesi olan ekipler silinemez. Önce üyeleri yeniden atayın.
:::
## API anahtarları {#api-keys}
Kullanıcılar, programlı erişim için API anahtarları oluşturabilir. Her anahtar `si_` önekini kullanır ve yalnızca oluşturulma sırasında bir kez gösterilir.
API anahtarları isteğe bağlı olarak bir `permissions` dizisi taşıyabilir. Ayarlandığında, bir isteğin etkin izinleri, kullanıcının rol izinleri ile anahtarın kapsamlandırılmış izinlerinin **kesişimidir**. Bu, bir API anahtarının asla kullanıcının kendi izinlerinin ötesine geçemeyeceği anlamına gelir.
```bash
curl -X POST http://localhost:1349/api/v1/api-keys \
-H "Authorization: Bearer si_..."\
-H "Content-Type: application/json"\
-d '{
"name": "CI pipeline key",
"permissions": ["tools:use", "files:own"],
"expiresAt": "2027-01-01T00:00:00Z"
}'
```
### Sona erme {#expiration}
Anahtarlar isteğe bağlı bir `expiresAt` zaman damgası kabul eder. Süresi dolmuş anahtarlar kimlik doğrulama sırasında reddedilir.
## Denetim günlüğü {#audit-log}
SnapOtter, güvenlikle ilgili olayları`audit_log` veritabanı tablosunda saklanan yapılandırılmış bir denetim günlüğüne kaydeder.
### Araç işlemi denetimi {#tool-operation-auditing}
::: warning
`TOOL_EXECUTED` olayları varsayılan olarak günlüğe **kaydedilmez**. İki yoldan biri aracılığıyla katılım (opt-in) sağlanır:
1.`auditToolOperations` yönetici ayarını`true` olarak ayarlayın.
2.`audit_export` özelliğine sahip etkin bir lisans bulundurun (hem ekip hem de kurumsal planlarda mevcuttur).
Bunlardan biri olmadan, bireysel araç yürütmeleri denetim günlüğüne kaydedilmez.
:::
### Dışa aktarma {#exporting}
```
GET /api/v1/enterprise/audit/export?format=csv&from=2026-01-01T00:00:00Z
```
`audit:read` iznini ve `audit_export` kurumsal özelliğini gerektirir (hem ekip hem de kurumsal planlarda mevcuttur). CSV ve JSON formatlarını destekler; `action`, `actorId`, `targetType`, `targetId`, `from` ve `to` ile filtrelenir.
3.`tamper_resistant_audit` özelliğine sahip bir kurumsal lisans.
### Saklama {#retention}
Eski girdileri otomatik olarak temizlemek için `AUDIT_RETENTION_DAYS` ayarını yapın. Varsayılan değer `0`'tir; bu, girdilerin süresiz olarak saklandığı anlamına gelir.
Oturumlar çerez tabanlıdır ve `SESSION_DURATION_HOURS` tarafından denetlenir (varsayılan: 168 saat / 7 gün).
### Rol değişiklikleri oturumları geçersiz kılar {#role-changes-invalidate-sessions}
Bir yönetici bir kullanıcının rolünü değiştirdiğinde, o kullanıcının tüm etkin oturumları silinir. Kullanıcının yeni izinlerini almak için yeniden giriş yapması gerekir.
### Güvenlik korumaları {#safety-guards}
- **Son-yönetici koruması**: kalan son yönetici daha düşük bir role indirilemez. Denerseniz API bir hata döndürür.
- **Kendini silme önleme**: yöneticiler API aracılığıyla kendi hesaplarını silemez.