Keycyte PAM 3.2 · Kurulum Kılavuzu
Yapılandırma Başvurusu
PAM sunucusu ayarlarını ortam değişkenlerinden ve isteğe bağlı olarak bir config.yaml dosyasından okur. Kurulum paketinden yapılan bir kurulumda ayarlar, docker-compose.yml dosyasının pam kapsayıcısına (container) aktardığı ve çoğunlukla .env dosyasından gelen ortam değişkenleridir.
Ayarların Okunması
- Ortam değişkenleri. Her ayarın bir ortam değişkeni vardır:
KEYCYTE_önekinin ardından, noktaları alt çizgiyle değiştirilmiş ve büyük harfe çevrilmiş ayar yolu. Örneğinsession.timeoutayarının değişkeniKEYCYTE_SESSION_TIMEOUTolur. config.yaml. PAM sunucusuconfig.yamldosyasını çalışma dizininde (kapsayıcıda/app, ana makinede~/keycyte) ve/etc/keycyte/dizininde arar. Dosya isteğe bağlıdır; bulunamazsa PAM sunucusu bir uyarı günlüğe yazar ve ortam değişkenlerini ile varsayılanları kullanır.- Öncelik. Ortam değişkenleri
config.yamldosyasına,config.yamldosyası da yerleşik varsayılanlara göre önceliklidir.
Kurulum paketinden yapılan bir kurulumda bir ayarı değiştirmek için değeri .env dosyasında (ya da ayar orada tanımlıysa docker-compose.yml dosyasında) düzenleyin ve paket klasöründe kapsayıcıları yeniden oluşturun:
sudo docker compose --env-file .env -f docker-compose.yml up -d
Uyarı
.env dosyası gizli değerler içerir. Gizli değerleri hiçbir zaman destek kayıtlarına, belgelere ya da sohbetlere kopyalamayın ve dosyanın güvenli bir kopyasını saklayın.
Aşağıdaki tablolarda Varsayılan, PAM sunucusunun yerleşik varsayılan değeridir. Paket, kurulum paketinin ayarladığı değeri (farklı olduğu durumlarda) gösterir. Zorunlu olarak işaretlenen ayarlar tanımlanmalıdır; PAM sunucusu bunlar olmadan başlamaz.
Sunucu ve TLS
| Değişken | config.yaml anahtarı | Varsayılan | Açıklama |
|---|---|---|---|
KEYCYTE_SERVER_PORT | server.port | 8443 | Kapsayıcı içindeki HTTPS portu. Paket: 443. |
KEYCYTE_SERVER_TLS_ENABLED | server.tls.enabled | true | HTTPS sunar. |
KEYCYTE_SERVER_TLS_KEYSTORE | server.tls.keystore | boş | Yönetici Paneli’nde sertifika uygulanmadığında kullanılan PKCS#12 anahtar deposunun yolu. Paket: /app/localhost.p12 (TLS_KEYSTORE_PATH değişkeninden). |
KEYCYTE_SERVER_TLS_PASSWORD | server.tls.password | boş | PKCS#12 anahtar deposunun parolası (TLS_KEYSTORE_PASSWORD değişkeninden). |
KEYCYTE_SERVER_TLS_SUPPRESS_CLIENT_ERRORS | server.tls.suppress_client_errors | true | İstemcilerden kaynaklanan TLS el sıkışma hatalarını günlüğe yazmaz. |
KEYCYTE_SERVER_CORS_ALLOWED_ORIGINS | server.cors.allowed_origins | boş | API’yi başka bir siteden çağırmasına izin verilen kaynakların (origin) virgülle ayrılmış listesi (örneğin https://portal.example.com). Boş değer, çapraz kaynaklı istekleri devre dışı bırakır. * kullanılamaz. |
Veritabanı
| Değişken | config.yaml anahtarı | Varsayılan | Açıklama |
|---|---|---|---|
KEYCYTE_DATABASE_HOST | database.host | 127.0.0.1 | PostgreSQL sunucusu. Paket: postgres (veritabanı kapsayıcısı), DB_HOST değişkeninden. |
KEYCYTE_DATABASE_PORT | database.port | 5432 | PostgreSQL portu (DB_PORT değişkeninden). |
KEYCYTE_DATABASE_NAME | database.name | keycytedb | Veritabanı adı (DB_NAME değişkeninden). |
KEYCYTE_DATABASE_USERNAME | database.username | boş | Zorunlu. Veritabanı kullanıcısı (DB_USER değişkeninden). |
KEYCYTE_DATABASE_PASSWORD | database.password | boş | Zorunlu. Veritabanı parolası (DB_PASSWORD değişkeninden). |
KEYCYTE_DATABASE_SSLMODE | database.sslmode | disable | PostgreSQL SSL modu; örneğin disable, require, verify-full (DB_SSLMODE değişkeninden). |
KEYCYTE_DATABASE_MAX_OPEN_CONNS | database.max_open_conns | 25 | PAM düğümü başına en fazla açık bağlantı sayısı. |
KEYCYTE_DATABASE_MAX_IDLE_CONNS | database.max_idle_conns | 10 | PAM düğümü başına en fazla boşta bağlantı sayısı. |
İpucu
Birden fazla düğümlü bir kurulumda bağlantı sınırları her düğüm için ayrı ayrı uygulanır. Toplamın PostgreSQL’in max_connections ayarının altında kaldığından emin olun.
Şifreleme Anahtarı
Şifreleme anahtarı; veritabanında saklanan gizli bilgileri (kasa parolaları, anahtarlar, sağlayıcı kimlik bilgileri), yedek dosyalarını ve oturum kayıtlarını korur. Zorunlu: aşağıdaki kaynaklardan tam olarak birini tanımlayın. PAM sunucusu anahtar olmadan başlamaz.
| Değişken | config.yaml anahtarı | Varsayılan | Açıklama |
|---|---|---|---|
KEYCYTE_KEYSTORE_KEY_HEX | keystore.key_hex | boş | Onaltılık dizge olarak AES anahtarı. Paket: KEYSTORE_KEY_HEX değişkeninden. |
KEYCYTE_KEYSTORE_KEY_BASE64 | keystore.key_base64 | boş | Base64 dizgesi olarak AES anahtarı. |
KEYCYTE_KEYSTORE_KEY_FILE | keystore.key_file | boş | Ham anahtarı (16, 24 ya da 32 bayt) içeren dosyanın yolu. |
KEYCYTE_KEYSTORE_PATH | keystore.path | boş | Anahtarı tutan Java PKCS#12 anahtar deposunun yolu (önceki sürümlerden taşınan anahtarlar için). |
KEYCYTE_KEYSTORE_PASSWORD | keystore.password | boş | keystore.path içindeki anahtar deposunun parolası. |
KEYCYTE_KEYSTORE_ALIAS | keystore.alias | keycyte | Anahtar deposundaki anahtarın takma adı (alias). |
Birden fazla kaynak tanımlıysa PAM sunucusu tablodaki sıraya göre ilkini kullanır.
Uyarı
Mevcut bir kurulumun şifreleme anahtarını hiçbir zaman değiştirmeyin. Eski anahtarla şifrelenmiş verilerin (yedekler ve kayıtlar dahil) şifresi artık çözülemez. Bir kurulumdaki tüm düğümler aynı anahtarı kullanmalıdır.
Oturum
| Değişken | config.yaml anahtarı | Varsayılan | Açıklama |
|---|---|---|---|
KEYCYTE_SESSION_SECRET_KEY | session.secret_key | yerleşik değer | Zorunlu. Oturum tanımlama bilgilerini (cookie) imzalayan gizli değer. En az 32 bayt uzunluğunda olmalı ve yerleşik değerden farklı olmalıdır; aksi halde PAM sunucusu başlamaz. openssl rand -base64 48 ile oluşturabilirsiniz. Paket: SESSION_SECRET_KEY değişkeninden. |
KEYCYTE_SESSION_TIMEOUT | session.timeout | 30m | Web oturumunun boşta kalma zaman aşımı. Her istek süreyi uzatır. Paket: SESSION_TIMEOUT değişkeninden. |
KEYCYTE_SESSION_COOKIE_NAME | session.cookie_name | KEYCYTESESSION | Oturum tanımlama bilgisinin temel adı. Ana bilgisayar öneki etkinken tanımlama bilgisi __Host-<name> olarak gönderilir. Paket: SESSION_COOKIE_NAME değişkeninden. |
KEYCYTE_SESSION_USE_HOST_PREFIX | session.use_host_prefix | true | Tanımlama bilgisi adına __Host- önekini ekler. Bu, güvenli tanımlama bilgisini zorunlu kılar ve tanımlama bilgisi etki alanını temizler. |
KEYCYTE_SESSION_COOKIE_SECURE | session.cookie_secure | true | Tanımlama bilgisini yalnızca HTTPS üzerinden gönderir. |
KEYCYTE_SESSION_COOKIE_SAME_SITE | session.cookie_same_site | lax | SameSite özniteliği: lax, strict ya da none. none, güvenli tanımlama bilgisi gerektirir. Paket: none. |
KEYCYTE_SESSION_COOKIE_DOMAIN | session.cookie_domain | boş | Tanımlama bilgisi etki alanı. Ana bilgisayar öneki etkinken dikkate alınmaz. |
KEYCYTE_SESSION_SINGLE_DEVICE | session.single_device | false | Kullanıcı başına yalnızca bir etkin web oturumuna izin verir. Yeni bir oturum açma, kullanıcının diğer tüm oturumlarını kapatır. |
MFA Kilitleme
| Değişken | config.yaml anahtarı | Varsayılan | Açıklama |
|---|---|---|---|
KEYCYTE_MFA_MAX_FAILED_ATTEMPTS | mfa.max_failed_attempts | 5 | Hesabın kilitlenmesine yol açan başarısız MFA doğrulaması sayısı. |
KEYCYTE_MFA_LOCKOUT_DURATION_MIN | mfa.lockout_duration_min | 15 | Çok sayıda başarısız MFA doğrulamasından sonra hesabın kilitli kaldığı süre (dakika). Tüm kullanıcı türleri için geçerlidir. |
Dosyalar, Kayıtlar ve Ağ Geçidi
| Değişken | config.yaml anahtarı | Varsayılan | Açıklama |
|---|---|---|---|
KEYCYTE_UPLOAD_MAX_FILE_SIZE | upload.max_file_size | 4GB | Bir tarayıcı oturumunda aktarılan dosyanın en büyük boyutu. |
KEYCYTE_UPLOAD_STORAGE_PATH | upload.storage_path | /drive | Aktarılan dosyaların saklandığı klasör. Paket: /app/uploads. |
KEYCYTE_RECORDING_PATH | recording.path | /recordings | Oturum kayıtlarının klasörü. Paket: /record (~/record ana makine dizini). |
KEYCYTE_GATEWAY_ADDRESS | gateway.address | 127.0.0.1 | Ağ geçidinin (guacd) adresi. Paket: guacd. |
KEYCYTE_GATEWAY_PORT | gateway.port | 4822 | Ağ geçidinin portu. |
LDAP TLS
| Değişken | config.yaml anahtarı | Varsayılan | Açıklama |
|---|---|---|---|
KEYCYTE_LDAP_CA_CERT | ldap.ca_cert | /app/certs/ldap-ca.pem | TLS üzerinden LDAP için güvenilen CA sertifikalarını içeren PEM dosyası. Yönetici Paneli’nden güvenilir olarak eklenen sertifikalar da burada saklanır. Paket: /app/cacerts.pem (LDAP_CA_CERT değişkeninden). |
KEYCYTE_LDAP_INSECURE_SKIP_VERIFY | ldap.insecure_skip_verify | false | LDAP sunucu sertifikalarının doğrulanmasını atlar. Üretim ortamında kullanmayın (LDAP_INSECURE değişkeninden). |
Parola Yöneticisi kapsayıcısı da aynı iki değeri LDAP_CA_CERT ve LDAP_INSECURE_SKIP_VERIFY olarak alır.
Proxy’ler ve Erişim Anahtarları
Bu değişkenlerin config.yaml anahtarı yoktur; ortam değişkeni olarak tanımlayın. Anlamları ve yenilenmeleri için bkz. Hizmet Erişim Anahtarları.
| Değişken | Varsayılan | Açıklama |
|---|---|---|
KEYCYTE_SSH_PROXY_ACCESS_KEY_ID, KEYCYTE_SSH_PROXY_ACCESS_KEY_SECRET | boş | SSH proxy erişim anahtarı. |
KEYCYTE_RADIUS_SERVER_ACCESS_KEY_ID, KEYCYTE_RADIUS_SERVER_ACCESS_KEY_SECRET | boş | RADIUS sunucusu erişim anahtarı. |
KEYCYTE_PAM_ACCESS_KEY_ID, KEYCYTE_PAM_ACCESS_KEY_SECRET | boş | PAM sunucusunun SSH proxy’ye karşı kullandığı erişim anahtarı. |
KEYCYTE_SSH_PROXY_WS_URL | ws://ssh-proxy:8443 | SSH proxy’nin dahili WebSocket adresi. |
KEYCYTE_DOCKER_PROJECT | boş | Docker Compose proje adı. Tanımlıysa Ayarlar > Servisler yalnızca bu projenin kapsayıcılarını listeler; tanımlı değilse ana makinedeki tüm kapsayıcıları listeler. |
DOCKER_HOST | — | Ayarlar > Servisler sayfasının kullandığı Docker soketi. Paket: unix:///var/run/docker.sock. |
Yerel RDP ile Başlatma
Bu değişkenlerin config.yaml anahtarı yoktur. Yerel RDP ile başlatma, URL, genel adres ve erişim anahtarının tümü tanımlandığında etkinleşir.
| Değişken | Varsayılan | Açıklama |
|---|---|---|
KEYCYTE_RDP_PROXY_URL | boş | RDP proxy denetim API’sinin dahili adresi. Paket: http://rdp-proxy:7171. |
KEYCYTE_RDP_PROXY_PUBLIC_ADDRESS | boş | Kullanıcı iş istasyonlarının RDP proxy’ye eriştiği ve .rdp dosyasına yazılan host:port değeri; örneğin pam.example.com:3389. |
KEYCYTE_RDP_PROXY_ACCESS_KEY_ID, KEYCYTE_RDP_PROXY_ACCESS_KEY_SECRET | boş | RDP proxy erişim anahtarı. |
KEYCYTE_RDP_LAUNCH_TOKEN_TTL_SECS | 120 | Tek kullanımlık bağlantı belirtecinin saniye cinsinden geçerlilik süresi. |
Günlük Kaydı
| Değişken | config.yaml anahtarı | Varsayılan | Açıklama |
|---|---|---|---|
KEYCYTE_LOG_LEVEL | log.level | info | Başlangıçtaki günlük düzeyi: debug, info, warn ya da error. Ayarlar > Genel sayfasında (Günlük Seviyesi) kaydedilen günlük düzeyi bu değeri geçersiz kılar ve yeniden başlatma gerekmeden değiştirilebilir. |
KEYCYTE_LOG_FORMAT | log.format | text | text (okunabilir) ya da json (günlük toplayıcılar için). |
KEYCYTE_LOG_SOURCE | log.source | false | Her günlük satırına kaynak dosyayı ve satır numarasını ekler. |
Kurulum Paketi Değişkenleri
Kurulum paketinin .env dosyası, PAM sunucusu tarafından doğrudan değil, docker-compose.yml ve diğer kapsayıcılar tarafından kullanılan değişkenleri de içerir.
| Değişken | Tanımlayan | Açıklama |
|---|---|---|
PRIMARY_DNS, SECONDARY_DNS | Kurulum betiği | Tüm kapsayıcıların DNS sunucuları. |
DOCKER_GID | Kurulum betiği | Ana makinedeki docker grubunun kimliği. |
KEYCYTE_BASE, KEYCYTE_DRIVE, KEYCYTE_RECORD | Kurulum betiği | ~/keycyte, ~/drive, ~/record ana makine dizinleri. |
RUN_UID, RUN_GID | Kurulum betiği | Kapsayıcıların çalıştığı kullanıcı ve grup kimliği. |
TZ | Paket | Tüm kapsayıcıların saat dilimi. |
SSH_IDLE_TIMEOUT | Paket | SSH proxy oturumlarının boşta kalma zaman aşımı. |
DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD, DB_SSLMODE | Paket | PAM sunucusunun ve SSH proxy’nin veritabanı bağlantısı. |