Roller ve İzinler

Kullanıcı rolleri, mindzieStudio içinde erişim seviyelerini ve yetenekleri tanımlar. Her kullanıcı, platform genelindeki izinlerini belirleyen tek bir role atanır.

API'ye bir roleName değeri gönderirken, aşağıdaki API rol adı sütununda gösterilen tam metinleri kullanın.

Mevcut Roller

Rol (görüntü) API rol adı Kapsam Açıklama
Sunucu Yöneticisi TenantAdmin Sistem En yüksek erişim seviyesi. Tüm tenantlar ve sunucu üzerinde tam erişim.
Yönetici Administrator Tenant Bir tenant içinde tam idari yetki.
BT Yöneticisi ITAdmin Tenant Entegrasyonlar, bağlantılar ve global API anahtarları.
Analist Analyst Proje Analizler, panolar ve incelemeler oluşturma ve yönetme.
Geliştirici Developer Proje Entegrasyonlar oluşturma, eylemleri ve uygulamaları yönetme, istisna detayını görüntüleme.
Kullanıcı User Sadece Okuma Panoları ve analizleri görüntüler; içerik değiştiremez.

İsimlendirme notu. API rol adı TenantAdmin, mindzieStudio’daki en yüksek ayrıcalıklı roldür — ismine rağmen, sunucu çapında erişim hakkına sahiptir (tüm tenantları yönetme, tüm kullanıcıları yönetme, sunucu yönetimi). Bu sayfa açıklık için bu role Sunucu Yöneticisi olarak da atıfta bulunur. Rolü API üzerinden atarken TenantAdmin gönderin.


Rol Detayları

Sunucu Yöneticisi (TenantAdmin)

mindzieStudio'daki en yüksek ayrıcalık seviyesi.

Yetenekler:

  • Tüm tenantları ve projeleri erişim ve yönetim
  • Tenant oluşturma, değiştirme ve silme
  • Sistem genelindeki tüm kullanıcıları yönetme
  • Sunucu Yönetimi alanına erişim (sunucu belleği, yedekler, çalıştırmalar)
  • Destek ve test için diğer rollere bürünme
  • Global API anahtarları oluşturma
  • Diğer tüm rollerin yeteneklerine sahip

Kullanım durumları:

  • Platform sahipleri
  • Dağıtımı yöneten güvenilir operatörler

Yönetici

Tenant içinde tam idari yetki, ancak sunucu çapında erişim yok.

Yetenekler:

  • Tenant içindeki kullanıcıları yönetme — oluşturma, düzenleme, devre dışı bırakma, şifre sıfırlama
  • Tenant içi rol atama
  • Analiz şablonlarını yönetme
  • Tenant içindeki tüm projeler, panolar, veri setleri, incelemeler ve uygulamaları yönetme
  • Tenant API anahtarları oluşturma
  • Tenant oluşturamaz veya silemez
  • Sunucu Yönetimi alanına erişemez

Kullanım durumları:

  • Bölüm yöneticileri
  • Kendi tenantını yöneten müşteri yöneticileri

BT Yöneticisi (ITAdmin)

Entegrasyonlar ve veri altyapısına odaklanan teknik yapılandırma erişimi.

Yetenekler:

  • Entegrasyonları, bağlantıları ve veri kaynaklarını yapılandırma
  • Veri ve ETL işlemlerini yönetme
  • Global API anahtarları oluşturma
  • Sınırlı oluşturma erişimi — pano veya analiz oluşturmaz

Kullanım durumları:

  • Kaynak sistemleri bağlayan BT ekibi
  • Kimlik bilgilerini ve ETL’yi yöneten operatörler

Analist

Süreç madenciliği analizi için standart kullanıcı rolü.

Yetenekler:

  • İncelemeler ve not defterleri oluşturma ve yönetme
  • Veri setleri yükleme ve yapılandırma
  • Panolar ve raporlar oluşturma
  • Not defterleri ve blokları çalıştırma
  • Eylemleri ve uygulamaları yönetme
  • Analiz sonuçlarını dışa aktarma

Kullanım durumları:

  • Süreç analistleri
  • Veri bilimcileri
  • İş analistleri

Geliştirici

Geliştirme araçları ve API’lere erişim.

Yetenekler:

  • Geliştirme araçlarını ve platform API’lerini kullanma
  • Özel entegrasyonlar ve uzantılar oluşturma
  • Eylemleri ve uygulamaları yönetme
  • Hata ayıklama için istisna detaylarını görme
  • Analizler ve panolar oluşturma ve yönetme

Kullanım durumları:

  • Entegrasyon geliştiren mühendisler
  • Otomasyon ve API tüketicileri

