> For the complete documentation index, see [llms.txt](https://docs.kangal.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kangal.dev/tr/organizasyon-ve-erisim/members-rbac.md).

# Üye ve RBAC

Kangal, doğrudan hesap rollerini tenant izin kataloğuyla birlikte kullanır. Önce her zaman tenant kapsamı denetlenir: bir rol, standart kullanıcıya başka bir tenant'a erişim vermez.

## Doğrudan hesap rolleri

| Rol                                  | Erişim modeli                                                                                      |
| ------------------------------------ | -------------------------------------------------------------------------------------------------- |
| `user`                               | Yönetici API'sine erişimi olmayan, kimliği doğrulanmış hesap.                                      |
| `admin_readonly` / `read_only_admin` | Yönetici endpoint'lerini okuyabilir; ancak `POST`, `PUT`, `PATCH` veya `DELETE` kullanamaz.        |
| `admin`                              | Kendi tenant'ındaki yönetici kaynaklarını okuyabilir ve değiştirebilir.                            |
| `super_admin`                        | Global operatördür. Tenant kapsamını seçebilir ve kısıtlı platform işlemlerini gerçekleştirebilir. |

Yönetici endpoint yetkilendirmesi önce HTTP yöntemini okuma veya yazma olarak eşler. URL görünür olsa bile salt okunur yönetici değişiklik yapan yöntemlerde `403` alır.

`POST /auth/users/{user_id}/role` endpoint'ini yalnızca super-admin kullanabilir. Rol güncellemeleri `user`, `admin` ve `super_admin` değerlerini kabul eder. Davetler ve kurumsal JIT, `admin_readonly` hesapları da oluşturabilir.

## İzin kataloğu

Tenant izin matrisi aşağıdaki izinleri içerir:

| Kategori           | İzinler                                     |
| ------------------ | ------------------------------------------- |
| Ağ geçitleri       | `gateways:read`, `gateways:write`           |
| Çalışma alanları   | `workspaces:read`, `workspaces:write`       |
| Servisler          | `services:read`, `services:write`           |
| Rotalar            | `routes:read`, `routes:write`               |
| Eklentiler         | `plugins:read`, `plugins:write`             |
| Tüketiciler        | `consumers:read`, `consumers:write`         |
| RBAC               | `rbac:read`, `rbac:write`                   |
| Denetim            | `audits:read`                               |
| Gözlemlenebilirlik | `observability:read`, `observability:write` |

Yerleşik `admin_readonly` ve `read_only_admin` rolleri varsayılan olarak tüm `:read` izinlerine sahiptir. `admin` ve `super_admin` varsayılan olarak kataloğun tamamına sahiptir. Tenant'a özgü matris geçersiz kılmaları, sistem rollerinin izinlerini değiştirebilir.

## Yetkilendirme gereksinimleri

Her Yönetici API isteği çağıranın tenant'ı, doğrudan hesap rolü ve HTTP yöntemiyle sınırlandırılır. İzin farkındalığı olan endpoint'ler ayrıca adlandırılmış katalog iznini ister. İzin matrisi girdisi tenant kapsamını genişletmez ve salt okunur doğrudan rolü yazma rolüne dönüştürmez.

Temel yetkilendirme sınırı olarak tenant ayrımını ve doğrudan hesap rollerini kullanın. Bir endpoint katalog izni belirtiyorsa production kullanımından önce hem doğrudan rolü hem de bu izni ayrıcalıksız bir test hesabıyla doğrulayın.

## Üyeleri yönetme

`/<locale>/dashboard/admin/organizations` adresini açıp tenant hesaplarını incelemek için **Kullanıcılar** bölümünü seçin. Hesaplar şu yollarla oluşturulabilir:

* Kuruluş daveti.
* Kurumsal JIT sağlama.
* SCIM kullanıcı sağlama.
* Kimliği doğrulanmış yönetici tarafından `POST /auth/register` çağrısı.
* Operatör tarafından yönetilen birleşik OAuth kayıt politikası.

Kullanıcı adı ve e-posta, tenant içinde benzersizdir. Standart yönetici yalnızca kendi tenant'ındaki kullanıcıları listeleyip güncelleyebilir. Kullanıcı silme, kullanıcı kaydını kaldırır; SCIM ile kullanıcı kaldırma ise hesabı devre dışı bırakıp oturumları iptal eder.

## Ekipler

Ekipler; tenant kapsamlı bir ad, isteğe bağlı RBAC kuruluş kimliği, üye kullanıcı kimlikleri, rol kimlikleri ve metadata saklar. Konsoldaki **Ekipler** bölümü bu dizileri `/admin/rbac/teams` üzerinden günceller.

```bash
export KANGAL_URL='https://api.example.com'
export KANGAL_API_TOKEN='<tenant-admin-token>'

curl --request POST "$KANGAL_URL/admin/rbac/teams" \
  --header "Authorization: Bearer $KANGAL_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
    "tenant_id": "acme",
    "name": "Platform Operators",
    "member_user_ids": ["<user-id>"],
    "role_ids": ["admin_readonly"]
  }'
```

Yinelenen üye ve rol kimlikleri kaldırılır. Ekip adları tenant içinde benzersizdir. `organization_id` verilirse aynı tenant'taki bir RBAC kuruluşunu göstermelidir.

### Ekip yetkilendirme davranışı

Ekip rol kimlikleri yönetişim kayıtlarını düzenler. Oturum yetkilendirmesi üyenin doğrudan hesap rolünü kullanır; bu nedenle ekip üyeliği değiştiğinde rolü ayrıca atayın ve doğrulayın.

## İzin girdilerini yönetme

Konsol özel rolleri tek tek düzenler. API, seçili roller için matris değiştirme isteğini de destekler:

```bash
curl --request PUT "$KANGAL_URL/admin/rbac/permission-matrix" \
  --header "Authorization: Bearer $KANGAL_API_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
    "tenant_id": "acme",
    "roles": [
      {"key": "admin_readonly", "permissions": ["routes:read", "observability:read"]}
    ]
  }'
```

Yalnızca istekte yer alan roller değiştirilir. RBAC kuruluşu, ekip, rol ve matris değişiklikleri denetim günlüğüne yazılır.

## Sorun giderme

| Belirti                                      | Kontrol                                                                                                                                |
| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `403 Admin write role required`              | Salt okunur yönetici değişiklik yapan bir yöntem denemiştir.                                                                           |
| `403 Missing required permission`            | Doğrudan token rolünde endpoint'in kullandığı matris izni yoktur.                                                                      |
| Matris değişikliğinden sonra `403` sürüyor   | Doğrudan rolü, tenant'ı, HTTP yöntemini ve endpoint'in belirttiği izni doğrulayın.                                                     |
| Ekip üyeliği erişimi değiştirmedi            | Üyenin doğrudan hesap rolünü ayrıca atayın.                                                                                            |
| Yakın tarihli rol değişikliği eski görünüyor | Erişim token'ının yeni rolü taşıması için yenileyin veya yeniden giriş yapın; erişimi hemen kaldırmak için eski oturumları iptal edin. |
| Yabancı kayıt `404` döndürüyor               | Tenant kapsamlı ayrıntı endpoint'leri tenant'lar arası kaynakları bilinçli olarak gizler.                                              |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.kangal.dev/tr/organizasyon-ve-erisim/members-rbac.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