Kullanıcı

Panoları ve analizleri yalnızca görüntüleme erişimi.

Yetenekler:

  • Paylaşılan panoları görüntüleme
  • Yayınlanmış analizleri görüntüleme
  • Uyarıları görüntüleme
  • Görünen verileri dışa aktarma
  • Hiçbir içeriği değiştiremez

Kullanım durumları:

  • Yöneticiler
  • Paydaşlar
  • Harici inceleyiciler

Rol Hiyerarşisi

Sunucu Yöneticisi  (TenantAdmin)
    |
    +-- Yönetici
            |
            +-- Analist, Geliştirici, BT Yöneticisi
                    |
                    +-- Kullanıcı

TenantAdmin en geniş kapsama sahiptir (tüm tenantlar, sunucu yönetimi). Administrator kendi tenantı içinde tam yetkiye sahiptir. Diğer roller proje düzeyinde veya yalnızca okuma kapsamındadır.


Hizmet Hesapları

Hizmet hesapları, API entegrasyonları ve otomatik iş akışları için özel kullanıcı hesaplarıdır.

Gereksinimler

  • Yalnızca Sunucu Yöneticisi (TenantAdmin) ve Yönetici rolleri uygun
  • Hizmet hesaplarının bir ana tenant atanmış olmalıdır
  • Hizmet hesapları kullanıcı girişi olmadan API üzerinden kimlik doğrulayabilir

Yapılandırma

Bir kullanıcıyı hizmet hesabına terfi ettirmek için:

{
  "isServiceAccount": true,
  "homeTenantId": "12345678-1234-1234-1234-123456789012"
}

Standart kullanıcıya düşürmek için:

{
  "isServiceAccount": false
}

Kullanıcıyı düşürürken homeTenantId otomatik olarak temizlenir.

Kullanım Durumları

  • CI/CD pipeline entegrasyonları
  • Otomatik veri aktarma scriptleri
  • Planlı rapor üretimi
  • ETL süreçleri
  • İzleme ve uyarı sistemleri

Rol Ataması

Kullanıcı Oluştururken

Oluşturma isteğinde rol belirtin:

{
  "email": "john.smith@example.com",
  "displayName": "John Smith",
  "roleName": "Analyst"
}

Kullanıcı Güncellerken

Rolü güncelleme isteği ile değiştirin:

{
  "roleName": "TenantAdmin"
}

API rol adını tablodaki gibi tam olarak gönderin (TenantAdmin, Administrator, ITAdmin, Analyst, Developer, veya User).


API Anahtarı Türleri ve Roller

API Anahtarı Türü Oluşturmaya Uygun Roller Erişim Kapsamı
Global API Anahtarı Sunucu Yöneticisi (TenantAdmin), BT Yöneticisi (ITAdmin) Tüm tenantlar, tüm uç noktalar
Tenant API Anahtarı Sunucu Yöneticisi (TenantAdmin), Yönetici, Geliştirici Sadece tek tenant

Global API Anahtar Uç Noktaları

Sadece Global API anahtarları erişebilir:

  • /api/user - Genel kullanıcı yönetimi
  • /api/tenant - Tenant yönetimi
  • Tenantlar arası işlemler

Tenant API Anahtar Uç Noktaları

Tenant API anahtarları erişebilir:

  • /api/tenant/{tenantId}/user - Tenant kullanıcı yönetimi
  • /api/{tenantId}/project - Proje işlemleri
  • /api/{tenantId}/dataset - Veri seti işlemleri
  • Diğer tüm tenant kapsamlı uç noktalar

En İyi Uygulamalar

Asgari Ayrıcalık

Her kullanıcının iş işlevi için gerekli en düşük rolü atayın.

Panoları görüntüleyen yönetici -> Kullanıcı
İncelemeler yapan analist -> Analist
Bir tenantı yöneten takım lideri -> Yönetici
Tüm tenantları yöneten platform operatörü -> Sunucu Yöneticisi (TenantAdmin)

Hizmet Hesabı Güvenliği

  • Her entegrasyon için özel hizmet hesapları oluşturun
  • Açıklayıcı görüntü adları kullanın (örn. "CI/CD Pipeline Hizmet")
  • API anahtarlarını düzenli olarak değiştirin
  • Hizmet hesap aktivitelerini izleyin

Rol Geçişleri

  • Kullanıcıları terfi ettirirken yeni sorumlulukları anladıklarından emin olun
  • Düşürürken işlerini tamamlayacak erişime sahip olduklarından emin olun
  • Rol değişikliklerini denetim için belgeleyin

Devre Dışı Bırakma vs Silme

  • Denetim kayıtlarını korumak için silmek yerine devre dışı bırakmayı tercih edin
  • Devre dışı bırakılan kullanıcılar giriş yapamaz ama geçmişleri saklanır
  • Veri gizliliği nedeniyle yalnızca gerektiğinde silin

Uygulama Örnekleri

Python

import requests

BASE_URL = 'https://your-mindzie-instance.com'

class RoleManager:
    def __init__(self, global_api_key):
        self.headers = {
            'Authorization': f'Bearer {global_api_key}',
            'Content-Type': 'application/json'
        }

    def get_users_by_role(self, role_name):
        """Belirli bir role sahip tüm kullanıcıları getir."""
        url = f'{BASE_URL}/api/user'
        params = {'role': role_name, 'pageSize': 1000}
        response = requests.get(url, headers=self.headers, params=params)
        response.raise_for_status()
        return response.json()

    def promote_to_service_account(self, user_id, home_tenant_id):
        """Bir kullanıcıyı hizmet hesabına terfi ettir."""
        url = f'{BASE_URL}/api/user/{user_id}'
        payload = {
            'isServiceAccount': True,
            'homeTenantId': home_tenant_id
        }
        response = requests.put(url, json=payload, headers=self.headers)
        response.raise_for_status()
        return response.json()

    def demote_from_service_account(self, user_id):
        """Bir hizmet hesabını tekrar standart kullanıcıya düşür."""
        url = f'{BASE_URL}/api/user/{user_id}'
        payload = {'isServiceAccount': False}
        response = requests.put(url, json=payload, headers=self.headers)
        response.raise_for_status()
        return response.json()

    def change_role(self, user_id, new_role):
        """Bir kullanıcının rolünü değiştir. API rol adlarını kullan: TenantAdmin, Administrator, ITAdmin, Analyst, Developer, User."""
        url = f'{BASE_URL}/api/user/{user_id}'
        payload = {'roleName': new_role}
        response = requests.put(url, json=payload, headers=self.headers)
        response.raise_for_status()
        return response.json()

    def disable_user(self, user_id):
        """Bir kullanıcı hesabını devre dışı bırak."""
        url = f'{BASE_URL}/api/user/{user_id}'
        payload = {'disabled': True}
        response = requests.put(url, json=payload, headers=self.headers)
        response.raise_for_status()
        return response.json()

# Kullanım
manager = RoleManager('your-global-api-key')

# Tüm sunucu yöneticilerini listele (TenantAdmin rolü)
server_admins = manager.get_users_by_role('TenantAdmin')
print(f"Sistemde {server_admins['totalCount']} sunucu yöneticisi var")

# Kullanıcıyı hizmet hesabına terfi ettir
manager.promote_to_service_account(
    user_id='a1b2c3d4-e5f6-7890-abcd-ef1234567890',
    home_tenant_id='12345678-1234-1234-1234-123456789012'
)

# Bir Analisti Sunucu Yöneticisi yap
manager.change_role(
    user_id='a1b2c3d4-e5f6-7890-abcd-ef1234567890',
    new_role='TenantAdmin'
)

# Kullanıcıyı silmek yerine devre dışı bırak
manager.disable_user('departing-user-id')

JavaScript

class RoleManager {
  constructor(globalApiKey) {
    this.headers = {
      'Authorization': `Bearer ${globalApiKey}`,
      'Content-Type': 'application/json'
    };
  }

  async getUsersByRole(roleName) {
    const url = `${BASE_URL}/api/user?role=${roleName}&pageSize=1000`;
    const response = await fetch(url, { headers: this.headers });
    return await response.json();
  }

  async promoteToServiceAccount(userId, homeTenantId) {
    const url = `${BASE_URL}/api/user/${userId}`;
    const response = await fetch(url, {
      method: 'PUT',
      headers: this.headers,
      body: JSON.stringify({
        isServiceAccount: true,
        homeTenantId
      })
    });
    return await response.json();
  }

  async changeRole(userId, newRole) {
    // API rol adlarını kullan: TenantAdmin, Administrator, ITAdmin, Analyst, Developer, User
    const url = `${BASE_URL}/api/user/${userId}`;
    const response = await fetch(url, {
      method: 'PUT',
      headers: this.headers,
      body: JSON.stringify({ roleName: newRole })
    });
    return await response.json();
  }
}

// Kullanım
const manager = new RoleManager('your-global-api-key');

// Tüm analistleri al
const analysts = await manager.getUsersByRole('Analyst');
console.log(`${analysts.totalCount} sistemde analist var`);

// Sunucu Yöneticisine yükselt
await manager.changeRole('user-id', 'TenantAdmin');